From e44eb860d3475867960dd25322566f3c6aaf60bf Mon Sep 17 00:00:00 2001 From: William Peter Falci Date: Mon, 21 Sep 2026 18:50:43 +0200 Subject: [PATCH] Add eve-fit-engine to community resources --- docs/community/eve-fit-engine/index.md | 80 ++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 docs/community/eve-fit-engine/index.md diff --git a/docs/community/eve-fit-engine/index.md b/docs/community/eve-fit-engine/index.md new file mode 100644 index 0000000..6de649f --- /dev/null +++ b/docs/community/eve-fit-engine/index.md @@ -0,0 +1,80 @@ +--- +search: + exclude: true + +title: eve-fit-engine +type: resource +description: Pyfa-parity ship and Upwell-structure fitting calculation engine for JavaScript. Give it a fit, get the full derived stat block. +maintainer: + name: TremalJack + github: WilliamFalci +--- + +# eve-fit-engine + +`eve-fit-engine` is an npm package that computes the derived stat block of an EVE Online +ship or Upwell structure fit: offense (DPS, alpha, application), defense (EHP, resists, +active and passive tank), capacitor (stability and simulation), navigation, targeting, +fitting (CPU / powergrid / calibration), projected effects, and structure fuel and +service stats. + +It is the calculation engine behind [Capsuleers.app](https://capsuleers.app), extracted +so that other developers can build fitting tools without reimplementing dogma. + +
+ +- [:octicons-mark-github-16: __GitHub__](https://github.com/WilliamFalci/capsuleers.fitting-engine){ .esi-card-link } +- [:simple-npm: __npm__](https://www.npmjs.com/package/eve-fit-engine){ .esi-card-link } +- [:simple-discord: __Discord__](https://discord.com/invite/hdbtSFBGD3){ .esi-card-link } + +
+ +## Two entry points + +- **Base (`eve-fit-engine`)** — framework-free. No `fetch`, no `fs`, no `window`, no npm + runtime dependencies. You inject your own `FittingDataset`, so it runs in the browser, + in Node, or in a worker, against whichever SDE snapshot you keep. +- **Node (`eve-fit-engine/node`)** — batteries included. Ships a version-pinned snapshot of + the EVE Static Data Export plus a loader, so an EFT string in gives full stats out with + nothing else to set up. + +```ts +import { computeFromEft } from 'eve-fit-engine/node' + +const { 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 +`) + +computed.derived.offense.totalDps +computed.derived.defense.ehpTotalAgainstProfile +computed.derived.navigation.maxVelocity +``` + +Skills default to all-V; pass a `skillProfile`, `damageProfile` or `targetProfile` to +override. + +## Correctness + +The engine is validated against [Pyfa](https://github.com/pyfa-org/Pyfa) two ways, because +a fitting engine that is *nearly* right is a fitting engine nobody can trust: + +- **Fixture suite** — 662 hand-curated assertions against Pyfa, all-V skills, zero + tolerance. This is the release gate. +- **Differential harness** — generates four fits for *every* published ship and compares + every stat against a headless Pyfa oracle. **1662 of 1676 fits (99.2%) match exactly**; + the residual is a documented set of Pyfa float and per-ship modelling quirks, listed in + the repository rather than hidden. + +## Licensing + +The engine is **GPL-3.0-or-later**: it is a derivative work of Pyfa, whose calculation +semantics it mirrors, and it is distributed under the same terms. The complete +corresponding source is the linked repository. + +The bundled SDE snapshot is included by mere aggregation and is **not** covered by the +GPL — it remains governed by the EVE Online Developer License Agreement. See `NOTICE` and +`data/SDE-LICENSE.md` in the repository.