ordu

Execute functions in a configurable order, modifying a shared data structure.

Usage no npm install needed!

<script type="module">
  import ordu from 'https://cdn.skypack.dev/ordu';
</script>

README

ordu

npm version Build Coverage Status Dependency Status DeepScan grade Maintainability

Execute functions in a configurable order, modifying a shared data structure.

Task functions are executed in order of addition, and passed a shared context, a modifiable data structure, and task meta data. Execution is synchronous or asynchronous. You can control execution by returning commands from a task function.

You can add tasks before and after existing named tasks.

This module is used by the Seneca framework to provide configurable extension hooks to various internal processes.

Quick example

NOTE: OUT-OF-DATE

SEE TESTS FOR API CHANGES

TODO: UPDATE README

const Ordu = require('ordu')

let process = new Ordu()

process.add(function first(spec) {
  if (null == spec.data.foo) {
    return {op: 'stop', err: new Error('no foo')}
  }

  spec.data.foo = spec.data.foo.toUpperCase() + spec.ctx.suffix

  // Default is to continue to next step.
})


const ctx = { suffix: '!!!' }
let data = { foo: 'green' }

process.execSync(ctx, data)
console.log(data.foo) // prints 'GREEN!!!' (first)


process.add(function second(spec) {
  spec.data.foo = spec.ctx.prefix + spec.data.foo
})

ctx.prefix = '>>>'
data = { foo: 'blue' }

process.execSync(ctx, data)
console.log(data.foo) // prints '>>>BLUE!!!' (first, second)

Install

npm install ordu

Notes

From the Irish ordú: instruction. Pronounced or-doo.

License

Copyright (c) 2014-2021, Richard Rodger and other contributors. Licensed under MIT.