[package]
edition = "2024"
name = "forge-runtime"
version = "0.10.0"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Runtime executors and gateway for the Forge framework"
readme = false
license = "MIT"
repository = "https://github.com/isala404/forge"
[features]
cron = ["jobs"]
daemons = []
default = []
full = [
"gateway",
"mcp-oauth",
"jobs",
"workflows",
"cron",
"daemons",
"otel",
]
gateway = [
"dep:axum",
"dep:tower",
"dep:tower-http",
"dep:bytes",
"dep:ipnet",
"dep:jsonwebtoken",
"dep:argon2",
"dep:password-hash",
"dep:ring",
"dep:serde_urlencoded",
"dep:percent-encoding",
"dep:aho-corasick",
"dep:hmac",
"dep:sha1",
"dep:tokio-rustls",
"dep:rustls",
"dep:tls-listener",
"dep:jsonschema",
]
geoip = [
"gateway",
"dep:db_ip",
"dep:maxminddb",
]
jobs = []
mcp-oauth = ["gateway"]
otel = [
"dep:opentelemetry",
"dep:opentelemetry_sdk",
"dep:opentelemetry-otlp",
"dep:opentelemetry-semantic-conventions",
"dep:opentelemetry-appender-tracing",
"dep:tracing-opentelemetry",
]
testcontainers = ["forge-core/testcontainers"]
workflows = ["jobs"]
[lib]
name = "forge_runtime"
path = "src/lib.rs"
[dependencies.ahash]
version = "0.8"
[dependencies.aho-corasick]
version = "1"
optional = true
[dependencies.argon2]
version = "0.5"
optional = true
[dependencies.axum]
version = "0.8"
features = [
"ws",
"multipart",
]
optional = true
[dependencies.base64]
version = "0.22"
[dependencies.bytes]
version = "1.10"
optional = true
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.chrono-tz]
version = "0.10"
[dependencies.dashmap]
version = "6"
[dependencies.db_ip]
version = "0.3"
features = [
"ipv4",
"ipv6",
"include-country-code-lite",
]
optional = true
default-features = false
[dependencies.forge-core]
version = "0.10.0"
[dependencies.futures-util]
version = "0.3"
[dependencies.hmac]
version = "0.12"
optional = true
[dependencies.ipnet]
version = "2"
optional = true
[dependencies.jsonschema]
version = "0.28"
optional = true
[dependencies.jsonwebtoken]
version = "10"
features = [
"rust_crypto",
"use_pem",
]
optional = true
default-features = false
[dependencies.maxminddb]
version = "0.28"
optional = true
[dependencies.opentelemetry]
version = "0.27"
features = [
"trace",
"metrics",
"logs",
]
optional = true
[dependencies.opentelemetry-appender-tracing]
version = "0.27"
optional = true
[dependencies.opentelemetry-otlp]
version = "0.27"
features = [
"http-json",
"reqwest-rustls",
"trace",
"metrics",
"logs",
"internal-logs",
]
optional = true
default-features = false
[dependencies.opentelemetry-semantic-conventions]
version = "0.27"
optional = true
[dependencies.opentelemetry_sdk]
version = "0.27"
features = [
"rt-tokio",
"trace",
"metrics",
"logs",
]
optional = true
[dependencies.password-hash]
version = "0.5"
optional = true
[dependencies.percent-encoding]
version = "2"
optional = true
[dependencies.reqwest]
version = "0.12"
features = [
"json",
"rustls-tls",
]
default-features = false
[dependencies.ring]
version = "0.17"
optional = true
[dependencies.rustls]
version = "0.23"
features = [
"ring",
"std",
"tls12",
]
optional = true
default-features = false
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.serde_urlencoded]
version = "0.7"
optional = true
[dependencies.sha1]
version = "0.10"
optional = true
[dependencies.sha2]
version = "0.10"
[dependencies.sqlx]
version = "0.8"
features = [
"runtime-tokio",
"postgres",
"uuid",
"chrono",
"json",
"macros",
]
default-features = false
[dependencies.subtle]
version = "2"
[dependencies.thiserror]
version = "2.0"
[dependencies.tls-listener]
version = "0.11"
features = [
"rustls-ring",
"axum",
"tokio-net",
]
optional = true
default-features = false
[dependencies.tokio]
version = "1.48"
features = [
"rt-multi-thread",
"macros",
"net",
"time",
"sync",
"signal",
"process",
"io-util",
"fs",
]
[dependencies.tokio-rustls]
version = "0.26"
features = ["ring"]
optional = true
default-features = false
[dependencies.tokio-util]
version = "0.7"
[dependencies.tower]
version = "0.5"
features = [
"limit",
"timeout",
"util",
]
optional = true
[dependencies.tower-http]
version = "0.6"
features = [
"cors",
"trace",
"compression-gzip",
]
optional = true
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-opentelemetry]
version = "0.28"
optional = true
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"json",
"env-filter",
]
[dependencies.uuid]
version = "1.19"
features = [
"v4",
"serde",
]
[dev-dependencies.rcgen]
version = "0.13"
features = [
"pem",
"ring",
]
default-features = false
[dev-dependencies.tempfile]
version = "3"
[dev-dependencies.tokio-test]
version = "0.4"
[lints.clippy]
disallowed_methods = "deny"
indexing_slicing = "deny"
panic = "deny"
todo = "deny"
unimplemented = "deny"
unwrap_used = "deny"
[lints.rust]
dead_code = "deny"
unsafe_code = "deny"