[package] name = "spacegate-plugin" version.workspace = true authors.workspace = true description.workspace = true keywords.workspace = true categories.workspace = true homepage.workspace = true documentation.workspace = true repository.workspace = true license.workspace = true edition.workspace = true readme = "../../README.md" [lib] name = "spacegate_plugin" path = "src/lib.rs" [features] cache = ["redis"] redis = [ "spacegate-kernel/ext-redis", "spacegate-model/ext-redis", "spacegate-ext-redis", ] axum = ["spacegate-ext-axum", "spacegate-model/ext-axum"] dylib = ["libloading"] limit = ["cache"] header-modifier = [] inject = [] redirect = ["url"] retry = [] rewrite = [] set-version = [] set-scheme = [] maintenance = ["ipnet", "chrono/serde"] # decompression = ["tower-http/decompression-full"] status = ["hyper-util"] east-west-traffic-white-list = ["ipnet"] full = [ "cache", "limit", "header-modifier", "inject", "redirect", "retry", "rewrite", "maintenance", "set-version", "set-scheme", # "decompression", "status", "east-west-traffic-white-list", ] schema = ["schemars", "schemars/chrono"] [dependencies] libloading = { version = "0.8", optional = true } spacegate-model = { workspace = true } spacegate-kernel = { workspace = true } tracing = { workspace = true } hyper = { workspace = true } http-body-util = { workspace = true } tower-layer = { workspace = true } pin-project-lite = { workspace = true } hyper-util = { workspace = true, optional = true } # serde serde = { workspace = true, features = ["derive"] } serde_json = { workspace = true } tokio-util = { workspace = true, features = ["io"] } schemars = { workspace = true, optional = true } # future futures-util = { workspace = true } # plugin-maintenance ipnet = { workspace = true, optional = true } # time chrono = { workspace = true } url = { version = "2", optional = true } # cache spacegate-ext-redis = { workspace = true, optional = true } spacegate-ext-axum = { workspace = true, optional = true } # rt tokio = { workspace = true, features = ["rt", "fs", "time", "net"] } arc-swap = "1" [dev-dependencies] tracing-subscriber = { workspace = true } async-compression = { version = "0.4", features = [ "tokio", "gzip", "deflate", "brotli", ] } testcontainers = "0.15.0" testcontainers-modules = { workspace = true, features = ["redis"] } regex.workspace = true [[test]] name = "export_schema" path = "tests/export_schema.rs" required-features = ["schema", "cache"] [[test]] name = "test_hot_update" path = "tests/test_hot_update.rs" required-features = ["maintenance"]