🏡 index : github.com/captn3m0/which-electron.git

// finds specific files from a list
const path = require("path");
const isDirectory = require('./utils').isDirectory;

module.exports = {
  // Finds the electron asar file, if we can
  asar: function(entries) {
    return entries
      .filter((e) => {
        return (
          isDirectory(e.attributes) == false &&
          path.basename(e.file) == "electron.asar"
        );
      })
      .map((e) => e.file);
  },
  binary: function(entries) {
    entries = entries.sort((a, b) => b.size - a.size);
    for (const entry of entries) {
      if (isDirectory(entry.attributes)) {
        continue;
      }
      let ext = path.extname(entry.file);
      let size = entry.size;
      // Return the first exe file
      if (ext == ".exe") {
        return entry.file;
      } else if (ext == "") {
        // or the largest file with no extension
        return entry.file;
      }
    }
  },

  version: function(entries) {
    return entries
      .filter((e) => {
        return isDirectory(e.attributes) == false && path.basename(e.file) == "version";
      })
      .map((e) => e.file);
  },

  findElectronPackageInsideNodeModules: function(entries) {
    return entries
      .filter((e) => {
        return isDirectory(e.attributes) == false && e.file.match(/node_modules\/electron\/package\.json$/);
      })
      .map((e) => e.file);
  },

  // Return a list of files that might be worth fingerprinting
  fingerprintable: function(entries) {
    return entries.filter((e) =>{
      if (isDirectory(e.attributes)) {
        return false;
      }
      if (!e.file) {
        return false;
      }
      let ext = path.extname(e.file);
      if (['.h', '.dll', '.bin', '.asar', '.dylib', '.so', '.exe'].indexOf(ext) !== -1) {
        return true
      }
      let b = path.basename(e.file);

      if (['electron framework', 'squirrel', 'electron', 'electron helper', 'chrome_100_percent', 'chrome_200_percent'].indexOf(b)!== -1) {
        return true;
      }

      return false;
    })
    .map((e)=>e.file)
  }
};