[package] name = "rss-funnel" description = "A composable feed processing pipeline" version = "0.0.5" edition = "2021" license-file = "LICENSE" readme = "README.org" repository = "https://github.com/shouya/rss-funnel" homepage = "https://github.com/shouya/rss-funnel" documentation = "https://docs.rs/rss-funnel" keywords = ["rss", "feed", "cli"] categories = ["command-line-interface", "web-programming"] [dependencies] # Async runtime, utility and helper crates async-trait = "0.1.74" thiserror = "1.0.51" futures = "0.3.29" itertools = "0.12.0" paste = "1.0.14" tokio = { version = "1.35.0", features = ["macros", "net", "rt-multi-thread", "sync"] } lazy_static = "1.4.0" # Command line and config parsing clap = { version = "4.4.11", features = ["derive"] } serde = { version = "1.0.193", features = ["derive", "rc"] } serde_yaml = "0.9.27" duration-str = { version = "0.7.1", default-features = false, features = ["serde"] } serde_regex = "1.1.0" # webserver axum-macros = "0.4.1" axum = { version = "0.7.4", features = ["json"] } tower = "0.4.13" # Feed formats support atom_syndication = { version = "0.12.2", features = ["with-serde"] } rss = { version = "2.0.6", features = ["serde"] } http = "1.0.0" url = { version = "2.5.0", features = ["serde"] } mime = "0.3.17" # webui (inspector) support maud = { version = "0.26.0", features = ["axum"] } rust-embed = { version = "8.2.0", features = ["include-exclude"] } # HTML manipulation in the feeds scraper = "0.18.1" ego-tree = "0.6.2" # for extracting article content from HTML, used in simplify_html filter readability = { version = "0.3.0", default-features = false } html5ever = "0.26.0" htmlescape = "0.3.1" xmlem = "0.2.3" # JS runtime crates rquickjs = { version = "0.4.0", features = ["loader", "parallel", "macro", "futures", "exports", "either"] } blake2s_simd = "1.0.2" # for calculating digest in caching support of the remote loader serde_json = "1.0.108" # for data transfer with the JS runtime either = "1.9.0" # used for returning sum types from the JS runtime # Web client (blocking and async both used, blocking used in the JS runtime) # TODO: upgrade reqwest after its hyper 1.0 upgrade reqwest = { version = "0.11.23", default-features = false, features = ["blocking", "rustls-tls", "trust-dns"] } encoding_rs = "0.8.33" lru = "0.12.2" # Used in sanitize filter to remove/replace text contents regex = "1.10.2" # Logging tracing = { version = "0.1.40"} tracing-subscriber = "0.3.18" tower-http = { version = "0.5.1", features = ["compression-gzip"] } notify = { version = "6.1.1", default-features = false, features = ["macos_kqueue"] } [patch.crates-io] ego-tree = { git = "https://github.com/shouya/ego-tree.git" } [profile.release] lto = "fat" strip = true