0.1.2 • Published 5 years ago
@derhuerst/flow-of-computations v0.1.2
@derhuerst/flow-of-computations
Filter, transform and merge sets of data.
- A directed acyclic graph of operations. Each operation gets data from its
>=1
predecessors and transforms it. - Data sources can be static or streaming/live, as they emit diffs (looks like a
splice
call) just like every operation. - The computation of the whole graph is done step by step via an iterator.
Installation
npm install @derhuerst/flow-of-computations
Usage
const {withStore, createFlow, flowRunner} = require('@derhuerst/flow-of-computations')
const {add, zip, sum, print} = require('@derhuerst/flow-of-computations/ops')
// Our data sources, called inputs. Each is a list of diffs.
const dataSourceA = [
[0, 0, [10, 20, 30]], // insert 10, 20, 30
[1, 1, [50]] // replace 2nd by 50
] // evaluates to [10, 50, 30]
const dataSourceB = [
[0, 0, [10, 100, 1000]] // insert 10, 100, 1000
] // evaluates to [10, 100, 1000]
// Use withStore to access the data of an operation (all diffs "applied") at any time.
const sumOp = withStore(sum())
const zipOp = zip(2)
const flow = createFlow([ // list of data sources
dataSourceA, dataSourceB
], [ // list of op connections
[dataSourceA, add(3), zipOp],
[dataSourceB, zipOp],
[zipOp, sumOp, print('diff printer')]
])
// Because our data sources are static, we can use a loop to iterate over each step of
// the computation.
for (const _ of flowRunner(flow)) {}
console.log('data in sumOp:', sumOp.data())
diff printer { idx: 0, del: 0, newItems: [ 13, 23, 33 ] }
diff printer { idx: 0, del: 3, newItems: [ 23, 123, 1033 ] }
diff printer { idx: 0, del: 3, newItems: [ 23, 153, 1033 ] }
data in sumOp: [ 23, 153, 1033 ]
Contributing
If you have a question or need support using @derhuerst/flow-of-computations
, please double-check your code and setup first. If you think you have found a bug or want to propose a feature, refer to the issues page.