Contributing to libVES
June 23, 2026 · View on GitHub
Thanks for your interest. libVES is the official VESvault JavaScript library
(published on npm as libves) — it's
security-critical software, backed by a hosted service, that real users trust
with their data. The guidelines below keep contributions safe to merge.
Reporting security vulnerabilities
Do not open a public issue, pull request, or discussion for security problems. Follow SECURITY.md — email security@vesvault.com. This is the single most important rule here.
Bugs and small fixes
Bug reports and small, focused fixes are welcome via issues and pull requests:
- Search existing issues first.
- For a bug, include the
libvesversion (npm ls libves) or commit, the environment (browser + version, or Node version), how you load the library (npm,<script>/CDN, or a bundler), and a minimal reproduction. Redact any real VESkeys, tokens, or private keys. - Keep PRs focused; one logical change per PR is easiest to review.
Larger changes — start with an issue
Because this library interoperates with a hosted protocol, changes to cryptography, the public API surface, or the wire protocol should start as an issue before you write code. We can't always merge changes that affect the protocol or the service, and a short discussion up front saves wasted effort.
Editing source and building
The shipped bundles are generated — don't edit them. Source lives in the
per-module libVES.*.js files (concatenated in the order listed in
build.js); the build outputs (libVES.js, libVES.node.js, the
version-stamped libVES-<version>.js, and the minified variants) are git-ignored
and produced by the build:
node build.js # browser + Node bundles
node build.js --minify # also writes the *.min.js variants (needs `npm i -D terser`)
Requires Node 18+ (the library uses the built-in fetch). The post-quantum
(ML-KEM via liboqs) and ECDH primitives are compiled to WebAssembly from
WasmOQS/ and WasmECDH/ with the emscripten toolchain; that glue is not
committed, so a full node build.js needs those wasm artifacts present. Most
contributions don't require rebuilding the wasm — see the Wasm*/Makefile
comments if yours does.
Before opening a PR, make sure every source module still parses:
node --check libVES*.js build.js
CI and tests
CI runs that same syntax check on Node 18/20/22 and validates the npm manifest.
It does not run tests/: that suite drives the live VES API and needs two
real, synced VES accounts (see tests/vestest.conf.example.js). To run it
locally, copy your account settings into a vestest.conf.js and run the scripts
in tests/ (node tests/01-item.js, …) or open tests/index.html in
a browser.
Style
Match the style of the surrounding code — indentation, naming, and bracing. Please don't reformat unrelated code in a PR.
Licensing
By contributing, you agree that your contributions are licensed under the project's Apache License 2.0.