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

fellowship-data

v0.3.0

Published

Fellowship game data — heroes, abilities, items, enemies — as a TypeScript package

Readme

fellowship-data

Fellowship game data — heroes, abilities, items, talents, enemies, dungeons — as a TypeScript package.

Everything is written into the modules themselves as readonly interfaces and const arrays. There is no file to fetch, no await, and no state where the data is half-loaded.

import { HEROES } from "fellowship-data";

const elarion = HEROES.find((hero) => hero.id === "Bowguy");
console.log(`${elarion?.name} — ${elarion?.title}`); // Elarion — The Skystrider

Installing it

npm install fellowship-data

No runtime dependencies of its own.

Pick what you need

The package is side-effect free, so a bundler drops what you do not reference. Enemy difficulty scaling is 440 curves of 151 points each — real weight if you're building a gear planner that never looks at a mob — and a deep import makes leaving it out explicit:

import { MOBS } from "fellowship-data/generated/mobs.js";

Typing the JSON delivery

These same types describe json/*.json as well as the data compiled in beside them — same field names, same curve shape, null for an absent value in both. A fetch() of the JSON can be typed with them without either side lying about the other:

import type { Hero } from "fellowship-data";

const heroes: readonly Hero[] = (await (await fetch(".../heroes.json")).json()).records;

Missing values, curves, and media

Value<T>, Curve, and MediaHandle all carry the same rule across every language this dataset is published in: a gap is a value, never a silent default, and a curve never interpolates between the points the data actually states. See the main README for the full explanation and how it reads in each of the four deliveries.

Versions and freshness

BUILD_ID tells you which game build the data came from, and every delivery in this repository states the same one. Pin a version if you need a stable dataset.

This is one of four deliveries

The same records are also published as a Rust crate, a Python package, and plain JSON, all rendered from one description of each domain so they cannot disagree. See the repository for the others and for what isn't specific to TypeScript: images, legal, and the full set of conventions.

Legal

This data is derived from a licensed copy of the game for interoperability with community tooling. It contains no game assets, art, audio, or code — only facts about how the game is configured. Fellowship is the property of its developers and publisher; this project is unaffiliated with them.

Licensed MIT.