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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@master-strike/data

v1.2.1

Published

Library with the data used on master-strike.

Downloads

11

Readme

@master-strike/data

Library with the data from master-strike.com. Allows card and rule searches.

Card Search

import { CardSearchEngine } from '@master-strike/data';

const searchEngine = new CardSearchEngine();

searchEngine.search('Wolverine').then(results => {
  results.forEach(result => console.log(result.name))
});

This should result in something like:

Wolverine
Wolverine of Future Past
Wolverine
Dark Wolverine (Daken)
Keen Senses
Healing Factor
Frenzied Slashing
Berserker Rage
Animal Instincts
Sudden Ambush

The default the card name and subtitle is considered in the search and the number of results are limited to 10. Other attributes can be added and subtitle removed from the options.

Rule Search

import { RuleSearchEngine } from '@master-strike/data';

const searchEngine = new RuleSearchEngine();

searchEngine.search('Shards').then(results => {
  results.forEach(result => console.log(result.name))
});

This should result in something like:

Shards
Burn Shards

Card Details and Metadata

This is an example of card search result:

{
  "name": "Frenzied Slashing",
  "subtitle": "Wolverine",
  "imageUrl": "https://nyc3.digitaloceanspaces.com/bageltop/CardImages/Heroes/wolverine-02.png",
  "set": "Core Set",
  "type": "Hero",
  "group": "Wolverine",
  "details": {
    "detailsType": "HeroCardDetails",
    "cost": "5",
    "hc": 2,
    "qtd": 3,
    "team": 4,
    "attack": "2",
    "description": [
      [
        {
          "hc": 2
        },
        ": Draw two cards."
      ]
    ]
  }
}

Each card search result has the details property that has a different structure depending on the card type. To parse it the detailsType should be considered to know what to expect. The example above indicates that it has a detail of a hero card.

Another property present in the details is the description that information represents the mains description of the card. In the example above it is the hero card abilities.

Many properties in the details will have numeric value ids. Consider using the Metadata object to parse this information. Example:

import { Metadata } from '@master-strike/data';

const card = { ... } // Wolverine card from example above

const team = card.details.team;

console.log(Metadata.teamsArray[team].label) // X-Men

Metadata will have information about: teams, hc (hero classes), icons, keywords, and rules.

Card Browser

The search engine also contains an object that allows browsing cards:

import { CardSearchEngine } from '@master-strike/data';

const searchEngine = new CardSearchEngine();

const browser = searchEngine.getBrowser(); // key value map - keys are card types
const heroes = browser[CardType.Hero]!; //  key value map - keys are card sets
const heroesOfCoreSet = heroes['Core Set']; // key value map - keys are card groups
const blackWidowCards = heroesOfCoreSet['Black Widow']; // array or card search results
blackWidowCards.forEach(result => console.log(result.name))

This should result in something like:

Dangerous Rescue
Mission Accomplished
Covert Operation
Silent Sniper

The keys of the object maps can be used to iterate over them. Also for the card set level the metadata of the card set can be used as key of the browser.