dag-map

2.0.2last stable release 8 years ago
Complexity Score
Low
Open Issues
7
Dependent Projects
35
Weekly Downloadsglobal
651,949

License

  • MIT
    • Yesattribution
    • Permissivelinking
    • Permissivedistribution
    • Permissivemodification
    • Nopatent grant
    • Yesprivate use
    • Permissivesublicensing
    • Notrademark grant

Downloads

Readme

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

// 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

Dependencies

No runtime dependency information found for this package.

CVE IssuesActive
0
Scorecards Score
1.90
Test Coverage
No Data
Follows Semver
Yes
Github Stars
56
Dependenciestotal
6
DependenciesOutdated
5
DependenciesDeprecated
0
Threat Modelling
No
Repo Audits
No

Learn how to distribute dag-map in your own private NPM registry

npm config set registry  https://npm.cloudsmith.com/owner/repo
Processing...
Done
npm install dag-map
Processing...
Done

6 Releases

NPM on Cloudsmith

Getting started with NPM on Cloudsmith is fast and easy.