Skip to content

Commit

Permalink
replacing CB with events
Browse files Browse the repository at this point in the history
  • Loading branch information
deepak1556 committed Dec 29, 2013
1 parent 53bc90f commit ed87764
Show file tree
Hide file tree
Showing 2 changed files with 95 additions and 81 deletions.
166 changes: 85 additions & 81 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,89 +15,93 @@ module.exports = function(opts) {
var opts = opts || {};
var ctrOpts = {};
var buffer = [];
var temp = [];
var bundler, chunk = '';
var itsABuffer = false;
var itsAStream = false;

return es.map(function (file, cb) {
try {
if(isStream(file.contents)) {

itsAStream = true;
ctrOpts.basedir = file.base;
ctrOpts.entries = file.contents;
}else if(isBuffer(file.contents)) {

itsABuffer = true;
ctrOpts.basedir = file.base;
buffer.push(file.contents);
ctrOpts.entries = es.readArray(buffer);
}else {

ctrOpts.entries = path.resolve(file.path);
}

if(opts.noParse) {
ctrOpts.noParse = opts.noParse.map(function(filepath) {
return path.resolve(filepath);
})
delete opts.noParse;
}

bundler = browserify(ctrOpts);
bundler.on('error', function(err) {
error(err);
})

if(opts.transform) {
opts.transform.forEach(function(transform) {
console.log(file.path);
bundler.transform(transform);
})
}

if(opts.preBundleCB) {
opts.preBundleCB(bundler);
}

var onBundleComplete = function(err, src) {
if(err) {
error(err);
}

var newFile = new gutil.File({
cwd: file.cwd,
base: file.base,
contents: new Buffer(src)
});

cb(null, newFile)
}

if(itsAStream || itsABuffer ) {
var readable = bundler.bundle(opts);
readable.on('data', function(data) {
chunk += data;
}).once('end', function(err) {
if(opts.postBundleCB) {
opts.postBundleCB(err, chunk, onBundleComplete)
}
else {
onBundleComplete(err, chunk);
}
})
} else {
bundler.bundle(opts, function(err, src) {
if(opts.postBundleCB) {
opts.postBundleCB(err, src, onBundleComplete)
}
else {
onBundleComplete(err, src);
}
})
}
} catch (err) {
error(err.message);
}
});
function bufferContents(file) {
buffer.push(file);
}

function endStream() {
if (buffer.length === 0) return this.emit('end');

var self = this;

buffer.map(function (file) {
try {
if(isStream(file.contents)) {

itsAStream = true;
ctrOpts.basedir = file.base;
ctrOpts.entries = file.contents;
}else if(isBuffer(file.contents)) {

itsABuffer = true;
ctrOpts.basedir = file.base;
temp.push(file.contents);
ctrOpts.entries = es.readArray(temp);
}else {

ctrOpts.entries = path.resolve(file.path);
}

if(opts.noParse) {
ctrOpts.noParse = opts.noParse.map(function(filepath) {
return path.resolve(filepath);
})
delete opts.noParse;
}

bundler = browserify(ctrOpts);
bundler.on('error', function(err) {
error(err);
})

if(opts.transform) {
opts.transform.forEach(function(transform) {
console.log(file.path);
bundler.transform(transform);
})
}

self.emit('prebundle', bundler);

var onBundleComplete = function(self, err, src) {
if(err) {
error(err);
}

var newFile = new gutil.File({
cwd: file.cwd,
base: file.base,
contents: new Buffer(src)
});

self.emit('postbundle', src);

self.emit('data', newFile);
self.emit('end');
}

if(itsAStream || itsABuffer ) {
var readable = bundler.bundle(opts);
readable.on('data', function(data) {
chunk += data;
}).once('end', function(err) {
onBundleComplete(self, err, chunk);
})
} else {
bundler.bundle(opts, function(err, src) {
onBundleComplete(self, err, src);
})
}
} catch (err) {
error(err.message);
}
});
}

return es.through(bufferContents, endStream);
}
10 changes: 10 additions & 0 deletions test/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,18 @@ var es = require('event-stream');
var path = require('path');
var browserify = require('browserify');

var postdata;

describe('gulp-browserify', function() {
var testFile = path.join(__dirname, './test.js');
var fileContents;

beforeEach(function(done) {
gulp.src(testFile)
.pipe(gulpB())
.on('postbundle', function(data) {
postdata = data;
})
.pipe(es.map(function(file){
fileContents = file.contents;
done();
Expand All @@ -34,4 +39,9 @@ describe('gulp-browserify', function() {
done();
})
})

it('should emit postbundle event', function(done) {
expect(fileContents.toString()).to.equal(postdata);
done();
})
})

0 comments on commit ed87764

Please sign in to comment.