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

@dchighs/dc-statistics

v0.1.0

Published

Powerful data extraction and statistical generation utilities for Dragon City configurations.

Readme

@dchighs/dc-statistics 📊🐉

TypeScript License NPM version

A powerful data extraction and statistics generation library designed to work natively with the raw GameConfigDto from Dragon City, sourced via the official @dchighs/dc-config package.

📦 Installation

You can install the library via npm, yarn, or pnpm:

npm install @dchighs/dc-statistics

⚠️ Peer Dependencies

To parse the metrics properly, your project must have the core DTOs installed:

npm install @dchighs/dc-config

🚀 Usage

The main exported function is generateStatistics(configDto). By passing the raw game configuration, it computes the entire metrics tree on-demand and returns an optimized object structure.

import { Config } from "@dchighs/dc-config";
import { generateStatistics } from "@dchighs/dc-statistics";

async function main() {
    // 1. Fetch the config using the native dc-config tools
    const dcData = await Config.fetchRaw({ url: "https://dc-config.vercel.app/api/raw" });
    
    // 2. Generate statistics easily
    const stats = generateStatistics(dcData);

    console.log(`Global chests in the game: ${stats.chestsCount}`);
    console.log(`Number of Rare Dragons: ${stats.dragons.rareCount}`);
}
main();

📈 Extracted Data Structure

The codebase is split into specific domain modules (src/dragons.ts, src/islands.ts, etc.) to extract individual statistics efficiently. Currently, the following metrics are processed and returned:

1. items (Item Types Statistics)

Iterates through all game items natively and categorizes them by group_type. Returns metrics like dragonsCount, buildingsCount, habitatsCount, obstaclesCount, farmsCount, and more out-of-the-box.

2. dragons (Dragon Statistics)

  • totalCount: Total number of dragons available.
  • commonCount, rareCount, heroicCount...: Breakdown of dragon totals based on Rarities.
  • elements: Provides deep element topology statistics such as dragonsWith3Elements and accurate top-lists (like the occurrences per specific element via dragonCountsPerElement).
  • breedableCount and inStoreCount: Direct counter of specific static tags.

3. islands (Active Events / Islands Metrics)

Uses native timestamps (availability and start_ts) mapped to events to check their respective timelines against the realtime server prediction. It creates variables such as activesCount (currently ongoing), upcomingsCount (future scheduled events), and pastsCount (ended events). It tracks specific subcategories out of the box:

  • maze, tower, fog, grid, heroicRaces, runner, and puzzle.

4. Extracted Global Variables

Global disconnected numeric keys are grouped here for convenience:

  • maxLevel for the current game season limit.
  • chestsCount unique chests modeled.
  • dragonCollectionsCount.
  • dragonSkinsCount.

🛠️ Chart Tests Locally

The library includes an awesome built-in script with QuickChart that allows you to develop and test using PNG charts generated locally! This is super useful to visualize crossed data natively avoiding thousands of console logs.

Run it pointing to a dummy/mock setup (included in repo):

npm run test:charts

Or pass any local raw JSON dump of the game to perform the scan:

npm run test:charts -- ./path-to-your-local-gameconfig.json

It will render visualization stacked chunks (chart-rarity, chart-islands, chart-general, etc) right inside the root directory. They are already automatically ignored in your .gitignore.


By DC Highs


License

This project is licensed under the terms of the MIT license.