[workspace] members = ["crates/bin/*", "crates/lib/*", "crates/macro/*", "crates/service/*"] resolver = "2" [workspace.package] rust-version = "1.90.0" edition = "2024" version = "0.0.1" [workspace.lints.rust] unused_import_braces = "deny" unit_bindings = "deny" single_use_lifetimes = "deny" non_ascii_idents = "deny" macro_use_extern_crate = "deny" elided_lifetimes_in_paths = "deny" absolute_paths_not_starting_with_crate = "deny" explicit_outlives_requirements = "warn" unused_crate_dependencies = "warn" redundant_lifetimes = "warn" missing_docs = "allow" [workspace.lints.clippy] todo = "deny" uninlined_format_args = "allow" result_large_err = "allow" too_many_arguments = "allow" upper_case_acronyms = "deny" needless_return = "allow" new_without_default = "allow" tabs_in_doc_comments = "allow" dbg_macro = "deny" allow_attributes = "deny" create_dir = "deny" filetype_is_file = "deny" integer_division = "allow" lossy_float_literal = "deny" map_err_ignore = "deny" mutex_atomic = "deny" needless_raw_strings = "deny" str_to_string = "deny" string_add = "deny" string_to_string = "deny" use_debug = "allow" verbose_file_reads = "deny" large_types_passed_by_value = "deny" wildcard_dependencies = "deny" negative_feature_names = "deny" redundant_feature_names = "deny" multiple_crate_versions = "allow" missing_safety_doc = "warn" identity_op = "allow" print_stderr = "deny" print_stdout = "deny" comparison_chain = "allow" unimplemented = "deny" unwrap_used = "warn" expect_used = "warn" type_complexity = "allow" # # MARK: dependencies # [workspace.dependencies] macro-sass = { path = "crates/macro/macro-sass" } libservice = { path = "crates/lib/libservice" } toolbox = { path = "crates/lib/toolbox" } page = { path = "crates/lib/page" } md-footnote = { path = "crates/lib/md-footnote" } md-dev = { path = "crates/lib/md-dev" } pixel-transform = { path = "crates/lib/pixel-transform" } service-webpage = { path = "crates/service/service-webpage" } # # MARK: Server # axum = { version = "0.8.6", features = ["macros", "multipart"] } tower-http = { version = "0.6.6", features = ["trace", "compression-full"] } tower = { version = "0.5.2" } serde_urlencoded = { version = "0.7.1" } utoipa = "5.4.0" utoipa-swagger-ui = { version = "9.0.2", features = [ "axum", "debug-embed", "vendored", ] } maud = { version = "0.27.0", features = ["axum"] } grass = "0.13.4" markdown-it = "0.6.1" emojis = "0.8.0" reqwest = { version = "0.12.24", default-features = false, features = [ "http2", "rustls-tls", "rustls-tls-webpki-roots", # Need to recompile to update "cookies", "gzip", "stream", "json", "charset", "blocking", ] } # # MARK: Async & Parallelism # tokio = { version = "1.48.0", features = ["full"] } # # MARK: CLI & logging # tracing = "0.1.41" tracing-subscriber = { version = "0.3.20", features = ["env-filter", "json"] } tracing-loki = { version = "0.2.6", features = [ "rustls", "compat-0-2-1", ], default-features = false } clap = { version = "4.5.51", features = ["derive"] } anstyle = { version = "1.0.13" } envy = "0.4.2" dotenvy = "0.15.7" # # MARK: Serialization & formats # serde = { version = "1.0.228", features = ["derive"] } serde_json = "1.0.145" toml = "0.9.8" serde_yaml = "0.9" base64 = "0.22.1" # # MARK: Misc helpers # strum = { version = "0.27", features = ["derive"] } thiserror = "2.0.12" itertools = "0.14.0" anyhow = "1.0.97" url = { version = "2.5.7", features = ["serde"] } num = "0.4.3" chrono = "0.4.42" lru = "0.16.2" parking_lot = "0.12.5" lazy_static = "1.5.0" image = "0.25.8" scraper = "0.24.0" futures = "0.3.31" tempfile = "3.23.0" # md_* test utilities prettydiff = "0.9.0" testing = "18.0.0" # # Macro utilities # proc-macro2 = "1.0.95" syn = "2.0.101" quote = "1.0.40" paste = "1.0.15"