simpleflow

0.0.2 • Public • Published

SimpleFlow

Simple flow library to chain and run functions with synchronous and asynchronous calls. WIP.

Installation

Via npm on Node:

npm install simpleflow

Usage

Reference in your program:

var sf = require('simpleflow');

Create and run a sequence of synchronous functions:

var seq = sf.sequence(
    function (data) {
        console.log(data);
        return data + 1;
    },
    function (data) {
        console.log(data);
        return data + 1;
    },
    function (data) {
        console.log(data);
        return data + 1;
    }
);

seq.run(1);

Output

1
2
3

In this way, you can define the sequence once, and run it many times with different initial data.

Create and run a sequence of asynchronous functions:

var seq = sf.sequence(
    function (data, next) {
        console.log(data);
        next(null, data + 1);
    },
    function (data, next) {
        console.log(data);
        next(null, data + 1);
    },
    function (data, next) {
        console.log(data);
        next(null, data + 1);
    }
);

seq.run(1);

Output

1
2
3

You can mix both kind of functions:

var seq = sf.sequence(
    function (data) {
        console.log(data);
        return data + 1;
    },
    function (data, next) {
        console.log(data);
        next(null, data + 1);
    },
    function (data, next) {
        console.log(data);
        next(null, data + 1);
    }
);

seq.run(1);

Output

1
2
3

The return of run is a future object with success and fail associated functions:

var seq = sf.sequence(
    function (data, next) {
        next(null, data + 1;
    },
    function (data, next) {
        next(null, data + 1);
    },
    function (data, next) {
        next(null, data + 1);
    }
);

seq.run(1).success(
    function (data) {
        console.log('result:', data);
    }
).fail(
    function (err) {
        console.log('error:', err);
    }
);

Output

result: 4

So, you can define success and fail behaviour in your own scope. You can define the sequence once, and run it many times, with different initial data and success, fail context. Partial example, an action in a controller:

var seq = sf.sequence(step1, step2, step3);

// ...

function index(req, res) {
    seq.run(req.params.id)
        .success(function (data) {
            res.render('index', { model: data });
        })
        .fail(function (err) {
            res.render('error', { error: err });
        });
}

Development

git clone git://github.com/ajlopez/SimpleFlow.git
cd SimpleFlow
npm install
npm test

Samples

To Do

  • Parallel execution of a list of functions
  • Map
  • Reduce

Versions

  • 0.0.1: Published
  • 0.0.2: Published

License

MIT

References

Contribution

Feel free to file issues and submit pull requests � contributions are welcome<

If you submit a pull request, please be sure to add or update corresponding test cases, and ensure that npm test continues to pass.

Package Sidebar

Install

npm i simpleflow

Weekly Downloads

0

Version

0.0.2

License

none

Last publish

Collaborators

  • ajlopez