# dag-map

> A topologically ordered map of key/value pairs with a simple API for adding constraints.

Latest version **2.0.2** (published 2017-01-08) · MIT license · 0 weekly downloads

## Install

```sh
npm install dag-map
pnpm add dag-map
yarn add dag-map
bun add dag-map
```

## Health

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

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.0.2 |
| Published | 2017-01-08 |
| First published | 2015-01-23 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 57 |
| Author | Kris Selden |
| Maintainers | krisselden, stefanpenner, rwjblue, chadhietala |
| Keywords | dag, map, dependencies |

## Links

- npm: https://www.npmjs.com/package/dag-map
- Repository: https://github.com/krisselden/dag-map
- Homepage: https://github.com/krisselden/dag-map#readme
- Issues: https://github.com/krisselden/dag-map/issues
- npm.io page: https://npm.io/package/dag-map

## Recent versions

- 2.0.2 (latest) — 2017-01-08
- 2.0.1 — 2016-09-02
- 2.0.0 — 2016-09-02
- 1.0.2 — 2015-04-21
- 1.0.1 — 2015-04-21
- 1.0.0 — 2015-01-23

## README

# dag-map [![Build Status](https://travis-ci.org/krisselden/dag-map.png?branch=master)](https://travis-ci.org/krisselden/dag-map)

A topologically ordered map of key/value pairs with a simple API for adding constraints.

Used for ordering initializers in Ember.  Has a flexible constraint syntax
that can add before/after contraints that can forward reference things
yet to be added.

## API

```js
// import DAGMap from "dag-map";
const DAGMap = require("dag-map").default;

let map = new DAGMap();

// map a key value pair
// #add(
//   key: string, value: any,
//   before?: string[] | string | undefined,
//   after?: string[] | string | undefined
// )
map.add('eat', 'Eat Dinner');

// add a key value pair with before and after constraints
map.add('serve', 'Serve the food', 'eat', 'set');

// keys can be added after a key has been referenced
map.add('set', 'Set the table');

// graph now is eat -> serve -> set

// constraints can be an array
map.add('cook', 'Cook the roast and veggies', 'serve', ['prep', 'buy']);

map.add('wash', 'Wash the veggies', 'prep', 'buy');
map.add('buy', 'Buy roast and veggies');
map.add('prep', 'Prep veggies', undefined, 'wash');

// log in order (multiple valid spots for set the table).
map.each((key, val) => console.log(`${key}: ${val}`));
// set: Set the table
// buy: Buy roast and veggies
// wash: Wash the veggies
// prep: Prep veggies
// cook: Cook the roast and veggies
// serve: Serve the food
// eat: Eat Dinner
```

### Notes

add is aliased as addEdges for backwards compat.
each is aliased as topsort for backwards compat.

## Developing

* `npm install`
* `npm test` runs the tests headless
* `npm run build` rebuild
* `npm run docs` documentation

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