• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ilpanich / axiam-rust-sdk / 32314885986
94%

Build:
DEFAULT BRANCH: main
Ran 19 Aug 2026 11:53PM UTC
Jobs 1
Files 43
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

19 Aug 2026 11:49PM UTC coverage: 92.651% (+0.2%) from 92.452%
32314885986

push

github

web-flow
feat(srp): SRP-6a login client + WASM port and the axiam-sdk-wasm npm package (#68)

* feat: WebAssembly build (axiam-sdk-wasm) and SRP-6a client (§23)

Two additions that share one theme: the same implementation reaching more
places, rather than more implementations.

## WebAssembly

`axiam-sdk` now compiles for wasm32-unknown-unknown, and `axiam-sdk-wasm/` is
a thin wasm-bindgen façade over it published to npm. It holds no protocol
logic — a second implementation of login or authorization would be a second
thing to get wrong, and the npm package would drift from the crate the first
time either changed.

Three platform gaps needed real work rather than a feature flag:

- `Instant::now()` and `SystemTime::now()` PANIC on wasm32-unknown-unknown.
  Every cache TTL, DPoP `iat` and `exp` check in this crate called one, so a
  browser build would have compiled cleanly and panicked on the first
  authorization decision. `src/time.rs` aliases them to `web-time`; on native
  it is a re-export of std and the dependency is not even pulled in.
- reqwest's `cookies` and `rustls` features do not exist on wasm. `src/cookies.rs`
  is the seam: on native it wraps the per-client jar, in a browser it holds
  nothing, because the browser owns the store. That is STRONGER than the
  native jar, where HttpOnly means nothing — page script genuinely cannot
  read the tokens.
- mTLS and custom CA roots cannot work from page script. `with_client_cert`
  and `with_custom_ca` return a typed error on wasm rather than accepting the
  call and ignoring it: silently dropping them would leave a caller believing
  they had pinned a CA when every request used the browser's own store.

wasm-opt is DISABLED, and the Cargo.toml comment carries the measurements
rather than an assertion. Every optimisation level, with binaryen 132 and with
reference-types/bulk-memory explicitly enabled, produces a module that builds
cleanly and throws `RangeError: WebAssembly.Table.grow()` on first import.
... (continued)

629 of 666 new or added lines in 10 files covered. (94.44%)

7337 of 7919 relevant lines covered (92.65%)

342.56 hits per line

Uncovered Changes

Lines Coverage ∆ File
14
90.41
src/rest/srp.rs
11
94.01
0.0% src/client.rs
5
94.85
src/srp/group.rs
5
96.55
src/srp/mod.rs
2
98.53
src/srp/kdf.rs
Jobs
ID Job ID Ran Files Coverage
1 32314885986.1 19 Aug 2026 11:53PM UTC 43
92.65
GitHub Action Run
Source Files on build 32314885986
  • Tree
  • List 43
  • Changed 12
  • Source Changed 12
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #32314885986
  • 08c6a079 on github
  • Prev Build on main (#32243446842)
  • Next Build on main (#32343879864)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc