topo

Topological sorting with grouping support.

Latest Version: 5.0.0
hapi-family
Installation:

npm: npm install @hapi/topo

yarn: yarn add @hapi/topo

Module Status:
Version License Node Dependencies Travis End of Life
5.0.0
hapi helmet github logo
BSD 12, 14 Dependency Status Build Status

Introduction

The Topo object is the container for topologically sorting a list of nodes with non-circular interdependencies.

Example

const Topo = require('@hapi/topo');

const morning = new Topo.Sorter();

morning.add('Nap', { after: ['breakfast', 'prep'] });

morning.add([
    'Make toast',
    'Pour juice'
], { before: 'breakfast', group: 'prep' });

morning.add('Eat breakfast', { group: 'breakfast' });

morning.nodes;        // ['Make toast', 'Pour juice', 'Eat breakfast', 'Nap']