Files
fressh/packages/react-native-uniffi-russh/rust/uniffi-russh/Cargo.toml
2025-09-20 12:09:51 -04:00

65 lines
3.5 KiB
TOML

[package]
name = "uniffi-russh"
version = "0.1.0"
edition = "2021"
# ──────────────────────────────────────────────────────────────────────────────
# Runtime + FFI + SSH deps
# ──────────────────────────────────────────────────────────────────────────────
[dependencies]
# UniFFI runtime (from your workspace). The `tokio` feature enables
# the `#[uniffi::export(async_runtime = "tokio")]` path so async Rust fns
# surface as Promises on the JS side.
uniffi = { workspace = true, features = ["tokio"] }
# Lightweight error enum derive for FFI-safe error reporting.
thiserror = "1.0.64"
# Tokio async runtime + IO bits. We use:
# - rt-multi-thread : multithreaded scheduler
# - macros : attribute macros (if you ever need #[tokio::test], etc.)
# - time : timers/sleeps
# - net : sockets; russh uses this
# - sync : async Mutex, channels, etc.
# - io-util : AsyncRead/Write extension traits (write_all/flush)
tokio = { version = "1.47.1", features = ["rt-multi-thread", "macros", "time", "net", "sync", "io-util"] }
# Common async ecosystem utilities (not strictly required by our code, but
# frequently useful and pulled in by transitive deps).
bytes = "1.10.1"
futures = "0.3.31"
base64 = "0.22"
# SSH client and keys. `russh` is the client; `russh-keys` handles key types,
# generation, and OpenSSH (PEM) encoding/decoding.
# By default russh pulls in aws-lc which requires CMake toolchain. 'ring' is a rust based alternative.
# 'flate2' is a compression library.
# 'rsa' is a RSA encryption library.
russh = { version = "0.54.3", default-features = false, features = ["ring", "flate2", "rsa"] }
russh-keys = "0.49.2"
# Secure RNG for key generation (OsRng).
rand = "0.8"
# Handy but currently optional; you can remove it if unused.
once_cell = "1.21.3"
# Optional helper for async trait impls; safe to keep even if unused.
async-trait = "0.1"
# ──────────────────────────────────────────────────────────────────────────────
# Build-time codegen for UniFFI
# ──────────────────────────────────────────────────────────────────────────────
[build-dependencies]
# UniFFI build helper to generate bindings at compile time.
uniffi = { workspace = true, features = ["build"] }
# ──────────────────────────────────────────────────────────────────────────────
# Library outputs
# ──────────────────────────────────────────────────────────────────────────────
[lib]
# - cdylib : C-compatible dynamic library (Android/iOS; what RN/JSI loads)
# - staticlib: Static archive (useful for iOS static linking)
# - lib : Normal Rust rlib (unit tests, internal usage)
crate-type = ["cdylib", "staticlib", "lib"]