[package]
edition = "2024"
name = "vyuh"
version = "0.2.7"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Vyuh web framework for Axum and SQLx with handler-first APIs"
documentation = "https://docs.rs/vyuh"
readme = "README.md"
license = "MIT"
repository = "https://github.com/vivsh/vyuh"
[features]
argon2 = ["dep:argon2"]
cors = ["tower-http/cors"]
default = ["postgres"]
mysql = ["sqlx/mysql"]
postgres = ["sqlx/postgres"]
sqlite = ["sqlx/sqlite"]
[lib]
name = "vyuh"
path = "src/lib.rs"
[[example]]
name = "auth_api_key"
path = "examples/auth/api_key.rs"
[[example]]
name = "auth_api_key_openapi"
path = "examples/auth/api_key_openapi.rs"
[[example]]
name = "auth_basic"
path = "examples/auth/basic.rs"
[[example]]
name = "auth_cookies"
path = "examples/auth/cookies.rs"
[[example]]
name = "auth_dynamic_permission"
path = "examples/auth/dynamic_permission.rs"
[[example]]
name = "auth_jwt_basic"
path = "examples/auth/jwt_basic.rs"
[[example]]
name = "auth_roles_openapi"
path = "examples/auth/roles_openapi.rs"
[[example]]
name = "auth_roles_static"
path = "examples/auth/roles_static.rs"
[[example]]
name = "channels_auth"
path = "examples/channels/auth.rs"
[[example]]
name = "channels_custom_backend"
path = "examples/channels/custom_backend.rs"
[[example]]
name = "channels_long_poll"
path = "examples/channels/long_poll.rs"
[[example]]
name = "channels_publish_from_signal"
path = "examples/channels/publish_from_signal.rs"
[[example]]
name = "channels_sse"
path = "examples/channels/sse.rs"
[[example]]
name = "channels_websocket"
path = "examples/channels/websocket.rs"
[[example]]
name = "commands_macro"
path = "examples/commands/macro.rs"
[[example]]
name = "commands_reindex"
path = "examples/commands/reindex.rs"
[[example]]
name = "commands_site"
path = "examples/commands/site.rs"
[[example]]
name = "db_basic"
path = "examples/db/basic.rs"
[[example]]
name = "db_raw_statement"
path = "examples/db/raw_statement.rs"
[[example]]
name = "db_sqlx"
path = "examples/db/sqlx.rs"
[[example]]
name = "db_transactions"
path = "examples/db/transactions.rs"
[[example]]
name = "db_writes"
path = "examples/db/writes.rs"
[[example]]
name = "emitters_cron"
path = "examples/emitters/cron.rs"
[[example]]
name = "emitters_direct_api"
path = "examples/emitters/direct_api.rs"
[[example]]
name = "emitters_periodic"
path = "examples/emitters/periodic.rs"
[[example]]
name = "emitters_pgnotify"
path = "examples/emitters/pgnotify.rs"
[[example]]
name = "emitters_pgnotify_burst_debounce"
path = "examples/emitters/pgnotify_burst_debounce.rs"
[[example]]
name = "logging_setup"
path = "examples/logging/setup.rs"
[[example]]
name = "middlewares_global"
path = "examples/middlewares/global.rs"
[[example]]
name = "middlewares_path_normalization"
path = "examples/middlewares/path_normalization.rs"
[[example]]
name = "openapi_basic"
path = "examples/openapi/basic.rs"
[[example]]
name = "openapi_responses"
path = "examples/openapi/responses.rs"
[[example]]
name = "routes_json_post"
path = "examples/routes/json_post.rs"
[[example]]
name = "routes_macroless"
path = "examples/routes/macroless.rs"
[[example]]
name = "routes_reverse"
path = "examples/routes/reverse.rs"
[[example]]
name = "routes_validation"
path = "examples/routes/validation.rs"
[[example]]
name = "services_concrete"
path = "examples/services/concrete.rs"
[[example]]
name = "services_direct"
path = "examples/services/direct.rs"
[[example]]
name = "services_facade"
path = "examples/services/facade.rs"
[[example]]
name = "services_worker"
path = "examples/services/worker.rs"
[[example]]
name = "showcase_routes_signals_emitters"
path = "examples/showcase/routes_signals_emitters.rs"
[[example]]
name = "signals_macroless"
path = "examples/signals/macroless.rs"
[[example]]
name = "signals_multiple_handlers"
path = "examples/signals/multiple_handlers.rs"
[[example]]
name = "signals_scheduled"
path = "examples/signals/scheduled.rs"
[[example]]
name = "signals_simple"
path = "examples/signals/simple.rs"
[[example]]
name = "tasks_concurrency"
path = "examples/tasks/concurrency.rs"
[[example]]
name = "tasks_macro"
path = "examples/tasks/macro.rs"
[[example]]
name = "tasks_macroless"
path = "examples/tasks/macroless.rs"
[[example]]
name = "tasks_mysql"
path = "examples/tasks/mysql.rs"
[[example]]
name = "tasks_sleep"
path = "examples/tasks/sleep.rs"
[[example]]
name = "tasks_sqlite"
path = "examples/tasks/sqlite.rs"
[[example]]
name = "tasks_suspend_resume"
path = "examples/tasks/suspend_resume.rs"
[[example]]
name = "templates_assets"
path = "examples/templates/assets.rs"
[[example]]
name = "templates_config"
path = "examples/templates/config.rs"
[[example]]
name = "templates_datetime"
path = "examples/templates/datetime.rs"
[[example]]
name = "templates_project"
path = "examples/templates/project.rs"
[[example]]
name = "templates_route"
path = "examples/templates/route.rs"
[[example]]
name = "uploads_basic"
path = "examples/uploads/basic.rs"
[[example]]
name = "uploads_large"
path = "examples/uploads/large.rs"
[[example]]
name = "uploads_macroless"
path = "examples/uploads/macroless.rs"
[[example]]
name = "uploads_validated"
path = "examples/uploads/validated.rs"
[[test]]
name = "auth"
path = "tests/auth.rs"
[[test]]
name = "emitters"
path = "tests/emitters.rs"
[[test]]
name = "passwords"
path = "tests/passwords.rs"
[[test]]
name = "request_docs"
path = "tests/request_docs.rs"
[[test]]
name = "services"
path = "tests/services.rs"
[[test]]
name = "task_stores"
path = "tests/task_stores.rs"
[[test]]
name = "uploads"
path = "tests/uploads.rs"
[[test]]
name = "validatable"
path = "tests/validatable.rs"
[[test]]
name = "validation_routes"
path = "tests/validation_routes.rs"
[[test]]
name = "validators"
path = "tests/validators.rs"
[dependencies.argon2]
version = "0.5"
optional = true
[dependencies.axum]
version = "0.8.4"
features = [
"macros",
"ws",
"multipart",
"http2",
]
[dependencies.axum-extra]
version = "0.10.1"
features = [
"typed-header",
"query",
"multipart",
"form",
"cookie",
"cookie-private",
"cookie-signed",
]
[dependencies.axum-test]
version = "17.3.0"
[dependencies.base64]
version = "0.21"
[dependencies.blake3]
version = "1.8.2"
[dependencies.bytes]
version = "1.8"
[dependencies.chrono]
version = "0.4.41"
features = ["serde"]
[dependencies.chrono-tz]
version = "0.10"
[dependencies.cron]
version = "0.12"
[dependencies.dotenvy]
version = "0.15.7"
[dependencies.either]
version = "1.15.0"
[dependencies.futures]
version = "0.3.31"
[dependencies.garde]
version = "0.22.1"
[dependencies.http-serde]
version = "2.1.1"
[dependencies.indexmap]
version = "2.10.0"
features = ["serde"]
[dependencies.infer]
version = "0.16.0"
[dependencies.jsonwebtoken]
version = "9.3.1"
[dependencies.mime_guess]
version = "2.0.5"
[dependencies.minijinja]
version = "2.11.0"
features = ["loader"]
[dependencies.notify]
version = "^8.1"
[dependencies.once_cell]
version = "1.21.3"
features = ["parking_lot"]
[dependencies.openapiv3]
version = "2.2.0"
[dependencies.openapiv3_1]
version = "0.1.3"
[dependencies.parking_lot]
version = "0.12.5"
[dependencies.percent-encoding]
version = "2.3.2"
[dependencies.rand]
version = "0.9.1"
features = ["serde"]
[dependencies.regex]
version = "1.12.2"
[dependencies.ring]
version = "0.16"
[dependencies.rust-silos]
version = "^0.3"
[dependencies.schemars]
version = "1.0.4"
[dependencies.serde]
version = "1.0.219"
features = [
"derive",
"rc",
"serde_derive",
]
[dependencies.serde_json]
version = "1.0.140"
features = [
"indexmap",
"raw_value",
"preserve_order",
]
[dependencies.serde_urlencoded]
version = "0.7"
[dependencies.smallvec]
version = "1.13"
[dependencies.sqlx]
version = "^0.8.6"
features = [
"chrono",
"postgres",
"runtime-tokio",
"uuid",
"json",
]
[dependencies.strum]
version = "0.27.1"
features = [
"derive",
"strum_macros",
]
[dependencies.sysinfo]
version = "0.33"
[dependencies.tempfile]
version = "3"
[dependencies.thiserror]
version = "2.0.12"
[dependencies.time]
version = "0.3.41"
[dependencies.tokio]
version = "1.46.1"
features = ["full"]
[dependencies.tokio-stream]
version = "0.1"
features = ["sync"]
[dependencies.tokio-util]
version = "0.7.18"
[dependencies.tower]
version = "0.5.2"
[dependencies.tower-http]
version = "0.6.2"
features = [
"catch-panic",
"compression-full",
"cors",
"fs",
"trace",
]
[dependencies.tracing]
version = "0.1.41"
[dependencies.tracing-appender]
version = "0.2"
[dependencies.tracing-log]
version = "0.2"
[dependencies.tracing-subscriber]
version = "0.3.19"
features = [
"env-filter",
"json",
"time",
"ansi",
]
[dependencies.twox-hash]
version = "1.6"
[dependencies.url]
version = "2.5.4"
[dependencies.uuid]
version = "1.17.0"
features = [
"v4",
"v7",
"serde",
]
[dependencies.vyuh-macros]
version = "0.2.7"
[dev-dependencies.tokio]
version = "1.46.1"
features = [
"full",
"test-util",
]