var gulp = require('gulp');
var browserify = require('browserify');
var streamify = require('gulp-streamify');
var rename = require('gulp-rename');
var uglify = require('gulp-uglify');
var source = require('vinyl-source-stream');

var OUTPUT_PATH = '../../build/browserify';
var TMP_FILE_PREFIX = '../../build/browserify_';

gulp.task('build-bundle', function() {
  return browserify('main.js', {output: TMP_FILE_PREFIX + 'main.tmp'})
    .ignore(require.resolve('pdfjs-dist/build/pdf.worker')) // Reducing size
    .bundle()
    .pipe(source(TMP_FILE_PREFIX + 'main.tmp'))
    .pipe(streamify(uglify()))
    .pipe(rename('main.bundle.js'))
    .pipe(gulp.dest(OUTPUT_PATH));
});

gulp.task('build-worker', function() {
  // We can create our own viewer (see worker.js) or use already defined one.
  var workerSrc = require.resolve('pdfjs-dist/build/pdf.worker.entry');
  return browserify(workerSrc, {output: TMP_FILE_PREFIX + 'worker.tmp'})
    .bundle()
    .pipe(source(TMP_FILE_PREFIX + 'worker.tmp'))
    .pipe(streamify(uglify({compress:{
      sequences: false // Chrome has issue with the generated code if true
    }})))
    .pipe(rename('pdf.worker.bundle.js'))
    .pipe(gulp.dest(OUTPUT_PATH));
});

gulp.task('build', ['build-bundle', 'build-worker']);