Create streams from ECMAScript 6 Promises (ES.next Draft Rev 25).
npm install stream-from-promise --save
As long as es6 is a draft:
npm install promise --save
var StreamFromPromise = require('stream-from-promise'),
Promise = require('promise');
var stringPromise = new Promise(function(resolve, reject) {
setTimeout(function() { resolve('strrrring!'); }, 500);
});
StreamFromPromise(stringPromise)
.pipe(process.stdout); // output: strrrring!
var bufferPromise = new Promise(function(resolve, reject) {
setTimeout(function() { resolve(new Buffer('buff!')); }, 500);
});
StreamFromPromise(bufferPromise)
.pipe(process.stdout); // output: buff!
var StreamFromPromise = require('stream-from-promise'),
Promise = require('promise');
function logFunc(){
console.log('func!?!');
};
var funcPromise = new Promise(function(resolve, reject) {
setTimeout(function() { resolve(logFunc) }, 500);
});
StreamFromPromise.obj(funcPromise)
.on('data', function(fn){
fn(); // output: func!?!
});
var StreamFromPromise = require('stream-from-promise'),
Promise = require('promise');
var rejectPromise = new Promise(function(resolve, reject) {
setTimeout(function() { reject(new Error('rejected')) }, 500);
});
StreamFromPromise(rejectPromise)
.on('error', function(err){
console.log(err); // output: [Error: rejected]
})
.on('data', function(data){
// do something awsome
});
Gulp File promises
Gulp files are vinyl files:
npm install vinyl
Test some awsome Gulp plugin:
var StreamFromPromise = require('stream-from-promise'),
Promise = require('promise'),
File = require('vinyl');
var hello = new File({
cwd: '/',
base: '/hello/',
path: '/hello/hello.js',
contents: new Buffer('console.log("Hello");')
});
var helloFilePromise = new Promise(function(resolve, reject) {
setTimeout(function() { resolve(hello) }, 500);
});
StreamFromPromise.obj(helloFilePromise)
.pipe(someAwsomeGulpPlugin())
.on('data', function(file){
console.log(file.contents.toString()); // dunno what someAwsomeGulpPlugin does :)
});
See also stream-recorder for testing gulp plugins.
StreamFromPromises are Readable streams.
- promise
Promise
ECMAScript 6 Promises returning Javascript values like numbers, strings, objects, functions, ... - options
Object
passed through new Readable([options])
Note: The new
operator can be omitted.
A convenience wrapper for new StreamFromPromise(promise, {objectMode: true, ...})
.
Copyright (c) 2014 Michael Mayer
Licensed under the MIT license.