46 lines
1.4 KiB
Markdown
46 lines
1.4 KiB
Markdown
# Contribution Guidelines
|
|
|
|
Thanks for your interest in contributing to the Node.js bindings for
|
|
c-kzg-4844.
|
|
|
|
## Prerequisites
|
|
|
|
- [NodeJS](https://nodejs.org/) (LTS)
|
|
- [Yarn](https://yarnpkg.com/)
|
|
|
|
## Setup
|
|
|
|
Open a terminal and navigate to the root of the `c-kzg-4844` repo and run the
|
|
following commands if you have not already done so:
|
|
|
|
```sh
|
|
git submodule update --init # Install the blst submodule
|
|
cd src
|
|
make blst # Build blst
|
|
cd ../bindings/node.js
|
|
yarn install --ignore-scripts # Install dependencies
|
|
make # Build bindings and verify build worked
|
|
```
|
|
|
|
## Project Commands
|
|
|
|
- `make clean` - cleans artifacts
|
|
- `make build` - prepares assets and builds bindings
|
|
- `make test` - runs unit tests
|
|
- `make format` - lints code
|
|
- `make bundle` - builds `dist` for publishing
|
|
- `make publish` - runs `npm publish`
|
|
|
|
## `n-api` and `node-addon-api`
|
|
|
|
There are two different flavors of abi-stable node addons.
|
|
[n-api](https://nodejs.org/api/n-api.html) is the `C` api that is natively
|
|
exported by `node.js`. There is also a header-only `C++` implementation of the
|
|
`n-api` called [node-addon-api](https://github.com/nodejs/node-addon-api).
|
|
There is mixed usage of the two in this library.
|
|
|
|
The addon was built to be
|
|
[context-aware](https://nodejs.github.io/node-addon-examples/special-topics/context-awareness/)
|
|
so it will be safe to run on a worker thread. Be sure not to use any
|
|
static/global variables as those are not thread safe.
|