@eqtylab/integrity-js
v0.0.5
Published
JavaScript bindings for the Integrity library (commit: 70b8785)
Downloads
1,403
Readme
integrity-js
Client-side verification library for the Integrity framework, compiled from Rust to WebAssembly and published as an npm package (@eqtylab/integrity-js).
Used in the VerifyLabel component of the lineage-explorer package to verify lineage graph nodes entirely in the browser.
Verification Functions
verify_statement(statement, contexts?) -> bool
Verifies a JSON-LD statement by recomputing its content identifier and comparing it to the embedded @id. The process:
- Parses the JSON-LD statement and extracts the
@id - Converts the statement to N-Quads and canonicalizes using RDFC 1.0
- Computes a BLAKE3 CID over the canonicalized output
- Returns
trueif the computed CID matches the@id
Optional contexts parameter allows passing additional JSON-LD context documents as { uri: contextObject } pairs (useful when contexts can't be fetched at runtime due to CORS).
verify_vc(vc, statement_id, contexts?) -> bool
Verifies a W3C Verifiable Credential:
- Checks that the credential subject ID matches the given
statement_id - Routes credentials with
issuanceDateto the legacy verifier - Returns
trueif both checks pass
Optional contexts parameter takes the same { uri: contextObject } shape as verify_statement, for credentials whose @context references a document this build does not embed. It may be omitted entirely — the generated type is contexts?: object | null, so existing two-argument calls keep type-checking. Verification re-expands the credential, and nothing is fetched, so an unresolvable context yields false rather than an error — if a credential you expect to be valid returns false, an unsupplied context is worth checking first. The legacy path resolves against its own pinned documents and ignores this argument.
Development
Using Nix (recommended)
The project includes a Nix flake that provides all development dependencies:
nix developManual Setup
Install the following dependencies:
- Rust (cargo, rustc, rustfmt, clippy)
- wasm-pack
- wasm-bindgen-cli
- just
- present-cli
- Node.js
- lld
- pkg-config and OpenSSL
Just Commands
The project uses Just for common development tasks.
Available recipes:
build # Build the WASM package for npm
ci # Run all CI checks (formatting, readme, lints, tests)
clean # Remove build artifacts
fix # Auto-fix clippy warnings where possible
fmt # Format code with rustfmt
fmt-check # Check code formatting without modifying files
lint # Run clippy lints
lint-docs # Check that all public items have documentation
readme-check # Verify README.md is up to date
readme-update # Regenerate README.md in place
test *args # Run wasm-bindgen integration tests in a headless browser
test-rs *args # Run native Rust testsPublishing
To publish a new version to npm, create a new release on GitHub with a semantic version tag (e.g., v1.0.0). The package will be automatically built and published to npm via GitHub Actions.
