nigig-org/crates/nigig-core/Cargo.toml
andodeki ac8f8aa002
Some checks failed
repo hygiene / hygiene (push) Has been cancelled
PDF engine / engine (push) Has been cancelled
PDF engine / makepad-integration (push) Has been cancelled
PDF engine / fuzz (push) Has been cancelled
nigig-build (CAD) / supply-chain (push) Has been cancelled
nigig-build (CAD) / cad-module (push) Has been cancelled
nigig-build (CAD) / full-crate-check (push) Has been cancelled
nigig-build (CAD) / cad-engine-coverage (push) Has been cancelled
nigig-build (CAD) / doc-workspace-coverage (push) Has been cancelled
nigig-build (CAD) / cad-widget-coverage (push) Has been cancelled
traffic / gates (push) Has been cancelled
traffic / nigig-traffic (push) Has been cancelled
traffic / supply-chain (push) Has been cancelled
doc-engine / engine (push) Has been cancelled
doc-engine / coverage (push) Has been cancelled
doc-engine / consumer (push) Has been cancelled
email / gates (push) Has been cancelled
email / email-domain (push) Has been cancelled
email / nigig-email (push) Has been cancelled
email / supply-chain (push) Has been cancelled
nigig-map / test (push) Has been cancelled
sms / gates (push) Has been cancelled
sms / robius-sms (push) Has been cancelled
sms / android (push) Has been cancelled
sms / nigig-sms (push) Has been cancelled
sms / supply-chain (push) Has been cancelled
spreadsheet / engine-coverage (push) Has been cancelled
spreadsheet / ui-controller-coverage (push) Has been cancelled
p2p-intel / engine (push) Has been cancelled
p2p-intel / notifications (push) Has been cancelled
p2p-intel / coverage (push) Has been cancelled
p2p-intel / makepad-app (push) Has been cancelled
p2p-intel / exchange-tab (push) Has been cancelled
Payment domain, storage, platform and UI / isolated-payment-tests (push) Has been cancelled
Payment domain, storage, platform and UI / payment-ui-tests (push) Has been cancelled
chore: sync full working tree to gitdab
Whole-tree sync: cad-core/cad-ui split sources, nigig-build
construction_frame migration, pdf port progress, mpesa/pay/uikit/doc
updates, workspace members/profiles/lock, CI workflows and reviews.
See individual file history for details.
2026-09-12 07:15:24 +03:00

98 lines
4.6 KiB
TOML

[package]
name = "nigig-core"
version = "0.1.0"
edition = "2021"
[features]
default = ["native"]
native = ["dep:tokio", "dep:reqwest", "dep:lettre", "matrix_client/native", "async-rt"]
async-rt = []
# PDF trip-expense report (finance_report) — off by default so `nigig-traffic`
# and other non-email apps do not pull the 74K LOC pdf-graphics stack.
pdf = ["dep:nigig-pdf-graphics", "dep:nigig-pdf-cos"]
# C1e: the direct backend's IMAP protocol client (async-imap over native
# TLS). Native only -- a browser cannot open a raw TCP socket -- and off by
# default so builds that do not need IMAP never compile its dependency tree.
imap = ["dep:async-imap", "dep:async-native-tls", "dep:async-net"]
# C1f: a real keystore-backed CredentialStore (the `keyring` crate: Linux
# Secret Service, Windows Credential Manager, macOS Keychain). Native only,
# off by default so wasm and keystore-free builds never pull its dependency
# tree. Without it, active_store() is the fail-closed UnavailableCredentialStore.
keystore = ["dep:keyring"]
[dependencies]
matrix_client = { path = "../matrix_client", default-features = false }
nigig-system-prefs = { path = "../nigig-system-prefs" }
makepad-widgets = { workspace = true }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
chrono = { version = "0.4", features = ["serde"] }
robius-directories = { git = "https://github.com/project-robius/robius", rev = "b766e62b0600f5d2ee21cc6995648346fc277bd8" }
robius-ussd = { path = "../robius-ussd", features = ["serde"] }
cfg-if = "1.0"
futures = { version = "0.3", default-features = false, features = ["alloc"] }
error_set = "0.9.1"
url = "2.5.0"
clap = { version = "4.0.16", features = ["derive"] }
robius-open = { git = "https://github.com/project-robius/robius", rev = "b766e62b0600f5d2ee21cc6995648346fc277bd8" }
postcard = { version = "1.1.3", features = ["use-std"] }
rand = "0.8.5"
csv = "1.3"
image = { version = "0.25", default-features = false, features = ["png"] }
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
tokio = { version = "1", features = ["rt", "macros", "sync", "fs", "io-util"], optional = true }
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "stream"], optional = true }
robius-location = { git = "https://github.com/project-robius/robius", rev = "b766e62b0600f5d2ee21cc6995648346fc277bd8" }
lettre = { version = "0.11", default-features = false, features = [
"tokio1",
"tokio1-rustls",
"smtp-transport",
"pool",
"hostname",
"builder",
"ring",
"webpki-roots",
], optional = true }
# C1e: the IMAP protocol client (feature `imap`), native only.
async-imap = { version = "0.9", optional = true }
async-native-tls = { version = "0.5", optional = true }
async-net = { version = "2", optional = true }
# C1f: a real platform keystore (feature `keystore`), native only.
keyring = { version = "4", optional = true }
# Trip-expense reports (finance_report) render receipts to PDF with the
# nigig PDF stack. Native only + `pdf` feature: a browser cannot
# meaningfully write the file the finance department consumes, and
# `nigig-traffic` must not pull the stack at all (see `road.rs` 3D view).
nigig-pdf-graphics = { path = "../apps/pdf/pdf-graphics", optional = true }
nigig-pdf-cos = { path = "../apps/pdf/pdf-cos", optional = true }
[dev-dependencies]
# E2: property-test the address/date parsers — never panic on arbitrary
# input. Same dev-dependency the SMS crate already uses.
proptest = "1"
# §8 follow-up: execute the TLS handshake against a local server (the
# assessment's "TLS handshake never executed" gap). rcgen mints a
# self-signed certificate; tokio-rustls/rustls serve it so the production
# transport's certificate validation (accept_invalid_certs: false) is
# observed, not just read from lettre's source.
rcgen = "0.13"
tokio-rustls = "0.26"
# rustls directly, so the test can build the SERVER side of the handshake
# (tokio-rustls only re-exports it through a dep). `ring` matches the
# provider lettre selects, so `with_single_cert` can sign an ECDSA key.
rustls = { version = "0.23", default-features = false, features = ["ring", "logging", "std", "tls12"] }
tokio = { version = "1", features = ["rt", "macros", "net", "time", "io-util", "sync"] }
# Parse generated trip reports back in tests (finance_report tests assert
# page counts and content, not bytes).
nigig-pdf-document = { path = "../apps/pdf/pdf-document" }
[target.'cfg(target_arch = "wasm32")'.dependencies]
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
js-sys = "0.3"
getrandom = { version = "0.2", features = ["js"] }
web-sys = { version = "0.3", features = [
"Window", "console", "Request", "RequestInit", "Response", "Headers",
] }