#nodejs #build #autonomi #client #networking #js #mjs #withautonomi-autonomi

autonomi-nodejs

NodeJS bindings for the autonomi client

1 unstable release

new 0.1.0 Apr 22, 2025

#2 in #autonomi

Download history 59/week @ 2025-04-17

59 downloads per month

GPL-3.0 license

3MB
3.5K SLoC

Rust 1.5K SLoC // 0.0% comments JavaScript 1.5K SLoC // 0.2% comments TypeScript 297 SLoC // 0.5% comments

The client API for Autonomi. This Node.js addon provides bindings into the Rust autonomi crate.

Usage

Add the @withautonomi/autonomi package to your project. For example, using npm:

$ npm install @withautonomi/autonomi

Using a modern version of Node.js we can use import and async easily when we use the .mjs extension. Import the Client and you're ready to connect to the network!

// main.mjs
import { Client } from '@withautonomi/autonomi'
const client = await Client.initLocal()

Run the script:

$ node main.js

Examples

Work in progress:

For general guides and usage, see the Developer Documentation. This is currently worked on specifically to include Node.js usage.

For example usage, see the __test__ directory. Replace import { .. } from '../index.js' to import from @withautonomi/autonomi instead.

Contributing, compilation and publishing

To contribute or develop on the source code directly, we need a few requirements.

  • Yarn
    • npm install --global yarn
  • We need the NAPI RS CLI tool
    • yarn global add @napi-rs/cli

Install the dependencies for the project:

$ yarn install

Build

Then build using the napi CLI:

$ npx napi build

Running tests

Run the test script:

yarn test
# Or run a specific test
yarn test __test__/register.spec.mjs -m 'registers errors'

Publishing

Before publishing, bump the versions of all packages with the following:

$ 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 main or a tag. This workflow has to be manually dispatched through GitHub.

Dependencies

~77–115MB
~2M SLoC