diff --git a/lib/src/index.js b/lib/src/index.js index d6fe194b..7571fc67 100644 --- a/lib/src/index.js +++ b/lib/src/index.js @@ -3,6 +3,7 @@ var _ = require('lodash'); var defaults = _.defaults; +var duplex = require('duplexer2'); var through = require('through2'); var gs = require('glob-stream'); var File = require('vinyl'); @@ -15,9 +16,16 @@ function createFile (globFile, enc, cb) { } function src(glob, opt) { + var pass = through.obj(); + if (!isValidGlob(glob)) { throw new Error('Invalid glob argument: ' + glob); } + // return dead stream if empty array + if (Array.isArray(glob) && glob.length === 0) { + process.nextTick(pass.end.bind(pass)); + return pass; + } var options = defaults({}, opt, { read: true, @@ -36,17 +44,15 @@ function src(glob, opt) { .pipe(getContents(options)); } - return outputStream - .pipe(through.obj()); + outputStream = outputStream.pipe(pass); + + return duplex(pass, outputStream); } function isValidGlob(glob) { if (typeof glob === 'string') { return true; } - if (Array.isArray(glob) && glob.length !== 0) { - return true; - } return false; } diff --git a/package.json b/package.json index 9dcdb170..071bd969 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "author": "Fractal (http://wearefractal.com/)", "main": "./index.js", "dependencies": { + "duplexer2": "0.0.2", "glob-stream": "^3.1.5", "glob-watcher": "^0.0.6", "graceful-fs": "^3.0.0",