L
Mix Async/Sync code with Promises and Streams in a reusable unified line
You have multiple functions, some of them are async, others are promise-based, and you have some stream transformers, and you want to plug everything together: This module takes an array of functions/streams and gives you a single function, that can be used with callback, or as a promise. It takes care of piping consecutive streams, buffering them before passing them to the next function... etc.
Installation
npm install --save l
Features
- A segment can be sync, async with a callback, can return a promise, or can define a stream
- Consecutive streams are automatically piped, only buffered when next segment is not a stream
- You can return a stream, and it will be automatically buffered/piped
Usage Example
const l = ; var calc =
For a more complete example that involves streams, please check examples and tests.
Debugging
To enable debugging:
DEBUG=line node ./examples/npm-module-github-stats.js penguin
>executing on: penguin (5 segments) 0 <async IncomingMessage {_readableState: [Object], readable: true,... 1 @consuming readable stream... 1 <sync {_id: 'penguin', _rev: '151-868f4a334cf6a0bc8ced2f4485e7da78', name: 'penguin',... 2 <promise etabits/node-penguin 3 <async IncomingMessage {_readableState: [Object], readable: true,... 4 @consuming readable stream... 4 <sync {gh: [Object], npm: [Object] }...<finished with {gh: [Object], npm: [Object] }...
Running tests
npm test
Compatibility
- L is compatible with Node.js v6 LTS, Node.js v7 Current, Node.js v5 and Node.js v4
Next (Roadmap)
- Ability to split and rejoin a stream (parallel execution)
- Return a readable stream when last element is a stream (optional)
- Syntactic sugar, once uses cases are established, so we have a stable API
- Browser use?
- objectMode streams between segments
- create objectMode stream duplex instead of a function wrapper
- ...