let gulp = require('gulp');
let uglify = require('gulp-uglify');
let buble = require('gulp-buble');
let autoprefixer = require('gulp-autoprefixer');
let cleanCSS = require('gulp-clean-css');
let header = require('gulp-header');
let pkg = require('./package.json');

var jsBanner = ['/*!',
    ' * DisqusJS | v<%= pkg.version %>',
    ' * Author: SukkaW',
    ' * Link: https://github.com/SukkaW/DisqusJS',
    ' * License: <%= pkg.license %>',
    ' */'
].join('\n');

var cssBanner = ['/*!',
    ' * DisqusJS - Default Theme | v<%= pkg.version %>',
    ' * Author: SukkaW',
    ' * Link: https://github.com/SukkaW/DisqusJS',
    ' * License: <%= pkg.license %>',
    ' */'
].join('\n');


var configs = {
    browsers: [
        'last 2 versions',
        '> 1%',
        'Chrome >= 30',
        'Firefox >= 30',
        'ie >= 9',
        'Safari >= 8',
    ],
    cleanCSS: {
        compatibility: 'ie10'
    },
};

gulp.task('minify-js', () => {
    return gulp.src('src/**/*.js')
        .pipe(buble({
            transforms: { dangerousForOf: true }
        }))
        .pipe(uglify({
            keep_fnames: false
        }))
        .pipe(header(jsBanner, { pkg: pkg }))
        .pipe(gulp.dest('dist'));
});

gulp.task('minify-css', () => {
    return gulp.src('src/**/*.css')
        .pipe(autoprefixer(configs.browsers))
        .pipe(cleanCSS(configs.cleanCSS))
        .pipe(header(cssBanner, { pkg: pkg }))
        .pipe(gulp.dest('dist'));
});

gulp.task('build', gulp.parallel('minify-js', 'minify-css'));

gulp.task('default', gulp.parallel('build'));