[workspace] members = ["xtask", "loco-gen"] exclude = ["starters"] [workspace.package] edition = "2021" rust-version = "1.70" license = "Apache-2.0" [package] name = "loco-rs" version = "0.13.2" description = "The one-person framework for Rust" homepage = "https://loco.rs/" documentation = "https://docs.rs/loco-rs" authors = ["Dotan Nahum ", "Elad Kaplan "] repository = "https://github.com/loco-rs/loco" license.workspace = true edition.workspace = true rust-version.workspace = true # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [features] default = [ "auth_jwt", "cli", "with-db", "cache_inmem", "bg_redis", "bg_pg", "bg_sqlt", ] auth_jwt = ["dep:jsonwebtoken"] cli = ["dep:clap"] testing = ["dep:axum-test"] with-db = ["dep:sea-orm", "dep:sea-orm-migration", "loco-gen/with-db"] # Storage features all_storage = ["storage_aws_s3", "storage_azure", "storage_gcp"] storage_aws_s3 = ["object_store/aws"] storage_azure = ["object_store/azure"] storage_gcp = ["object_store/gcp"] # Cache feature cache_inmem = ["dep:moka"] bg_redis = ["dep:rusty-sidekiq", "dep:bb8"] bg_pg = ["dep:sqlx", "dep:ulid"] bg_sqlt = ["dep:sqlx", "dep:ulid"] [dependencies] loco-gen = { version = "0.13.2", path = "./loco-gen" } backtrace_printer = { version = "1.3.0" } # cli clap = { version = "4.4.7", features = ["derive"], optional = true } colored = "2" sea-orm = { version = "1.1.0", features = [ "sqlx-postgres", # `DATABASE_DRIVER` feature "sqlx-sqlite", "runtime-tokio-rustls", "macros", ], optional = true } tokio = { version = "1.33.0", default-features = false } tokio-util = "0.7.10" # the rest serde = { workspace = true } serde_json = { workspace = true } serde_yaml = "0.9" serde_variant = "0.1.2" toml = "0.8" async-trait = { workspace = true } axum = { workspace = true } axum-extra = { version = "0.9", features = ["cookie"] } regex = { workspace = true } fs-err = "2.11.0" # mailer tera = "1.19.1" thousands = "0.2.0" heck = "0.4.0" lettre = { version = "0.11.4", default-features = false, features = [ "builder", "hostname", "smtp-transport", "tokio1-rustls-tls", ] } include_dir = "0.7.3" thiserror = { workspace = true } tracing = { workspace = true } tracing-subscriber = { version = "0.3.16", features = ["env-filter"] } tracing-appender = "0.2.3" duct = { version = "0.13.6" } duct_sh = { version = "0.13.7" } tower-http = { workspace = true } byte-unit = "4.0.19" argon2 = { version = "0.5.2", features = ["std"] } rand = { version = "0.8.5", features = ["std"] } jsonwebtoken = { version = "9.3.0", optional = true } validator = { version = "0.18.1", features = ["derive"] } futures-util = "0.3" tower = { workspace = true } hyper = "1.1" mime = "0.3" bytes = "1.1" ipnetwork = "0.20.0" semver = "1" axum-test = { version = "16.1.0", optional = true } chrono = { workspace = true } cfg-if = "1" uuid = { version = "1.10.0", features = ["v4", "fast-rng"] } # File Upload object_store = { version = "0.11.0", default-features = false } # cache moka = { version = "0.12.7", features = ["sync"], optional = true } # Scheduler tokio-cron-scheduler = { version = "0.11.0", features = ["signal"] } english-to-cron = { version = "0.1.2" } # bg_sqlt: sqlite workers # bg_pg: postgres workers sqlx = { version = "0.8.2", default-features = false, features = [ "postgres", "chrono", "sqlite", ], optional = true } ulid = { version = "1", optional = true } # bg_redis: redis workers rusty-sidekiq = { version = "0.11.0", default-features = false, optional = true } bb8 = { version = "0.8.1", optional = true } [workspace.dependencies] chrono = { version = "0.4", features = ["serde"] } tracing = "0.1.40" regex = "1" thiserror = "1" serde = "1" serde_json = "1" async-trait = { version = "0.1.74" } axum = { version = "0.7.5", features = ["macros"] } tower = "0.4" tower-http = { version = "0.6.1", features = [ "trace", "catch-panic", "timeout", "add-extension", "cors", "fs", "set-header", "compression-full", ] } [dependencies.sea-orm-migration] optional = true version = "1.0.0" features = [ # Enable at least one `ASYNC_RUNTIME` and `DATABASE_DRIVER` feature if you want to run migration via CLI. # View the list of supported features at https://www.sea-ql.org/SeaORM/docs/install-and-config/database-and-async-runtime. # e.g. "runtime-tokio-rustls", # `ASYNC_RUNTIME` feature "sqlx-postgres", # `DATABASE_DRIVER` feature "sqlx-sqlite", ] [package.metadata.docs.rs] features = ["testing"] [dev-dependencies] loco-rs = { path = ".", features = ["testing"] } rstest = "0.21.0" insta = { version = "1.34.0", features = ["redactions", "yaml", "filters"] } tree-fs = { version = "0.2.1" } reqwest = { version = "0.12.7" } serial_test = "3.1.1" tower = { workspace = true, features = ["util"] }