self-encryption-nodejs 0.1.0

NodeJS bindings for Self Encryption
Documentation
The Self Encryption API. This Node.js addon provides bindings into the Rust `self_encryption` crate.

# Usage

Add the `@withautonomi/self-encryption` package to your project. For example, using `npm`:
```console
$ npm install @withautonomi/self-encryption
```

Using a modern version of Node.js we can use `import` and `async` easily when we use the `.mjs` extension. Import `encrypt` or `decrypt` and you're ready to start self encrypting!

```js
// main.mjs
import { encrypt, decrypt } from '@withautonomi/self-encryption'
const data = Buffer.from("Hello, World!");
const { dataMap, chunks } = encrypt(data)
const dataDecrypted = decrypt(dataMap, chunks)
```

Run the script:

```console
$ node main.js
```

## Examples

> Work in progress:
> 
> For general guides and usage, see the [Developer Documentation]https://docs.autonomi.com/developers. This is currently worked on specifically to include Node.js usage.

For example usage, see the [`__test__`](./__test__) directory. Replace `import { .. } from '../index.js'` to import from `@withautonomi/self-encryption` instead.

# Contributing, compilation and publishing

To contribute or develop on the source code directly, Node.js must be installed (installation instructions [here](https://nodejs.org/en/download)).

With Node.js installed, change the working directory to `nodejs/`:
```console
$ cd ./nodejs/
```

Then install the dependencies for the project:
```console
$ npm install
```

## Build

Then build using the build script (which calls the `napi` CLI):
```console
$ npm run build
```

## Running tests

Run the `test` script:

```console
npm test
# Or run a specific test
npm test __test__/core.spec.mjs -m 'encrypt and decrypt'
```

## Publishing

Before publishing, bump the versions of *all* packages with the following:
```console
$ npm version patch --no-git-tag-version
```

Use `major` or `minor` instead of `patch` depending on the release.

It's a good practice to have an unreleased version number ready to go. So if `0.4.0` is the version released on NPM currently, `package.json` should be at `0.4.1`.

### Workflow

Use the 'JS publish to NPM' workflow (`nodejs-publish.yml`) to publish the package from `master` or a tag. This workflow has to be manually dispatched through GitHub.