npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

nahmii-sdk

v4.8.3

Published

Javascript SDK for using nahmii APIs

Downloads

182

Readme

NAHMII SDK

About the SDK

This is a javascript library that wraps the nahmii APIs making them easier to get started with.

About nahmii

nahmii is both the name of the company as well as of the scaling solution for the Ethereum blockchain. It is a hybrid centralized/decentralized solution that enables instant (micro-)payments, trading and trustless settlements. See www.nahmii.io for additional information.

About hubii

hubii is no more. It is the old name of the company. If you find references to it, think nahmii. Still this repository is hosted in the GitHub organization archaically labelled hubiinetwork.

Prerequisites

  • To use this software you need a modern version of NodeJS and NPM. We recommend having the versions 10 installed and updating NPM to the latest available version.
  • You will also need an API key for access to the nahmii APIs.

Installation

To install the SDK into your project, simply run:

npm install nahmii-sdk

Dependency management

After you have installed the nahmii-sdk module into your own project, please make sure to install the dependencies listed as peer dependencies into your project to have it included in the end product.

The reason this SDK uses peer dependencies is that it is actively doing type checking for some shared types in some situations. To have type checking work in a nodejs environment, all npm-based types must be de-duplicated.

To force a de-duplication after you have installed several modules, just run the following command:

npm ddp

In most cases this should not be needed though.

Usage

Create a provider to gain access to the low-level SDK:


    const nahmii = require('nahmii-sdk');

    const provider = await nahmii.NahmiiProvider.from(nahmii_domain, nahmii_app_id, nahmii_app_secret);

The provider can be used to gain access to the API resources, such as a wallet's balance:


    const nahmii = require('nahmii-sdk');
    const provider = await nahmii.NahmiiProvider.from(nahmii_domain, nahmii_app_id, nahmii_app_secret);

    // Logs all assets of the specified wallet to the console
    const balances = await provider.getNahmiiBalances(wallet_address);
    console.log(balances);

To make a more advanced workflow as easy as possible there is also a higher level SDK, e.g.: the Wallet class and the Payment class. In this example we create a payment, sign it and register it with the API:


    const nahmii = require('nahmii-sdk');
    const provider = await nahmii.NahmiiProvider.from(nahmii_domain, nahmii_app_id, nahmii_app_secret);
    const wallet = new nahmii.Wallet(private_key, provider);

    // Creates a new Payment, providing essential inputs such as the amount,
    // the currency, the sender, and the recipient.
    const monetaryAmount = nahmii.MonetaryAmount.from(amount, erc20_token_address);
    const payment = new nahmii.Payment(wallet, monetaryAmount, wallet_address, recipient_address);

    // Signs the payment with the wallet passed during instantiation
    payment.sign();

    // Sends the signed payment to the API for registration and execution and
    // logs the API response to the console.
    payment.register().then(console.log);

Reference manual

Fundamentals

Workflow: Payments

Workflow: Settlement

Base Layer

Utilities

Contributing

To contribute to the development of the nahmii SDK, you need to clone the repository https://github.com/hubiinetwork/nahmii-sdk.git.

You changes should be made on a branch starting with the name "feature/" (e.g.: feature/awesomesauce) and be branched from the latest "master" branch.

We also follow a few practices that we expect contributors to also adhere to.

Practices

Branching Model

The master branch is expected to always be in a green state. Every commit to master is expected generate a new NPM release of the library. For more long lasting work, create a feature branch and merge it through a pull request.

Pull Request

Don't just push a new branch and expect us to magically discover it and do something with it; also make sure you create a pull request for your branch where the changes can be examined and findings recorded in a organized manner.

If your changes address either partially, or fully, an open issue in the backlog, make sure to reference it in the description of your pull requests.

Also make sure to reference one or more of the admins of the repo and set them as reviewers for your pull request.

Code Review

As part of the pull requests all reviewers should as soon as possible provide constructive feedback on the pull request.

The reviewer should look at the following as a minimum:

  • Code quality, readability, maintainability, performance, security
  • Test code quality, coverage, readability, maintainability
  • Design of any public APIs, including documentation
  • Overall architecture of solution, does it fit with current designs
  • Missed opportunities: simplification of design, refactoring, invalidation of previous assumptions

Test Driven Development (TDD)

Why? Because done right, the codebase becomes better and getting full test coverage becomes trivial. Always start by writing a test that turns red, then change your production code to turn it (and all other tests) green again. Then do some refactoring as needed. Refactoring is arguably the most important step, so dont skip it. Rinse and repeat. Follow the cycle "red-green-refactor" and don't leave any of the steps out. And yes, an experienced TDD practitioner can in most cases easily spot code that has not been created using TDD.

There is no need to limit you test suite to only have unit tests, but the unit tests themselves should have ~100% code coverage.

Who do I talk to?