// Tasks to compress

import gulp from "gulp";
import zopfli from "gulp-zopfli-green";
import merge from "merge-stream";
import path from "path";
import paths from "../paths.cjs";

const zopfliOptions = { threshold: 150 };

gulp.task("compress-app", function compressApp() {
  const jsLatest = gulp
    .src(path.resolve(paths.app_output_latest, "**/*.js"))
    .pipe(zopfli(zopfliOptions))
    .pipe(gulp.dest(paths.app_output_latest));

  const jsEs5 = gulp
    .src(path.resolve(paths.app_output_es5, "**/*.js"))
    .pipe(zopfli(zopfliOptions))
    .pipe(gulp.dest(paths.app_output_es5));

  const polyfills = gulp
    .src(path.resolve(paths.app_output_static, "polyfills/*.js"))
    .pipe(zopfli(zopfliOptions))
    .pipe(gulp.dest(path.resolve(paths.app_output_static, "polyfills")));

  const translations = gulp
    .src(path.resolve(paths.app_output_static, "translations/**/*.json"))
    .pipe(zopfli(zopfliOptions))
    .pipe(gulp.dest(path.resolve(paths.app_output_static, "translations")));

  const icons = gulp
    .src(path.resolve(paths.app_output_static, "mdi/*.json"))
    .pipe(zopfli(zopfliOptions))
    .pipe(gulp.dest(path.resolve(paths.app_output_static, "mdi")));

  return merge(jsLatest, jsEs5, polyfills, translations, icons);
});

gulp.task("compress-hassio", function compressApp() {
  return gulp
    .src(path.resolve(paths.hassio_output_root, "**/*.js"))
    .pipe(zopfli(zopfliOptions))
    .pipe(gulp.dest(paths.hassio_output_root));
});