diff --git a/CHANGELOG.md b/CHANGELOG.md index 938023c..429e6f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +- Refactor: web scraping now uses `servo-fetch` (pure-Rust Servo engine) and PDF rendering uses `pdfium-render` (direct PDFium bindings) — reduces Docker image size by ~300MB, improves startup latency by ~100× for PDF rendering, and provides more stable output +- Fix: added `pkgs.libglvnd` to `LD_LIBRARY_PATH` in devenv so Servo engine can find `libEGL.so` at runtime +- Fix: updated Dockerfile to add `libegl1 libegl-mesa0 libgles2 libfontconfig1 libfreetype6` runtime dependencies for servo-fetch +- Docs: updated architecture, features, and installation docs to reflect the new web processing stack - Fix: added pre-commit hooks to further maintain code consistency. - Security: updated some deps because dependabot told me, good bot. - Security: bump `async-openai` to 0.41.1 (feature-gated types, transcription API rename; removes `backoff` transitive dep) diff --git a/Cargo.lock b/Cargo.lock index 93be920..9025721 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,6 +8,26 @@ version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +[[package]] +name = "accesskit" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3b7f7f85a7e5f68090000ed7622545829afd484d210358702ae4cb97dd0c320" +dependencies = [ + "enumn", + "serde", + "uuid", +] + +[[package]] +name = "accountable-refcell" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6afea9052e0b2d90e38572691d87194b2e5d8d6899b9b850b22aaab17e486252" +dependencies = [ + "backtrace", +] + [[package]] name = "addr" version = "0.15.6" @@ -76,6 +96,15 @@ dependencies = [ "subtle", ] +[[package]] +name = "aes-kw" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69fa2b352dcefb5f7f3a5fb840e02665d311d878955380515e4fd50095dd3d8c" +dependencies = [ + "aes", +] + [[package]] name = "affinitypool" version = "0.3.1" @@ -122,6 +151,24 @@ dependencies = [ "memchr", ] +[[package]] +name = "aligned" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee4508988c62edf04abd8d92897fca0c2995d907ce1dfeaf369dac3716a40685" +dependencies = [ + "as-slice 0.2.1", +] + +[[package]] +name = "aligned-vec" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" +dependencies = [ + "equator", +] + [[package]] name = "alloc-no-stdlib" version = "2.0.4" @@ -142,6 +189,9 @@ name = "allocator-api2" version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" +dependencies = [ + "serde", +] [[package]] name = "ammonia" @@ -152,7 +202,7 @@ dependencies = [ "cssparser 0.35.0", "html5ever 0.35.0", "maplit", - "tendril", + "tendril 0.4.3", "url", ] @@ -172,7 +222,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", - "anstyle-parse", + "anstyle-parse 0.2.7", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstream" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +dependencies = [ + "anstyle", + "anstyle-parse 1.0.0", "anstyle-query", "anstyle-wincon", "colorchoice", @@ -195,6 +260,15 @@ dependencies = [ "utf8parse", ] +[[package]] +name = "anstyle-parse" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +dependencies = [ + "utf8parse", +] + [[package]] name = "anstyle-query" version = "1.1.5" @@ -246,6 +320,16 @@ dependencies = [ "uuid", ] +[[package]] +name = "app_units" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "467b60e4ee6761cd6fd4e03ea58acefc8eec0d1b1def995c1b3b783fa7be8a60" +dependencies = [ + "num-traits", + "serde", +] + [[package]] name = "approx" version = "0.4.0" @@ -273,6 +357,23 @@ dependencies = [ "object", ] +[[package]] +name = "arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" + +[[package]] +name = "arg_enum_proc_macro" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] + [[package]] name = "argon2" version = "0.5.3" @@ -315,6 +416,15 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "as-slice" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516" +dependencies = [ + "stable_deref_trait", +] + [[package]] name = "ascii-canvas" version = "3.0.0" @@ -378,8 +488,8 @@ dependencies = [ "bytes", "fnv", "futures-util", - "http", - "indexmap 2.13.0", + "http 1.4.0", + "indexmap 2.14.0", "mime", "multer", "num-traits", @@ -428,7 +538,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e3ef112905abea9dea592fc868a6873b10ebd3f983e83308f995d6284e9ba41" dependencies = [ "bytes", - "indexmap 2.13.0", + "indexmap 2.14.0", "serde", "serde_json", ] @@ -540,6 +650,26 @@ dependencies = [ "syn 2.0.115", ] +[[package]] +name = "async-tungstenite" +version = "0.34.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8447f02eaa65412035e2d3eeaa3fc82bbb8d7137c84c5976b4af685136012ee9" +dependencies = [ + "atomic-waker", + "futures-core", + "futures-io", + "futures-task", + "futures-util", + "log", + "pin-project-lite", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tungstenite 0.29.0", + "webpki-roots 1.0.6", +] + [[package]] name = "async_io_stream" version = "0.3.3" @@ -576,6 +706,12 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +[[package]] +name = "atomic_refcell" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21e4227379beff4205943696e6c3e0cd809bacdf3f0edd6e3dd153e2269571a4" + [[package]] name = "auto_enums" version = "0.8.7" @@ -588,26 +724,55 @@ dependencies = [ "syn 2.0.115", ] -[[package]] -name = "auto_generate_cdp" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "359220d0b9360b79d17d648d0a3ba1e792ec36bdbc227c8fd0351df3a0415704" -dependencies = [ - "convert_case 0.8.0", - "proc-macro2", - "quote", - "serde", - "serde_json", - "ureq 3.2.0", -] - [[package]] name = "autocfg" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +[[package]] +name = "av-scenechange" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f321d77c20e19b92c39e7471cf986812cbb46659d2af674adc4331ef3f18394" +dependencies = [ + "aligned", + "anyhow", + "arg_enum_proc_macro", + "arrayvec", + "log", + "num-rational", + "num-traits", + "pastey", + "rayon", + "thiserror 2.0.18", + "v_frame", + "y4m", +] + +[[package]] +name = "av1-grain" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8" +dependencies = [ + "anyhow", + "arrayvec", + "log", + "nom 8.0.0", + "num-rational", + "v_frame", +] + +[[package]] +name = "avif-serialize" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7178fe5f7d460b13895ebb9dcb28a3a6216d2df2574a0806cb51b555d297f38" +dependencies = [ + "arrayvec", +] + [[package]] name = "aws-lc-rs" version = "1.17.0" @@ -641,7 +806,7 @@ dependencies = [ "bytes", "form_urlencoded", "futures-util", - "http", + "http 1.4.0", "http-body", "http-body-util", "hyper", @@ -673,7 +838,7 @@ checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ "bytes", "futures-core", - "http", + "http 1.4.0", "http-body", "http-body-util", "mime", @@ -691,7 +856,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d16a4be621f96b959fc829e4cbf02fd79ffb8427525002af31a9e2979599fbb7" dependencies = [ "axum-core", - "http", + "http 1.4.0", ] [[package]] @@ -717,12 +882,12 @@ dependencies = [ "base64 0.22.1", "bytes", "chrono", - "cookie", + "cookie 0.18.1", "dashmap 6.1.0", "forwarded-header-value", "futures", "hmac", - "http", + "http 1.4.0", "http-body", "rand 0.9.2", "serde", @@ -751,7 +916,7 @@ dependencies = [ "chrono", "dashmap 6.1.0", "futures", - "http", + "http 1.4.0", "http-body", "serde", "tokio", @@ -801,7 +966,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a27cefbd055910a29c4a3710016559cece5bdb4fb78ec055a1c2e9f8c61e3aa9" dependencies = [ "darling 0.23.0", - "heck", + "heck 0.5.0", "proc-macro-error2", "quote", "syn 2.0.115", @@ -820,9 +985,21 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", - "windows-link", + "windows-link 0.2.1", ] +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + [[package]] name = "base64" version = "0.13.1" @@ -869,6 +1046,24 @@ dependencies = [ "serde", ] +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags 2.11.0", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.115", +] + [[package]] name = "bit-set" version = "0.5.3" @@ -899,6 +1094,12 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" +[[package]] +name = "bit_field" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6" + [[package]] name = "bitflags" version = "1.3.2" @@ -914,6 +1115,15 @@ dependencies = [ "serde_core", ] +[[package]] +name = "bitstream-io" +version = "4.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eff00be299a18769011411c9def0d827e8f2d7bf0c3dbf53633147a8867fd1f" +dependencies = [ + "no_std_io2", +] + [[package]] name = "bitvec" version = "1.0.1" @@ -967,6 +1177,15 @@ dependencies = [ "generic-array 0.14.7", ] +[[package]] +name = "block2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" +dependencies = [ + "objc2", +] + [[package]] name = "blowfish" version = "0.9.1" @@ -1021,12 +1240,51 @@ dependencies = [ "alloc-stdlib", ] +[[package]] +name = "bstr" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "buf-read-ext" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e2c71c44e5bbc64de4ecfac946e05f9bba5cc296ea7bab4d3eda242a3ffa73c" + +[[package]] +name = "build-parallel" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e3ff9db740167616e528c509b3618046fc05d337f8f3182d300f4aa977d2bb" +dependencies = [ + "crossbeam-utils", + "jobserver", + "num_cpus", +] + +[[package]] +name = "built" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c0e531d93d39c34eef561e929e8a7f86d77a5af08aac4f6d6e39976c51858e9" + [[package]] name = "bumpalo" version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" +[[package]] +name = "byte-slice-cast" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" + [[package]] name = "bytecheck" version = "0.6.12" @@ -1060,6 +1318,20 @@ name = "bytemuck" version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] [[package]] name = "byteorder" @@ -1067,6 +1339,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + [[package]] name = "bytes" version = "1.11.1" @@ -1076,6 +1354,16 @@ dependencies = [ "serde", ] +[[package]] +name = "calendrical_calculations" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e97f73e95d668625c9b28a3072e6326773785a0cf807de9f3d632778438f3d38" +dependencies = [ + "core_maths", + "displaydoc", +] + [[package]] name = "castaway" version = "0.2.4" @@ -1163,6 +1451,15 @@ dependencies = [ "unicode-security", ] +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom 7.1.3", +] + [[package]] name = "cff-parser" version = "0.1.0" @@ -1181,6 +1478,50 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "cgl" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" +dependencies = [ + "libc", +] + +[[package]] +name = "chacha20" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "chacha20poly1305" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" +dependencies = [ + "aead", + "chacha20", + "cipher", + "poly1305", + "zeroize", +] + +[[package]] +name = "chardetng" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14b8f0b65b7b08ae3c8187e8d77174de20cb6777864c6b832d8ad365999cf1ea" +dependencies = [ + "cfg-if", + "encoding_rs", + "memchr", +] + [[package]] name = "chrono" version = "0.4.43" @@ -1192,7 +1533,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -1249,6 +1590,18 @@ checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ "crypto-common", "inout", + "zeroize", +] + +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading 0.8.9", ] [[package]] @@ -1267,7 +1620,7 @@ version = "4.5.58" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f13174bda5dfd69d7e947827e5af4b0f2f94a4a3ee92912fba07a66150f21e2" dependencies = [ - "anstream", + "anstream 0.6.21", "anstyle", "clap_lex", "strsim", @@ -1279,7 +1632,7 @@ version = "4.5.55" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.115", @@ -1323,6 +1676,24 @@ dependencies = [ "cc", ] +[[package]] +name = "cobs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" +dependencies = [ + "thiserror 2.0.18", +] + +[[package]] +name = "color" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ec7c5eb7a16992b1904d76c517d170ab353b0e0b3d5a0c81a8a0cd1037893cf" +dependencies = [ + "bytemuck", +] + [[package]] name = "color-eyre" version = "0.6.5" @@ -1350,6 +1721,12 @@ dependencies = [ "tracing-error", ] +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + [[package]] name = "colorchoice" version = "1.0.4" @@ -1382,7 +1759,7 @@ dependencies = [ "chrono", "chrono-tz", "config", - "dom_smoothie", + "dom_smoothie 0.10.0", "fastembed", "futures", "include_dir", @@ -1460,10 +1837,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" dependencies = [ "async-trait", - "convert_case 0.6.0", + "convert_case", "json5", "pathdiff", - "ron", + "ron 0.12.0", "rust-ini", "serde-untagged", "serde_core", @@ -1497,6 +1874,32 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "console_log" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be8aed40e4edbf4d3b4431ab260b63fdc40f5780a4766824329ea0f1eefe3c0f" +dependencies = [ + "log", + "web-sys", +] + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + [[package]] name = "const-random" version = "0.1.18" @@ -1523,6 +1926,22 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" +[[package]] +name = "content-security-policy" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d348c3856ad6a6b957d69dc8cf93e66fe9be5a7657fdd7028b1a56d2775e3fce" +dependencies = [ + "base64 0.22.1", + "bitflags 2.11.0", + "once_cell", + "percent-encoding", + "regex", + "serde", + "sha2", + "url", +] + [[package]] name = "convert_case" version = "0.6.0" @@ -1533,12 +1952,13 @@ dependencies = [ ] [[package]] -name = "convert_case" -version = "0.8.0" +name = "cookie" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baaaa0ecca5b51987b9423ccdc971514dd8b0bb7b4060b983d3664dad3f1f89f" +checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" dependencies = [ - "unicode-segmentation", + "time", + "version_check", ] [[package]] @@ -1582,6 +2002,51 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "core-graphics" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "core-graphics-types", + "foreign-types 0.5.0", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "libc", +] + +[[package]] +name = "core-text" +version = "20.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9d2790b5c08465d49f8dc05c8bcae9fea467855947db39b0f8145c091aaced5" +dependencies = [ + "core-foundation 0.9.4", + "core-graphics", + "foreign-types 0.5.0", + "libc", +] + +[[package]] +name = "core_maths" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30" +dependencies = [ + "libm", +] + [[package]] name = "cpufeatures" version = "0.2.17" @@ -1606,6 +2071,15 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-deque" version = "0.8.6" @@ -1637,6 +2111,18 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array 0.14.7", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + [[package]] name = "crypto-common" version = "0.1.7" @@ -1674,6 +2160,20 @@ dependencies = [ "smallvec", ] +[[package]] +name = "cssparser" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dae61cf9c0abb83bd659dab65b7e4e38d8236824c85f0f804f173567bda257d2" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa", + "phf 0.13.1", + "serde", + "smallvec", +] + [[package]] name = "cssparser-macros" version = "0.6.1" @@ -1714,6 +2214,32 @@ dependencies = [ "cipher", ] +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "fiat-crypto", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] + [[package]] name = "darling" version = "0.20.11" @@ -1860,6 +2386,35 @@ version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" +[[package]] +name = "data-url" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376" + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "der_derive", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "der_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] + [[package]] name = "deranged" version = "0.5.6" @@ -1912,6 +2467,27 @@ dependencies = [ "syn 2.0.115", ] +[[package]] +name = "derive_more" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.115", +] + [[package]] name = "derive_utils" version = "0.15.0" @@ -1945,10 +2521,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", + "const-oid", "crypto-common", "subtle", ] +[[package]] +name = "diplomat" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3137c640d2bac491dbfca7f9945c948f888dd8c95bdf7ee6b164fbdfa5d3efc2" +dependencies = [ + "diplomat_core", + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "diplomat-runtime" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53bfcc833b58615b593a6e5c46771cb36b1cfce94899c60823810939fe8ca9d9" + +[[package]] +name = "diplomat_core" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd7aca1d8f9e7b73ad61785beedc9556ad79f84b15c15abaa7041377e42284c1" +dependencies = [ + "lazy_static", + "proc-macro2", + "quote", + "serde", + "smallvec", + "strck_ident", + "syn 2.0.115", +] + [[package]] name = "dirs" version = "5.0.1" @@ -2012,6 +2622,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "dispatch2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" +dependencies = [ + "bitflags 2.11.0", + "objc2", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -2023,6 +2643,15 @@ dependencies = [ "syn 2.0.115", ] +[[package]] +name = "dlib" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab8ecd87370524b461f8557c119c405552c396ed91fc0a8eec68679eab26f94a" +dependencies = [ + "libloading 0.8.9", +] + [[package]] name = "dlv-list" version = "0.5.2" @@ -2054,8 +2683,24 @@ dependencies = [ "html5ever 0.30.0", "nom 8.0.0", "precomputed-hash", - "selectors", - "tendril", + "selectors 0.26.0", + "tendril 0.4.3", +] + +[[package]] +name = "dom_query" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521e380c0c8afb8d9a1e83a1822ee03556fc3e3e7dbc1fd30be14e37f9cb3f89" +dependencies = [ + "bit-set 0.8.0", + "cssparser 0.36.0", + "foldhash 0.2.0", + "html5ever 0.38.0", + "nom 8.0.0", + "precomputed-hash", + "selectors 0.36.1", + "tendril 0.5.0", ] [[package]] @@ -2064,25 +2709,49 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76bdf01bbec75e07045af0668147a836b088569a87fc7609e33f540eef45a4ec" dependencies = [ - "dom_query", + "dom_query 0.17.0", "flagset", "foldhash 0.1.5", "gjson", "html-escape", "once_cell", "phf 0.11.3", - "tendril", + "tendril 0.4.3", "thiserror 2.0.18", "unicode-segmentation", "url", ] +[[package]] +name = "dom_smoothie" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f21cad308997c8c518aaee15c8b38bb04dc699bbcf30da4176443c9ef40c1bb5" +dependencies = [ + "dom_query 0.27.0", + "flagset", + "foldhash 0.2.0", + "gjson", + "html-escape", + "once_cell", + "phf 0.13.1", + "tendril 0.5.0", + "thiserror 2.0.18", + "unicode-segmentation", +] + [[package]] name = "double-ended-peekable" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0d05e1c0dbad51b52c38bda7adceef61b9efc2baf04acfe8726a8c4630a6f57" +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" + [[package]] name = "dtoa" version = "1.0.11" @@ -2104,6 +2773,20 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" +[[package]] +name = "dwrote" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b35532432acc8b19ceed096e35dfa088d3ea037fe4f3c085f1f97f33b4d02" +dependencies = [ + "lazy_static", + "libc", + "serde", + "serde_derive", + "winapi", + "wio", +] + [[package]] name = "dyn-clone" version = "1.0.20" @@ -2129,12 +2812,59 @@ dependencies = [ "cipher", ] +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest", + "elliptic-curve", + "rfc6979", + "signature", + "spki", +] + [[package]] name = "either" version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest", + "ff", + "generic-array 0.14.7", + "group", + "hkdf", + "pem-rfc7468", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + +[[package]] +name = "embedded-io" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" + [[package]] name = "ena" version = "0.14.4" @@ -2150,6 +2880,24 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" +[[package]] +name = "encoding_c" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9af727805f3b0d79956bde5b35732669fb5c5d45a94893798e7b7e70cfbf9cc1" +dependencies = [ + "encoding_rs", +] + +[[package]] +name = "encoding_c_mem" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a80a16821fe8c7cab96e0c67b57cd7090e021e9615e6ce6ab0cf866c44ed1f0" +dependencies = [ + "encoding_rs", +] + [[package]] name = "encoding_rs" version = "0.8.35" @@ -2157,6 +2905,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", + "serde", ] [[package]] @@ -2166,10 +2915,58 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" [[package]] -name = "env_home" -version = "0.1.0" +name = "enumn" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f84e12ccf0a7ddc17a6c41c93326024c42920d7ee630d04950e6926645c0fe" +checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "env_filter" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "env_logger" +version = "0.11.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a" +dependencies = [ + "anstream 1.0.0", + "anstyle", + "env_filter", + "jiff", + "log", +] + +[[package]] +name = "equator" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" +dependencies = [ + "equator-macro", +] + +[[package]] +name = "equator-macro" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] [[package]] name = "equivalent" @@ -2207,6 +3004,17 @@ dependencies = [ "cc", ] +[[package]] +name = "etagere" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc89bf99e5dc15954a60f707c1e09d7540e5cd9af85fa75caa0b510bc08c5342" +dependencies = [ + "euclid 0.22.14", + "serde", + "svg_fmt", +] + [[package]] name = "euclid" version = "0.20.14" @@ -2216,6 +3024,16 @@ dependencies = [ "num-traits", ] +[[package]] +name = "euclid" +version = "0.22.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06" +dependencies = [ + "num-traits", + "serde", +] + [[package]] name = "evaluations" version = "0.1.0" @@ -2279,6 +3097,21 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "exr" +version = "1.74.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4300e043a56aa2cb633c01af81ca8f699a321879a7854d3896a0ba89056363be" +dependencies = [ + "bit_field", + "half", + "lebe", + "miniz_oxide", + "rayon-core", + "smallvec", + "zune-inflate", +] + [[package]] name = "ext-sort" version = "0.1.5" @@ -2302,6 +3135,18 @@ dependencies = [ "once_cell", ] +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + [[package]] name = "fastembed" version = "5.9.0" @@ -2324,12 +3169,73 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "fearless_simd" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb2907d1f08b2b316b9223ced5b0e89d87028ba8deae9764741dba8ff7f3903" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "ff" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "filetime" +version = "0.2.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759" +dependencies = [ + "cfg-if", + "libc", +] + [[package]] name = "find-msvc-tools" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +[[package]] +name = "fixed_decimal" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0febbeb1118a9ecdee6e4520ead6b54882e843dd0592ad233247dbee84c53db8" +dependencies = [ + "displaydoc", + "smallvec", + "writeable 0.5.5", +] + +[[package]] +name = "fixedbitset" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33" + [[package]] name = "fixedbitset" version = "0.4.2" @@ -2352,6 +3258,12 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "float-cmp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" + [[package]] name = "float_next_after" version = "1.0.0" @@ -2376,13 +3288,89 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" +[[package]] +name = "font-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39a654f404bbcbd48ea58c617c2993ee91d1cb63727a37bf2323a4edeed1b8c5" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "fontconfig-parser" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbc773e24e02d4ddd8395fd30dc147524273a83e54e0f312d986ea30de5f5646" +dependencies = [ + "roxmltree", +] + +[[package]] +name = "fontdb" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "457e789b3d1202543297a350643cf459f836cade38934e7a4cf6a39e7cde2905" +dependencies = [ + "fontconfig-parser", + "log", + "memmap2", + "slotmap", + "tinyvec", + "ttf-parser", +] + +[[package]] +name = "fontsan" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52fd401b496627c46f35318272508fcdcb77927868507ed2ad796408aa903923" +dependencies = [ + "cc", + "fontsan-woff2", + "glob", + "libc", + "libz-sys", +] + +[[package]] +name = "fontsan-woff2" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "106ebe29445505f3860765d2597ddad20a3e90174d6e8539a10d58253b3e5c0f" +dependencies = [ + "brotli-decompressor", + "cc", +] + [[package]] name = "foreign-types" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" dependencies = [ - "foreign-types-shared", + "foreign-types-shared 0.1.1", +] + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared 0.3.1", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", ] [[package]] @@ -2391,6 +3379,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + [[package]] name = "form_urlencoded" version = "1.2.2" @@ -2410,6 +3404,27 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "freetype" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a440748e063798e4893ceb877151e84acef9bea9a8c6800645cf3f1b3a7806e" +dependencies = [ + "freetype-sys", + "libc", +] + +[[package]] +name = "freetype-sys" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7edc5b9669349acfda99533e9e0bcf26a51862ab43b08ee7745c55d28eb134" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + [[package]] name = "fs_extra" version = "1.3.0" @@ -2567,6 +3582,16 @@ dependencies = [ "byteorder", ] +[[package]] +name = "gaol" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "061957ca7a966a39a79ebca393a9a6c7babda10bf9dd6f11d00041558d929c22" +dependencies = [ + "libc", + "log", +] + [[package]] name = "generic-array" version = "0.12.4" @@ -2593,6 +3618,7 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -2638,6 +3664,17 @@ dependencies = [ "libm", ] +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + [[package]] name = "getrandom" version = "0.2.17" @@ -2647,7 +3684,7 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi", + "wasi 0.11.1+wasi-snapshot-preview1", "wasm-bindgen", ] @@ -2688,6 +3725,26 @@ dependencies = [ "polyval", ] +[[package]] +name = "gif" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b" +dependencies = [ + "color_quant", + "weezl", +] + +[[package]] +name = "gif" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee8cfcc411d9adbbaba82fb72661cc1bcca13e8bba98b364e62b2dba8f960159" +dependencies = [ + "color_quant", + "weezl", +] + [[package]] name = "gimli" version = "0.32.3" @@ -2701,18 +3758,95 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43503cc176394dd30a6525f5f36e838339b8b5619be33ed9a7783841580a97b6" [[package]] -name = "h2" -version = "0.4.13" +name = "gl_generator" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", + "log", + "xml-rs", +] + +[[package]] +name = "gleam" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8647cc2e2ffde598ce5ca2809452e722dd8dc127885ab8aba2fa8b469cd3ed94" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "globset" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata 0.4.14", + "regex-syntax", +] + +[[package]] +name = "glow" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29038e1c483364cc6bb3cf78feee1816002e127c331a1eec55a4d202b9e1adb5" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "glslopt" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c406272113953698f579ad93ec5e909eae0b5f84f6839238b185081d0df04d" +dependencies = [ + "cc", +] + +[[package]] +name = "grid" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b40ca9252762c466af32d0b1002e91e4e1bc5398f77455e55474deb466355ff5" + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + +[[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 2.13.0", + "http 1.4.0", + "indexmap 2.14.0", "slab", "tokio", "tokio-util", @@ -2730,6 +3864,21 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "harfbuzz-sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb86e2fef3ba40cebffb8fa2cba811f06aa5c5fd296a4e469473e5398d166594" +dependencies = [ + "cc", + "core-graphics", + "core-text", + "foreign-types 0.5.0", + "freetype-sys", + "pkg-config", + "winapi", +] + [[package]] name = "hash32" version = "0.1.1" @@ -2800,6 +3949,17 @@ dependencies = [ "serde_core", ] +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", +] + [[package]] name = "hashlink" version = "0.10.0" @@ -2810,26 +3970,27 @@ dependencies = [ ] [[package]] -name = "headless_chrome" -version = "1.0.21" +name = "headers" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "333344ecb4b6a91ddd2e6a3c4fdb54aaddfbd2c82847f9c58fe42dd88afcf08e" +checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" dependencies = [ - "anyhow", - "auto_generate_cdp", "base64 0.22.1", - "derive_builder", - "log", - "rand 0.9.2", - "regex", - "serde", - "serde_json", - "tempfile", - "thiserror 2.0.18", - "tungstenite 0.28.0", - "url", - "which", - "winreg", + "bytes", + "headers-core", + "http 1.4.0", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" +dependencies = [ + "http 1.4.0", ] [[package]] @@ -2838,7 +3999,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "634bd4d29cbf24424d0a4bfcbf80c6960129dc24424752a7d1d1390607023422" dependencies = [ - "as-slice", + "as-slice 0.1.5", "generic-array 0.14.7", "hash32 0.1.1", "stable_deref_trait", @@ -2867,6 +4028,12 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "heck" version = "0.5.0" @@ -2909,7 +4076,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "629d8f3bbeda9d148036d6b0de0a3ab947abd08ce90626327fc3547a49d59d97" dependencies = [ "dirs 6.0.0", - "http", + "http 1.4.0", "indicatif", "libc", "log", @@ -2923,6 +4090,15 @@ dependencies = [ "windows-sys 0.60.2", ] +[[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" @@ -2932,6 +4108,17 @@ dependencies = [ "digest", ] +[[package]] +name = "htmd" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eee9b00ee2e599b4f86507157e3db786e7a3319fc225f0e9584151dbea2291d" +dependencies = [ + "html5ever 0.38.0", + "markup5ever_rcdom", + "phf 0.13.1", +] + [[package]] name = "html-escape" version = "0.2.13" @@ -3003,6 +4190,37 @@ dependencies = [ "match_token 0.35.0", ] +[[package]] +name = "html5ever" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1054432bae2f14e0061e33d23402fbaa67a921d319d56adc6bcf887ddad1cbc2" +dependencies = [ + "log", + "markup5ever 0.38.0", +] + +[[package]] +name = "html5ever" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a1761807faccc9a19e86944bbf40610014066306f96edcdedc2fb714bcb7b8" +dependencies = [ + "log", + "markup5ever 0.39.0", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + [[package]] name = "http" version = "1.4.0" @@ -3020,7 +4238,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http", + "http 1.4.0", ] [[package]] @@ -3031,7 +4249,7 @@ checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", "futures-core", - "http", + "http 1.4.0", "http-body", "pin-project-lite", ] @@ -3061,23 +4279,40 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" [[package]] -name = "hyper" -version = "1.8.1" +name = "hybrid-array" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +checksum = "f2d35805454dc9f8662a98d6d61886ffe26bd465f5960e0e55345c70d5c0d2a9" +dependencies = [ + "typenum", +] + +[[package]] +name = "hybrid-array" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891d15931895091dea5c47afa5b3c9a01ba634b311919fd4d41388fa0e3d76af" +dependencies = [ + "typenum", +] + +[[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 1.4.0", "http-body", "httparse", "httpdate", "itoa", "pin-project-lite", - "pin-utils", "smallvec", "tokio", "want", @@ -3089,9 +4324,10 @@ version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "http", + "http 1.4.0", "hyper", "hyper-util", + "log", "rustls", "rustls-native-certs", "rustls-pki-types", @@ -3127,7 +4363,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http", + "http 1.4.0", "http-body", "hyper", "ipnet", @@ -3166,6 +4402,118 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_calendar" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7265b2137f9a36f7634a308d91f984574bbdba8cfd95ceffe1c345552275a8ff" +dependencies = [ + "calendrical_calculations", + "displaydoc", + "icu_calendar_data", + "icu_locid", + "icu_locid_transform", + "icu_provider 1.5.0", + "tinystr 0.7.6", + "writeable 0.5.5", + "zerovec 0.10.4", +] + +[[package]] +name = "icu_calendar_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "820499e77e852162190608b4f444e7b4552619150eafc39a9e39333d9efae9e1" + +[[package]] +name = "icu_capi" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acc33c4f501b515cdb6b583b31ec009479a4c0cb4cf28dcdfcd54b29069d725e" +dependencies = [ + "diplomat", + "diplomat-runtime", + "icu_calendar", + "icu_casemap", + "icu_collator", + "icu_collections 1.5.0", + "icu_datetime", + "icu_decimal", + "icu_experimental", + "icu_list", + "icu_locid", + "icu_locid_transform", + "icu_normalizer 1.5.0", + "icu_plurals", + "icu_properties 1.5.1", + "icu_provider 1.5.0", + "icu_provider_adapters", + "icu_segmenter 1.5.0", + "icu_timezone", + "tinystr 0.7.6", + "unicode-bidi", + "writeable 0.5.5", +] + +[[package]] +name = "icu_casemap" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ff0c8ae9f8d31b12e27fc385ff9ab1f3cd9b17417c665c49e4ec958c37da75f" +dependencies = [ + "displaydoc", + "icu_casemap_data", + "icu_collections 1.5.0", + "icu_locid", + "icu_properties 1.5.1", + "icu_provider 1.5.0", + "writeable 0.5.5", + "zerovec 0.10.4", +] + +[[package]] +name = "icu_casemap_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02bd9f6276270c85a5cd54611adbbf94e993ec464a2a86a452a6c565b7ded5d9" + +[[package]] +name = "icu_collator" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d370371887d31d56f361c3eaa15743e54f13bc677059c9191c77e099ed6966b2" +dependencies = [ + "displaydoc", + "icu_collator_data", + "icu_collections 1.5.0", + "icu_locid_transform", + "icu_normalizer 1.5.0", + "icu_properties 1.5.1", + "icu_provider 1.5.0", + "smallvec", + "utf16_iter", + "utf8_iter", + "zerovec 0.10.4", +] + +[[package]] +name = "icu_collator_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b353986d77d28991eca4dea5ef2b8982f639342ae19ca81edc44f048bc38ebb" + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke 0.7.5", + "zerofrom", + "zerovec 0.10.4", +] + [[package]] name = "icu_collections" version = "2.1.1" @@ -3174,9 +4522,129 @@ checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" dependencies = [ "displaydoc", "potential_utf", - "yoke", + "yoke 0.8.1", "zerofrom", - "zerovec", + "zerovec 0.11.5", +] + +[[package]] +name = "icu_datetime" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d115efb85e08df3fd77e77f52e7e087545a783fffba8be80bfa2102f306b1780" +dependencies = [ + "displaydoc", + "either", + "fixed_decimal", + "icu_calendar", + "icu_datetime_data", + "icu_decimal", + "icu_locid", + "icu_locid_transform", + "icu_plurals", + "icu_provider 1.5.0", + "icu_timezone", + "smallvec", + "tinystr 0.7.6", + "writeable 0.5.5", + "zerovec 0.10.4", +] + +[[package]] +name = "icu_datetime_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef5f04076123cab1b7a926a7083db27fe0d7a0e575adb984854aae3f3a6507d" + +[[package]] +name = "icu_decimal" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb8fd98f86ec0448d85e1edf8884e4e318bb2e121bd733ec929a05c0a5e8b0eb" +dependencies = [ + "displaydoc", + "fixed_decimal", + "icu_decimal_data", + "icu_locid_transform", + "icu_provider 1.5.0", + "writeable 0.5.5", +] + +[[package]] +name = "icu_decimal_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c95dd97f5ccf6d837a9c115496ec7d36646fa86ca18e7f1412115b4c820ae2" + +[[package]] +name = "icu_experimental" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "844ad7b682a165c758065d694bc4d74ac67f176da1c499a04d85d492c0f193b7" +dependencies = [ + "displaydoc", + "fixed_decimal", + "icu_collections 1.5.0", + "icu_decimal", + "icu_experimental_data", + "icu_locid", + "icu_locid_transform", + "icu_normalizer 1.5.0", + "icu_pattern", + "icu_plurals", + "icu_properties 1.5.1", + "icu_provider 1.5.0", + "litemap 0.7.5", + "num-bigint", + "num-rational", + "num-traits", + "smallvec", + "tinystr 0.7.6", + "writeable 0.5.5", + "zerofrom", + "zerotrie 0.1.3", + "zerovec 0.10.4", +] + +[[package]] +name = "icu_experimental_data" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121df92eafb8f5286d4e8ff401c1e7db8384377f806db3f8db77b91e5b7bd4dd" + +[[package]] +name = "icu_list" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbfeda1d7775b6548edd4e8b7562304a559a91ed56ab56e18961a053f367c365" +dependencies = [ + "displaydoc", + "icu_list_data", + "icu_locid_transform", + "icu_provider 1.5.0", + "regex-automata 0.2.0", + "writeable 0.5.5", +] + +[[package]] +name = "icu_list_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52b1a7fbdbf3958f1be8354cb59ac73f165b7b7082d447ff2090355c9a069120" + +[[package]] +name = "icu_locale" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "532b11722e350ab6bf916ba6eb0efe3ee54b932666afec989465f9243fe6dd60" +dependencies = [ + "icu_collections 2.1.1", + "icu_locale_core", + "icu_locale_data", + "icu_provider 2.1.1", + "potential_utf", + "tinystr 0.8.2", + "zerovec 0.11.5", ] [[package]] @@ -3186,10 +4654,68 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" dependencies = [ "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", + "litemap 0.8.1", + "serde", + "tinystr 0.8.2", + "writeable 0.6.2", + "zerovec 0.11.5", +] + +[[package]] +name = "icu_locale_data" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c5f1d16b4c3a2642d3a719f18f6b06070ab0aef246a6418130c955ae08aa831" + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap 0.7.5", + "tinystr 0.7.6", + "writeable 0.5.5", + "zerovec 0.10.4", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider 1.5.0", + "tinystr 0.7.6", + "zerovec 0.10.4", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections 1.5.0", + "icu_normalizer_data 1.5.1", + "icu_properties 1.5.1", + "icu_provider 1.5.0", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec 0.10.4", ] [[package]] @@ -3198,40 +4724,118 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", + "icu_collections 2.1.1", + "icu_normalizer_data 2.1.1", + "icu_properties 2.1.2", + "icu_provider 2.1.1", "smallvec", - "zerovec", + "zerovec 0.11.5", ] +[[package]] +name = "icu_normalizer_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" + [[package]] name = "icu_normalizer_data" version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" +[[package]] +name = "icu_pattern" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7f36aafd098d6717de34e668a8120822275c1fba22b936e757b7de8a2fd7e4" +dependencies = [ + "displaydoc", + "either", + "writeable 0.5.5", + "yoke 0.7.5", + "zerofrom", +] + +[[package]] +name = "icu_plurals" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a70e7c025dbd5c501b0a5c188cd11666a424f0dadcd4f0a95b7dafde3b114" +dependencies = [ + "displaydoc", + "fixed_decimal", + "icu_locid_transform", + "icu_plurals_data", + "icu_provider 1.5.0", + "zerovec 0.10.4", +] + +[[package]] +name = "icu_plurals_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a483403238cb7d6a876a77a5f8191780336d80fe7b8b00bfdeb20be6abbfd112" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections 1.5.0", + "icu_locid_transform", + "icu_properties_data 1.5.1", + "icu_provider 1.5.0", + "tinystr 0.7.6", + "unicode-bidi", + "zerovec 0.10.4", +] + [[package]] name = "icu_properties" version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" dependencies = [ - "icu_collections", + "icu_collections 2.1.1", "icu_locale_core", - "icu_properties_data", - "icu_provider", - "zerotrie", - "zerovec", + "icu_properties_data 2.1.2", + "icu_provider 2.1.1", + "zerotrie 0.2.3", + "zerovec 0.11.5", ] +[[package]] +name = "icu_properties_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" + [[package]] name = "icu_properties_data" version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr 0.7.6", + "writeable 0.5.5", + "yoke 0.7.5", + "zerofrom", + "zerovec 0.10.4", +] + [[package]] name = "icu_provider" version = "2.1.1" @@ -3240,13 +4844,104 @@ checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" dependencies = [ "displaydoc", "icu_locale_core", - "writeable", - "yoke", + "serde", + "stable_deref_trait", + "writeable 0.6.2", + "yoke 0.8.1", "zerofrom", - "zerotrie", - "zerovec", + "zerotrie 0.2.3", + "zerovec 0.11.5", ] +[[package]] +name = "icu_provider_adapters" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6324dfd08348a8e0374a447ebd334044d766b1839bb8d5ccf2482a99a77c0bc" +dependencies = [ + "icu_locid", + "icu_locid_transform", + "icu_provider 1.5.0", + "tinystr 0.7.6", + "zerovec 0.10.4", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "icu_segmenter" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a717725612346ffc2d7b42c94b820db6908048f39434504cb130e8b46256b0de" +dependencies = [ + "core_maths", + "displaydoc", + "icu_collections 1.5.0", + "icu_locid", + "icu_provider 1.5.0", + "icu_segmenter_data 1.5.1", + "utf8_iter", + "zerovec 0.10.4", +] + +[[package]] +name = "icu_segmenter" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a807a7488f3f758629ae86d99d9d30dce24da2fb2945d74c80a4f4a62c71db73" +dependencies = [ + "core_maths", + "icu_collections 2.1.1", + "icu_locale", + "icu_provider 2.1.1", + "icu_segmenter_data 2.1.1", + "potential_utf", + "utf8_iter", + "zerovec 0.11.5", +] + +[[package]] +name = "icu_segmenter_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1e52775179941363cc594e49ce99284d13d6948928d8e72c755f55e98caa1eb" + +[[package]] +name = "icu_segmenter_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ebbb7321d9e21d25f5660366cb6c08201d0175898a3a6f7a41ee9685af21c80" + +[[package]] +name = "icu_timezone" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa91ba6a585939a020c787235daa8aee856d9bceebd6355e283c0c310bc6de96" +dependencies = [ + "displaydoc", + "icu_calendar", + "icu_provider 1.5.0", + "icu_timezone_data", + "tinystr 0.7.6", + "zerotrie 0.1.3", + "zerovec 0.10.4", +] + +[[package]] +name = "icu_timezone_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1adcf7b613a268af025bc2a2532b4b9ee294e6051c5c0832d8bff20ac0232e68" + [[package]] name = "id-arena" version = "2.3.0" @@ -3276,10 +4971,60 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ - "icu_normalizer", - "icu_properties", + "icu_normalizer 2.1.1", + "icu_properties 2.1.2", ] +[[package]] +name = "image" +version = "0.25.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" +dependencies = [ + "bytemuck", + "byteorder-lite", + "color_quant", + "exr", + "gif 0.14.2", + "image-webp", + "moxcms", + "num-traits", + "png 0.18.1", + "ravif", + "rayon", + "rgb", + "zune-core 0.5.1", + "zune-jpeg 0.5.15", +] + +[[package]] +name = "image-webp" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3" +dependencies = [ + "byteorder-lite", + "quick-error", +] + +[[package]] +name = "imagesize" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edcd27d72f2f071c64249075f42e205ff93c9a4c5f6c6da53e79ed9f9832c285" + +[[package]] +name = "imgref" +version = "1.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89194689a993ab15268672e99e7b0e19da2da3268ac682e8f02d29d4d1434cd7" + +[[package]] +name = "imsz" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396dda16a82727ec2d14aabc1167832bb823d849c54a246ca0cff6cfb7bc697c" + [[package]] name = "include_dir" version = "0.7.4" @@ -3318,12 +5063,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.13.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.16.1", + "hashbrown 0.17.1", "serde", "serde_core", ] @@ -3354,18 +5099,23 @@ dependencies = [ "bytes", "chrono", "common", - "dom_smoothie", + "dom_smoothie 0.10.0", "futures", - "headless_chrome", + "image", "lopdf 0.32.0", - "pdf-extract", + "pdf-extract 0.9.0", + "pdfium-auto", + "pdfium-render", "reqwest 0.12.28", "retrieval-pipeline", "serde", "serde_json", + "servo-allocator", + "servo-fetch", "state-machines", "surrealdb", "tempfile", + "tendril 0.4.3", "text-splitter", "tokenizers 0.20.4", "tokio", @@ -3374,6 +5124,17 @@ dependencies = [ "uuid", ] +[[package]] +name = "inherent" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c727f80bfa4a6c6e2508d2f05b6f4bfce242030bd88ed15ae5331c5b5d30fba7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] + [[package]] name = "inotify" version = "0.11.0" @@ -3417,6 +5178,45 @@ dependencies = [ "tempfile", ] +[[package]] +name = "interpolate_name" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "inventory" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b" +dependencies = [ + "rustversion", +] + +[[package]] +name = "ipc-channel" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a441490012d80e9aea75fb27503df8e87e9557dcfc6fe4244dde86bfc12e94e3" +dependencies = [ + "crossbeam-channel", + "libc", + "mio", + "postcard", + "rand 0.9.2", + "rustc-hash", + "serde_core", + "tempfile", + "thiserror 2.0.18", + "uuid", + "windows 0.61.3", +] + [[package]] name = "ipnet" version = "2.11.0" @@ -3507,6 +5307,30 @@ version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +[[package]] +name = "jiff" +version = "0.2.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4603d3033e49e2b0e31229fcab20a5d40089c607d975cd9c80551dc69eed9102" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", +] + +[[package]] +name = "jiff-static" +version = "0.2.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "782d32378dddf207193ac91cefb848ad41abb58195c95168e1291227a0832b47" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] + [[package]] name = "jni" version = "0.22.4" @@ -3521,7 +5345,7 @@ dependencies = [ "simd_cesu8", "thiserror 2.0.18", "walkdir", - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -3610,6 +5434,42 @@ dependencies = [ "simple_asn1", ] +[[package]] +name = "keccak" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "kem" +version = "0.3.0-pre.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b8645470337db67b01a7f966decf7d0bafedbae74147d33e641c67a91df239f" +dependencies = [ + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "keyboard-types" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fbe853b403ae61a04233030ae8a79d94975281ed9770a1f9e246732b534b28d" +dependencies = [ + "bitflags 2.11.0", + "serde", + "unicode-segmentation", +] + +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + [[package]] name = "kqueue" version = "1.1.1" @@ -3630,6 +5490,29 @@ dependencies = [ "libc", ] +[[package]] +name = "kurbo" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c62026ae44756f8a599ba21140f350303d4f08dcdcc71b5ad9c9bb8128c13c62" +dependencies = [ + "arrayvec", + "euclid 0.22.14", + "smallvec", +] + +[[package]] +name = "kurbo" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce9729cc38c18d86123ab736fd2e7151763ba226ac2490ec092d1dd148825e32" +dependencies = [ + "arrayvec", + "euclid 0.22.14", + "serde", + "smallvec", +] + [[package]] name = "lalrpop" version = "0.20.2" @@ -3641,11 +5524,11 @@ dependencies = [ "ena", "itertools 0.11.0", "lalrpop-util", - "petgraph", + "petgraph 0.6.5", "pico-args", "regex", "regex-syntax", - "string_cache", + "string_cache 0.8.9", "term", "tiny-keccak", "unicode-xid", @@ -3658,7 +5541,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" dependencies = [ - "regex-automata", + "regex-automata 0.4.14", ] [[package]] @@ -3666,6 +5549,9 @@ name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +dependencies = [ + "spin", +] [[package]] name = "leb128fmt" @@ -3673,6 +5559,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" +[[package]] +name = "lebe" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8" + [[package]] name = "lexicmp" version = "0.1.0" @@ -3697,6 +5589,26 @@ version = "0.2.182" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +[[package]] +name = "libfuzzer-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9fd2f41a1cba099f79a0b6b6c35656cf7c03351a7bae8ff0f28f25270f929d2" +dependencies = [ + "arbitrary", + "cc", +] + +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link 0.2.1", +] + [[package]] name = "libloading" version = "0.9.0" @@ -3704,7 +5616,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "754ca22de805bb5744484a5b151a9e1a8e837d5dc232c2d7d8c2e3492edc8b60" dependencies = [ "cfg-if", - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -3723,6 +5635,35 @@ dependencies = [ "libc", ] +[[package]] +name = "libsqlite3-sys" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "133c182a6a2c87864fe97778797e46c7e999672690dc9fa3ee8e241aa4a9c13f" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "libz-sys" +version = "1.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85bc9657773828b90eeb625adff10eeac83cc21bbfd8e23a03eaa8a33c9e28d9" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linebender_resource_handle" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4a5ff6bcca6c4867b1c4fd4ef63e4db7436ef363e0ad7531d1558856bae64f4" + [[package]] name = "linfa-linalg" version = "0.1.0" @@ -3747,6 +5688,12 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +[[package]] +name = "litemap" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" + [[package]] name = "litemap" version = "0.8.1" @@ -3760,6 +5707,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ "scopeguard", + "serde", ] [[package]] @@ -3768,6 +5716,15 @@ version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +[[package]] +name = "loop9" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" +dependencies = [ + "imgref", +] + [[package]] name = "lopdf" version = "0.32.0" @@ -3799,7 +5756,7 @@ dependencies = [ "ecb", "encoding_rs", "flate2", - "indexmap 2.13.0", + "indexmap 2.14.0", "itoa", "log", "md-5", @@ -3813,6 +5770,34 @@ dependencies = [ "weezl", ] +[[package]] +name = "lopdf" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7184fdea2bc3cd272a1acec4030c321a8f9875e877b3f92a53f2f6033fdc289" +dependencies = [ + "aes", + "bitflags 2.11.0", + "cbc", + "ecb", + "encoding_rs", + "flate2", + "getrandom 0.3.4", + "indexmap 2.14.0", + "itoa", + "log", + "md-5", + "nom 8.0.0", + "nom_locate", + "rand 0.9.2", + "rangemap", + "sha2", + "stringprep", + "thiserror 2.0.18", + "ttf-parser", + "weezl", +] + [[package]] name = "lru" version = "0.12.5" @@ -3822,6 +5807,15 @@ dependencies = [ "hashbrown 0.15.5", ] +[[package]] +name = "lru" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e0b564323a0fb6d54b864f625ae139de9612e27edb944dda37c109f05aac531" +dependencies = [ + "hashbrown 0.17.1", +] + [[package]] name = "lru-slab" version = "0.1.2" @@ -3834,6 +5828,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" +[[package]] +name = "mach2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dae608c151f68243f2b000364e1f7b186d9c29845f7d2d85bd31b9ad77ad552b" + [[package]] name = "macro_rules_attribute" version = "0.2.2" @@ -3875,6 +5875,26 @@ dependencies = [ "uuid", ] +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "malloc_size_of_derive" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f44db74bde26fdf427af23f1d146c211aed857c59e3be750cf2617f6b0b05c94" +dependencies = [ + "proc-macro2", + "syn 2.0.115", + "synstructure", +] + [[package]] name = "maplit" version = "1.0.2" @@ -3889,10 +5909,10 @@ checksum = "03a7b81dfb91586d0677086d40a6d755070e0799b71bb897485bac408dfd5c69" dependencies = [ "log", "phf 0.11.3", - "phf_codegen", - "string_cache", - "string_cache_codegen", - "tendril", + "phf_codegen 0.11.3", + "string_cache 0.8.9", + "string_cache_codegen 0.5.4", + "tendril 0.4.3", ] [[package]] @@ -3902,8 +5922,42 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "311fe69c934650f8f19652b3946075f0fc41ad8757dbb68f1ca14e7900ecc1c3" dependencies = [ "log", - "tendril", - "web_atoms", + "tendril 0.4.3", + "web_atoms 0.1.3", +] + +[[package]] +name = "markup5ever" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8983d30f2915feeaaab2d6babdd6bc7e9ed1a00b66b5e6d74df19aa9c0e91862" +dependencies = [ + "log", + "tendril 0.5.0", + "web_atoms 0.2.5", +] + +[[package]] +name = "markup5ever" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7122d987ec5f704ee56f6e5b41a7d93722e9aae27ae07cafa4036c4d3f9757de" +dependencies = [ + "log", + "tendril 0.5.0", + "web_atoms 0.2.5", +] + +[[package]] +name = "markup5ever_rcdom" +version = "0.38.0+unofficial" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "333171ccdf66e915257740d44e38ea5b1b19ce7b45d33cc35cb6f118fbd981ff" +dependencies = [ + "html5ever 0.38.0", + "markup5ever 0.38.0", + "tendril 0.5.0", + "xml5ever 0.38.0", ] [[package]] @@ -3934,7 +5988,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" dependencies = [ - "regex-automata", + "regex-automata 0.4.14", ] [[package]] @@ -3953,6 +6007,22 @@ dependencies = [ "rawpointer", ] +[[package]] +name = "maybe-owned" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4facc753ae494aeb6e3c22f839b158aebd4f9270f55cd3c79906c45476c47ab4" + +[[package]] +name = "maybe-rayon" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" +dependencies = [ + "cfg-if", + "rayon", +] + [[package]] name = "md-5" version = "0.10.6" @@ -3975,6 +6045,15 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +[[package]] +name = "memmap2" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" +dependencies = [ + "libc", +] + [[package]] name = "memo-map" version = "0.3.3" @@ -4010,6 +6089,21 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime-multipart-hyper1" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc819448803ee517eb413276ca59613c2850a95c4fdcd87ec82c5a6ce6cdab1a" +dependencies = [ + "buf-read-ext", + "http 1.4.0", + "httparse", + "log", + "mime", + "tempfile", + "textnonce", +] + [[package]] name = "mime_guess" version = "2.0.5" @@ -4083,10 +6177,37 @@ checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" dependencies = [ "libc", "log", - "wasi", + "wasi 0.11.1+wasi-snapshot-preview1", "windows-sys 0.61.2", ] +[[package]] +name = "ml-dsa" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac4a46643af2001eafebcc37031fc459eb72d45057aac5d7a15b00046a2ad6db" +dependencies = [ + "const-oid", + "hybrid-array 0.3.1", + "num-traits", + "pkcs8", + "rand_core 0.6.4", + "sha3", + "signature", +] + +[[package]] +name = "ml-kem" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de49b3df74c35498c0232031bb7e85f9389f913e2796169c8ab47a53993a18f" +dependencies = [ + "hybrid-array 0.2.3", + "kem", + "rand_core 0.6.4", + "sha3", +] + [[package]] name = "monostate" version = "0.1.18" @@ -4109,6 +6230,62 @@ dependencies = [ "syn 2.0.115", ] +[[package]] +name = "moxcms" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" +dependencies = [ + "num-traits", + "pxfm", +] + +[[package]] +name = "mozangle" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298bc7f83d5cca3789e47779e92cda492b75f11e03995bf558475bd9df2f639b" +dependencies = [ + "bindgen", + "cc", + "gl_generator", + "libz-sys", + "walkdir", +] + +[[package]] +name = "mozjs" +version = "0.15.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ae3dcd73fd1aa7ab08c33c128d27243d07574874338b902872802c2b1d4b7d4" +dependencies = [ + "bindgen", + "cc", + "encoding_rs", + "libc", + "log", + "mozjs_sys", + "num-traits", +] + +[[package]] +name = "mozjs_sys" +version = "140.10.1-0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf708f34816a335a5c019451a3776196d2c66eb7d4d950c04d4b781821e8feff" +dependencies = [ + "bindgen", + "cc", + "encoding_c", + "encoding_c_mem", + "flate2", + "icu_capi", + "libc", + "libz-sys", + "tar", + "walkdir", +] + [[package]] name = "multer" version = "3.1.0" @@ -4118,7 +6295,7 @@ dependencies = [ "bytes", "encoding_rs", "futures-util", - "http", + "http 1.4.0", "httparse", "memchr", "mime", @@ -4187,6 +6364,12 @@ dependencies = [ "rand 0.8.5", ] +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + [[package]] name = "new_debug_unreachable" version = "1.0.6" @@ -4202,6 +6385,15 @@ dependencies = [ "smallvec", ] +[[package]] +name = "no_std_io2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418abd1b6d34fbf6cae440dc874771b0525a604428704c76e48b29a5e67b8003" +dependencies = [ + "memchr", +] + [[package]] name = "noisy_float" version = "0.2.1" @@ -4230,6 +6422,27 @@ dependencies = [ "memchr", ] +[[package]] +name = "nom-language" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2de2bc5b451bfedaef92c90b8939a8fff5770bdcc1fafd6239d086aab8fa6b29" +dependencies = [ + "nom 8.0.0", +] + +[[package]] +name = "nom-rfc8288" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaf26c6675a34266d3d71137fc5d876adb5e3d74963181397fd39742a8341576" +dependencies = [ + "itertools 0.14.0", + "nom 8.0.0", + "nom-language", + "thiserror 2.0.18", +] + [[package]] name = "nom_locate" version = "5.0.0" @@ -4247,6 +6460,12 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9e591e719385e6ebaeb5ce5d3887f7d5676fceca6411d1925ccc95745f3d6f7" +[[package]] +name = "noop_proc_macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" + [[package]] name = "notify" version = "8.2.0" @@ -4302,6 +6521,23 @@ dependencies = [ "num-traits", ] +[[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 0.8.5", + "serde", + "smallvec", + "zeroize", +] + [[package]] name = "num-complex" version = "0.4.6" @@ -4317,6 +6553,17 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] + [[package]] name = "num-integer" version = "0.1.46" @@ -4326,6 +6573,28 @@ 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-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -4346,12 +6615,158 @@ dependencies = [ "libc", ] +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + [[package]] name = "number_prefix" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "objc2" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" +dependencies = [ + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" +dependencies = [ + "bitflags 2.11.0", + "objc2", + "objc2-core-foundation", + "objc2-foundation", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.11.0", + "block2", + "dispatch2", + "libc", + "objc2", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags 2.11.0", + "block2", + "dispatch2", + "libc", + "objc2", + "objc2-core-foundation", + "objc2-io-surface", + "objc2-metal", +] + +[[package]] +name = "objc2-core-text" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" +dependencies = [ + "bitflags 2.11.0", + "block2", + "libc", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", +] + +[[package]] +name = "objc2-core-video" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" +dependencies = [ + "bitflags 2.11.0", + "objc2-core-foundation", + "objc2-core-graphics", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags 2.11.0", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +dependencies = [ + "bitflags 2.11.0", + "libc", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-metal" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794" +dependencies = [ + "bitflags 2.11.0", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" +dependencies = [ + "bitflags 2.11.0", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + [[package]] name = "object" version = "0.37.3" @@ -4378,7 +6793,7 @@ dependencies = [ "md-5", "parking_lot", "percent-encoding", - "quick-xml", + "quick-xml 0.37.5", "rand 0.8.5", "reqwest 0.12.28", "ring", @@ -4401,7 +6816,7 @@ dependencies = [ "bytes", "chrono", "futures", - "http", + "http 1.4.0", "humantime", "itertools 0.14.0", "parking_lot", @@ -4415,6 +6830,42 @@ dependencies = [ "web-time", ] +[[package]] +name = "ocb3" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c196e0276c471c843dd5777e7543a36a298a4be942a2a688d8111cd43390dedb" +dependencies = [ + "aead", + "cipher", + "ctr", + "subtle", +] + +[[package]] +name = "ohos-media-sys" +version = "0.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6384d6e3befdaaec0206772e05a6b9222188e8ce023f6a164ca96e1091ef2e87" +dependencies = [ + "ohos-sys-opaque-types", +] + +[[package]] +name = "ohos-sys-opaque-types" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0135000ddab1491bd02a60e855c02e71be855845ca354162c1e189dea79d015" + +[[package]] +name = "ohos-window-sys" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bd994e92b2c9daaa310068b45e3c3108d1a7c26a01daded0f3ddada692e688e" +dependencies = [ + "ohos-sys-opaque-types", +] + [[package]] name = "once_cell" version = "1.21.3" @@ -4463,7 +6914,7 @@ checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" dependencies = [ "bitflags 2.11.0", "cfg-if", - "foreign-types", + "foreign-types 0.3.2", "libc", "once_cell", "openssl-macros", @@ -4499,6 +6950,27 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "openxr" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40adeaa3219baa4412a522742eeee152656763008a39c68a50fd3027fe37625e" +dependencies = [ + "libc", + "libloading 0.8.9", + "ndk-context", + "openxr-sys", +] + +[[package]] +name = "openxr-sys" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8b94052f57756896c60b504769568fc538808210e77190b69c69b467ee7eaaf" +dependencies = [ + "libc", +] + [[package]] name = "option-ext" version = "0.2.0" @@ -4515,13 +6987,19 @@ dependencies = [ "hashbrown 0.14.5", ] +[[package]] +name = "ordermap" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063" + [[package]] name = "ort" version = "2.0.0-rc.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5df903c0d2c07b56950f1058104ab0c8557159f2741782223704de9be73c3c" dependencies = [ - "libloading", + "libloading 0.9.0", "ndarray 0.17.2", "ort-sys", "smallvec", @@ -4534,6 +7012,16 @@ version = "2.0.0-rc.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06503bb33f294c5f1ba484011e053bfa6ae227074bdb841e9863492dc5960d4b" +[[package]] +name = "os_pipe" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + [[package]] name = "owo-colors" version = "4.2.3" @@ -4544,6 +7032,44 @@ dependencies = [ "supports-color 3.0.2", ] +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + +[[package]] +name = "p384" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + +[[package]] +name = "p521" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc9e2161f1f215afdfce23677034ae137bbd45016a880c2eb3ba8eb95f085b2" +dependencies = [ + "base16ct", + "ecdsa", + "elliptic-curve", + "primeorder", + "rand_core 0.6.4", + "sha2", +] + [[package]] name = "parking" version = "2.2.1" @@ -4570,7 +7096,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -4599,6 +7125,12 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pastey" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" + [[package]] name = "path-clean" version = "1.0.1" @@ -4632,7 +7164,7 @@ dependencies = [ "adobe-cmap-parser", "cff-parser", "encoding_rs", - "euclid", + "euclid 0.20.14", "log", "lopdf 0.36.0", "postscript", @@ -4640,12 +7172,91 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "pdf-extract" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28ba1758a3d3f361459645780e09570b573fc3c82637449e9963174c813a98" +dependencies = [ + "adobe-cmap-parser", + "cff-parser", + "encoding_rs", + "euclid 0.20.14", + "log", + "lopdf 0.38.0", + "postscript", + "type1-encoding-parser", + "unicode-normalization", +] + +[[package]] +name = "pdfium-auto" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32ec76821f3c4bdb31cb55e57f31508e6ff8d3e26c93e6705513412b6de7b515" +dependencies = [ + "dirs 5.0.1", + "flate2", + "pdfium-render", + "reqwest 0.12.28", + "tar", + "thiserror 2.0.18", +] + +[[package]] +name = "pdfium-render" +version = "0.8.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6553f6604a52b3203db7b4e9d51eb4dd193cf455af9e56d40cab6575b547b679" +dependencies = [ + "bitflags 2.11.0", + "bytemuck", + "bytes", + "chrono", + "console_error_panic_hook", + "console_log", + "image", + "itertools 0.14.0", + "js-sys", + "libloading 0.9.0", + "log", + "maybe-owned", + "once_cell", + "utf16string", + "vecmath", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "pdqselect" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ec91767ecc0a0bbe558ce8c9da33c068066c57ecc8bb8477ef8c1ad3ef77c27" +[[package]] +name = "peek-poke" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef60922033e31835f6cf98b9b81b58368037b71d2a81928985cd9d0b3b3171fb" +dependencies = [ + "euclid 0.22.14", + "peek-poke-derive", +] + +[[package]] +name = "peek-poke-derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271f78bae1e699b58c180a384a2e8d78ccbb60b853e15db92339725f3a2764d5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", + "synstructure", +] + [[package]] name = "pem" version = "3.0.6" @@ -4656,6 +7267,28 @@ dependencies = [ "serde_core", ] +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "peniko" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3c76095c9a636173600478e0373218c7b955335048c2bcd12dc6a79657649d8" +dependencies = [ + "bytemuck", + "color", + "kurbo 0.12.0", + "linebender_resource_handle", + "smallvec", +] + [[package]] name = "percent-encoding" version = "2.3.2" @@ -4705,14 +7338,24 @@ dependencies = [ "sha2", ] +[[package]] +name = "petgraph" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3659d1ee90221741f65dd128d9998311b0e40c5d3c23a62445938214abce4f" +dependencies = [ + "fixedbitset 0.1.9", + "ordermap", +] + [[package]] name = "petgraph" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ - "fixedbitset", - "indexmap 2.13.0", + "fixedbitset 0.4.2", + "indexmap 2.14.0", ] [[package]] @@ -4731,7 +7374,7 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ - "phf_macros", + "phf_macros 0.11.3", "phf_shared 0.11.3", ] @@ -4744,16 +7387,37 @@ dependencies = [ "phf_shared 0.12.1", ] +[[package]] +name = "phf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +dependencies = [ + "phf_macros 0.13.1", + "phf_shared 0.13.1", + "serde", +] + [[package]] name = "phf_codegen" version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" dependencies = [ - "phf_generator", + "phf_generator 0.11.3", "phf_shared 0.11.3", ] +[[package]] +name = "phf_codegen" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1" +dependencies = [ + "phf_generator 0.13.1", + "phf_shared 0.13.1", +] + [[package]] name = "phf_generator" version = "0.11.3" @@ -4764,13 +7428,23 @@ dependencies = [ "rand 0.8.5", ] +[[package]] +name = "phf_generator" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" +dependencies = [ + "fastrand", + "phf_shared 0.13.1", +] + [[package]] name = "phf_macros" version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ - "phf_generator", + "phf_generator 0.11.3", "phf_shared 0.11.3", "proc-macro2", "quote", @@ -4778,6 +7452,19 @@ dependencies = [ "unicase", ] +[[package]] +name = "phf_macros" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" +dependencies = [ + "phf_generator 0.13.1", + "phf_shared 0.13.1", + "proc-macro2", + "quote", + "syn 2.0.115", +] + [[package]] name = "phf_shared" version = "0.11.3" @@ -4797,6 +7484,15 @@ dependencies = [ "siphasher", ] +[[package]] +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher", +] + [[package]] name = "pico-args" version = "0.5.0" @@ -4835,12 +7531,77 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "piston-float" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad78bf43dcf80e8f950c92b84f938a0fc7590b7f6866fbcbeca781609c115590" + +[[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", + "rand_core 0.6.4", + "spki", +] + [[package]] name = "pkg-config" version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +[[package]] +name = "plane-split" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c1f7d82649829ecdef8e258790b0587acf0a8403f0ce963473d8e918acc1643" +dependencies = [ + "euclid 0.22.14", + "log", + "smallvec", +] + +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "png" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" +dependencies = [ + "bitflags 2.11.0", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + [[package]] name = "polling" version = "3.11.0" @@ -4855,6 +7616,17 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "poly1305" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" +dependencies = [ + "cpufeatures", + "opaque-debug", + "universal-hash", +] + [[package]] name = "polyval" version = "0.6.2" @@ -4888,6 +7660,18 @@ dependencies = [ "portable-atomic", ] +[[package]] +name = "postcard" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" +dependencies = [ + "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", + "serde", +] + [[package]] name = "postscript" version = "0.14.1" @@ -4900,7 +7684,9 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" dependencies = [ - "zerovec", + "serde_core", + "writeable 0.6.2", + "zerovec 0.11.5", ] [[package]] @@ -4934,6 +7720,15 @@ dependencies = [ "syn 2.0.115", ] +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + [[package]] name = "proc-macro-crate" version = "3.4.0" @@ -4974,6 +7769,34 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "profiling" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5" +dependencies = [ + "profiling-procmacros", +] + +[[package]] +name = "profiling-procmacros" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4488a4a36b9a4ba6b9334a32a39971f77c1436ec82c38707bce707699cc3bbcb" +dependencies = [ + "quote", + "syn 2.0.115", +] + +[[package]] +name = "psl" +version = "2.1.213" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04e78830163eebdf905adb55ba26ba9b3ba554b08bd84c2fbe3b643c8addf22c" +dependencies = [ + "psl-types", +] + [[package]] name = "psl-types" version = "2.0.11" @@ -5021,6 +7844,18 @@ dependencies = [ "unicase", ] +[[package]] +name = "pxfm" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0c5ccf5294c6ccd63a74f1565028353830a9c2f5eb0c682c355c471726a6e3f" + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + [[package]] name = "quick-xml" version = "0.37.5" @@ -5031,6 +7866,15 @@ dependencies = [ "serde", ] +[[package]] +name = "quick-xml" +version = "0.40.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2474bd2e5029e7ccb6abb2ba48cf2383a333851dedf495901544281590c7da7f" +dependencies = [ + "memchr", +] + [[package]] name = "quick_cache" version = "0.5.2" @@ -5143,6 +7987,19 @@ dependencies = [ "serde", ] +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + [[package]] name = "rand" version = "0.8.5" @@ -5164,6 +8021,16 @@ dependencies = [ "rand_core 0.9.5", ] +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + [[package]] name = "rand_chacha" version = "0.3.1" @@ -5184,6 +8051,15 @@ dependencies = [ "rand_core 0.9.5", ] +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + [[package]] name = "rand_core" version = "0.6.4" @@ -5202,12 +8078,77 @@ dependencies = [ "getrandom 0.3.4", ] +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + [[package]] name = "rangemap" version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "973443cf09a9c8656b574a866ab68dfa19f0867d0340648c7d2f6a71b8a8ea68" +[[package]] +name = "rav1e" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43b6dd56e85d9483277cde964fd1bdb0428de4fec5ebba7540995639a21cb32b" +dependencies = [ + "aligned-vec", + "arbitrary", + "arg_enum_proc_macro", + "arrayvec", + "av-scenechange", + "av1-grain", + "bitstream-io", + "built", + "cfg-if", + "interpolate_name", + "itertools 0.14.0", + "libc", + "libfuzzer-sys", + "log", + "maybe-rayon", + "new_debug_unreachable", + "noop_proc_macro", + "num-derive", + "num-traits", + "paste", + "profiling", + "rand 0.9.2", + "rand_chacha 0.9.0", + "simd_helpers", + "thiserror 2.0.18", + "v_frame", + "wasm-bindgen", +] + +[[package]] +name = "ravif" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e52310197d971b0f5be7fe6b57530dcd27beb35c1b013f29d66c1ad73fbbcc45" +dependencies = [ + "avif-serialize", + "imgref", + "loop9", + "quick-error", + "rav1e", + "rayon", + "rgb", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + [[package]] name = "rawpointer" version = "0.2.1" @@ -5256,6 +8197,16 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "read-fonts" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717cf23b488adf64b9d711329542ba34de147df262370221940dfabc2c91358" +dependencies = [ + "bytemuck", + "font-types", +] + [[package]] name = "reblessive" version = "0.4.3" @@ -5321,10 +8272,19 @@ checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" dependencies = [ "aho-corasick", "memchr", - "regex-automata", + "regex-automata 0.4.14", "regex-syntax", ] +[[package]] +name = "regex-automata" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9368763f5a9b804326f3af749e16f9abf378d227bcdee7634b13d8f17793782" +dependencies = [ + "memchr", +] + [[package]] name = "regex-automata" version = "0.4.14" @@ -5366,10 +8326,11 @@ dependencies = [ "base64 0.22.1", "bytes", "encoding_rs", + "futures-channel", "futures-core", "futures-util", "h2", - "http", + "http 1.4.0", "http-body", "http-body-util", "hyper", @@ -5416,7 +8377,7 @@ dependencies = [ "bytes", "futures-core", "futures-util", - "http", + "http 1.4.0", "http-body", "http-body-util", "hyper", @@ -5448,6 +8409,23 @@ dependencies = [ "web-sys", ] +[[package]] +name = "resvg" +version = "0.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8928798c0a55e03c9ca6c4c6846f76377427d2c1e1f7e6de3c06ae57942df43" +dependencies = [ + "gif 0.13.3", + "image-webp", + "log", + "pico-args", + "rgb", + "svgtypes", + "tiny-skia", + "usvg", + "zune-jpeg 0.4.21", +] + [[package]] name = "retrieval-pipeline" version = "0.1.0" @@ -5510,6 +8488,25 @@ dependencies = [ "syn 2.0.115", ] +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "rgb" +version = "0.8.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" +dependencies = [ + "bytemuck", +] + [[package]] name = "ring" version = "0.17.14" @@ -5598,6 +8595,19 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e27ee8bb91ca0adcf0ecb116293afa12d393f9c2b9b9cd54d33e8078fe19839" +[[package]] +name = "ron" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "beceb6f7bf81c73e73aeef6dd1356d9a1b2b4909e1f0fc3e59b034f9572d7b7f" +dependencies = [ + "base64 0.22.1", + "bitflags 2.11.0", + "serde", + "serde_derive", + "unicode-ident", +] + [[package]] name = "ron" version = "0.12.0" @@ -5612,6 +8622,34 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "roxmltree" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" + +[[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 0.6.4", + "sha1", + "sha2", + "signature", + "spki", + "subtle", + "zeroize", +] + [[package]] name = "rstar" version = "0.8.4" @@ -5673,6 +8711,20 @@ dependencies = [ "smallvec", ] +[[package]] +name = "rusqlite" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "165ca6e57b20e1351573e3729b958bc62f0e48025386970b6e4d29e7a7e71f3f" +dependencies = [ + "bitflags 2.11.0", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "smallvec", +] + [[package]] name = "rust-ini" version = "0.21.3" @@ -5717,9 +8769,9 @@ checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" [[package]] name = "rustc_lexer" @@ -5835,6 +8887,24 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +[[package]] +name = "rustybuzz" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702" +dependencies = [ + "bitflags 2.11.0", + "bytemuck", + "core_maths", + "log", + "smallvec", + "ttf-parser", + "unicode-bidi-mirroring", + "unicode-ccc", + "unicode-properties", + "unicode-script", +] + [[package]] name = "ryu" version = "1.0.23" @@ -5921,12 +8991,60 @@ dependencies = [ "sha2", ] +[[package]] +name = "sea-query" +version = "1.0.0-rc.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58decdaaaf2a698170af2fa1b2e8f7b43a970e7768bf18aebaab113bada46354" +dependencies = [ + "inherent", + "sea-query-derive", +] + +[[package]] +name = "sea-query-derive" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0b0f466921cdd3cf4b89d5c3ac2173dba89a873ab395b123a645de181ec7537" +dependencies = [ + "darling 0.20.11", + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 2.0.115", + "thiserror 2.0.18", +] + +[[package]] +name = "sea-query-rusqlite" +version = "0.8.0-rc.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d42855d86ace6f5d9e425b65a8035d45c64e001db87a254ecfd87f226b4b0f7" +dependencies = [ + "rusqlite", + "sea-query", +] + [[package]] name = "seahash" version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array 0.14.7", + "pkcs8", + "subtle", + "zeroize", +] + [[package]] name = "secrecy" version = "0.10.3" @@ -5968,17 +9086,57 @@ checksum = "fd568a4c9bb598e291a08244a5c1f5a8a6650bee243b5b0f8dbb3d9cc1d87fe8" dependencies = [ "bitflags 2.11.0", "cssparser 0.34.0", - "derive_more", + "derive_more 0.99.20", "fxhash", "log", "new_debug_unreachable", "phf 0.11.3", - "phf_codegen", + "phf_codegen 0.11.3", "precomputed-hash", "servo_arc", "smallvec", ] +[[package]] +name = "selectors" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5d9c0c92a92d33f08817311cf3f2c29a3538a8240e94a6a3c622ce652d7e00c" +dependencies = [ + "bitflags 2.11.0", + "cssparser 0.36.0", + "derive_more 2.1.1", + "log", + "new_debug_unreachable", + "phf 0.13.1", + "phf_codegen 0.13.1", + "precomputed-hash", + "rustc-hash", + "servo_arc", + "smallvec", +] + +[[package]] +name = "selectors" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cfaaa6035167f0e604e42723c7650d59ee269ef220d7bbe0565602c8a0173b9" +dependencies = [ + "bitflags 2.11.0", + "cssparser 0.36.0", + "derive_more 2.1.1", + "log", + "new_debug_unreachable", + "phf 0.13.1", + "phf_codegen 0.13.1", + "precomputed-hash", + "rustc-hash", + "servo_arc", + "smallvec", + "to_shmem", + "to_shmem_derive", +] + [[package]] name = "self_cell" version = "1.2.2" @@ -6044,6 +9202,16 @@ dependencies = [ "xml-rs", ] +[[package]] +name = "serde_bytes" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" +dependencies = [ + "serde", + "serde_core", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -6070,7 +9238,7 @@ version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ - "indexmap 2.13.0", + "indexmap 2.14.0", "itoa", "memchr", "serde", @@ -6120,7 +9288,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.13.0", + "indexmap 2.14.0", "schemars 0.9.0", "schemars 1.2.1", "serde_core", @@ -6147,19 +9315,1487 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.13.0", + "indexmap 2.14.0", "itoa", "ryu", "serde", "unsafe-libyaml", ] +[[package]] +name = "servo" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af705e66474e50bb0bd63bac3a49711ae24e7e771664aae62d3d1a47fbf6e714" +dependencies = [ + "accesskit", + "bitflags 2.11.0", + "cookie 0.18.1", + "crossbeam-channel", + "dpi", + "env_logger", + "euclid 0.22.14", + "gaol", + "http 1.4.0", + "image", + "ipc-channel", + "keyboard-types", + "log", + "mozangle", + "parking_lot", + "rustc-hash", + "serde", + "servo-background-hang-monitor", + "servo-base", + "servo-canvas-traits", + "servo-config", + "servo-constellation", + "servo-constellation-traits", + "servo-default-resources", + "servo-devtools", + "servo-devtools-traits", + "servo-embedder-traits", + "servo-fonts", + "servo-geometry", + "servo-layout", + "servo-layout-api", + "servo-media", + "servo-media-dummy", + "servo-media-ohos", + "servo-media-thread", + "servo-net", + "servo-net-traits", + "servo-paint", + "servo-paint-api", + "servo-profile", + "servo-profile-traits", + "servo-script", + "servo-script-traits", + "servo-storage", + "servo-storage-traits", + "servo-tracing", + "servo-url", + "servo-wakelock", + "servo-webgl", + "servo-webxr", + "stylo", + "stylo_traits", + "surfman", + "tokio", + "url", + "webrender", + "webrender_api", +] + +[[package]] +name = "servo-allocator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18029ac6e52d0b5f94ec50da15a6c9e15bd4efd3f90245dba8d7e6b4c05a5a42" +dependencies = [ + "libc", + "tikv-jemalloc-sys", + "tikv-jemallocator", + "windows-sys 0.61.2", +] + +[[package]] +name = "servo-background-hang-monitor" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9974892bc187fe739cb3a81bdb4a1ee6dd0cb4449d861d7b7275f4007500a0b3" +dependencies = [ + "backtrace", + "crossbeam-channel", + "libc", + "log", + "rustc-hash", + "serde_json", + "servo-background-hang-monitor-api", + "servo-base", +] + +[[package]] +name = "servo-background-hang-monitor-api" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673792c3c8d5705ace8c5d9a1424dc85164dc2ec18cba858192b6366282eff82" +dependencies = [ + "serde", + "servo-base", +] + +[[package]] +name = "servo-base" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0539a3de31dbae998eeceebe17c8b35e5ee670f0f41c2564198d8b9f59cec7c5" +dependencies = [ + "accesskit", + "crossbeam-channel", + "ipc-channel", + "libc", + "log", + "mach2", + "malloc_size_of_derive", + "parking_lot", + "rayon", + "regex", + "serde", + "serde_json", + "servo-config", + "servo-malloc-size-of", + "time", + "unicode-segmentation", + "webrender_api", + "windows-sys 0.61.2", +] + +[[package]] +name = "servo-canvas" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc3da541f57d3aa168d2ee587ef13f1610f7a94acb483a66e4ac47c4f019dd91" +dependencies = [ + "bytemuck", + "crossbeam-channel", + "euclid 0.22.14", + "kurbo 0.12.0", + "log", + "peniko", + "rustc-hash", + "servo-base", + "servo-canvas-traits", + "servo-config", + "servo-fonts", + "servo-paint-api", + "servo-pixels", + "servo-profile-traits", + "servo-tracing", + "stylo", + "vello_cpu", + "webrender_api", +] + +[[package]] +name = "servo-canvas-traits" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62376e6561e2f57114bb43f87e4186c2d5d0ac53e251115036f491ab8f7a3a5c" +dependencies = [ + "crossbeam-channel", + "euclid 0.22.14", + "glow", + "kurbo 0.12.0", + "malloc_size_of_derive", + "serde", + "servo-base", + "servo-fonts-traits", + "servo-malloc-size-of", + "servo-pixels", + "servo-webxr-api", + "strum 0.28.0", + "stylo", + "webrender_api", +] + +[[package]] +name = "servo-config" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0c0ef1819616848780d23e335d668d51c54c56f322e00680f26bc55689f663f" +dependencies = [ + "serde", + "serde_json", + "servo-config-macro", + "stylo_static_prefs", +] + +[[package]] +name = "servo-config-macro" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08af83af982a2e303cf0c0f7c4f50c931a0c9c07089232cd0f283d3d8a641377" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", + "synstructure", +] + +[[package]] +name = "servo-constellation" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5504660eab33703c47b90685b0b5c08da0fb2047a2dda2790f6ad570634b9fd7" +dependencies = [ + "accesskit", + "backtrace", + "base64 0.22.1", + "content-security-policy", + "crossbeam-channel", + "euclid 0.22.14", + "gaol", + "ipc-channel", + "keyboard-types", + "log", + "parking_lot", + "rand 0.9.2", + "rustc-hash", + "serde", + "servo-background-hang-monitor", + "servo-background-hang-monitor-api", + "servo-base", + "servo-canvas", + "servo-canvas-traits", + "servo-config", + "servo-constellation-traits", + "servo-devtools-traits", + "servo-embedder-traits", + "servo-fonts", + "servo-layout-api", + "servo-media-thread", + "servo-net", + "servo-net-traits", + "servo-paint-api", + "servo-profile-traits", + "servo-script-traits", + "servo-storage-traits", + "servo-tracing", + "servo-url", + "servo-wakelock", + "servo-webxr-api", + "stylo", + "stylo_traits", +] + +[[package]] +name = "servo-constellation-traits" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04e20c930c20a6ccd27f7f7d2cc26a20ce790dae225567c7d3530f36f5d30139" +dependencies = [ + "base64 0.22.1", + "content-security-policy", + "encoding_rs", + "euclid 0.22.14", + "http 1.4.0", + "ipc-channel", + "log", + "malloc_size_of_derive", + "rustc-hash", + "serde", + "servo-base", + "servo-canvas-traits", + "servo-config", + "servo-devtools-traits", + "servo-embedder-traits", + "servo-fonts-traits", + "servo-hyper-serde", + "servo-malloc-size-of", + "servo-net-traits", + "servo-paint-api", + "servo-pixels", + "servo-profile-traits", + "servo-storage-traits", + "servo-url", + "servo-wakelock", + "strum 0.28.0", + "uuid", + "webrender_api", +] + +[[package]] +name = "servo-default-resources" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98f399f09a64db808553bc8265ece6225d0569c1bfce8b7795fb25cf40fdc6f" +dependencies = [ + "servo-embedder-traits", +] + +[[package]] +name = "servo-deny-public-fields" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "260f35d1d642362420de09e3ce9e04ad47923e65cc9a74e4bb2cc2b05c90f3c0" +dependencies = [ + "syn 2.0.115", + "synstructure", +] + +[[package]] +name = "servo-devtools" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "785ddd61a453ec36e1b6cebeb632881bfa5c3e2859ed20a7d1bf1de0b6537937" +dependencies = [ + "atomic_refcell", + "base64 0.22.1", + "chrono", + "crossbeam-channel", + "headers", + "http 1.4.0", + "log", + "malloc_size_of_derive", + "rand 0.9.2", + "rustc-hash", + "serde", + "serde_json", + "servo-base", + "servo-config", + "servo-devtools-traits", + "servo-embedder-traits", + "servo-malloc-size-of", + "servo-net", + "servo-net-traits", + "servo-profile-traits", + "servo-url", + "uuid", +] + +[[package]] +name = "servo-devtools-traits" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71b6639e519409abedad4bc8cdebf88f9cbda058bf48982142677b180f43769f" +dependencies = [ + "http 1.4.0", + "malloc_size_of_derive", + "serde", + "servo-base", + "servo-embedder-traits", + "servo-malloc-size-of", + "servo-net-traits", + "servo-profile-traits", + "servo-url", + "uuid", +] + +[[package]] +name = "servo-dom-struct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45198b54410e9bc87b537b5f922168b30ebbb775e96b0669438dbe2304f43b63" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "servo-embedder-traits" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc5826dc91228b6e873792a898d3006ee28c18789301d1546bc4d2cef58a40c0" +dependencies = [ + "accesskit", + "bitflags 2.11.0", + "content-security-policy", + "cookie 0.18.1", + "crossbeam-channel", + "euclid 0.22.14", + "http 1.4.0", + "image", + "inventory", + "keyboard-types", + "log", + "malloc_size_of_derive", + "rustc-hash", + "serde", + "servo-base", + "servo-geometry", + "servo-hyper-serde", + "servo-malloc-size-of", + "servo-pixels", + "servo-url", + "strum 0.28.0", + "stylo", + "stylo_traits", + "url", + "uuid", + "webdriver", + "webrender_api", +] + +[[package]] +name = "servo-fetch" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "095531856c539eecb360a6df1ff81c38836f8a04277aeb96dabdd12f431ccefa" +dependencies = [ + "anyhow", + "bitflags 2.11.0", + "cookie 0.18.1", + "cssparser 0.36.0", + "dom_query 0.27.0", + "dom_smoothie 0.17.0", + "dpi", + "euclid 0.22.14", + "flate2", + "globset", + "htmd", + "http 1.4.0", + "humantime", + "image", + "libc", + "os_pipe", + "pdf-extract 0.10.0", + "psl", + "quick-xml 0.40.1", + "rustls", + "serde", + "serde_json", + "servo", + "thiserror 2.0.18", + "tokio", + "tracing", + "ureq 3.3.0", + "url", +] + +[[package]] +name = "servo-fonts" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d89d7a7b5a6d17e0d407ea61bf26929b9a4059208594023bf0d4b0b18134f8c" +dependencies = [ + "app_units", + "bitflags 2.11.0", + "byteorder", + "content-security-policy", + "dwrote", + "euclid 0.22.14", + "fontsan", + "freetype-sys", + "harfbuzz-sys", + "icu_locid", + "icu_properties 1.5.1", + "itertools 0.14.0", + "libc", + "log", + "malloc_size_of_derive", + "memmap2", + "num-traits", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-text", + "parking_lot", + "read-fonts", + "rustc-hash", + "serde", + "servo-allocator", + "servo-base", + "servo-config", + "servo-fonts-traits", + "servo-malloc-size-of", + "servo-net-traits", + "servo-paint-api", + "servo-profile-traits", + "servo-tracing", + "servo-url", + "servo_arc", + "skrifa", + "smallvec", + "stylo", + "stylo_atoms", + "unicode-properties", + "unicode-script", + "url", + "uuid", + "webrender_api", + "winapi", + "xml", + "yeslogic-fontconfig-sys", +] + +[[package]] +name = "servo-fonts-traits" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7a2d67f27800421fe84dda08406dbc21b30bb29bb8099d4960ff3bc7329017c" +dependencies = [ + "atomic_refcell", + "dwrote", + "log", + "malloc_size_of_derive", + "memmap2", + "num-derive", + "num-traits", + "parking_lot", + "read-fonts", + "serde", + "servo-base", + "servo-malloc-size-of", + "servo-profile-traits", + "servo-url", + "stylo", + "uuid", + "webrender_api", +] + +[[package]] +name = "servo-geometry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d3773e86219b6b8a2a398f7fa2eb612940cbbec586e82b5d1ffcfc436d58550" +dependencies = [ + "app_units", + "euclid 0.22.14", + "malloc_size_of_derive", + "servo-malloc-size-of", + "webrender", + "webrender_api", +] + +[[package]] +name = "servo-hyper-serde" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d0021ccbb80489d50c284e321c2b18ddf2d9f8c8a0c08bd8e24404bc30dc752" +dependencies = [ + "cookie 0.18.1", + "headers", + "http 1.4.0", + "hyper", + "mime", + "serde_bytes", + "serde_core", +] + +[[package]] +name = "servo-jstraceable-derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aad71ff5ebc139e92f351eb189abc8326d913fe9288380f9f332b1c2be790181" +dependencies = [ + "proc-macro2", + "syn 2.0.115", + "synstructure", +] + +[[package]] +name = "servo-layout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12c82856d69e2e96ae7419c86d260dbe408d88116faeea9123fb386517e0e990" +dependencies = [ + "accesskit", + "app_units", + "atomic_refcell", + "bitflags 2.11.0", + "data-url", + "euclid 0.22.14", + "icu_locid", + "icu_properties 1.5.1", + "icu_segmenter 1.5.0", + "itertools 0.14.0", + "kurbo 0.12.0", + "log", + "malloc_size_of_derive", + "parking_lot", + "rayon", + "rustc-hash", + "selectors 0.37.0", + "serde", + "servo-base", + "servo-config", + "servo-embedder-traits", + "servo-fonts", + "servo-fonts-traits", + "servo-geometry", + "servo-layout-api", + "servo-malloc-size-of", + "servo-net-traits", + "servo-paint-api", + "servo-pixels", + "servo-profile-traits", + "servo-script", + "servo-script-traits", + "servo-tracing", + "servo-url", + "servo_arc", + "smallvec", + "strum 0.28.0", + "stylo", + "stylo_atoms", + "stylo_traits", + "taffy", + "unicode-bidi", + "unicode-script", + "unicode_categories", + "url", + "web_atoms 0.2.5", + "webrender_api", +] + +[[package]] +name = "servo-layout-api" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41a17e6848f51aae41d7d350455e84b984cce29854ba74085a215788552cf803" +dependencies = [ + "app_units", + "atomic_refcell", + "bitflags 2.11.0", + "euclid 0.22.14", + "html5ever 0.39.0", + "libc", + "malloc_size_of_derive", + "parking_lot", + "rustc-hash", + "selectors 0.37.0", + "serde", + "servo-background-hang-monitor-api", + "servo-base", + "servo-embedder-traits", + "servo-fonts", + "servo-malloc-size-of", + "servo-net-traits", + "servo-paint-api", + "servo-pixels", + "servo-profile-traits", + "servo-script-traits", + "servo-url", + "servo_arc", + "stylo", + "stylo_traits", + "webrender_api", +] + +[[package]] +name = "servo-malloc-size-of" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "829a9d81fcd71c5f84e911808134d77f45db0bcbf48e7b03951cdc06112ea58c" +dependencies = [ + "accountable-refcell", + "app_units", + "atomic_refcell", + "content-security-policy", + "crossbeam-channel", + "data-url", + "encoding_rs", + "euclid 0.22.14", + "http 1.4.0", + "icu_locid", + "indexmap 2.14.0", + "ipc-channel", + "keyboard-types", + "markup5ever 0.39.0", + "mime", + "parking_lot", + "resvg", + "servo-allocator", + "servo_arc", + "smallvec", + "string_cache 0.9.0", + "stylo", + "stylo_dom", + "stylo_malloc_size_of", + "taffy", + "tendril 0.5.0", + "time", + "tokio", + "unicode-bidi", + "unicode-script", + "url", + "urlpattern", + "uuid", + "webrender", + "webrender_api", + "wr_malloc_size_of", +] + +[[package]] +name = "servo-media" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36067746d3f79af07b5447276e733cf170ff832db6140c641bf68d9c30710017" +dependencies = [ + "servo-media-audio", + "servo-media-player", + "servo-media-streams", + "servo-media-traits", + "servo-media-webrtc", +] + +[[package]] +name = "servo-media-audio" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3d44a7b5ab2616d32c34a653f01c75425ec4398de62931bff46eb863552ff4" +dependencies = [ + "byte-slice-cast", + "euclid 0.22.14", + "log", + "malloc_size_of_derive", + "num-complex", + "num-traits", + "petgraph 0.4.13", + "serde", + "servo-malloc-size-of", + "servo-media-derive", + "servo-media-player", + "servo-media-streams", + "servo-media-traits", + "smallvec", + "speexdsp-resampler", +] + +[[package]] +name = "servo-media-derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fdf54b7269bd216eb16a506d94894b00a4628caa3f473b578503402bbcf3fd9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "servo-media-dummy" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "810d7b597c2ffe6b78b6f3e2d64446adb0bc344be87cd2a7d37a74d0107a69f6" +dependencies = [ + "ipc-channel", + "servo-media", + "servo-media-audio", + "servo-media-player", + "servo-media-streams", + "servo-media-traits", + "servo-media-webrtc", +] + +[[package]] +name = "servo-media-ohos" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed56e4bb7cac280675c4440eb860c85595edd93e172608d411af6224aeda8066" +dependencies = [ + "crossbeam-channel", + "ipc-channel", + "libc", + "log", + "lru 0.17.0", + "mime", + "ohos-media-sys", + "ohos-sys-opaque-types", + "ohos-window-sys", + "rangemap", + "serde_json", + "servo-media", + "servo-media-audio", + "servo-media-player", + "servo-media-streams", + "servo-media-traits", + "servo-media-webrtc", + "yuv", +] + +[[package]] +name = "servo-media-player" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c37b350311e3f3564c7736ea5b731f2f516ea11c785d917b3e55c7510885830" +dependencies = [ + "ipc-channel", + "malloc_size_of_derive", + "serde", + "servo-malloc-size-of", + "servo-media-streams", + "servo-media-traits", +] + +[[package]] +name = "servo-media-streams" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1410bad30bf9df2f16f97d4870d41c6bb6df511a4a53831beada682d46e9386" +dependencies = [ + "malloc_size_of_derive", + "servo-malloc-size-of", + "uuid", +] + +[[package]] +name = "servo-media-thread" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e5ba9d2b100190b037121e9ea5b849b0c1953e1d06a6d68cf926164f7095092" +dependencies = [ + "euclid 0.22.14", + "ipc-channel", + "log", + "malloc_size_of_derive", + "rustc-hash", + "serde", + "servo-config", + "servo-malloc-size-of", + "servo-media", + "servo-paint-api", + "webrender_api", +] + +[[package]] +name = "servo-media-traits" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9172a6b254d2622996f349a27fb0eba0f1edc30e76bd51b759178183f1df43f" +dependencies = [ + "malloc_size_of_derive", + "servo-malloc-size-of", +] + +[[package]] +name = "servo-media-webrtc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44e2aac11b040c754f129ab0d11d8244cee7e29bfe30f713f814642ea25179d7" +dependencies = [ + "log", + "servo-media-streams", + "uuid", +] + +[[package]] +name = "servo-metrics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6358c41ceb8fd6f462b8516c4a4587c0be64660f2d133740287ec00ee261fa0" +dependencies = [ + "malloc_size_of_derive", + "servo-base", + "servo-config", + "servo-malloc-size-of", + "servo-paint-api", + "servo-profile-traits", + "servo-script-traits", + "servo-url", +] + +[[package]] +name = "servo-net" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8edfb0b06b1a6132d5852856b4f5d6ecfd39348092ec6dd881cd6ac776bfee3" +dependencies = [ + "async-compression", + "async-recursion", + "async-tungstenite", + "base64 0.22.1", + "bytes", + "chrono", + "content-security-policy", + "cookie 0.18.1", + "crossbeam-channel", + "data-url", + "fst", + "futures", + "futures-core", + "futures-util", + "generic-array 0.14.7", + "headers", + "http 1.4.0", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "imsz", + "ipc-channel", + "itertools 0.14.0", + "log", + "malloc_size_of_derive", + "mime", + "mime_guess", + "nom 8.0.0", + "parking_lot", + "quick_cache 0.6.18", + "regex", + "resvg", + "rustc-hash", + "rustls", + "rustls-pki-types", + "rustls-platform-verifier", + "serde", + "servo-base", + "servo-config", + "servo-devtools-traits", + "servo-embedder-traits", + "servo-hyper-serde", + "servo-malloc-size-of", + "servo-net-traits", + "servo-paint-api", + "servo-pixels", + "servo-profile-traits", + "servo-tracing", + "servo-url", + "servo_arc", + "sha2", + "time", + "tokio", + "tokio-rustls", + "tokio-stream", + "tokio-util", + "tower", + "tungstenite 0.29.0", + "url", + "uuid", + "webpki-roots 1.0.6", + "webrender_api", +] + +[[package]] +name = "servo-net-traits" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f1cea00e2c54b6c8c6819a3ff9e6178204eda3d0c0b3ea81e35c2ba59f93fec" +dependencies = [ + "content-security-policy", + "cookie 0.18.1", + "crossbeam-channel", + "data-url", + "headers", + "http 1.4.0", + "hyper-util", + "ipc-channel", + "log", + "malloc_size_of_derive", + "mime", + "num-traits", + "parking_lot", + "percent-encoding", + "rand 0.9.2", + "rustc-hash", + "rustls-pki-types", + "serde", + "servo-base", + "servo-config", + "servo-embedder-traits", + "servo-hyper-serde", + "servo-malloc-size-of", + "servo-paint-api", + "servo-pixels", + "servo-profile-traits", + "servo-url", + "servo_arc", + "sys-locale", + "tokio", + "url", + "uuid", + "webrender_api", +] + +[[package]] +name = "servo-paint" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0558b63180e4d3018ff030feb7ffb6027018da4da4b136809e1b5de844a2afa4" +dependencies = [ + "bitflags 2.11.0", + "crossbeam-channel", + "dpi", + "euclid 0.22.14", + "gleam", + "image", + "ipc-channel", + "log", + "rayon", + "rustc-hash", + "servo-allocator", + "servo-base", + "servo-canvas-traits", + "servo-config", + "servo-constellation-traits", + "servo-embedder-traits", + "servo-geometry", + "servo-malloc-size-of", + "servo-media-thread", + "servo-paint-api", + "servo-profile-traits", + "servo-timers", + "servo-tracing", + "servo-webgl", + "smallvec", + "stylo_traits", + "surfman", + "webrender", + "webrender_api", + "wr_malloc_size_of", +] + +[[package]] +name = "servo-paint-api" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e0818c09eb4336d796bb713bf20dd434b3ba4e477a02f74ff4f20f753290ac0" +dependencies = [ + "bitflags 2.11.0", + "crossbeam-channel", + "dpi", + "euclid 0.22.14", + "gleam", + "glow", + "image", + "ipc-channel", + "log", + "malloc_size_of_derive", + "parking_lot", + "raw-window-handle", + "rustc-hash", + "serde", + "serde_bytes", + "servo-base", + "servo-embedder-traits", + "servo-geometry", + "servo-malloc-size-of", + "servo-profile-traits", + "servo-tracing", + "servo-url", + "smallvec", + "strum 0.28.0", + "stylo", + "stylo_traits", + "surfman", + "webrender_api", +] + +[[package]] +name = "servo-pixels" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e384db39eb22b384c7378ad17fcf6c093b61c05d68d55cd0cf7eea87329a1ed" +dependencies = [ + "euclid 0.22.14", + "image", + "log", + "malloc_size_of_derive", + "serde", + "servo-base", + "servo-malloc-size-of", + "webrender_api", +] + +[[package]] +name = "servo-profile" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c145bd0d8aebefccc91b8f498a97f2dc9a959bd549d8f6a7c79ad514f401c956" +dependencies = [ + "libc", + "log", + "mach2", + "regex", + "serde", + "serde_json", + "servo-allocator", + "servo-base", + "servo-config", + "servo-profile-traits", + "tikv-jemalloc-sys", + "time", +] + +[[package]] +name = "servo-profile-traits" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "012f14959f34e608c839309dbf9d718878e0e9e498a41302a99f069cfe18a9da" +dependencies = [ + "crossbeam-channel", + "ipc-channel", + "log", + "malloc_size_of_derive", + "serde", + "servo-allocator", + "servo-base", + "servo-malloc-size-of", + "time", +] + +[[package]] +name = "servo-script" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dd4cb24dd42cca6c2acb0add130e4feb3794e68ae32ec9868c5f6b595472bd6" +dependencies = [ + "aes", + "aes-gcm", + "aes-kw", + "app_units", + "argon2", + "arrayvec", + "atomic_refcell", + "aws-lc-rs", + "backtrace", + "base64 0.22.1", + "base64ct", + "bitflags 2.11.0", + "brotli", + "cbc", + "chacha20poly1305", + "chardetng", + "chrono", + "cipher", + "content-security-policy", + "cookie 0.18.1", + "crossbeam-channel", + "cssparser 0.36.0", + "ctr", + "data-url", + "der", + "digest", + "ecdsa", + "elliptic-curve", + "encoding_rs", + "euclid 0.22.14", + "flate2", + "glow", + "headers", + "hkdf", + "html5ever 0.39.0", + "http 1.4.0", + "icu_locid", + "indexmap 2.14.0", + "ipc-channel", + "itertools 0.14.0", + "keyboard-types", + "libc", + "log", + "malloc_size_of_derive", + "markup5ever 0.39.0", + "mime", + "mime-multipart-hyper1", + "mime_guess", + "ml-dsa", + "ml-kem", + "mozangle", + "mozjs", + "nom-rfc8288", + "num-bigint-dig", + "num-traits", + "num_cpus", + "ocb3", + "p256", + "p384", + "p521", + "parking_lot", + "percent-encoding", + "phf 0.13.1", + "pkcs8", + "postcard", + "rand 0.9.2", + "regex", + "rsa", + "rustc-hash", + "sec1", + "selectors 0.37.0", + "serde", + "serde_json", + "servo-background-hang-monitor-api", + "servo-base", + "servo-canvas-traits", + "servo-config", + "servo-constellation-traits", + "servo-deny-public-fields", + "servo-devtools-traits", + "servo-dom-struct", + "servo-embedder-traits", + "servo-fonts", + "servo-fonts-traits", + "servo-geometry", + "servo-hyper-serde", + "servo-jstraceable-derive", + "servo-layout-api", + "servo-malloc-size-of", + "servo-media", + "servo-media-thread", + "servo-metrics", + "servo-net-traits", + "servo-paint-api", + "servo-pixels", + "servo-profile-traits", + "servo-script-bindings", + "servo-script-traits", + "servo-storage-traits", + "servo-timers", + "servo-tracing", + "servo-url", + "servo-wakelock", + "servo-xpath", + "servo_arc", + "sha1", + "sha2", + "sha3", + "smallvec", + "strum 0.28.0", + "stylo", + "stylo_atoms", + "stylo_dom", + "stylo_malloc_size_of", + "stylo_traits", + "swapper", + "tempfile", + "tendril 0.5.0", + "time", + "unicode-bidi", + "unicode-script", + "url", + "urlpattern", + "uuid", + "web_atoms 0.2.5", + "webdriver", + "webrender_api", + "x25519-dalek", + "xml5ever 0.39.0", + "zeroize", +] + +[[package]] +name = "servo-script-bindings" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9971a535d16547385c55ec02f50240ecd0b0685f0e03c3277379c9340cb38bda" +dependencies = [ + "bitflags 2.11.0", + "crossbeam-channel", + "encoding_rs", + "html5ever 0.39.0", + "indexmap 2.14.0", + "keyboard-types", + "libc", + "log", + "malloc_size_of_derive", + "mozjs", + "num-traits", + "parking_lot", + "phf 0.13.1", + "phf_codegen 0.13.1", + "phf_shared 0.13.1", + "regex", + "serde_json", + "servo-base", + "servo-config", + "servo-deny-public-fields", + "servo-dom-struct", + "servo-jstraceable-derive", + "servo-malloc-size-of", + "servo-profile-traits", + "servo-url", + "servo_arc", + "smallvec", + "stylo", + "stylo_atoms", + "tendril 0.5.0", + "xml5ever 0.39.0", +] + +[[package]] +name = "servo-script-traits" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e5bc37c8138d5792ad9dafb03d2d1b34b0614110ec0c636480d970806a1b006" +dependencies = [ + "accesskit", + "crossbeam-channel", + "euclid 0.22.14", + "keyboard-types", + "malloc_size_of_derive", + "rustc-hash", + "serde", + "servo-base", + "servo-canvas-traits", + "servo-config", + "servo-constellation-traits", + "servo-devtools-traits", + "servo-embedder-traits", + "servo-fonts-traits", + "servo-malloc-size-of", + "servo-media-thread", + "servo-net-traits", + "servo-paint-api", + "servo-pixels", + "servo-profile-traits", + "servo-storage-traits", + "servo-url", + "servo-webxr-api", + "strum 0.28.0", + "stylo_atoms", + "stylo_traits", + "webrender_api", +] + +[[package]] +name = "servo-storage" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddcf33ed8ea590775e0004dcc761d0f2f03bc79eac73caa69a5cf360bfe82b3" +dependencies = [ + "libc", + "log", + "malloc_size_of_derive", + "postcard", + "rusqlite", + "rustc-hash", + "sea-query", + "sea-query-rusqlite", + "serde", + "servo-base", + "servo-config", + "servo-malloc-size-of", + "servo-net-traits", + "servo-profile-traits", + "servo-storage-traits", + "servo-url", + "tempfile", + "uuid", +] + +[[package]] +name = "servo-storage-traits" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "778735b67ff865fcbe0e1f953edb7bcad27f7c01d0d1f155532a8094c324528c" +dependencies = [ + "malloc_size_of_derive", + "serde", + "servo-base", + "servo-malloc-size-of", + "servo-profile-traits", + "servo-url", + "uuid", +] + +[[package]] +name = "servo-timers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799733e35c61c9efd63b8bba611fed4ebe8ef41a90beb1d1143ab11d63b7e12e" +dependencies = [ + "crossbeam-channel", + "malloc_size_of_derive", + "servo-malloc-size-of", +] + +[[package]] +name = "servo-tracing" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08e70bfa273ac321dfaeb25dbc31f99902003cd27815f28147837efaaa9e86d5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "servo-url" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bf773965dba91d31156b7a8a81869b0910adb412b1747a5bdcd5ae6821baf0a" +dependencies = [ + "encoding_rs", + "malloc_size_of_derive", + "serde", + "servo-malloc-size-of", + "servo_arc", + "url", + "uuid", +] + +[[package]] +name = "servo-wakelock" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73bb4cd8e7747489f9abc2b19c6da4e31343305b0d8d4c95d677a7231aaffc4d" +dependencies = [ + "serde", + "servo-embedder-traits", +] + +[[package]] +name = "servo-webgl" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc32a28890c4096c45a48f0a696a2ff72d8646a5da54006a6dfbdfcb375abe72" +dependencies = [ + "bitflags 2.11.0", + "byteorder", + "crossbeam-channel", + "euclid 0.22.14", + "glow", + "half", + "itertools 0.14.0", + "log", + "parking_lot", + "rustc-hash", + "servo-base", + "servo-canvas-traits", + "servo-paint-api", + "servo-pixels", + "surfman", + "webrender_api", +] + +[[package]] +name = "servo-webxr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a267902d3c1489eceb8b82a07bf4859124c98931febb7e1cc5adad13193a5ecb" +dependencies = [ + "crossbeam-channel", + "euclid 0.22.14", + "glow", + "log", + "openxr", + "raw-window-handle", + "servo-base", + "servo-profile-traits", + "servo-webxr-api", + "surfman", + "winapi", + "wio", +] + +[[package]] +name = "servo-webxr-api" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25b3f125b84582f043be5b7f7b38e81c1e68b9153b91749ac971c8b81d0ec899" +dependencies = [ + "euclid 0.22.14", + "ipc-channel", + "log", + "malloc_size_of_derive", + "serde", + "servo-base", + "servo-embedder-traits", + "servo-malloc-size-of", + "servo-profile-traits", +] + +[[package]] +name = "servo-xpath" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a666a05bed67c699b9a042e493e10d92839374b3ddca496d2eb39a8663869e54" +dependencies = [ + "log", + "malloc_size_of_derive", + "markup5ever 0.39.0", + "servo-malloc-size-of", +] + [[package]] name = "servo_arc" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "170fb83ab34de17dc69aa7c67482b22218ddb85da56546f9bd6b929e32a05930" dependencies = [ + "serde", "stable_deref_trait", ] @@ -6174,6 +10810,12 @@ dependencies = [ "digest", ] +[[package]] +name = "sha1_smol" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" + [[package]] name = "sha2" version = "0.10.9" @@ -6185,6 +10827,16 @@ dependencies = [ "digest", ] +[[package]] +name = "sha3" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874" +dependencies = [ + "digest", + "keccak", +] + [[package]] name = "sharded-slab" version = "0.1.7" @@ -6210,6 +10862,16 @@ dependencies = [ "libc", ] +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core 0.6.4", +] + [[package]] name = "simd-adler32" version = "0.3.8" @@ -6226,6 +10888,15 @@ dependencies = [ "simdutf8", ] +[[package]] +name = "simd_helpers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" +dependencies = [ + "quote", +] + [[package]] name = "simdutf8" version = "0.1.5" @@ -6250,23 +10921,60 @@ dependencies = [ "time", ] +[[package]] +name = "simplecss" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a9c6883ca9c3c7c90e888de77b7a5c849c779d25d74a1269b0218b14e8b136c" +dependencies = [ + "log", +] + [[package]] name = "siphasher" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" +[[package]] +name = "skrifa" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c31071dedf532758ecf3fed987cdb4bd9509f900e026ab684b4ecb81ea49841" +dependencies = [ + "bytemuck", + "read-fonts", +] + [[package]] name = "slab" version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" +[[package]] +name = "slotmap" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallbitvec" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b0e903ee191d8f7a8fbf0d712c3a1699d19e04ceba5ad1eb673053c7d938a09" + [[package]] name = "smallvec" version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +dependencies = [ + "serde", +] [[package]] name = "smol_str" @@ -6292,7 +11000,7 @@ version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1c97747dbf44bb1ca44a561ece23508e99cb592e862f22222dcf42f51d1e451" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.115", @@ -6337,6 +11045,12 @@ dependencies = [ "smallvec", ] +[[package]] +name = "speexdsp-resampler" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b72d540d5c565dbe1f891d7e21ceb21d2649508306782f1066989fccb0b363d3" + [[package]] name = "spin" version = "0.9.8" @@ -6346,6 +11060,16 @@ 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 = "spm_precompiled" version = "0.1.4" @@ -6428,6 +11152,31 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "strck" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be91090ded9d8f979d9fe921777342d37e769e0b6b7296843a7a38247240e917" + +[[package]] +name = "strck_ident" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1c3802b169b3858a44667f221c9a0b3136e6019936ea926fc97fbad8af77202" +dependencies = [ + "strck", + "unicode-ident", +] + +[[package]] +name = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" +dependencies = [ + "float-cmp", +] + [[package]] name = "string_cache" version = "0.8.9" @@ -6441,18 +11190,43 @@ dependencies = [ "serde", ] +[[package]] +name = "string_cache" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18596f8c785a729f2819c0f6a7eae6ebeebdfffbfe4214ae6b087f690e31901" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared 0.13.1", + "precomputed-hash", + "serde", +] + [[package]] name = "string_cache_codegen" version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" dependencies = [ - "phf_generator", + "phf_generator 0.11.3", "phf_shared 0.11.3", "proc-macro2", "quote", ] +[[package]] +name = "string_cache_codegen" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "585635e46db231059f76c5849798146164652513eb9e8ab2685939dd90f29b69" +dependencies = [ + "phf_generator 0.13.1", + "phf_shared 0.13.1", + "proc-macro2", + "quote", +] + [[package]] name = "stringprep" version = "0.1.5" @@ -6488,13 +11262,22 @@ dependencies = [ "strum_macros 0.27.2", ] +[[package]] +name = "strum" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd" +dependencies = [ + "strum_macros 0.28.0", +] + [[package]] name = "strum_macros" version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "rustversion", @@ -6507,12 +11290,160 @@ version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.115", ] +[[package]] +name = "strum_macros" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "stylo" +version = "0.16.1-servo-0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d60185059c9ef62c1e788e4620041f9552d74f3013c8513581846349a900b5cc" +dependencies = [ + "app_units", + "arrayvec", + "atomic_refcell", + "bitflags 2.11.0", + "byteorder", + "cssparser 0.36.0", + "derive_more 2.1.1", + "encoding_rs", + "euclid 0.22.14", + "icu_segmenter 2.1.2", + "indexmap 2.14.0", + "itertools 0.14.0", + "itoa", + "log", + "malloc_size_of_derive", + "mime", + "new_debug_unreachable", + "num-derive", + "num-integer", + "num-traits", + "num_cpus", + "parking_lot", + "precomputed-hash", + "rayon", + "rayon-core", + "rustc-hash", + "selectors 0.37.0", + "serde", + "servo_arc", + "smallbitvec", + "smallvec", + "static_assertions", + "string_cache 0.9.0", + "strum 0.28.0", + "strum_macros 0.28.0", + "stylo_atoms", + "stylo_derive", + "stylo_dom", + "stylo_malloc_size_of", + "stylo_static_prefs", + "stylo_traits", + "thin-vec", + "to_shmem", + "to_shmem_derive", + "uluru", + "url", + "void", + "walkdir", + "web_atoms 0.2.5", +] + +[[package]] +name = "stylo_atoms" +version = "0.16.1-servo-0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a66d6e19725524519863a1eddbe45ccf96670bd7a7d99a4f31f132ca8d84a3f4" +dependencies = [ + "string_cache 0.9.0", + "string_cache_codegen 0.6.1", +] + +[[package]] +name = "stylo_derive" +version = "0.16.1-servo-0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0463f9cbe2e26fd27dbb8fece4ec6c5c629359a5e8a43c11b3a21be71415198a" +dependencies = [ + "darling 0.20.11", + "proc-macro2", + "quote", + "syn 2.0.115", + "synstructure", +] + +[[package]] +name = "stylo_dom" +version = "0.16.1-servo-0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2021a960930142ee298fdbb76a1b4a0a099fd38ae942126553dcc1ba4ffcf02" +dependencies = [ + "bitflags 2.11.0", + "stylo_malloc_size_of", +] + +[[package]] +name = "stylo_malloc_size_of" +version = "0.16.1-servo-0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0518bf48a679e56a4e1b86085744b21ffbf972614c1d1c410a62206ac5586ecc" +dependencies = [ + "app_units", + "cssparser 0.36.0", + "euclid 0.22.14", + "selectors 0.37.0", + "servo_arc", + "smallbitvec", + "smallvec", + "string_cache 0.9.0", + "thin-vec", + "void", +] + +[[package]] +name = "stylo_static_prefs" +version = "0.16.1-servo-0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "770afdf3b46dfd288b223bd2e66d1fbbc393fdb6c6aaff97728e27be33368161" + +[[package]] +name = "stylo_traits" +version = "0.16.1-servo-0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d4fb2129d8091bdbc391dadc58b650bb52a0d8edc22b6526fbaad57f7e49037" +dependencies = [ + "app_units", + "bitflags 2.11.0", + "cssparser 0.36.0", + "euclid 0.22.14", + "malloc_size_of_derive", + "selectors 0.37.0", + "serde", + "servo_arc", + "stylo_atoms", + "stylo_malloc_size_of", + "thin-vec", + "to_shmem", + "to_shmem_derive", + "url", +] + [[package]] name = "subtle" version = "2.6.1" @@ -6538,6 +11469,36 @@ dependencies = [ "is_ci", ] +[[package]] +name = "surfman" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15317532328e0f6e5da2abad68391297621ddf66810e5819e92271318cc08feb" +dependencies = [ + "bitflags 2.11.0", + "cfg_aliases", + "cgl", + "euclid 0.22.14", + "fnv", + "gl_generator", + "glow", + "libc", + "log", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-core-video", + "objc2-foundation", + "objc2-io-surface", + "objc2-metal", + "objc2-quartz-core", + "raw-window-handle", + "wayland-sys", + "winapi", + "wio", + "x11-dl", +] + [[package]] name = "surrealdb" version = "2.6.5" @@ -6552,7 +11513,7 @@ dependencies = [ "futures", "geo", "getrandom 0.3.4", - "indexmap 2.13.0", + "indexmap 2.14.0", "path-clean", "pharos", "reblessive", @@ -6616,7 +11577,7 @@ dependencies = [ "getrandom 0.3.4", "hashbrown 0.14.5", "hex", - "http", + "http 1.4.0", "ipnet", "jsonwebtoken", "lexicmp 0.1.0", @@ -6713,13 +11674,35 @@ dependencies = [ "crc32fast", "double-ended-peekable", "getrandom 0.2.17", - "lru", + "lru 0.12.5", "parking_lot", "quick_cache 0.6.18", "revision 0.10.0", "vart 0.9.3", ] +[[package]] +name = "svg_fmt" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0193cc4331cfd2f3d2011ef287590868599a2f33c3e69bc22c1a3d3acf9e02fb" + +[[package]] +name = "svgtypes" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68c7541fff44b35860c1a7a47a7cadf3e4a304c457b58f9870d9706ece028afc" +dependencies = [ + "kurbo 0.11.3", + "siphasher", +] + +[[package]] +name = "swapper" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e454d048db5527d000bfddb77bd072bbf3a1e2ae785f16d9bd116e07c2ab45eb" + [[package]] name = "syn" version = "1.0.109" @@ -6762,6 +11745,15 @@ dependencies = [ "syn 2.0.115", ] +[[package]] +name = "sys-locale" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4" +dependencies = [ + "libc", +] + [[package]] name = "sysinfo" version = "0.33.1" @@ -6773,7 +11765,7 @@ dependencies = [ "memchr", "ntapi", "rayon", - "windows", + "windows 0.57.0", ] [[package]] @@ -6797,12 +11789,35 @@ dependencies = [ "libc", ] +[[package]] +name = "taffy" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aea22054047c16c3f34d3ac473a2170be1424b1115b2a3adcf28cfb067c88859" +dependencies = [ + "arrayvec", + "grid", + "serde", + "slotmap", +] + [[package]] name = "tap" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +[[package]] +name = "tar" +version = "0.4.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f6221d9a6003c78398e3b239969f352578258df48c8eb051caadae0015bc840" +dependencies = [ + "filetime", + "libc", + "xattr", +] + [[package]] name = "tempfile" version = "3.25.0" @@ -6827,6 +11842,17 @@ dependencies = [ "utf-8", ] +[[package]] +name = "tendril" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4790fc369d5a530f4b544b094e31388b9b3a37c0f4652ade4505945f5660d24" +dependencies = [ + "encoding_rs", + "new_debug_unreachable", + "utf-8", +] + [[package]] name = "term" version = "0.7.0" @@ -6866,6 +11892,22 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "textnonce" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7743f8d70cd784ed1dc33106a18998d77758d281dc40dc3e6d050cf0f5286683" +dependencies = [ + "base64 0.12.3", + "rand 0.7.3", +] + +[[package]] +name = "thin-vec" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0f7e269b48f0a7dd0146680fa24b50cc67fc0373f086a5b2f99bd084639b482" + [[package]] name = "thiserror" version = "1.0.69" @@ -6915,6 +11957,26 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "tikv-jemalloc-sys" +version = "0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd8aa5b2ab86a2cefa406d889139c162cbb230092f7d1d7cbc1716405d852a3b" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "tikv-jemallocator" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0359b4327f954e0567e69fb191cf1436617748813819c94b8cd4a431422d053a" +dependencies = [ + "libc", + "tikv-jemalloc-sys", +] + [[package]] name = "time" version = "0.3.47" @@ -6924,7 +11986,9 @@ dependencies = [ "deranged", "itoa", "js-sys", + "libc", "num-conv", + "num_threads", "powerfmt", "serde_core", "time-core", @@ -6956,7 +12020,7 @@ dependencies = [ "cfg-if", "parse-zoneinfo", "phf 0.11.3", - "phf_codegen", + "phf_codegen 0.11.3", "serde", "serde-xml-rs", "time", @@ -6972,6 +12036,42 @@ dependencies = [ "crunchy", ] +[[package]] +name = "tiny-skia" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" +dependencies = [ + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if", + "log", + "png 0.17.16", + "tiny-skia-path", +] + +[[package]] +name = "tiny-skia-path" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" +dependencies = [ + "arrayref", + "bytemuck", + "strict-num", +] + +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec 0.10.4", +] + [[package]] name = "tinystr" version = "0.8.2" @@ -6979,7 +12079,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" dependencies = [ "displaydoc", - "zerovec", + "serde_core", + "zerovec 0.11.5", ] [[package]] @@ -6997,6 +12098,33 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +[[package]] +name = "to_shmem" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab187810ca1e6aaa4c97a06492aac9ade2ffae6a301fd2aac103656f5a69edb" +dependencies = [ + "cssparser 0.36.0", + "servo_arc", + "smallbitvec", + "smallvec", + "string_cache 0.9.0", + "thin-vec", +] + +[[package]] +name = "to_shmem_derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ba1f5563024b63bb6acb4558452d9ba737518c1d11fcc1861febe98d1e31cf4" +dependencies = [ + "darling 0.20.11", + "proc-macro2", + "quote", + "syn 2.0.115", + "synstructure", +] + [[package]] name = "tokenizers" version = "0.20.4" @@ -7191,7 +12319,7 @@ version = "0.23.10+spec-1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" dependencies = [ - "indexmap 2.13.0", + "indexmap 2.14.0", "toml_datetime", "toml_parser", "winnow", @@ -7206,6 +12334,12 @@ dependencies = [ "winnow", ] +[[package]] +name = "topological-sort" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa7c7f42dea4b1b99439786f5633aeb9c14c1b53f75e282803c2ec2ad545873c" + [[package]] name = "tower" version = "0.5.3" @@ -7234,7 +12368,7 @@ dependencies = [ "bytes", "futures-core", "futures-util", - "http", + "http 1.4.0", "http-body", "http-body-util", "http-range-header", @@ -7266,7 +12400,7 @@ checksum = "148022c3d604d85a3b558ef7154aa90aaec5f9506beae64f6ad4e856306d287f" dependencies = [ "bytes", "futures-util", - "http", + "http 1.4.0", "http-body", "http-body-util", "include_dir", @@ -7348,7 +12482,7 @@ dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex-automata", + "regex-automata 0.4.14", "sharded-slab", "smallvec", "thread_local", @@ -7357,6 +12491,12 @@ dependencies = [ "tracing-log", ] +[[package]] +name = "tracy-rs" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce607aae8ab0ab3abf3a2723a9ab6f09bb8639ed83fdd888d857b8e556c868d8" + [[package]] name = "trice" version = "0.4.0" @@ -7374,6 +12514,15 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "ttf-parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" +dependencies = [ + "core_maths", +] + [[package]] name = "tungstenite" version = "0.23.0" @@ -7383,7 +12532,7 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http", + "http 1.4.0", "httparse", "log", "rand 0.8.5", @@ -7397,19 +12546,20 @@ dependencies = [ [[package]] name = "tungstenite" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" +checksum = "6c01152af293afb9c7c2a57e4b559c5620b421f6d133261c60dd2d0cdb38e6b8" dependencies = [ "bytes", "data-encoding", - "http", + "http 1.4.0", "httparse", "log", "rand 0.9.2", + "rustls", + "rustls-pki-types", "sha1", "thiserror 2.0.18", - "utf-8", ] [[package]] @@ -7456,6 +12606,56 @@ dependencies = [ "web-time", ] +[[package]] +name = "uluru" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c8a2469e56e6e5095c82ccd3afb98dad95f7af7929aab6d8ba8d6e0f73657da" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + [[package]] name = "unicase" version = "2.9.0" @@ -7468,6 +12668,18 @@ version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" +[[package]] +name = "unicode-bidi-mirroring" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfa6e8c60bb66d49db113e0125ee8711b7647b5579dc7f5f19c42357ed039fe" + +[[package]] +name = "unicode-ccc" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce61d488bcdc9bc8b5d1772c404828b17fc481c0a582b5581e95fb233aef503e" + [[package]] name = "unicode-ident" version = "1.0.23" @@ -7516,9 +12728,15 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" + +[[package]] +name = "unicode-vo" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94" [[package]] name = "unicode-width" @@ -7588,9 +12806,9 @@ dependencies = [ [[package]] name = "ureq" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc97a28575b85cfedf2a7e7d3cc64b3e11bd8ac766666318003abbacc7a21fc" +checksum = "dea7109cdcd5864d4eeb1b58a1648dc9bf520360d7af16ec26d0a9354bafcfc0" dependencies = [ "base64 0.22.1", "flate2", @@ -7598,20 +12816,19 @@ dependencies = [ "percent-encoding", "rustls", "rustls-pki-types", - "socks", "ureq-proto", - "utf-8", + "utf8-zero", "webpki-roots 1.0.6", ] [[package]] name = "ureq-proto" -version = "0.5.3" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d81f9efa9df032be5934a46a068815a10a042b494b6a58cb0a1a97bb5467ed6f" +checksum = "e994ba84b0bd1b1b0cf92878b7ef898a5c1760108fe7b6010327e274917a808c" dependencies = [ "base64 0.22.1", - "http", + "http 1.4.0", "httparse", "log", ] @@ -7635,18 +12852,78 @@ version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" +[[package]] +name = "urlpattern" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +dependencies = [ + "regex", + "serde", + "unic-ucd-ident", + "url", +] + +[[package]] +name = "usvg" +version = "0.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80be9b06fbae3b8b303400ab20778c80bbaf338f563afe567cf3c9eea17b47ef" +dependencies = [ + "base64 0.22.1", + "data-url", + "flate2", + "fontdb", + "imagesize", + "kurbo 0.11.3", + "log", + "pico-args", + "roxmltree", + "rustybuzz", + "simplecss", + "siphasher", + "strict-num", + "svgtypes", + "tiny-skia-path", + "unicode-bidi", + "unicode-script", + "unicode-vo", + "xmlwriter", +] + [[package]] name = "utf-8" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf16string" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b62a1e85e12d5d712bf47a85f426b73d303e2d00a90de5f3004df3596e9d216" +dependencies = [ + "byteorder", +] + [[package]] name = "utf8-width" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1292c0d970b54115d14f2492fe0170adf21d68a1de108eebc51c1df4f346a091" +[[package]] +name = "utf8-zero" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8c0a043c9540bae7c578c88f91dda8bd82e59ae27c21baca69c8b191aaf5a6e" + [[package]] name = "utf8_iter" version = "1.0.4" @@ -7661,13 +12938,25 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.21.0" +version = "1.23.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb" +checksum = "144d6b123cef80b301b8f72a9e2ca4370ddec21950d0a103dd22c437006d2db7" dependencies = [ "getrandom 0.4.1", "js-sys", "serde_core", + "sha1_smol", + "wasm-bindgen", +] + +[[package]] +name = "v_frame" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2" +dependencies = [ + "aligned-vec", + "num-traits", "wasm-bindgen", ] @@ -7695,12 +12984,53 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +[[package]] +name = "vecmath" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "956ae1e0d85bca567dee1dcf87fb1ca2e792792f66f87dced8381f99cd91156a" +dependencies = [ + "piston-float", +] + +[[package]] +name = "vello_common" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a235ba928b3109ad9e7696270edb09445a52ae1c7c08e6d31a19b1cdd6cbc24a" +dependencies = [ + "bytemuck", + "fearless_simd", + "hashbrown 0.15.5", + "log", + "peniko", + "png 0.17.16", + "skrifa", + "smallvec", +] + +[[package]] +name = "vello_cpu" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0bd1fcf9c1814f17a491e07113623d44e3ec1125a9f3401f5e047d6d326da21" +dependencies = [ + "bytemuck", + "vello_common", +] + [[package]] name = "version_check" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + [[package]] name = "walkdir" version = "2.5.0" @@ -7720,6 +13050,12 @@ dependencies = [ "try-lock", ] +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" @@ -7820,7 +13156,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" dependencies = [ "anyhow", - "indexmap 2.13.0", + "indexmap 2.14.0", "wasm-encoder", "wasmparser", ] @@ -7859,7 +13195,7 @@ checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" dependencies = [ "bitflags 2.11.0", "hashbrown 0.15.5", - "indexmap 2.13.0", + "indexmap 2.14.0", "semver", ] @@ -7876,6 +13212,18 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "wayland-sys" +version = "0.31.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" +dependencies = [ + "dlib", + "log", + "once_cell", + "pkg-config", +] + [[package]] name = "web-sys" version = "0.3.85" @@ -7903,9 +13251,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57ffde1dc01240bdf9992e3205668b235e59421fd085e8a317ed98da0178d414" dependencies = [ "phf 0.11.3", - "phf_codegen", - "string_cache", - "string_cache_codegen", + "phf_codegen 0.11.3", + "string_cache 0.8.9", + "string_cache_codegen 0.5.4", +] + +[[package]] +name = "web_atoms" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "075474b12bcb3d2e3d4546580e9de478eeeead668a1761e2a8860c836b7ef297" +dependencies = [ + "phf 0.13.1", + "phf_codegen 0.13.1", + "string_cache 0.9.0", + "string_cache_codegen 0.6.1", +] + +[[package]] +name = "webdriver" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91d53921e1bef27512fa358179c9a22428d55778d2c2ae3c5c37a52b82ce6e92" +dependencies = [ + "base64 0.22.1", + "bytes", + "cookie 0.16.2", + "http 0.2.12", + "icu_segmenter 1.5.0", + "log", + "serde", + "serde_derive", + "serde_json", + "thiserror 1.0.69", + "time", + "url", ] [[package]] @@ -7935,23 +13315,79 @@ dependencies = [ "rustls-pki-types", ] +[[package]] +name = "webrender" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a591c25221a9f8ac2ad7754659b283d912cee6c8424f0fa3777aabed3be91c16" +dependencies = [ + "allocator-api2", + "bincode", + "bitflags 2.11.0", + "build-parallel", + "byteorder", + "derive_more 2.1.1", + "etagere", + "euclid 0.22.14", + "gleam", + "glslopt", + "lazy_static", + "log", + "malloc_size_of_derive", + "num-traits", + "peek-poke", + "plane-split", + "rayon", + "ron 0.10.1", + "rustc-hash", + "serde", + "smallvec", + "svg_fmt", + "topological-sort", + "tracy-rs", + "webrender_api", + "webrender_build", + "wr_glyph_rasterizer", + "wr_malloc_size_of", + "zeitstempel", +] + +[[package]] +name = "webrender_api" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb206f613b4635881065a2ff4670e656edc904af0b8729c51ce1196679fd1b6d" +dependencies = [ + "app_units", + "bitflags 2.11.0", + "byteorder", + "crossbeam-channel", + "euclid 0.22.14", + "malloc_size_of_derive", + "peek-poke", + "serde", + "serde_bytes", + "serde_derive", + "wr_malloc_size_of", + "zeitstempel", +] + +[[package]] +name = "webrender_build" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e6165a81201892371061250bd6f08ede9ed7279842fedc4033f48582a789068" +dependencies = [ + "bitflags 2.11.0", + "lazy_static", +] + [[package]] name = "weezl" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" -[[package]] -name = "which" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fabb953106c3c8eea8306e4393700d7657561cb43122571b172bbfb7c7ba1d" -dependencies = [ - "env_home", - "rustix", - "winsafe", -] - [[package]] name = "winapi" version = "0.3.9" @@ -7993,6 +13429,28 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections", + "windows-core 0.61.2", + "windows-future", + "windows-link 0.1.3", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core 0.61.2", +] + [[package]] name = "windows-core" version = "0.57.0" @@ -8005,6 +13463,19 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement 0.60.2", + "windows-interface 0.59.3", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + [[package]] name = "windows-core" version = "0.62.2" @@ -8013,9 +13484,20 @@ checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ "windows-implement 0.60.2", "windows-interface 0.59.3", - "windows-link", + "windows-link 0.2.1", "windows-result 0.4.1", - "windows-strings", + "windows-strings 0.5.1", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading", ] [[package]] @@ -8062,21 +13544,37 @@ dependencies = [ "syn 2.0.115", ] +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + [[package]] name = "windows-link" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", +] + [[package]] name = "windows-registry" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" dependencies = [ - "windows-link", + "windows-link 0.2.1", "windows-result 0.4.1", - "windows-strings", + "windows-strings 0.5.1", ] [[package]] @@ -8088,13 +13586,31 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + [[package]] name = "windows-result" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-link", + "windows-link 0.2.1", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", ] [[package]] @@ -8103,7 +13619,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -8148,7 +13664,7 @@ version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -8188,7 +13704,7 @@ version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows-link", + "windows-link 0.2.1", "windows_aarch64_gnullvm 0.53.1", "windows_aarch64_msvc 0.53.1", "windows_i686_gnu 0.53.1", @@ -8199,6 +13715,15 @@ dependencies = [ "windows_x86_64_msvc 0.53.1", ] +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link 0.1.3", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -8347,21 +13872,14 @@ dependencies = [ ] [[package]] -name = "winreg" -version = "0.55.0" +name = "wio" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" +checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5" dependencies = [ - "cfg-if", - "windows-sys 0.59.0", + "winapi", ] -[[package]] -name = "winsafe" -version = "0.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" - [[package]] name = "wit-bindgen" version = "0.51.0" @@ -8378,7 +13896,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" dependencies = [ "anyhow", - "heck", + "heck 0.5.0", "wit-parser", ] @@ -8389,8 +13907,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" dependencies = [ "anyhow", - "heck", - "indexmap 2.13.0", + "heck 0.5.0", + "indexmap 2.14.0", "prettyplease", "syn 2.0.115", "wasm-metadata", @@ -8421,7 +13939,7 @@ checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" dependencies = [ "anyhow", "bitflags 2.11.0", - "indexmap 2.13.0", + "indexmap 2.14.0", "log", "serde", "serde_derive", @@ -8440,7 +13958,7 @@ checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" dependencies = [ "anyhow", "id-arena", - "indexmap 2.13.0", + "indexmap 2.14.0", "log", "semver", "serde", @@ -8450,6 +13968,57 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "wr_glyph_rasterizer" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef4fcffa889d25131fc7c6ec8a558aa7c78d6030eaa17e31695c172adcc4eb0b" +dependencies = [ + "core-foundation 0.9.4", + "core-graphics", + "core-text", + "dwrote", + "euclid 0.22.14", + "freetype", + "lazy_static", + "libc", + "log", + "malloc_size_of_derive", + "objc", + "rayon", + "rustc-hash", + "serde", + "smallvec", + "tracy-rs", + "webrender_api", + "wr_malloc_size_of", +] + +[[package]] +name = "wr_malloc_size_of" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "482308b684f11723b200a32808094bb460b5ac4840903ccbcb78ad92a6354a1f" +dependencies = [ + "app_units", + "euclid 0.22.14", +] + +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +dependencies = [ + "either", +] + [[package]] name = "writeable" version = "0.6.2" @@ -8484,12 +14053,83 @@ dependencies = [ "tap", ] +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "x25519-dalek" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +dependencies = [ + "curve25519-dalek", + "rand_core 0.6.4", + "serde", + "zeroize", +] + +[[package]] +name = "xattr" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" +dependencies = [ + "libc", + "rustix", +] + +[[package]] +name = "xml" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "636f85e5ca6488e96401b61eb7de54f4e44755c988af0f52cf90230c312a1a89" + [[package]] name = "xml-rs" version = "0.8.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" +[[package]] +name = "xml5ever" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dc9559429edf0cd3f327cc0afd9d6b36fa8cec6d93107b7fbe64f806b5f2d9" +dependencies = [ + "log", + "markup5ever 0.38.0", +] + +[[package]] +name = "xml5ever" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ab627f34ff61b80d756180d556f9c68801d836d271b3b8c094504ceca69d221" +dependencies = [ + "log", + "markup5ever 0.39.0", +] + +[[package]] +name = "xmlwriter" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9" + +[[package]] +name = "y4m" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448" + [[package]] name = "yaml-rust2" version = "0.10.4" @@ -8501,6 +14141,29 @@ dependencies = [ "hashlink", ] +[[package]] +name = "yeslogic-fontconfig-sys" +version = "6.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d8b8abf912b9a29ff112e1671c97c33636903d13a69712037190e6805af4f76" +dependencies = [ + "dlib", + "once_cell", + "pkg-config", +] + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive 0.7.5", + "zerofrom", +] + [[package]] name = "yoke" version = "0.8.1" @@ -8508,10 +14171,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" dependencies = [ "stable_deref_trait", - "yoke-derive", + "yoke-derive 0.8.1", "zerofrom", ] +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", + "synstructure", +] + [[package]] name = "yoke-derive" version = "0.8.1" @@ -8524,6 +14199,28 @@ dependencies = [ "synstructure", ] +[[package]] +name = "yuv" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d85a782d94ee43f078bcfd6fa82d4e6a5b2d1cfbbad168e4df5a9f7b39ef48c" +dependencies = [ + "num-traits", + "rayon", +] + +[[package]] +name = "zeitstempel" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94652f036694517fa67509942c3b60a51a19e1cd9cfd0f456eeb830ae8798d3d" +dependencies = [ + "cfg-if", + "libc", + "once_cell", + "winapi", +] + [[package]] name = "zerocopy" version = "0.8.39" @@ -8570,6 +14267,31 @@ name = "zeroize" version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", +] + +[[package]] +name = "zerotrie" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb594dd55d87335c5f60177cee24f19457a5ec10a065e0a3014722ad252d0a1f" +dependencies = [ + "displaydoc", + "yoke 0.7.5", + "zerofrom", +] [[package]] name = "zerotrie" @@ -8578,19 +14300,42 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" dependencies = [ "displaydoc", - "yoke", + "yoke 0.8.1", "zerofrom", ] +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke 0.7.5", + "zerofrom", + "zerovec-derive 0.10.3", +] + [[package]] name = "zerovec" version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" dependencies = [ - "yoke", + "serde", + "yoke 0.8.1", "zerofrom", - "zerovec-derive", + "zerovec-derive 0.11.2", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.115", ] [[package]] @@ -8637,3 +14382,42 @@ dependencies = [ "cc", "pkg-config", ] + +[[package]] +name = "zune-core" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" + +[[package]] +name = "zune-core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9" + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "zune-jpeg" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" +dependencies = [ + "zune-core 0.4.12", +] + +[[package]] +name = "zune-jpeg" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" +dependencies = [ + "zune-core 0.5.1", +] diff --git a/Cargo.toml b/Cargo.toml index 6913f02..c73bff8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,13 +7,18 @@ members = [ "ingestion-pipeline", "retrieval-pipeline", "json-stream-parser", - "evaluations" + "evaluations", ] resolver = "3" [workspace.dependencies] anyhow = "1.0.94" -async-openai = { version = "0.41.1", features = ["chat-completion", "embedding", "audio", "model"] } +async-openai = { version = "0.41.1", features = [ + "chat-completion", + "embedding", + "audio", + "model", +] } async-stream = "0.3.6" async-trait = "0.1.88" axum-htmx = "0.7.0" @@ -27,7 +32,6 @@ chrono = { version = "0.4.39", features = ["serde"] } config = "0.15.4" dom_smoothie = "0.10.0" futures = "0.3.31" -headless_chrome = "1.0.17" include_dir = "0.7.4" mime = "0.3.17" mime_guess = "2.0.5" @@ -35,7 +39,7 @@ minijinja-autoreload = "2.5.0" minijinja-contrib = { version = "2.6.0", features = ["datetime", "timezone"] } minijinja-embed = { version = "2.8.0" } minijinja = { version = "2.5.0", features = ["loader", "multi_template"] } -reqwest = {version = "0.12.12", features = ["charset", "json"]} +reqwest = { version = "0.12.12", features = ["charset", "json"] } serde_json = "1.0.128" serde = { version = "1", features = ["derive"] } sha2 = "0.10.8" @@ -61,14 +65,24 @@ bytes = "1.7.1" state-machines = "0.9" pdf-extract = "0.9" lopdf = "0.32" -fastembed = { version = "5.2.0", default-features = false, features = ["hf-hub-native-tls", "ort-load-dynamic"] } +pdfium-auto = "0.3" +pdfium-render = "0.8" +servo-fetch = "0.13" +tendril = "0.4" +image = { version = "0.25", default-features = false, features = ["png"] } +fastembed = { version = "5.2.0", default-features = false, features = [ + "hf-hub-native-tls", + "ort-load-dynamic", +] } [profile.dist] inherits = "release" lto = "thin" [workspace.lints.rust] -unexpected_cfgs = { level = "warn", check-cfg = ["cfg(feature, values(\"inspect\"))"] } +unexpected_cfgs = { level = "warn", check-cfg = [ + "cfg(feature, values(\"inspect\"))", +] } [workspace.lints.clippy] # Performance-focused lints @@ -118,4 +132,3 @@ needless_raw_string_hashes = "allow" multiple_bound_locations = "allow" cargo_common_metadata = "allow" multiple-crate-versions = "allow" - diff --git a/Dockerfile b/Dockerfile index a4473e3..1642654 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,18 +14,18 @@ COPY html-router/Cargo.toml ./html-router/ COPY ingestion-pipeline/Cargo.toml ./ingestion-pipeline/ COPY json-stream-parser/Cargo.toml ./json-stream-parser/ COPY main/Cargo.toml ./main/ -RUN cargo build --release --bin main --features ingestion-pipeline/docker || true +RUN cargo build --release --bin main || true # Build COPY . . -RUN cargo build --release --bin main --features ingestion-pipeline/docker +RUN cargo build --release --bin main # === Runtime === FROM debian:bookworm-slim -# Chromium + runtime deps + OpenMP for ORT +# Servo engine (for servo-fetch web scraping) + runtime deps + OpenMP for ORT RUN apt-get update && apt-get install -y --no-install-recommends \ - chromium libnss3 libasound2 libgbm1 libxshmfence1 \ + libegl1 libegl-mesa0 libgles2 libfontconfig1 libfreetype6 \ ca-certificates fonts-dejavu fonts-noto-color-emoji \ libgomp1 libstdc++6 curl \ && rm -rf /var/lib/apt/lists/* @@ -39,8 +39,7 @@ RUN ORT_VERSION="${ORT_VERSION:-$(tr -d '[:space:]' < /tmp/ort-version)}" && \ "https://github.com/microsoft/onnxruntime/releases/download/v${ORT_VERSION}/onnxruntime-linux-x64-${ORT_VERSION}.tgz" && \ tar -xzf /tmp/ort.tgz -C /opt/onnxruntime --strip-components=1 && rm /tmp/ort.tgz -ENV CHROME_BIN=/usr/bin/chromium \ - SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt \ +ENV SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt \ ORT_DYLIB_PATH=/opt/onnxruntime/lib/libonnxruntime.so # Non-root diff --git a/README.md b/README.md index e56c9e2..eb58263 100644 --- a/README.md +++ b/README.md @@ -121,7 +121,7 @@ fastembed_cache_dir: "/var/lib/minne/fastembed" # optional override, defaults t - **Frontend:** HTML with HTMX and minimal JavaScript for interactivity - **Database:** SurrealDB (graph, document, and vector search) - **AI Integration:** OpenAI-compatible API with structured outputs -- **Web Processing:** Headless Chrome for robust webpage content extraction +- **Web Processing:** Embedded Servo engine (servo-fetch) for webpage content extraction + PDFium for PDF rendering ## Configuration @@ -172,7 +172,7 @@ cd minne docker compose up -d ``` -The included `docker-compose.yml` handles SurrealDB and Chromium dependencies automatically. +The included `docker-compose.yml` handles SurrealDB automatically. ### 2. Nix @@ -180,13 +180,13 @@ The included `docker-compose.yml` handles SurrealDB and Chromium dependencies au nix run 'github:perstarkse/minne#main' ``` -This fetches Minne and all dependencies, including Chromium. +This fetches Minne and all dependencies. ### 3. Pre-built Binaries Download binaries for Windows, macOS, and Linux from the [GitHub Releases](https://github.com/perstarkse/minne/releases/latest). -**Requirements:** You'll need to provide SurrealDB and Chromium separately. +**Requirements:** You'll need to provide SurrealDB separately. ### 4. Build from Source @@ -196,7 +196,7 @@ cd minne cargo run --release --bin main ``` -**Requirements:** SurrealDB and Chromium must be installed and accessible in your PATH. +**Requirements:** SurrealDB must be installed and accessible in your PATH. ## Application Architecture diff --git a/devenv.nix b/devenv.nix index 8f3c00e..3a0d3e4 100644 --- a/devenv.nix +++ b/devenv.nix @@ -41,6 +41,14 @@ in { pkgs.onnxruntime pkgs.cargo-watch pkgs.tailwindcss_4 + pkgs.python3 + pkgs.fontconfig + pkgs.fontconfig.dev + pkgs.libGL + pkgs.libGLU + pkgs.libclang + pkgs.wayland + pkgs.libxkbcommon ]; languages.rust = { @@ -53,6 +61,10 @@ in { }; env = { + # tikv-jemalloc-sys configure flags: -O0 + -Werror triggers glibc _FORTIFY_SOURCE warning + NIX_CFLAGS_COMPILE = "-Wno-error=cpp"; + LIBCLANG_PATH = "${pkgs.libclang.lib}/lib"; + LD_LIBRARY_PATH = "${pkgs.wayland}/lib:${pkgs.libxkbcommon}/lib:${pkgs.pipewire}/lib:${pkgs.libglvnd}/lib"; ORT_DYLIB_PATH = "${pkgs.onnxruntime}/lib/libonnxruntime.so"; S3_ENDPOINT = "http://127.0.0.1:19000"; S3_BUCKET = "minne-tests"; diff --git a/docs/architecture.md b/docs/architecture.md index 70db6ff..2400c7d 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -8,7 +8,7 @@ | Frontend | HTML + HTMX + minimal JS | | Database | SurrealDB (graph, document, vector) | | AI | OpenAI-compatible API | -| Web Processing | Headless Chromium | +| Web Processing | Servo engine (servo-fetch) + PDFium | ## Crate Structure diff --git a/docs/features.md b/docs/features.md index bd4c8a6..c8a429c 100644 --- a/docs/features.md +++ b/docs/features.md @@ -10,7 +10,7 @@ Minne automatically processes saved content: -1. **Web scraping** extracts readable text from URLs (via headless Chrome) +1. **Web scraping** extracts readable text from URLs (via embedded Servo engine) 2. **Text analysis** identifies key concepts and relationships 3. **Graph creation** builds connections between related content 4. **Embedding generation** enables semantic search @@ -43,6 +43,7 @@ Optional **reranking** can rescore fused chunk lists with a cross-encoder model; When enabled, retrieval results are rescored with a cross-encoder model for improved relevance. Powered by [fastembed-rs](https://github.com/Anush008/fastembed-rs). **Trade-offs:** + - Downloads ~1.1 GB of model data - Adds latency per query - Potentially improves answer quality, see [blog post](https://blog.stark.pub/posts/eval-retrieval-refactor/) @@ -52,6 +53,7 @@ Enable via `RERANKING_ENABLED=true`. See [Configuration](./configuration.md). ## Multi-Format Ingestion Supported content types: + - Plain text and notes - URLs (web pages) - PDF documents diff --git a/docs/installation.md b/docs/installation.md index 4563252..a30412b 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -12,13 +12,13 @@ cd minne docker compose up -d ``` -The included `docker-compose.yml` handles SurrealDB and Chromium automatically. +The included `docker-compose.yml` handles SurrealDB automatically. **Required:** Set your `OPENAI_API_KEY` in `docker-compose.yml` before starting. ## Nix -Run Minne directly with Nix (includes Chromium): +Run Minne directly with Nix: ```bash nix run 'github:perstarkse/minne#main' @@ -31,8 +31,9 @@ Configure via environment variables or a `config.yaml` file. See [Configuration] Download binaries for Windows, macOS, and Linux from [GitHub Releases](https://github.com/perstarkse/minne/releases/latest). **Requirements:** + - SurrealDB instance (local or remote) -- Chromium (for web scraping) +- `libEGL` + `libfontconfig` (for servo-fetch web scraping) ## Build from Source @@ -45,9 +46,10 @@ cargo build --release --bin main The binary will be at `target/release/main`. **Requirements:** + - Rust toolchain - SurrealDB accessible at configured address -- Chromium in PATH +- `libEGL` + `libfontconfig` for servo-fetch (web scraping) — bundled in Nix and Docker images ## Process Modes diff --git a/flake.nix b/flake.nix index aaf5b6a..82de954 100644 --- a/flake.nix +++ b/flake.nix @@ -50,16 +50,16 @@ doCheck = false; nativeBuildInputs = [pkgs.pkg-config pkgs.rustfmt pkgs.makeWrapper]; - buildInputs = [pkgs.openssl pkgs.chromium pkgs.onnxruntime]; + buildInputs = [pkgs.openssl pkgs.libglvnd pkgs.onnxruntime]; postInstall = '' wrapProgram $out/bin/main \ - --set CHROME ${pkgs.chromium}/bin/chromium \ + --prefix LD_LIBRARY_PATH : ${pkgs.libglvnd}/lib \ --set ORT_DYLIB_PATH ${pkgs.onnxruntime}/lib/libonnxruntime.${libExt} for b in worker server; do if [ -x "$out/bin/$b" ]; then wrapProgram $out/bin/$b \ - --set CHROME ${pkgs.chromium}/bin/chromium \ + --prefix LD_LIBRARY_PATH : ${pkgs.libglvnd}/lib \ --set ORT_DYLIB_PATH ${pkgs.onnxruntime}/lib/libonnxruntime.${libExt} fi done diff --git a/ingestion-pipeline/Cargo.toml b/ingestion-pipeline/Cargo.toml index aec41e7..a8ae8df 100644 --- a/ingestion-pipeline/Cargo.toml +++ b/ingestion-pipeline/Cargo.toml @@ -18,17 +18,22 @@ async-openai = { workspace = true } surrealdb = { workspace = true } dom_smoothie = { workspace = true } tempfile = { workspace = true } -axum_typed_multipart = { workspace = true} -anyhow = { workspace = true } +axum_typed_multipart = { workspace = true } +anyhow = { workspace = true } reqwest = { workspace = true } chrono = { workspace = true } text-splitter = { workspace = true } url = { workspace = true } uuid = { workspace = true } -headless_chrome = { workspace = true } base64 = { workspace = true } pdf-extract = { workspace = true } lopdf = { workspace = true } +tendril = { workspace = true } +servo-fetch = { workspace = true } +servo-allocator = { version = "0.2", features = ["use-system-allocator"] } +pdfium-auto = { workspace = true } +pdfium-render = { workspace = true } +image = { workspace = true } bytes = { workspace = true } async-trait = { workspace = true } state-machines = { workspace = true } @@ -37,7 +42,6 @@ common = { path = "../common" } retrieval-pipeline = { path = "../retrieval-pipeline" } [features] -docker = [] [dev-dependencies] common = { path = "../common", features = ["test-utils"] } diff --git a/ingestion-pipeline/src/utils/audio_transcription.rs b/ingestion-pipeline/src/utils/audio_transcription.rs index daf4d62..34e17b1 100644 --- a/ingestion-pipeline/src/utils/audio_transcription.rs +++ b/ingestion-pipeline/src/utils/audio_transcription.rs @@ -24,6 +24,6 @@ pub async fn transcribe_audio_file( .transcription() .create(request) .await - .map_err(|e| AppError::Processing(format!("Audio transcription failed: {e}")))?; + .map_err(|e| AppError::Processing(format!("audio transcription failed: {e}")))?; Ok(response.text) } diff --git a/ingestion-pipeline/src/utils/browser.rs b/ingestion-pipeline/src/utils/browser.rs deleted file mode 100644 index b09f7f3..0000000 --- a/ingestion-pipeline/src/utils/browser.rs +++ /dev/null @@ -1,27 +0,0 @@ -use common::error::AppError; -use headless_chrome::Browser; - -/// Launches a headless Chrome instance, honoring the `docker` feature flag -/// (which disables the Chrome sandbox for container environments). -/// -/// This is the single place the crate spawns a browser. If the rendering backend -/// is ever swapped away from headless Chrome to something leaner, this function is -/// the seam to change; callers only depend on getting back a `Browser`. -pub(crate) fn launch_browser() -> Result { - #[cfg(feature = "docker")] - { - let options = headless_chrome::LaunchOptionsBuilder::default() - .sandbox(false) - .build() - .map_err(|err| { - AppError::Processing(format!("Failed to build headless browser options: {err}")) - })?; - Browser::new(options) - .map_err(|err| AppError::Processing(format!("Failed to start headless browser: {err}"))) - } - #[cfg(not(feature = "docker"))] - { - Browser::default() - .map_err(|err| AppError::Processing(format!("Failed to start headless browser: {err}"))) - } -} diff --git a/ingestion-pipeline/src/utils/mod.rs b/ingestion-pipeline/src/utils/mod.rs index d4f5af7..9fa1d70 100644 --- a/ingestion-pipeline/src/utils/mod.rs +++ b/ingestion-pipeline/src/utils/mod.rs @@ -1,8 +1,8 @@ pub mod audio_transcription; -pub mod browser; pub mod file_text_extraction; pub mod graph_mapper; pub mod image_parsing; pub mod llm_instructions; +pub mod page_fetcher; pub mod pdf; pub mod url_text_retrieval; diff --git a/ingestion-pipeline/src/utils/page_fetcher.rs b/ingestion-pipeline/src/utils/page_fetcher.rs new file mode 100644 index 0000000..9a59414 --- /dev/null +++ b/ingestion-pipeline/src/utils/page_fetcher.rs @@ -0,0 +1,117 @@ +//! Page-fetching abstraction that decouples URL extraction from the underlying engine. +//! +//! The primary implementation uses [`servo_fetch`], a pure-Rust Servo engine that +//! provides high extraction quality (word-F1 0.819), fast startup (~331ms), and a +//! small memory footprint (~64MB peak). + +use std::time::Duration; + +use common::error::AppError; +use tracing::info; + +/// Captured content from a single page fetch. +#[derive(Debug, Clone, PartialEq)] +pub(crate) struct PageCapture { + /// Raw HTML source of the page. + pub html: String, + /// Readable Markdown extracted from the page content. + pub markdown: String, + /// JPEG/PNG screenshot bytes, or empty if not captured. + pub screenshot: Vec, +} + +/// Abstraction over a page-fetching engine. +pub(crate) trait PageFetcher: Send + Sync + std::fmt::Debug { + /// Fetches a URL and returns the captured content (HTML, markdown, screenshot). + fn fetch(&self, url: &str) -> Result; +} + +/// Fetcher powered by the embedded Servo engine via `servo-fetch`. +/// +/// Provides HTML, extracted Markdown, and a PNG screenshot. +#[derive(Debug)] +pub(crate) struct ServoFetchFetcher; + +impl PageFetcher for ServoFetchFetcher { + fn fetch(&self, url: &str) -> Result { + let page = servo_fetch::blocking::fetch( + &servo_fetch::FetchOptions::screenshot(url, true) + .timeout(Duration::from_secs(30)) + .settle(Duration::from_millis(3000)), + ) + .map_err(|err| AppError::Processing(format!("servo-fetch failed for {url}: {err}")))?; + + let html = page.html.clone(); + let markdown = page + .markdown() + .map_err(|err| AppError::Processing(format!("failed to extract markdown: {err}")))?; + let screenshot = page.screenshot_png().unwrap_or_default().to_vec(); + + info!( + url = %url, + html_bytes = html.len(), + md_chars = markdown.len(), + screenshot_bytes = screenshot.len(), + "servo-fetch completed" + ); + + Ok(PageCapture { + html, + markdown, + screenshot, + }) + } +} + +/// Creates the default page fetcher for the current configuration. +#[allow(unreachable_pub)] +pub(crate) fn create_fetcher() -> Box { + Box::new(ServoFetchFetcher) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_default_fetcher_constructs() { + let fetcher = create_fetcher(); + assert!(!format!("{fetcher:?}").is_empty()); + } + + #[test] + fn test_servo_fetcher_constructs() { + let _ = ServoFetchFetcher; + } + + #[test] + fn test_trait_object_dispatch() { + let fetcher: Box = Box::new(ServoFetchFetcher); + assert!(!format!("{fetcher:?}").is_empty()); + } + + /// Smoke test: Servo engine initialises even without display server. + /// Wrap in `catch_unwind` because child-thread panics from servo + /// (e.g. missing wayland) would otherwise escape the test harness. + #[test] + fn test_servo_engine_initializes() { + let fetcher = ServoFetchFetcher; + let result = std::panic::catch_unwind(move || { + let _ = fetcher.fetch("about:blank"); + }); + + if let Err(panic) = result { + let msg = panic + .downcast_ref::<&str>() + .copied() + .or_else(|| panic.downcast_ref::().map(String::as_str)) + .unwrap_or("unknown panic"); + assert!( + !(msg.contains("wayland") + || msg.contains("Library") + || msg.contains("servo-engine")), + "Servo engine initialization failed: {msg}" + ); + } + } +} diff --git a/ingestion-pipeline/src/utils/pdf/render.rs b/ingestion-pipeline/src/utils/pdf/render.rs index 3c450ba..b274e3a 100644 --- a/ingestion-pipeline/src/utils/pdf/render.rs +++ b/ingestion-pipeline/src/utils/pdf/render.rs @@ -1,32 +1,25 @@ -//! Headless-Chrome rasterization of PDF pages into PNG screenshots. +//! PDF page rasterization using pdfium-render via pdfium-auto. //! -//! This is the only Chrome-dependent part of PDF ingestion. It depends on the -//! browser's internal PDF-viewer shadow DOM, so it is inherently fragile across -//! Chrome upgrades; a full-page-capture fallback guards the common failure modes. +//! Uses direct `PDFium` bindings for reliable, pixel-perfect page rendering — +//! starts in ~5ms, requires no display server, and produces consistent output +//! independent of PDF reader version. Each page is rendered at a generous +//! resolution and encoded as PNG for downstream LLM vision ingestion. use std::{ path::{Path, PathBuf}, - time::{Duration, SystemTime, UNIX_EPOCH}, + time::{SystemTime, UNIX_EPOCH}, }; -use base64::{engine::general_purpose::STANDARD, Engine as _}; -use headless_chrome::protocol::cdp::{Emulation, Page, DOM}; +use image::ImageFormat; use lopdf::Document; -use serde_json::Value; +use pdfium_render::prelude::PdfRenderConfig; use tracing::{debug, warn}; use common::error::AppError; -use crate::utils::browser::launch_browser; - -const NAVIGATION_RETRY_INTERVAL_MS: u64 = 120; -const NAVIGATION_RETRY_ATTEMPTS: usize = 10; const MIN_PAGE_IMAGE_BYTES: usize = 1_024; -const DEFAULT_VIEWPORT_WIDTH: u32 = 1_248; // generous width to reduce horizontal clipping -const DEFAULT_VIEWPORT_HEIGHT: u32 = 1_800; // tall enough to capture full page at fit-to-width scale -const DEFAULT_DEVICE_SCALE_FACTOR: f64 = 1.0; -const CANVAS_VIEWPORT_ATTEMPTS: usize = 12; -const CANVAS_VIEWPORT_WAIT_MS: u64 = 200; +const RENDER_TARGET_WIDTH: i32 = 1200; +const RENDER_MAX_HEIGHT: i32 = 2000; const DEBUG_IMAGE_ENV_VAR: &str = "MINNE_PDF_DEBUG_DIR"; /// Parses the PDF structure to discover the available page numbers while keeping work off @@ -34,7 +27,7 @@ const DEBUG_IMAGE_ENV_VAR: &str = "MINNE_PDF_DEBUG_DIR"; pub(super) async fn load_page_numbers(pdf_bytes: Vec) -> Result, AppError> { let pages = tokio::task::spawn_blocking(move || -> Result, AppError> { let document = Document::load_mem(&pdf_bytes) - .map_err(|err| AppError::Processing(format!("Failed to parse PDF: {err}")))?; + .map_err(|err| AppError::Processing(format!("failed to parse PDF: {err}")))?; let mut page_numbers: Vec = document.get_pages().keys().copied().collect(); page_numbers.sort_unstable(); Ok(page_numbers) @@ -44,7 +37,9 @@ pub(super) async fn load_page_numbers(pdf_bytes: Vec) -> Result, Ap Ok(pages) } -/// Uses the existing headless Chrome dependency to rasterize the requested PDF pages into PNGs. +/// Renders the requested PDF pages as PNG-encoded byte vectors using `PDFium`. +/// +/// Work is offloaded to a blocking thread since `PDFium`'s C API is not async-safe. pub(super) async fn render_pdf_pages( file_path: &Path, pages: &[u32], @@ -52,8 +47,8 @@ pub(super) async fn render_pdf_pages( let file_path = file_path.to_path_buf(); let pages = pages.to_vec(); let page_numbers = pages.clone(); - let captures = - tokio::task::spawn_blocking(move || render_pdf_pages_inner(&file_path, &pages)).await??; + + let captures = tokio::task::spawn_blocking(move || render_inner(&file_path, &pages)).await??; for (page_number, png) in page_numbers.iter().zip(captures.iter()) { if let Err(err) = maybe_dump_debug_image(*page_number, png).await { @@ -68,306 +63,65 @@ pub(super) async fn render_pdf_pages( Ok(captures) } -fn render_pdf_pages_inner(file_path: &Path, pages: &[u32]) -> Result>, AppError> { - let file_url = url::Url::from_file_path(file_path) - .map_err(|()| AppError::Processing("Unable to construct PDF file URL".into()))?; +/// Initializes `PDFium`, opens the file, and renders each requested page. +fn render_inner(file_path: &Path, pages: &[u32]) -> Result>, AppError> { + let pdfium = pdfium_auto::bind_pdfium_silent() + .map_err(|err| AppError::Processing(format!("failed to bind PDFium library: {err}")))?; - let browser = launch_browser()?; - let tab = browser - .new_tab() - .map_err(|err| AppError::Processing(format!("Failed to create Chrome tab: {err}")))?; + let doc = pdfium + .load_pdf_from_file(file_path, None) + .map_err(|err| AppError::Processing(format!("failed to load PDF file: {err}")))?; - tab.set_default_timeout(Duration::from_secs(10)); - configure_tab(&tab)?; - set_pdf_viewport(&tab)?; + let render_config = PdfRenderConfig::new() + .set_target_width(RENDER_TARGET_WIDTH) + .set_maximum_height(RENDER_MAX_HEIGHT); let mut captures = Vec::with_capacity(pages.len()); - for page in pages.iter().copied() { - let target = format!("{file_url}#page={page}&toolbar=0&statusbar=0&zoom=page-fit"); - tab.navigate_to(&target) - .map_err(|err| AppError::Processing(format!("Failed to navigate to PDF page: {err}")))? - .wait_until_navigated() - .map_err(|err| AppError::Processing(format!("Navigation to PDF page failed: {err}")))?; + for &page_num in pages { + let page_index = page_num.saturating_sub(1); // PDFium uses 0-based indices + let page = doc + .pages() + .get(u16::try_from(page_index).unwrap_or(u16::MAX)) + .map_err(|err| { + AppError::Processing(format!("failed to get PDF page {page_num}: {err}")) + })?; - let mut loaded = false; - for attempt in 0..NAVIGATION_RETRY_ATTEMPTS { - if tab - .wait_for_element("embed, canvas, body") - .map(|_| ()) - .is_ok() - { - loaded = true; - break; - } - if attempt < NAVIGATION_RETRY_ATTEMPTS.saturating_sub(1) { - std::thread::sleep(Duration::from_millis(NAVIGATION_RETRY_INTERVAL_MS)); - } - } + let bitmap = page.render_with_config(&render_config).map_err(|err| { + AppError::Processing(format!("failed to render PDF page {page_num}: {err}")) + })?; - if !loaded { - return Err(AppError::Processing( - "Timed out waiting for Chrome to render PDF page".into(), - )); - } + let image = bitmap.as_image(); - wait_for_pdf_ready(&tab, page)?; - std::thread::sleep(Duration::from_millis(350)); + let mut png_bytes = Vec::new(); + image + .write_to(&mut std::io::Cursor::new(&mut png_bytes), ImageFormat::Png) + .map_err(|err| { + AppError::Processing(format!( + "failed to encode PDF page {page_num} as PNG: {err}" + )) + })?; - prepare_pdf_viewer(&tab, page); + debug!( + page = page_num, + bytes = png_bytes.len(), + "Rendered PDF page via PDFium" + ); - let mut viewport: Option = None; - for attempt in 0..CANVAS_VIEWPORT_ATTEMPTS { - match canvas_viewport_for_page(&tab, page) { - Ok(Some(vp)) => { - viewport = Some(vp); - break; - } - Ok(None) => { - if attempt < CANVAS_VIEWPORT_ATTEMPTS.saturating_sub(1) { - std::thread::sleep(Duration::from_millis(CANVAS_VIEWPORT_WAIT_MS)); - } - } - Err(err) => { - warn!(page, error = %err, "Failed to derive canvas viewport"); - break; - } - } - } - - let png = if let Some(clip) = viewport { - match tab.call_method(Page::CaptureScreenshot { - format: Some(Page::CaptureScreenshotFormatOption::Png), - quality: None, - clip: Some(clip), - from_surface: Some(true), - capture_beyond_viewport: Some(true), - optimize_for_speed: Some(false), - }) { - Ok(data) => match STANDARD.decode(data.data) { - Ok(bytes) => bytes, - Err(err) => { - warn!(error = %err, page, "Failed to decode clipped screenshot; falling back to full page capture"); - capture_full_page_png(&tab)? - } - }, - Err(err) => { - warn!(error = %err, page, "Clipped screenshot failed; falling back to full page capture"); - capture_full_page_png(&tab)? - } - } - } else { + if png_bytes.len() < MIN_PAGE_IMAGE_BYTES { warn!( - page, - "Unable to determine canvas viewport; capturing full page" - ); - capture_full_page_png(&tab)? - }; - - debug!(page, bytes = png.len(), "Captured PDF page screenshot"); - - if is_suspicious_image(png.len()) { - warn!( - page, - bytes = png.len(), - "Screenshot size below threshold; check rendering output" + page = page_num, + bytes = png_bytes.len(), + "Rendered page size below threshold; check PDF quality" ); } - captures.push(png); + captures.push(png_bytes); } Ok(captures) } -fn configure_tab(tab: &headless_chrome::Tab) -> Result<(), AppError> { - tab.call_method(Emulation::SetDefaultBackgroundColorOverride { - color: Some(DOM::RGBA { - r: 255, - g: 255, - b: 255, - a: Some(1.0), - }), - }) - .map_err(|err| { - AppError::Processing(format!("Failed to configure Chrome page background: {err}")) - })?; - - Ok(()) -} - -fn set_pdf_viewport(tab: &headless_chrome::Tab) -> Result<(), AppError> { - tab.call_method(Emulation::SetDeviceMetricsOverride { - width: DEFAULT_VIEWPORT_WIDTH, - height: DEFAULT_VIEWPORT_HEIGHT, - device_scale_factor: DEFAULT_DEVICE_SCALE_FACTOR, - mobile: false, - scale: None, - screen_width: Some(DEFAULT_VIEWPORT_WIDTH), - screen_height: Some(DEFAULT_VIEWPORT_HEIGHT), - position_x: None, - position_y: None, - dont_set_visible_size: Some(false), - screen_orientation: None, - viewport: None, - display_feature: None, - device_posture: None, - }) - .map_err(|err| AppError::Processing(format!("Failed to configure Chrome viewport: {err}")))?; - - tab.call_method(Emulation::SetVisibleSize { - width: DEFAULT_VIEWPORT_WIDTH, - height: DEFAULT_VIEWPORT_HEIGHT, - }) - .map_err(|err| AppError::Processing(format!("Failed to apply Chrome visible size: {err}")))?; - - Ok(()) -} - -fn wait_for_pdf_ready( - tab: &headless_chrome::Tab, - page_number: u32, -) -> Result, AppError> { - let embed_selector = "embed[type='application/pdf']"; - let element = tab - .wait_for_element_with_custom_timeout(embed_selector, Duration::from_secs(8)) - .or_else(|_| tab.wait_for_element_with_custom_timeout("embed", Duration::from_secs(8))) - .map_err(|err| AppError::Processing(format!("Timed out waiting for PDF content: {err}")))?; - - if let Err(err) = element.scroll_into_view() { - debug!("Failed to scroll PDF element into view: {err}"); - } - - debug!(page = page_number, "PDF viewer element located"); - - Ok(element) -} - -fn prepare_pdf_viewer(tab: &headless_chrome::Tab, page_number: u32) { - let script = format!( - r#"(function() {{ - const embed = document.querySelector('embed[type="application/pdf"]') || document.querySelector('embed'); - if (!embed || !embed.shadowRoot) return false; - const viewer = embed.shadowRoot.querySelector('pdf-viewer'); - if (!viewer || !viewer.shadowRoot) return false; - const app = viewer.shadowRoot.querySelector('viewer-app'); - if (app && app.shadowRoot) {{ - const toolbar = app.shadowRoot.querySelector('#toolbar'); - if (toolbar) {{ toolbar.style.display = 'none'; }} - }} - const page = viewer.shadowRoot.querySelector('viewer-page:nth-of-type({page_number})'); - if (page && page.scrollIntoView) {{ - page.scrollIntoView({{ block: 'start', inline: 'center' }}); - }} - const canvas = viewer.shadowRoot.querySelector('canvas[aria-label="Page {page_number}"]'); - return !!canvas; - }})()"# - ); - - match tab.evaluate(&script, false) { - Ok(result) => { - let ready = result - .value - .as_ref() - .and_then(Value::as_bool) - .unwrap_or(false); - debug!(page = page_number, ready, "Prepared PDF viewer page"); - } - Err(err) => { - debug!(page = page_number, error = %err, "Unable to run PDF viewer preparation script"); - } - } -} - -fn canvas_viewport_for_page( - tab: &headless_chrome::Tab, - page_number: u32, -) -> Result, AppError> { - let script = format!( - r#"(function() {{ - const embed = document.querySelector('embed[type="application/pdf"]') || document.querySelector('embed'); - if (!embed || !embed.shadowRoot) return null; - const viewer = embed.shadowRoot.querySelector('pdf-viewer'); - if (!viewer || !viewer.shadowRoot) return null; - const canvas = viewer.shadowRoot.querySelector('canvas[aria-label="Page {page_number}"]'); - if (!canvas) return null; - const rect = canvas.getBoundingClientRect(); - return {{ x: rect.x, y: rect.y, width: rect.width, height: rect.height }}; - }})()"# - ); - - let result = tab - .evaluate(&script, false) - .map_err(|err| AppError::Processing(format!("Failed to inspect PDF canvas: {err}")))?; - - let Some(value) = result.value else { - return Ok(None); - }; - - if value.is_null() { - return Ok(None); - } - - let x = value - .get("x") - .and_then(Value::as_f64) - .unwrap_or_default() - .max(0.0); - let y = value - .get("y") - .and_then(Value::as_f64) - .unwrap_or_default() - .max(0.0); - let width = value - .get("width") - .and_then(Value::as_f64) - .unwrap_or_default(); - let height = value - .get("height") - .and_then(Value::as_f64) - .unwrap_or_default(); - - if width <= 0.0 || height <= 0.0 { - return Ok(None); - } - - debug!( - page = page_number, - x, y, width, height, "Derived canvas viewport" - ); - - Ok(Some(Page::Viewport { - x, - y, - width, - height, - scale: 1.0, - })) -} - -fn capture_full_page_png(tab: &headless_chrome::Tab) -> Result, AppError> { - let screenshot = tab - .call_method(Page::CaptureScreenshot { - format: Some(Page::CaptureScreenshotFormatOption::Png), - quality: None, - clip: None, - from_surface: Some(true), - capture_beyond_viewport: Some(true), - optimize_for_speed: Some(false), - }) - .map_err(|err| { - AppError::Processing(format!("Failed to capture PDF page (fallback): {err}")) - })?; - - STANDARD.decode(screenshot.data).map_err(|err| { - AppError::Processing(format!("Failed to decode PDF screenshot (fallback): {err}")) - }) -} - -const fn is_suspicious_image(len: usize) -> bool { - len < MIN_PAGE_IMAGE_BYTES -} - fn debug_dump_directory() -> Option { std::env::var(DEBUG_IMAGE_ENV_VAR) .ok() @@ -394,6 +148,8 @@ async fn maybe_dump_debug_image(page_index: u32, bytes: &[u8]) -> Result<(), App mod tests { use super::*; use anyhow::{self}; + use lopdf::dictionary; + use lopdf::Object; #[test] fn test_debug_dump_directory_env_var() -> anyhow::Result<()> { @@ -409,10 +165,108 @@ mod tests { Ok(()) } - #[test] - fn test_is_suspicious_image_threshold() { - assert!(is_suspicious_image(0)); - assert!(is_suspicious_image(MIN_PAGE_IMAGE_BYTES - 1)); - assert!(!is_suspicious_image(MIN_PAGE_IMAGE_BYTES + 1)); + #[tokio::test] + async fn test_load_page_numbers_empty_pdf() -> anyhow::Result<()> { + let pdf_bytes = create_minimal_pdf(0); + let pages = load_page_numbers(pdf_bytes).await?; + assert!(pages.is_empty()); + Ok(()) + } + + #[tokio::test] + async fn test_load_page_numbers_single_page() -> anyhow::Result<()> { + let pdf_bytes = create_minimal_pdf(1); + let pages = load_page_numbers(pdf_bytes).await?; + assert_eq!(pages, vec![1u32]); + Ok(()) + } + + #[tokio::test] + async fn test_load_page_numbers_multi_page() -> anyhow::Result<()> { + let pdf_bytes = create_minimal_pdf(5); + let pages = load_page_numbers(pdf_bytes).await?; + assert_eq!(pages, vec![1, 2, 3, 4, 5]); + Ok(()) + } + + #[tokio::test] + async fn test_load_page_numbers_invalid_pdf() { + let result = load_page_numbers(b"not a pdf".to_vec()).await; + assert!(result.is_err()); + } + + /// Creates a minimal valid PDF with the given number of empty pages. + #[allow(clippy::similar_names, clippy::expect_used)] + fn create_minimal_pdf(page_count: u32) -> Vec { + let mut doc = Document::with_version("1.5"); + let pages_id = doc.new_object_id(); + + let mut page_ids = Vec::with_capacity(page_count as usize); + for _ in 0..page_count { + let page_id = doc.add_object(dictionary! { + "Type" => "Page", + "Parent" => pages_id, + "MediaBox" => vec![0.into(), 0.into(), 612.into(), 792.into()], + }); + page_ids.push(page_id); + } + + let pages = dictionary! { + "Type" => "Pages", + "Kids" => page_ids.iter().map(|id| Object::Reference(*id)).collect::>(), + "Count" => i32::try_from(page_count).unwrap_or(i32::MAX), + "MediaBox" => vec![0.into(), 0.into(), 612.into(), 792.into()], + }; + doc.objects.insert(pages_id, Object::Dictionary(pages)); + + let catalog_id = doc.add_object(dictionary! { + "Type" => "Catalog", + "Pages" => pages_id, + }); + doc.trailer.set("Root", catalog_id); + + let mut buf = Vec::new(); + doc.save_to(&mut buf).expect("failed to serialize test PDF"); + buf + } + + /// Renders a simple 1-page PDF and verifies the output is a valid PNG ≥ 1KB. + /// This test skips gracefully when `PDFium` is not available (e.g., CI without internet). + #[tokio::test] + async fn test_render_single_page_pdfium() -> anyhow::Result<()> { + let pdf_bytes = create_minimal_pdf(1); + let dir = tempfile::TempDir::new()?; + let file_path = dir.path().join("test.pdf"); + tokio::fs::write(&file_path, &pdf_bytes).await?; + + let result = render_pdf_pages(&file_path, &[1]).await; + match result { + Ok(pages) => { + assert_eq!(pages.len(), 1, "should render one page"); + #[allow(clippy::expect_used)] + let first_page = pages.into_iter().next().expect("already asserted len == 1"); + assert!( + first_page.len() >= MIN_PAGE_IMAGE_BYTES, + "rendered page {} bytes is below threshold {}", + first_page.len(), + MIN_PAGE_IMAGE_BYTES + ); + // Verify it's a valid PNG by checking header bytes + let header = first_page + .get(..4.min(first_page.len())) + .unwrap_or(&[0u8; 0]); + assert_eq!(header, &[0x89, 0x50, 0x4E, 0x47], "output must be PNG"); + } + Err(e) => { + // PDFium may not be available — that's acceptable in environments + // without network access to download the binary. + let msg = e.to_string(); + if !msg.contains("PDFium") && !msg.contains("library") && !msg.contains("bind") { + anyhow::bail!("unexpected error: {e}"); + } + eprintln!("SKIP: PDFium not available ({msg})"); + } + } + Ok(()) } } diff --git a/ingestion-pipeline/src/utils/pdf/text.rs b/ingestion-pipeline/src/utils/pdf/text.rs index 22c24de..65ccce2 100644 --- a/ingestion-pipeline/src/utils/pdf/text.rs +++ b/ingestion-pipeline/src/utils/pdf/text.rs @@ -1,7 +1,9 @@ //! Fast-path PDF text extraction and Markdown reflow heuristics. //! -//! These are pure (non-IO, non-Chrome) helpers used before falling back to the -//! vision pipeline, plus the Markdown normalization applied to both paths. +//! Pure text-extraction helpers that run before falling back to the vision pipeline, +//! plus the Markdown normalization applied to both paths. The fast path uses +//! `pdf-extract` to pull embedded text layers directly, avoiding the cost of +//! page-by-page rasterization for well-structured PDFs. use common::error::AppError; @@ -15,7 +17,7 @@ pub(super) async fn try_fast_path(pdf_bytes: Vec) -> Result, pdf_extract::extract_text_from_mem(&pdf_bytes).map(|s| s.trim().to_string()) }) .await? - .map_err(|err| AppError::Processing(format!("Failed to extract text from PDF: {err}")))?; + .map_err(|err| AppError::Processing(format!("failed to extract text from PDF: {err}")))?; if extraction.is_empty() { return Ok(None); @@ -28,7 +30,7 @@ pub(super) async fn try_fast_path(pdf_bytes: Vec) -> Result, Ok(Some(normalize_fast_text(&extraction))) } -/// Heuristic that determines whether the fast-path text looks like well-formed prose. +/// Heuristic that determines whether the fast-path text looks like readable text. #[allow(clippy::cast_precision_loss)] fn looks_good_enough(text: &str) -> bool { if text.len() < FAST_PATH_MIN_LEN { diff --git a/ingestion-pipeline/src/utils/pdf/vision.rs b/ingestion-pipeline/src/utils/pdf/vision.rs index a36b059..fa42e38 100644 --- a/ingestion-pipeline/src/utils/pdf/vision.rs +++ b/ingestion-pipeline/src/utils/pdf/vision.rs @@ -116,7 +116,7 @@ async fn transcribe_batch( ); if attempt == last_attempt { return Err(AppError::Processing( - "Vision model failed to transcribe PDF page contents".into(), + "vision model failed to transcribe PDF page contents".into(), )); } continue; @@ -126,7 +126,7 @@ async fn transcribe_batch( } Err(AppError::Processing( - "Vision model did not return usable Markdown".into(), + "vision model did not return usable Markdown".into(), )) } diff --git a/ingestion-pipeline/src/utils/url_text_retrieval.rs b/ingestion-pipeline/src/utils/url_text_retrieval.rs index a5b4823..2ea1f97 100644 --- a/ingestion-pipeline/src/utils/url_text_retrieval.rs +++ b/ingestion-pipeline/src/utils/url_text_retrieval.rs @@ -5,14 +5,18 @@ use common::{ error::AppError, storage::{db::SurrealDbClient, store::StorageManager, types::file_info::FileInfo}, }; -use dom_smoothie::{Article, Readability, TextMode}; +use dom_smoothie::Article; use std::{ io::{Seek, SeekFrom, Write}, net::IpAddr, time::Instant, }; use tempfile::NamedTempFile; -use tracing::{error, info, warn}; +use tendril::StrTendril; +use tracing::{info, warn}; + +use crate::utils::page_fetcher::create_fetcher; + pub async fn extract_text_from_url( url: &str, db: &SurrealDbClient, @@ -22,46 +26,22 @@ pub async fn extract_text_from_url( info!("Fetching URL: {}", url); let now = Instant::now(); - let browser = crate::utils::browser::launch_browser()?; - - let tab = browser - .new_tab() - .map_err(|e| AppError::InternalError(e.to_string()))?; - let page = tab - .navigate_to(url) - .map_err(|e| AppError::InternalError(e.to_string()))?; - let loaded_page = page - .wait_until_navigated() - .map_err(|e| AppError::InternalError(e.to_string()))?; - let raw_content = loaded_page - .get_content() - .map_err(|e| AppError::InternalError(e.to_string()))?; - let screenshot = loaded_page - .capture_screenshot( - headless_chrome::protocol::cdp::Page::CaptureScreenshotFormatOption::Jpeg, - None, - None, - true, - ) - .map_err(|e| AppError::InternalError(e.to_string()))?; - - let mut tmp_file = NamedTempFile::new()?; - let temp_path_str = tmp_file.path().display().to_string(); - - tmp_file.write_all(&screenshot)?; - tmp_file.as_file().sync_all()?; - - if let Err(e) = tmp_file.seek(SeekFrom::Start(0)) { - error!( - "URL: {}. Failed to seek temp file {} to start: {:?}. Proceeding, but hashing might fail.", - url, temp_path_str, e - ); - } - let parsed_url = url::Url::parse(url).map_err(|_| AppError::Validation("invalid URL".to_string()))?; - let domain = ensure_ingestion_url_allowed(&parsed_url)?; + + let fetcher = create_fetcher(); + let capture = fetcher.fetch(url)?; + + // Save the screenshot to storage + let mut tmp_file = NamedTempFile::new()?; + + if !capture.screenshot.is_empty() { + tmp_file.write_all(&capture.screenshot)?; + tmp_file.as_file().sync_all()?; + tmp_file.seek(SeekFrom::Start(0))?; + } + let timestamp = Utc::now().format("%Y%m%d%H%M%S"); let file_name = format!("{}_{}_{}.jpg", domain, "screenshot", timestamp); @@ -78,12 +58,25 @@ pub async fn extract_text_from_url( let file_info = FileInfo::new_with_storage(field_data, db, user_id, storage).await?; - let config = dom_smoothie::Config { - text_mode: TextMode::Markdown, - ..Default::default() + // servo-fetch doesn't extract byline/site_name/metadata, so those are left empty. + let title = extract_title_from_html(&capture.html); + let article = Article { + title, + byline: None, + content: StrTendril::from_slice(&capture.markdown), + text_content: StrTendril::from_slice(&capture.markdown), + length: capture.markdown.len(), + excerpt: None, + site_name: None, + dir: None, + lang: None, + published_time: None, + modified_time: None, + image: None, + favicon: None, + url: Some(url.to_string()), }; - let mut readability = Readability::new(raw_content, None, Some(config))?; - let article: Article = readability.parse()?; + let end = now.elapsed(); info!( "URL: {}. Total time: {:?}. Final File ID: {}", @@ -93,13 +86,31 @@ pub async fn extract_text_from_url( Ok((article, file_info)) } +/// Extracts a page title from raw HTML. Returns empty string when no title is found. +fn extract_title_from_html(html: &str) -> String { + let lower = html.to_ascii_lowercase(); + if let Some(start) = lower.find("") { + let content_start = start.saturating_add("<title>".len()); + if let Some(end) = lower[content_start..].find("") { + let title_end = content_start.saturating_add(end); + if title_end <= html.len() { + let title = html[content_start..title_end].trim().to_string(); + if !title.is_empty() { + return title; + } + } + } + } + String::new() +} + fn ensure_ingestion_url_allowed(url: &url::Url) -> Result { match url.scheme() { "http" | "https" => {} scheme => { warn!(%url, %scheme, "Rejected ingestion URL due to unsupported scheme"); return Err(AppError::Validation( - "Unsupported URL scheme for ingestion".to_string(), + "unsupported URL scheme for ingestion".to_string(), )); } } @@ -107,14 +118,14 @@ fn ensure_ingestion_url_allowed(url: &url::Url) -> Result { let Some(host) = url.host_str() else { warn!(%url, "Rejected ingestion URL missing host"); return Err(AppError::Validation( - "URL is missing a host component".to_string(), + "URL missing a host component".to_string(), )); }; if host.eq_ignore_ascii_case("localhost") { warn!(%url, host, "Rejected ingestion URL to localhost"); return Err(AppError::Validation( - "Ingestion URL host is not allowed".to_string(), + "ingestion URL host is not allowed".to_string(), )); } @@ -127,7 +138,7 @@ fn ensure_ingestion_url_allowed(url: &url::Url) -> Result { if ip.is_loopback() || ip.is_unspecified() || ip.is_multicast() || is_disallowed { warn!(%url, host, %ip, "Rejected ingestion URL pointing to restricted network range"); return Err(AppError::Validation( - "Ingestion URL host is not allowed".to_string(), + "ingestion URL host is not allowed".to_string(), )); } } @@ -168,4 +179,28 @@ mod tests { assert_eq!(sanitized, "sub_example_com"); Ok(()) } + + #[test] + fn test_extract_title_from_html_with_title() { + let html = "Hello World"; + assert_eq!(extract_title_from_html(html), "Hello World"); + } + + #[test] + fn test_extract_title_from_html_mixed_case() { + let html = "Mixed Case"; + assert_eq!(extract_title_from_html(html), "Mixed Case"); + } + + #[test] + fn test_extract_title_from_html_no_title() { + let html = "

No title here

"; + assert_eq!(extract_title_from_html(html), ""); + } + + #[test] + fn test_extract_title_from_html_empty_title() { + let html = ""; + assert_eq!(extract_title_from_html(html), ""); + } }