Semaphore Extensions

Semaphore Extensions

Semaphore Tools and Extensions Monorepo.

Github license GitHub Workflow test Coveralls Linter eslint Code style prettier Commitizen friendly

👥 Contributing   |   🤝 Code of conduct   |   🔎 Issues   |   🗣️ Chat & Support

Semaphore Extensions is a set of applications, tools and libraries that can be used with the Semaphore protocol.

Yarn workspaces: minimal monorepo package management (yarn, yarn build, yarn docs)
Conventional Commits: human and machine readable meaning to commit messages (yarn commit)
Jest: tests and test coverage for all libraries (yarn test:libraries)
ESLint, Prettier: code quality and formatting (yarn prettier & yarn lint)
Typedocs: documentation generator for TypeScript (yarn docs)
Github actions: software workflows for automatic testing, documentation deploy and code quality checks

📦 Packages

Package Version Downloads
@semaphore-extensions/contracts NPM Version NPM Downloads
@semaphore-extensions/heyauthn NPM Version NPM Downloads
@semaphore-extensions/identity-proof NPM Version NPM Downloads
@semaphore-extensions/identity-proof.circom NPM Version NPM Downloads

🖥️ Apps

App URL
benchmarks https://benchmarks.semaphore.pse.dev/

🛠 Install

Clone this repository:

git clone https://github.com/semaphore-protocol/extensions.git

and install the dependencies:

cd extensions && yarn

📜 Usage

Code quality and formatting

Run ESLint to analyze the code and catch bugs:

yarn lint

Run Prettier to check formatting rules:

yarn format

or to automatically format the code:

yarn format:write

Conventional commits

Semaphore uses conventional commits. A command line utility to commit using the correct syntax can be used by running:

yarn commit

It will also automatically check that the modified files comply with ESLint and Prettier rules.

Testing

Test the code:

yarn test

Build

Build all the packages:

yarn build

A dist folder will be created inside each JavaScript package.

Documentation

Generate a documentation website for each package:

yarn docs

The output will be placed on the docs folder.

Releases

Bump a new version for your package with:

yarn version:bump <package-name> <version>
# e.g. yarn version:bump utils 2.0.0

It will create a commit and a git tag that you'll need to push on the main branch. A workflow will be triggered and will publish your package on npm and release a new version on Github with its changelogs automatically.