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

@tlsm/api

v0.0.1

Published

A lib for spinning up multiple polkadot.js or lightclient instances and being able to perform aggregate queries

Downloads

2

Readme

@talisman/api

A package for spinning up a set of endpoints for doing analysis over multiple chains at once.

@talisman/chainfactory is a factory lib for instantiating multiple polkadot.js or lightclient instances and being able to perform aggregate queries over all endpoints.

The lib can be instantiated using one or may chains (by chain id), have the option to use RPCs or light clients [<-- wip], and allow a way to provide custom RPCs or light-client chainspecs.

The goals of this repo are:

  1. Allow developers to perform the same action across multiple chains (i.e get balance)
  2. Allow developers to discover chain capabilities (i.e. what pallets they may have)
  3. Abstract away the annoyances with spinning up multiple instances of polkadot.js

Would like to do:

  1. replace polkadot.js with a super lightweight RPC connector for balance and pallet discovery

** ~~~~~ WIP WIP WIP WIP WIP ~~~~~~ **


Usage

Initial interface / exposed methods.

Import chainfactory

import ChainFactory from '@talisman/chainfactory'

Init singleton/factory

ChainFactory.init({chains: [0,2,2000]})

note 1: should fire error if already init'ted
note 2: can force reinit if needed with ChainFactory.init({chains: [0,2,2000]}, true)
note 3: is a singleton pattern

Use instance

ChainFactory.query('system.account', [address])

This iterates over all instances and, using all addresses provided, calls the same api endpoint with each address

note 1: this approach is a wip and may change depending on unknowns
note 2: Could look into refining this, as the combinatorial explosion resulting from N addresses x N chains may be slow. Something to think about and potentially resolve by creating a super lightweight rpc connector
note 3: The API layer (above this) will probably have convenience mappings for ease of use


Params

{
  "chains": [], // array of chain IDs to spin up (names could also work?). if empty will spin up all available.
  "rpcs": {}, // object containing chainId:RPC pairs. value can be string or array.
  "custodial": false // if !== true use polkadot.js via RPC, otherwise use wasm light client instances
}

note: all params optional


Rando notes:

API

  • wrapper to make API calls better
  • instead of aaa.bbb.ccc.sss.balanceSomethingBs(address), make it api.balances([address])

FACTORY

  • rpcfactory
  • lcfactory

should be able to trigger the same endpoint call simultaneously on multiple instances of the API

Future: should know about pallets and be able to use them