# dagjs

> Simiple DAG (Directed Acyclic Graph) module with edge tagging

Latest version **0.1.4** (published 2018-06-12) · MIT license · 0 weekly downloads

## Install

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

## Health

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

Positive: no vulnerabilities.

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

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.4 |
| Published | 2018-06-12 |
| First published | 2017-08-16 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 199.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 23 |
| Author | Jongseok Choi |
| Maintainers | cjongseok |
| Keywords | dag, directed, acyclic, graph, edge tagging |

## Links

- npm: https://www.npmjs.com/package/dagjs
- Repository: https://github.com/cjongseok/dag.js
- Issues: https://github.com/cjongseok/dag.js/issues
- npm.io page: https://npm.io/package/dagjs

## Dependencies (1)

- [es6-error](https://npm.io/package/es6-error.md) ^4.0.2

## Alternatives

- [apollo-link-http-common](https://npm.io/package/apollo-link-http-common.md) — 879.0K weekly downloads
- [react-relay](https://npm.io/package/react-relay.md) — 336.8K weekly downloads
- [relay-test-utils](https://npm.io/package/relay-test-utils.md) — 181.6K weekly downloads
- [@vendure/core](https://npm.io/package/@vendure/core.md) — 14.8K weekly downloads
- [@pnpm/deps.graph-sequencer](https://npm.io/package/@pnpm/deps.graph-sequencer.md) — 13.4K weekly downloads

## Recent versions

- 0.1.4 (latest) — 2018-06-12
- 0.1.3 — 2017-08-24
- 0.1.2 — 2017-08-17
- 0.1.1 — 2017-08-16

## README

dag.js [![npm version](https://badge.fury.io/js/dagjs.svg)](https://badge.fury.io/js/dagjs) [![Build Status](https://travis-ci.org/cjongseok/dag.js.svg?branch=master)](https://travis-ci.org/cjongseok/dag.js) [![Coverage Status](https://coveralls.io/repos/github/cjongseok/dag.js/badge.svg?branch=master)](https://coveralls.io/github/cjongseok/dag.js?branch=master)
======


Simple DAG (Directed Acyclic Graph) module with edge tagging.


Install
-------
```sh
$ npm install dagjs
```


Usage
-----
```javascript
let Dag = require('dagjs');

let dag = new Dag();
// ...
```

[![Analytics](https://ga-beacon.appspot.com/UA-104778232-1/dag.js/README.md?pixel)](https://github.com/igrigorik/ga-beacon)

Examples
--------

Adding edges:
```javascript
let dag = new Dag();
// add(from, to, tags, weight)
dag.add('Mike', 'Josh', 'follows', 3);
dag.add('Mary', 'Josh', ['follows', 'likes'], 50);
dag.add('Josh', 'John', ['follows', 'admires']);
dag.add('Mike', 'Mary', 'likes', 100);
// It results in a DAG:
//           follows        admires
//     Mike ----3---> Josh --------> John
//       |             ^
//       |             |
//       |            50 follows and likes
//       |   likes     |
//       -----100---> Mary
```


Filtering by tag:
```javascript
let likeDag = dag.filterByTag('likes');
// likeDag =
//       likes         follows and likes
// Mike --100--> Mary ---------50--------> Josh
```

Neighbouring:
```javascript
let edgesToJosh = dag.edgesTo('Josh');
// edgesToJosh =
// [
//      {from:'Mike', to:'Josh', tags:['follows'], weight:3},
//      {from: 'Mary', to:'Josh', tags:['follows', 'likes'], weight: 50}
// ]

let edgesFromMary = dag.edgesFrom('Mary');
// edgesFromMary =
// [
//      {from: 'Mary', to:'Josh', tags:['follows', 'likes'], weight: 50}
// ]

let neighbourhoodOfJosh = dag.neighbourhood('Josh');
// neighbourhoodOfJosh =
//           follows        admires
//     Mike ----3---> Josh --------> John
//                     ^
//                     |
//                    50 follows and likes
//                     |
//                    Mary
```

Clones:
```javascript
// shallow-clone
let shallowDag = dag.clone();

// deep-clone
let deepDag = dag.deepClone();
```

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