/stv

STV (Single Transferable Vote) implementation in TypeScript

Primary LanguageTypeScriptMIT LicenseMIT

Single Transferable Vote (STV) NPM library

TypeScript implementation of STV algorithm without any runtime dependencies.

Getting started

Add the library into your project using either:

npm add stv

or

yarn add stv

Import it into your project:

import { stv } from 'stv';

Usage

To evaluate election using STV, invoke the algorithm by calling the stv(opts) function:

const results = stv({
  seatsToFill: 2,
  candidates: ["Wonderwoman", "Superman", "Batman", "Iron Man"],
  votes: [
    {
      weight: 1,
      preferences: ["Wonderwoman", "Batman"]
    },
    {
      weight: 1,
      preferences: ["Iron Man", "Batman"]
    },
    {
      weight: 1,
      preferences: ["Iron Man"]
    }
  ],
  report: console.log
});

Which STV counting method is implemented?

Currently, the Scottish STV rules are implemented. There may be more variants in the future.

License 📜

The stv library is licensed under MIT license.