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 🙏

© 2026 – Pkg Stats / Ryan Hefner

sigmastate-js

v0.6.2

Published

Sigma.js library

Readme

CI

ErgoScript compiler and ErgoTree interpreter

This repository contains implementations of ErgoScript compiler and ErgoTree Interpreter for a family of Sigma-protocol based authentication languages (or simply Sigma language).

This JS package is cross-compiled from Scala implementation using Scala.js compiler.

The modules published here can be used directly from JavaScript.

Getting Started

Run following command to add Sigma.JS as a project dependency:

npm install sigmastate-js

Package organization

All classes of this package are separated into several modules (which can also be thought as layers). Each module contains a subset of all the class exported to JavaScript. You can decide which modules to import in your application depending on which classes from this package you want to use. Each subsequent module contains all the classes from the previous modules and some new classes thus forming a layering of modules.

See TypeScript definitions for the list of all exported classes, methods and documentation.

NOTE, you only need to import only one of the modules, the one which contains all the classes you need. This will allow optimizing the size of the final bundle.

The modules are compiled from Scala classes, which are exported to JavaScript (here is an example). The Scala declarations correspond to the TypeScript definitions. Each exported type have two parts: the first part is a Scala class, the second part is a companion object. In Scala the companion object is used to declare static methods and has the same name as the corresponding class. In TypeScript the companion object is exported with $ suffix, thus if X is the JS class, then X$ is the JS object, which corresponds to X.

The list of modules and their exported classes

Examples

How to create Sigma type descriptors

Import Type$ module, then use its fields to access pre-defined descriptors of simple types (e.g. Type$.Int).

Use factory methods like Type$.pairType to create more complex type descriptors. For example,Type$.pairType(Type$.Int, Type$.Long) will create a descriptor of a pair of Int and Long types (Int, Long).

See also examples in tests Type.spec.js

How to create Sigma values

Import Value$ module, then use its factory methods. See examples in tests Value.spec.js

How to work with ErgoTree

Import ErgoTree$ module, and ErgoTree class then use its methods. See examples in tests ErgoTree.spec.js

Compile ErgoScript to ErgoTree

Import SigmaCompiler$ module and SigmaCompiler class, then use its methods. See compiler tests in SigmaCompiler.spec.js

Other examples

See tests in tests/js folder.