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

eve-fit-engine

v0.1.8

Published

Pyfa-parity EVE Online ship & structure fitting calculation engine. Inject an SDE dataset + a fit, get the full derived stat block (offense, defense, capacitor, navigation, targeting, fitting, projected, structure).

Readme

eve-fit-engine

A Pyfa-parity EVE Online ship & Upwell-structure fitting calculation engine, extracted from capsuleers.app. Given a fit and an SDE dataset, it returns the full derived stat block you'd see in a fitting tool: offense (DPS / alpha / application), defense (EHP / resists / tank), capacitor (stability / sim), navigation, targeting, fitting (CPU / PG / calibration), projected effects, and structure fuel/service stats.

Licence: GPL-3.0-or-later. This engine is a derivative work of pyfa-org/Pyfa and is distributed under the same terms. See NOTICE and LICENSE. The complete corresponding source is this repository.

Design

  • Framework-free core. The base entry has no fetch, no fs, no window, no npm runtime deps. Runs in the browser, in Node, in a worker — anywhere.
  • Two entries. Base (.): inject your own FittingDataset. Node (./node): batteries-included — bundles a snapshot of the EVE SDE (under CCP's licence, by mere aggregation) + an fs loader, so it works out of the box on the server.
  • Validated against Pyfa two ways.
    • Fixture suitenpm run test:pyfa: 662 hand-curated assertions against Pyfa screenshots, All-V skills, zero tolerance overrides. This is the release gate and the engine's correctness ground truth.
    • Differential harnessnpm run diff: generates 4 fits for every published ship and compares every stat against a headless pyfa-org/Pyfa oracle. 1662/1676 fits (99.2%) match exactly; the residual is a documented set of pyfa float/modelling/per-ship quirks (see test/diff/known-diffs.mjs). Exits 0 on no unexpected diffs; --strict re-lists the accepted set as failures.

Install

npm install eve-fit-engine

Usage — zero-config (Node, batteries-included)

The /node entry ships with the EVE SDE bundle (data/, ~8 MB) and a built-in loader. Give it an EFT string, get full stats — nothing else to set up:

import { computeFromEft } from 'eve-fit-engine/node'

const { fit, warnings, computed } = await computeFromEft(`
[Rifter, My Fit]
200mm AutoCannon II, Republic Fleet EMP S
200mm AutoCannon II, Republic Fleet EMP S
1MN Afterburner II
Gyrostabilizer II
`)

console.log(computed.derived.offense.totalDps)              // 197.6
console.log(computed.derived.defense.ehpTotalAgainstProfile)
console.log(computed.derived.navigation.maxVelocity)

Defaults to All-V skills; pass { skillProfile, damageProfile, targetProfile, … } as the second arg to override. loadBundledDataset() is also exported if you want the dataset directly.

The bundled SDE is CCP's, under CCP's EVE Online Developer License (see data/SDE-LICENSE.md) — included by mere aggregation, NOT under this package's GPL.

Usage — bring-your-own dataset (browser / custom / always-fresh SDE)

The base entry is environment-free (no fs, no bundled data). Inject a FittingDataset you build however you like:

import { computeFit, parseEft, type FittingDataset } from 'eve-fit-engine'

const dataset: FittingDataset = await buildYourDataset()   // your SDE bundle
const { fit } = parseEft(eftText, dataset)
const computed = computeFit(fit, dataset, { skillProfile /* … */ })

This is what capsuleers.app uses server-side: it builds its own always-fresh bundle and injects it, so it never depends on the (snapshot) bundled data.

What's NOT in this package

  • 3D ship models, UI components — those live in the consuming application.
  • The bundled SDE is a snapshot; for always-fresh data, inject your own via the base entry (see above).

Provenance / how parity is maintained

The engine mirrors Pyfa's eos calculation model: effect handlers keyed by EVE dogma effect IDs, stacking-penalty pools, a late-runtime resistance-adaptation pass, a discrete capacitor simulation (faithful port of eos/capSim.py — integer cycle times, turret-volley vs staggered drains, cap-booster injection), and spool-up handling. When CCP ships a new SDE, data-driven modifierInfo effects work automatically; new hardcoded mechanics in Pyfa's effects.py are tracked and ported, then re-checked against both the fixture suite (npm run test:pyfa) and the per-ship differential harness (npm run diff) before release. See MAINTENANCE.md for the update flows.

Contributing

See CONTRIBUTING.md — the step-by-step guide to setup, every internal command, the two validation suites (npm run test:pyfa + npm run diff), how to add fixtures / port effects, the pyfa-pin recalibration flow, and the project's hard rules.

Licence

GPL-3.0-or-later. Copyright (C) 2026 Capsuleers.app. This is free software; see LICENSE for details.