[package]
edition = "2021"
rust-version = "1.75"
name = "solid-pod-rs"
version = "0.4.0-alpha.4"
authors = ["DreamLab-AI contributors"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Rust-native Solid Pod server library — LDP, WAC, WebID, Solid-OIDC, Solid Notifications, NIP-98. Framework-agnostic."
homepage = "https://github.com/dreamlab-ai/solid-pod-rs"
documentation = "https://docs.rs/solid-pod-rs"
readme = "README.md"
keywords = [
"solid",
"pod",
"wac",
"ldp",
"webid",
]
categories = ["web-programming::http-server"]
license = "AGPL-3.0-only"
repository = "https://github.com/dreamlab-ai/solid-pod-rs"
[features]
acl-origin = ["jss-v04"]
config-loader = [
"jss-v04",
"dep:serde_yaml",
"dep:toml",
]
core = ["std"]
default = [
"std",
"fs-backend",
"memory-backend",
"tokio-runtime",
"notifications",
]
did-nostr = [
"jss-v04",
"security-primitives",
"tokio-runtime",
"dep:reqwest",
]
dpop-replay-cache = [
"oidc",
"jss-v04",
"dep:lru",
"tokio-runtime",
]
fs-backend = [
"tokio-runtime",
"dep:notify",
]
jss-v04 = []
legacy-notifications = [
"jss-v04",
"tokio-runtime",
"notifications",
]
memory-backend = ["tokio-runtime"]
nip98-schnorr = ["dep:k256"]
notifications = [
"tokio-runtime",
"dep:reqwest",
]
oidc = [
"dep:openidconnect",
"dep:jsonwebtoken",
"tokio-runtime",
"dep:reqwest",
]
quota = [
"jss-v04",
"config-loader",
"tokio-runtime",
]
rate-limit = [
"jss-v04",
"dep:lru",
"dep:parking_lot",
"tokio-runtime",
]
s3-backend = [
"dep:aws-sdk-s3",
"tokio-runtime",
]
security-primitives = [
"jss-v04",
"tokio-runtime",
]
std = []
tokio-runtime = [
"dep:tokio",
"dep:tokio-tungstenite",
"dep:futures-util",
]
webhook-signing = [
"jss-v04",
"dep:ed25519-dalek",
"dep:httpdate",
"dep:rand",
"tokio-runtime",
"dep:reqwest",
]
[lib]
name = "solid_pod_rs"
path = "src/lib.rs"
[[example]]
name = "custom_storage"
path = "examples/custom_storage.rs"
[[example]]
name = "embed_in_actix"
path = "examples/embed_in_actix.rs"
[[example]]
name = "nip98_client"
path = "examples/nip98_client.rs"
[[example]]
name = "notifications_consumer"
path = "examples/notifications_consumer.rs"
[[example]]
name = "oidc_client"
path = "examples/oidc_client.rs"
required-features = ["oidc"]
[[example]]
name = "wac_admin"
path = "examples/wac_admin.rs"
[[example]]
name = "webhook_receiver"
path = "examples/webhook_receiver.rs"
[[test]]
name = "acl_origin_sprint9"
path = "tests/acl_origin_sprint9.rs"
[[test]]
name = "acl_origin_test"
path = "tests/acl_origin_test.rs"
[[test]]
name = "cid_verifier_sprint11"
path = "tests/cid_verifier_sprint11.rs"
[[test]]
name = "config_size_parsing"
path = "tests/config_size_parsing.rs"
[[test]]
name = "config_sprint11"
path = "tests/config_sprint11.rs"
[[test]]
name = "config_test"
path = "tests/config_test.rs"
[[test]]
name = "cors_preflight"
path = "tests/cors_preflight.rs"
[[test]]
name = "did_nostr_resolver"
path = "tests/did_nostr_resolver.rs"
[[test]]
name = "dpop_replay_test"
path = "tests/dpop_replay_test.rs"
[[test]]
name = "interop_jss"
path = "tests/interop_jss.rs"
[[test]]
name = "jti_replay_sprint9"
path = "tests/jti_replay_sprint9.rs"
[[test]]
name = "ldp_headers_jss"
path = "tests/ldp_headers_jss.rs"
[[test]]
name = "ldp_patch_create_jss"
path = "tests/ldp_patch_create_jss.rs"
[[test]]
name = "ldp_range_jss"
path = "tests/ldp_range_jss.rs"
[[test]]
name = "ldp_slug_jss"
path = "tests/ldp_slug_jss.rs"
[[test]]
name = "legacy_notifications_sprint11"
path = "tests/legacy_notifications_sprint11.rs"
[[test]]
name = "legacy_notifications_test"
path = "tests/legacy_notifications_test.rs"
[[test]]
name = "legacy_wac_check"
path = "tests/legacy_wac_check.rs"
[[test]]
name = "nip98_extended"
path = "tests/nip98_extended.rs"
[[test]]
name = "nodeinfo_jss"
path = "tests/nodeinfo_jss.rs"
[[test]]
name = "notifications_mod_direct"
path = "tests/notifications_mod_direct.rs"
[[test]]
name = "oidc_access_token_alg"
path = "tests/oidc_access_token_alg.rs"
[[test]]
name = "oidc_dpop_signature"
path = "tests/oidc_dpop_signature.rs"
[[test]]
name = "oidc_integration"
path = "tests/oidc_integration.rs"
[[test]]
name = "oidc_jwks_ssrf"
path = "tests/oidc_jwks_ssrf.rs"
[[test]]
name = "oidc_mod_direct"
path = "tests/oidc_mod_direct.rs"
[[test]]
name = "oidc_thumbprint_rfc7638"
path = "tests/oidc_thumbprint_rfc7638.rs"
[[test]]
name = "parity_close"
path = "tests/parity_close.rs"
[[test]]
name = "parity_sprint12"
path = "tests/parity_sprint12.rs"
[[test]]
name = "quota_fs"
path = "tests/quota_fs.rs"
[[test]]
name = "quota_race"
path = "tests/quota_race.rs"
[[test]]
name = "rate_limit_lru"
path = "tests/rate_limit_lru.rs"
[[test]]
name = "schnorr_nip98"
path = "tests/schnorr_nip98.rs"
[[test]]
name = "security_primitives_test"
path = "tests/security_primitives_test.rs"
[[test]]
name = "server_routes_jss"
path = "tests/server_routes_jss.rs"
[[test]]
name = "server_security"
path = "tests/server_security.rs"
[[test]]
name = "sprint12_security"
path = "tests/sprint12_security.rs"
[[test]]
name = "storage_trait"
path = "tests/storage_trait.rs"
[[test]]
name = "tenancy_subdomain"
path = "tests/tenancy_subdomain.rs"
[[test]]
name = "wac2_conditions"
path = "tests/wac2_conditions.rs"
[[test]]
name = "wac2_conditions_sprint9"
path = "tests/wac2_conditions_sprint9.rs"
[[test]]
name = "wac_basic"
path = "tests/wac_basic.rs"
[[test]]
name = "wac_inheritance"
path = "tests/wac_inheritance.rs"
[[test]]
name = "wac_parser_bounds"
path = "tests/wac_parser_bounds.rs"
[[test]]
name = "wac_validate_for_write"
path = "tests/wac_validate_for_write.rs"
[[test]]
name = "webhook_retry"
path = "tests/webhook_retry.rs"
[[test]]
name = "webhook_signing"
path = "tests/webhook_signing.rs"
[[bench]]
name = "dpop_replay_bench"
path = "benches/dpop_replay_bench.rs"
harness = false
required-features = ["dpop-replay-cache"]
[[bench]]
name = "ldp_content_negotiation_bench"
path = "benches/ldp_content_negotiation_bench.rs"
harness = false
[[bench]]
name = "nip98_verify_bench"
path = "benches/nip98_verify_bench.rs"
harness = false
[[bench]]
name = "storage_backend_bench"
path = "benches/storage_backend_bench.rs"
harness = false
[[bench]]
name = "wac_eval_bench"
path = "benches/wac_eval_bench.rs"
harness = false
[dependencies.async-trait]
version = "0.1"
[dependencies.aws-sdk-s3]
version = "1"
optional = true
[dependencies.base64]
version = "0.22"
[dependencies.bytes]
version = "1"
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.ed25519-dalek]
version = "2"
features = ["rand_core"]
optional = true
[dependencies.futures-util]
version = "0.3"
optional = true
[dependencies.hex]
version = "0.4"
[dependencies.httpdate]
version = "1"
optional = true
[dependencies.jsonwebtoken]
version = "9"
optional = true
[dependencies.k256]
version = "0.13"
features = ["schnorr"]
optional = true
[dependencies.lru]
version = "0.12"
optional = true
[dependencies.notify]
version = "6"
optional = true
[dependencies.openidconnect]
version = "4"
optional = true
[dependencies.parking_lot]
version = "0.12"
optional = true
[dependencies.rand]
version = "0.8"
optional = true
[dependencies.reqwest]
version = "0.12"
features = [
"json",
"rustls-tls",
]
optional = true
default-features = false
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.serde_yaml]
version = "0.9"
optional = true
[dependencies.sha2]
version = "0.10"
[dependencies.spargebra]
version = "0.3"
[dependencies.thiserror]
version = "1"
[dependencies.tokio]
version = "1"
features = [
"fs",
"io-util",
"sync",
"macros",
"rt",
"time",
]
optional = true
[dependencies.tokio-tungstenite]
version = "0.24"
optional = true
[dependencies.toml]
version = "0.8"
optional = true
[dependencies.tracing]
version = "0.1"
[dependencies.url]
version = "2"
[dependencies.uuid]
version = "1"
features = [
"v4",
"serde",
]
[dev-dependencies.actix-web]
version = "4"
[dev-dependencies.axum]
version = "0.7"
[dev-dependencies.criterion]
version = "0.5"
features = ["html_reports"]
[dev-dependencies.hmac]
version = "0.12"
[dev-dependencies.k256]
version = "0.13"
features = ["schnorr"]
[dev-dependencies.p256]
version = "0.13"
features = [
"pem",
"ecdsa",
"pkcs8",
]
[dev-dependencies.pkcs8]
version = "0.10"
features = ["pem"]
[dev-dependencies.rand]
version = "0.8"
features = ["small_rng"]
[dev-dependencies.tempfile]
version = "3"
[dev-dependencies.tokio]
version = "1"
features = ["full"]
[dev-dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]
[dev-dependencies.wiremock]
version = "0.6"