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

nse-test

v0.0.35

Published

NodeStateEngine is an environment for testing Lido offchain applications with the ability to deploy pre-defined states.

Downloads

13

Readme

NodeStateEngine

NodeStateEngine is an environment for testing Lido offchain applications with the ability to deploy pre-defined states.

At this point, it's a proof of concept. Only one state is currently supported: testing keys-api for DVT module support.

Motivation

Testing oracles and services requires the ability to have a network with a set of given states.

These states include:

  • Lido's smart contracts
  • Staking modules
  • Keys of staking modules
  • External staking modules
  • Different invariants of contracts, modules, and keys

This type of problem cannot be solved in local e2e tests.

  • Lido's deployment is not trivial
  • As part of the Validator Set tasks, smart contracts developed by external teams may appear, and we need to test their integration
  • In many cases, it is necessary to publish and test smart contracts
  • Ganache does not support blockTag in RPC requests
  • We would like to have a declarative description of states that can be applied to different networks for testing purposes

Introduction

This environment was developed as a solution to these problems.

This project allows you to run a test network with an arbitrary chainId, load and deploy smart contracts, and declaratively describe the states needed for testing service operations.

Currently, only one state is supported: to test keys-api for DVT module support.

Getting started

You will need to have the latest LTS versions of NodeJS and Yarn installed.

Add the test package to your repository

yarn add --dev nse-test

Create configuration file in root dir of your project with name nse.config.js

// nse.config.js

module.exports = {
  engine: {
    // the port on which the node-state-engine will run
    port: 8001
  },
};

Run compile command to build contracts and dependencies

npx nse-test compile

Start engine running start command

npx nse-test start

Interact with the environment using http-api or using the sdk

SDK

import { createSDK } from "nse-test";

(async () => {
  const sdk = await createSDK("http://localhost:8001");
  const { port } = await sdk.env.hardhat({});
  const simpleDVTState = await sdk.story("simple-dvt-mock/initial-state", {
    sessionKey: port,
  });
  console.log(simpleDVTState);
})();

HTTP-API

If you want to interact with the API directly, you can check out the list of endpoints at address: http://localhost:8001/docs (port from engine config)

Usecases

Testing your applcation using Jest

import { createSDK, nse } from 'nse-test';

jest.setTimeout(100_000);

describe('Simple DVT', () => {
  let sdk: nse.SDK;
  let session: nse.Session;
  let initialState: nse.StoryResult<'simple-dvt-mock/initial-state'>;
  beforeAll(async () => {
    sdk = await createSDK('http://localhost:8001');

    session = await sdk.env.hardhat({});
    initialState = await session.story('simple-dvt-mock/initial-state', {});
  });

  test('initial state created', () => {
    console.log(initialState);
  });
});