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

const Seven = require("node-7z");
const which = require('which');
const path = require("path");
const fs = require("fs");

let sevenBin = null;

try {
  sevenBin = which.sync('7z')
} catch(e) {
  sevenBin = require('7zip-bin').path7za
  console.error("Couldn't find 7-zip installed. Using the 7zip-bin package, which uses an older version of 7-zip. Not all files may work properly.")
}

module.exports = {
  readFileContents: function(archive, filepath, dir, cb) {
    let stream = Seven.extract(archive, dir, {
      recursive: true,
      $cherryPick: filepath,
      $bin: sevenBin
    });
    let fn = path.basename(filepath);
    stream.on("end", ()=>{
      cb(fs.readFileSync(`${dir}/${fn}`, {encoding: 'utf8'}))
    });
  },
  extractSomeFiles: function(archive, list, dir, cb) {
    let stream = Seven.extract(archive, dir, {
      $cherryPick: list,
      $bin: sevenBin
    })
    stream.on('end', ()=>{
      cb()
    })
  },
  listFileContents: function(archive, cb) {
    let zip = Seven.list(archive, {
      $bin: sevenBin,
      alternateStreamExtract: true,
      alternateStreamReplace: true,
    });
    let entries = [];
    zip.on("data", (data) => {
      entries.push(data);
    });
    zip.on("end", () => {
      cb(entries);
    });
  },
};