[package]
name = "cedarling"
version = "0.0.39"
edition = "2024"
description = "The Cedarling: a high-performance local authorization service powered by the Rust Cedar Engine."
license = "Apache-2.0"
publish = true
[features]
default = ["grpc"]
blocking = ["tokio/rt-multi-thread"]
grpc = [
"dep:tonic",
"dep:prost",
"dep:prost-types",
"dep:tonic-prost",
"dep:tonic-prost-build",
"dep:tonic-web-wasm-client",
]
[dependencies]
serde = { workspace = true }
serde_json = { workspace = true, features = ["raw_value"] }
serde_yaml_ng = "0.10.0"
thiserror = { workspace = true }
uuid7 = { version = "1.8.0", features = [
"serde",
"uuid",
"rand010",
], default-features = false }
cedar-policy = { version = "4.11.2", features = ["partial-eval"] }
cedar-policy-core = "4.11.2"
base64 = "0.22.1"
url = "2.5.8"
jsonwebtoken = { workspace = true }
reqwest = { workspace = true }
typed-builder = "0.23.2"
semver = { version = "1.0.28", features = ["serde"] }
derive_more = { workspace = true, features = [
"deref",
"from",
"display",
"error",
] }
time = { version = "0.3.53", features = ["wasm-bindgen"] }
chrono = { workspace = true }
tokio = { workspace = true, features = ["macros", "time"] }
tokio-util = { workspace = true }
rand = "0.10.2"
smol_str = "0.3.6"
strum = { version = "0.28.0", features = ["derive"] }
flate2 = "1.1.9"
async-trait = "0.1.89"
futures = "0.3.32"
wasm-bindgen-futures = { workspace = true }
config = "0.15.25"
ahash = { version = "0.8.12", default-features = false, features = [
"no-rng",
"std",
] }
vfs = "0.13.0"
zip = { version = "8.6.0", default-features = false, features = [
"bzip2",
"deflate64",
"deflate",
"lzma",
"ppmd",
"time",
"zstd",
"xz",
] }
prost = { version = "0.14.4", optional = true }
prost-types = { version = "0.14.3", optional = true }
tonic-prost = { version = "0.14.6", optional = true }
hdrhistogram = "7.5.4"
arc-swap = "1.9.2"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
tonic = { version = "0.14.6", optional = true, features = ["tls-native-roots"] }
[target.'cfg(target_family = "wasm")'.dependencies]
gloo-timers = { version = "0.4.0", features = ["futures"] }
[target.'cfg(target_arch = "wasm32")'.dependencies]
web-sys = { workspace = true, features = ["console"] }
getrandom_02 = { package = "getrandom", version = "0.2", features = ["js"] }
getrandom_03 = { package = "getrandom", version = "0.3", features = [
"wasm_js",
] }
getrandom_04 = { package = "getrandom", version = "0.4", features = [
"wasm_js",
] }
tonic = { version = "0.14.3", optional = true, default-features = false, features = [
"codegen",
] }
tonic-web-wasm-client = { version = "0.9.0", optional = true }
[dev-dependencies]
test_utils = { workspace = true }
jsonwebkey = { workspace = true, features = ["generate", "jwt-convert"] }
mockito = { workspace = true }
criterion = { version = "0.8.2", features = ["async_tokio"] }
tokio = { workspace = true, features = ["rt-multi-thread"] }
stats_alloc = "0.1.10"
tempfile = "3.8"
tokio-stream = "0.1.18"
[target.'cfg(not(any(target_arch = "wasm32", target_os = "windows")))'.dev-dependencies]
pprof = { version = "0.15.0", features = ["flamegraph"] }
[build-dependencies]
chrono = { workspace = true }
tonic-prost-build = { version = "0.14.3", optional = true }
[package.metadata.cargo-machete]
ignored = ["getrandom_02", "prost", "tonic-prost", "tonic-prost-build"]
[lints]
workspace = true
[[bench]]
name = "authz_authorize_unsigned_benchmark"
harness = false
[[bench]]
name = "startup_benchmark"
harness = false
[[bench]]
name = "authz_authorize_multi_issuer_benchmark"
harness = false
[[bench]]
name = "policy_store_benchmark"
harness = false
[[bench]]
name = "context_data_store_benchmark"
harness = false
[[bench]]
name = "authz_authorize_batch_benchmark"
harness = false