TypeScript/JavaScript: Prettier with project config
C++: clang-format with project style
Commit messages: Conventional Commits format
Testing requirements
New features must include tests
Tests must pass on all platforms
Memory leak tests for native code
Benchmark comparisons for performance changes
Release process
Releases are cut from CI: the Build & Release workflow
(.github/workflows/build.yml) is triggered manually via workflow_dispatch
with a version bump (patch / minor / major), builds the prebuilds for every
platform, and publishes to npm with provenance
using OIDC trusted publishing. The version field in package.json is owned by
that workflow — do not bump it by hand.
Before dispatching a release, run npm run all (full build, lint, clang-tidy,
cross-platform tests, and the sanitizer/Valgrind memory suite) and confirm no
workflow is red for the commit being released.
Upstream synchronization
The project maintains synchronization with:
Node.js SQLite implementation
SQLite amalgamation source
GitHub API authentication
To avoid rate limiting when syncing from GitHub (60 requests/hour for unauthenticated requests), set up authentication:
# Set your GitHub personal access token exportGITHUB_TOKEN=your_personal_access_token
# Now sync commands will use authentication (5000 requests/hour) npmrunsync:node npmrunsync:sqlite