HEX
Server: Apache
System: Linux webd001.cluster127.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
User: mciraet (192513)
PHP: 8.2.31
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/mciraet/www/wp-content/plugins/wp-google-map-gold/gulpfile.mjs
// Import required packages
import gulp from 'gulp';
import concat from 'gulp-concat';
import terser from 'gulp-terser';
import cleanCSS from 'gulp-clean-css';
import rename from 'gulp-rename';
import fs from 'fs';
import path from 'path';
import mergeStream from 'merge-stream';

// Vendor names for backend and frontend
const backend_vendors = [
  "datatables", "webfont", "select2", "slick", "markerclustererplus",
  "accordion", "flippercode", "fc-customizer", "bootstrap-modal","backend"
];

const frontend_vendors = [
  "datatables", "jscrollpane", "marker-spidifier", "print",
  "markerclustererplus", "accordion", "webfont", "frontend"
];

const leaflet_plugins = [
  "leaflet/plugins/provider","leaflet/plugins/autocomplete","leaflet/plugins/fullscreen","leaflet/plugins/locate","leaflet/plugins/route","leaflet/plugins/googlecompat"
];

// Paths
const vendorPath = 'assets/js/vendor';
const cssDest = 'assets/css';
const jsDest = 'assets/js';

// Helper function: Minify and concatenate vendor JS files
function processVendorScripts(vendors, outputName) {
  const paths = vendors.map(v => `${vendorPath}/${v}/*.js`);
  return gulp
    .src(paths)
    .pipe(concat(`${outputName}.js`))     
    .pipe(gulp.dest(jsDest))
    .pipe(terser())
    .pipe(rename(`${outputName}.min.js`))
    .pipe(gulp.dest(jsDest));
}

// Helper function: Minify and concatenate vendor CSS files
function processVendorCSS(vendors, outputName) {
  const paths = vendors.map(v => `${vendorPath}/${v}/*.css`);
  return gulp
    .src(paths)
    .pipe(concat(`${outputName}.css`))
    .pipe(gulp.dest(cssDest))
    .pipe(rename(`${outputName}.min.css`))
    .pipe(cleanCSS())
    .pipe(gulp.dest(cssDest));
}

function minifyCSS(src, outputName, dest) {
  return function () {
    return gulp
      .src(src)
      .pipe(cleanCSS())
      .pipe(rename(outputName))
      .pipe(gulp.dest(dest));
  };
}

// Backend JS task
gulp.task('backend-scripts', () => {
  return processVendorScripts(backend_vendors, 'wpgmp_backend');
});

// Frontend JS task
gulp.task('frontend-scripts', () => {
  return processVendorScripts(frontend_vendors, 'wpgmp_frontend');
});

// Leaflet Plugins JS task
gulp.task('leaflet-plugins-scripts', () => {
  return processVendorScripts(leaflet_plugins, 'wpgmp_leaflet_plugins');
});

// Leaflet Plugins JS task
gulp.task('leaflet-plugins-css', () => {
  return processVendorCSS(leaflet_plugins, 'wpgmp_leaflet_plugins');
});

// File paths
const mapsJSFiles = [
  `${vendorPath}/maps/baseMaps.js`,
  `${vendorPath}/maps/googleMaps.js`,
  `${vendorPath}/maps/leafletMaps.js`,
  `${vendorPath}/maps/mapFactory.js`,
  `${vendorPath}/maps/generateMaps.js` // your initialization script
];

// Task to combine and minify map provider scripts
gulp.task('minify-mapsjs', function () {
  return gulp.src(mapsJSFiles)
    .pipe(concat('wpgmp_maps.js'))               // Combine all into maps.js
    .pipe(gulp.dest(jsDest))              // Output unminified version
    .pipe(rename('wpgmp_maps.min.js')) // Rename for minified version
    .pipe(terser())
    .pipe(gulp.dest(jsDest));             // Save maps.min.js
});

gulp.task('minify-leafletjs', function () {
  return gulp.src(`${vendorPath}/leaflet/leaflet.js`)
    .pipe(rename('wpgmp_leaflet.js'))               // Combine all into maps.js
    .pipe(gulp.dest(jsDest))              // Output unminified version
    .pipe(rename('wpgmp_leaflet.min.js')) // Rename for minified version
    .pipe(terser())
    .pipe(gulp.dest(jsDest));             // Save maps.min.js
});

// Minify Individual CSS file

const cssFiles = [
  { input: `${cssDest}/wpgmp_frontend.css`, output: 'wpgmp_frontend.min.css' },
  { input: `${cssDest}/wpgmp_backend.css`, output: 'wpgmp_backend.min.css' },
  { input: `${cssDest}/wpgmp_templates.css`, output: 'wpgmp_templates.min.css' },
  { input: `${cssDest}/wpgmp_infowindows.css`, output: 'wpgmp_infowindows.min.css' },
  { input: `${cssDest}/wpgmp_webfonts.css`, output: 'wpgmp_webfonts.min.css' },
  { input: `${cssDest}/leaflet.css`, output: 'leaflet.min.css' },
];

gulp.task('minify-all-css', () => {
  const tasks = cssFiles.map(file =>
    gulp
      .src(file.input)
      .pipe(cleanCSS())
      .pipe(rename(file.output))
      .pipe(gulp.dest(cssDest))
  );

  return mergeStream(...tasks);
});

// Backend CSS task: Combine vendor and dynamic template styles
gulp.task('backend-css', (cb) => {
  const vendorCSS = backend_vendors.map(v => `${vendorPath}/${v}/*.css`);
  const templateCSS = [];

  const basePath = path.resolve('templates');

  fs.readdirSync(basePath).forEach((category) => {
    const categoryPath = path.join(basePath, category);
    if (!fs.statSync(categoryPath).isDirectory()) return;

    fs.readdirSync(categoryPath).forEach((folder) => {
      const cssFile = path.join(categoryPath, folder, `${folder}.css`);
      if (fs.existsSync(cssFile)) templateCSS.push(cssFile);
    });
  });

  const allCSS = vendorCSS.concat(templateCSS);

  return gulp
    .src(allCSS, { allowEmpty: true })
    .pipe(concat('wpgmp_vendors.css'))
    .pipe(gulp.dest(cssDest))
    .pipe(rename('wpgmp_vendors.min.css'))
    .pipe(cleanCSS())
    .pipe(gulp.dest(cssDest));
});


const backendCombinedJS = [
  `${jsDest}/wpgmp_leaflet.js`, 
  `${jsDest}/wpgmp_leaflet_plugins.js`, 
  `${jsDest}/wpgmp_maps.js`, 
];

// Task to combine and minify map provider scripts
gulp.task('combine-maps-js', function () {
  return gulp.src(backendCombinedJS)
    .pipe(concat('maps.js'))               // Combine all into maps.js
    .pipe(gulp.dest(jsDest))              // Output unminified version
    .pipe(rename('maps.min.js')) // Rename for minified version
    .pipe(terser())
    .pipe(gulp.dest(jsDest));             // Save maps.min.js
});

const backendCombinedCSS = [
  `${cssDest}/font_family.css`, 
  `${cssDest}/leaflet.css`, 
  `${cssDest}/wpgmp_vendors.css`, 
  `${cssDest}/wpgmp_templates.css`,
  `${cssDest}/wpgmp_leaflet_plugins.css`,
  `${cssDest}/wpgmp_infowindows.css`, 
  `${cssDest}/wpgmp_webfonts.css`,
  `${cssDest}/wpgmp_backend.css`, 

];

// Task to combine and minify map provider scripts
gulp.task('combine-backend-css', function () {
  return gulp.src(backendCombinedCSS)
    .pipe(concat('wpgmp_all_backend.css'))               // Combine all into maps.js
    .pipe(gulp.dest(cssDest))              // Output unminified version
    .pipe(rename('wpgmp_all_backend.min.css')) // Rename for minified version
    .pipe(cleanCSS())
    .pipe(gulp.dest(cssDest));             // Save maps.min.js
});

const frontendCombinedCSS = [
  `${cssDest}/wpgmp_frontend.css`, 
  `${cssDest}/wpgmp_leaflet_plugins.css`,
  `${cssDest}/wpgmp_infowindows.css`, 
  `${cssDest}/wpgmp_webfonts.css`,
  `${cssDest}/leaflet.css`
];

// Task to combine and minify map provider scripts
gulp.task('combine-frontend-css', function () {
  return gulp.src(frontendCombinedCSS)
    .pipe(concat('wpgmp_all_frontend.css'))               // Combine all into maps.js
    .pipe(gulp.dest(cssDest))              // Output unminified version
    .pipe(rename('wpgmp_all_frontend.min.css')) // Rename for minified version
    .pipe(cleanCSS())
    .pipe(gulp.dest(cssDest));             // Save maps.min.js
});

// Default task: Run all in sequence
gulp.task('default', gulp.series(
  'backend-scripts',
  'frontend-scripts',
  'minify-leafletjs',
  'leaflet-plugins-scripts',
  'leaflet-plugins-css',
  'minify-mapsjs',
  'backend-css',
  'minify-all-css',
  'combine-maps-js',
  'combine-backend-css',
  'combine-frontend-css'
));