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
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.
98 lines
4.6 KiB
TOML
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",
|
|
] }
|