[package] name = "yggdrasil" version = "0.3.0" edition = "2021" # 构建时工具二进制:用 syntect(server-only 依赖)生成 highlight.css。 # 仅在启用 server feature 时编译——WASM 前端构建(--no-default-features --features web) # 不会拉入 syntect,此二进制若也参与编译会因找不到 syntect 报错。 [[bin]] name = "generate_highlight_css" required-features = ["server"] [dependencies] dioxus = { version = "0.7.9", features = ["fullstack", "router"] } serde = { version = "1.0", features = ["derive"] } tokio = { version = "1.52", features = ["rt-multi-thread", "macros", "fs", "time", "sync"], optional = true } tokio-postgres = { version = "0.7", features = ["with-chrono-0_4"], optional = true } deadpool-postgres = { version = "0.14", optional = true } argon2 = { version = "0.5", optional = true } uuid = { version = "1", features = ["v4"], optional = true } chrono = { version = "0.4", features = ["serde"] } regex = { version = "1.12", optional = true } pulldown-cmark = { version = "0.13", optional = true } dotenvy = { version = "0.15", optional = true } tracing = { version = "0.1", optional = true, features = ["release_max_level_info"] } tracing-subscriber = { version = "0.3", optional = true } rand = { version = "0.8", features = ["getrandom"], optional = true } http = { version = "1", optional = true } axum = { version = "0.8", optional = true, features = ["multipart"] } tower-http = { version = "0.7", optional = true, features = ["compression-full", "timeout", "trace"] } serde_json = "1.0" sha2 = { version = "0.10", optional = true } hex = { version = "0.4", optional = true } lol_html = { version = "3", optional = true } syntect = { version = "5", default-features = false, features = ["default-syntaxes", "default-themes", "default-fancy", "html", "parsing", "dump-load", "yaml-load"], optional = true } # NOTE: WebP decoder is intentionally excluded from the image crate. # We use zenwebp for both encoding and decoding to ensure consistency. # Do NOT add "webp" to the features list without updating src/webp.rs. image = { version = "0.25", optional = true, default-features = false, features = ["jpeg", "png", "gif"] } zenwebp = { version = "0.4", optional = true } moka = { version = "0.12", features = ["future", "sync"], optional = true } governor = { version = "0.10", optional = true } sysinfo = { version = "0.39", optional = true } sqlparser = { version = "0.62", optional = true } dashmap = { version = "6.2", optional = true } md-5 = { version = "0.10", optional = true } futures = { version = "0.3", optional = true } bytes = { version = "1", optional = true } bollard = { version = "0.21", optional = true } # 把 mpsc::Receiver 包成 Stream,供 axum SSE handler 使用。 # axum::response::sse::{Sse,KeepAlive,Event} 随 axum 0.8 自带,无需额外 dep。 tokio-stream = { version = "0.1", features = ["sync"], optional = true } [target.'cfg(target_arch = "wasm32")'.dependencies] web-sys = { version = "0.3", features = ["Document", "Window", "Storage", "Element", "HtmlElement", "DomTokenList", "MediaQueryList", "HtmlImageElement", "MouseEvent", "KeyboardEvent", "Node", "EventTarget", "Navigator", "File", "FileList", "FormData", "Request", "RequestInit", "Response", "Headers", "ClipboardEvent", "DataTransfer", "HtmlInputElement", "EventSource", "MessageEvent"] } wasm-bindgen = "0.2" wasm-bindgen-futures = "0.4" js-sys = "0.3" # 把 serde 类型(如 SqlSchema)序列化为 JsValue,供 wasm-bindgen extern 传递。 serde-wasm-bindgen = "0.6" [dev-dependencies] tokio = { version = "1.52", features = ["rt-multi-thread", "macros", "fs", "time", "sync"] } serial_test = "3" [profile.release] debug = false opt-level = 3 lto = "thin" codegen-units = 1 strip = "symbols" # panic 直接终止:WASM 去掉 unwind 元数据以减小体积;server 端错误处理走 # Result + ?(见 src/api/error.rs),不依赖 panic unwind,进程级崩溃由 # systemd/k8s 拉起。这是 Dioxus 官方 optimizing 指南推荐的 WASM 瘦身项。 panic = "abort" [features] default = ["web", "server"] web = ["dioxus/web"] server = [ "dioxus/server", "dep:tokio", "dep:tokio-postgres", "dep:deadpool-postgres", "dep:argon2", "dep:uuid", "dep:regex", "dep:pulldown-cmark", "dep:rand", "dep:http", "dep:sha2", "dep:hex", "dep:dotenvy", "dep:tracing", "dep:tracing-subscriber", "dep:lol_html", "dep:syntect", "dep:axum", "dep:tower-http", "dep:image", "dep:zenwebp", "dep:moka", "dep:governor", "dep:sysinfo", "dep:sqlparser", "dep:dashmap", "dep:md-5", "dep:futures", "dep:bytes", "dep:bollard", "dep:tokio-stream", ]