Ctrl K
ComunidadGuías…

Cargo.toml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
[package]
name = "wshm-core"
version = "0.33.1"
edition = "2021"
description = "Core library for wshm"
license = "Apache-2.0"

[[bin]]
name = "wshm"
path = "src/main.rs"

[features]
default = []

# Object storage providers for `wshm_core::storage` (export sinks and page
# publishing). The local-directory provider is always available; each cloud
# provider pulls its `object_store` backend only when enabled.
storage-s3 = ["object_store/aws"]
storage-gcs = ["object_store/gcp"]
storage-azure = ["object_store/azure"]
storage-all = ["storage-s3", "storage-gcs", "storage-azure"]

# Export sinks (cloud storage). Kept as aliases of the storage-* features so
# existing `--features export-s3` builds keep working.
export-s3 = ["storage-s3"]
export-gcs = ["storage-gcs"]
export-azure = ["storage-azure"]

# Export sinks (databases)
# Note: PostgreSQL backend and SQLite→Postgres migration are wshm-pro
# features and intentionally absent from OSS.
export-elastic = ["dep:elasticsearch"]
export-opensearch = ["dep:opensearch"]
export-mongodb = ["dep:mongodb"]
export-mysql = ["dep:mysql_async"]

# Vault providers
vault-hashicorp = ["dep:vaultrs"]
vault-aws = ["dep:aws-sdk-secretsmanager", "dep:aws-config"]
vault-gcp = ["dep:google-cloud-secretmanager-v1"]

# Convenience bundles
export-all = [
    "export-s3", "export-gcs", "export-azure",
    "export-elastic", "export-opensearch", "export-mongodb",
    "export-mysql",
]
vault-all = ["vault-hashicorp", "vault-aws", "vault-gcp"]

[dependencies]
clap = { version = "4", features = ["derive", "env"] }
octocrab = "0.44"
# Used with octocrab's low-level `_get_with_headers` to fetch a PR diff
# through the authenticated api.github.com endpoint instead of the public
# github.com/*.diff URL — see fetch_pr_diff_raw. Versions match what
# octocrab 0.44 itself resolves to (Cargo.lock already carries both
# transitively; these just make them directly nameable in our code).
http = "1"
http-body-util = "0.1"
# Pinned to the exact version octocrab 0.44 depends on — its `.app()`
# builder takes a `jsonwebtoken::EncodingKey` by value, so a mismatched
# major/minor version would fail to type-check even though both compile.
jsonwebtoken = "9.3"
rusqlite = { version = "0.32", features = ["bundled"] }
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
toml = "0.8"
tokio = { version = "1", features = ["full"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
git2 = "0.19"
chrono = { version = "0.4", features = ["serde"] }
anyhow = "1"
encoding_rs = "0.8"
dirs = "6.0.0"
getrandom = "0.2"
ureq = { version = "2", features = ["json"] }
hostname = "0.4"
base64 = "0.22"
regex = "1.12.3"
axum = "0.8"
hmac = "0.12"
sha2 = "0.10"
hex = "0.4"
tower = "0.5"
tower-http = { version = "0.6", features = ["trace"] }
flate2 = "1"
tar = "0.4"
zip = { version = "9", default-features = false, features = ["deflate"] }
async-trait = "0.1.92"
is-terminal = "0.4"
zeroize = "1"
axum-server = { version = "0.7", features = ["tls-rustls"] }
rustls = { version = "0.23", features = ["ring"] }
# Local accounts: password hashing + secure random generation.
argon2 = "0.5"
rand = "0.8"
# Encrypted secret vault (AES-256-GCM with master key from WSHM_MASTER_KEY).
aes-gcm = "0.10"

# Object storage (wshm_core::storage). Only the local filesystem backend is
# built by default; cloud backends are enabled by the storage-* features.
object_store = { version = "0.14", default-features = false, features = ["fs"] }

# Optional: Vault - AWS shared config loader (used by vault-aws)
aws-config = { version = "1", optional = true, default-features = false, features = ["default-https-client", "rt-tokio", "credentials-process", "sso"] }

# Optional: Export - Databases
elasticsearch = { version = "9.1.0-alpha.1", optional = true }
opensearch = { version = "2", optional = true }
mongodb = { version = "3", optional = true }
mysql_async = { version = "0.36", optional = true }

# Optional: Vault
vaultrs = { version = "0.7", optional = true }
aws-sdk-secretsmanager = { version = "1", optional = true, default-features = false, features = ["default-https-client", "rt-tokio"] }
google-cloud-secretmanager-v1 = { version = "1", optional = true }
mime_guess = "2"
rust-embed = "8"
urlencoding = "2.1.3"
# NFKC folding of lookalike characters before injection detection (#235).
unicode-normalization = "0.1.25"
futures = "0.3.32"
ratatui = "0.29"
crossterm = "0.28"

# libgit2's HTTPS transport pulls openssl-sys, which needs a system OpenSSL.
# Two cases lack one: musl/Alpine (no system lib), and cross-compiling the
# x86_64 macOS slice on an arm64 runner (no x86_64 OpenSSL on the host). Build
# the vendored copy from source there — glibc-Linux/Windows and the native
# arm64 macOS build keep using their platform lib.
[target.'cfg(any(target_env = "musl", target_os = "macos"))'.dependencies]
openssl = { version = "0.10", features = ["vendored"] }