# enumer

> A JavaScript library for enums. To be used by transpiled ES6 (e.g. via Babel).

Latest version **1.0.0** (published 2017-05-26) · MIT license · 0 weekly downloads

## Install

```sh
npm install enumer
pnpm add enumer
yarn add enumer
bun add enumer
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0 |
| Published | 2017-05-26 |
| First published | 2017-05-26 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Chris Lam |
| Maintainers | chrislam |

## Links

- npm: https://www.npmjs.com/package/enumer
- Repository: https://github.com/chrislam/enumer
- npm.io page: https://npm.io/package/enumer

## Recent versions

- 1.0.0 (latest) — 2017-05-26

## README

# Enumer

A JavaScript library for enums. To be used by transpiled ES6 (e.g. via Babel).

Enumer is a based on [Enumify](https://github.com/rauschma/enumify) by Axel Rauschmayer (http://www.2ality.com/2016/01/enumify.html)

## The basics

Install:

```text
npm install enumer
```

Use:

```js
import {Enum} from 'enumer';

class Color extends Enum {}
Color.initEnum(['RED', 'GREEN', 'BLUE']);

console.log(Color.RED); // Color.RED
console.log(Color.GREEN instanceof Color); // true

new Color();
    // Error: Enum classes can’t be instantiated
```

## Properties of enum classes

Enums get a static property `enumValues`, which contains an Array with all enum values:

```js
for (const c of Color.enumValues) {
    console.log(c);
}
// Output:
// Color.RED
// Color.GREEN
// Color.BLUE
```

The inherited tool method `enumValueOf()` maps names to values:

```js
console.log(Color.enumValueOf('RED') === Color.RED); // true
true
```

## Properties of enum values

Enumer adds two properties to every enum value:

* `name`: the name of the enum value.

    ```repl
    > Color.BLUE.name
    'BLUE'
    ```

* `ordinal`: the position of the enum value within the Array `enumValues`.

    ```repl
    > Color.BLUE.ordinal
    2
    ```

## Adding properties to enum values

`initEnum()` also accepts an object as its parameter. That enables you to add properties to enum values:

```js
class TicTacToeColor extends Enum {}

// Alas, data properties don’t work, because the enum
// values (TicTacToeColor.X etc.) don’t exist when
// the object literals are evaluated.
TicTacToeColor.initEnum({
    O: {
        get inverse() { return TicTacToeColor.X },
    },
    X: {
        get inverse() { return TicTacToeColor.O },
    },
});

console.log(TicTacToeColor.O.inverse); // TicTacToeColor.X
```

## More information

* The directory `test/` contains examples.

---
_Source: https://npm.io/package/enumer · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
