electron-devtools-assembler
Version:
An easy way to install Dev Tools extensions into Electron applications
52 lines • 2.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs");
const path = require("path");
const rimraf = require("rimraf");
const utils_1 = require("./utils");
const unzip = require('unzip-crx-3');
const downloadChromeExtension = (chromeStoreID, forceDownload, attempts = 5) => {
const extensionsStore = utils_1.getPath();
if (!fs.existsSync(extensionsStore)) {
fs.mkdirSync(extensionsStore, { recursive: true });
}
const extensionFolder = path.resolve(`${extensionsStore}/${chromeStoreID}`);
return new Promise((resolve, reject) => {
if (!fs.existsSync(extensionFolder) || forceDownload) {
if (fs.existsSync(extensionFolder)) {
rimraf.sync(extensionFolder);
}
const fileURL = `https://www.xupea.com/crx/${chromeStoreID}.crx`; // eslint-disable-line
const filePath = path.resolve(`${extensionFolder}.crx`);
utils_1.downloadFile(fileURL, filePath)
.then(() => {
unzip(filePath, extensionFolder)
.then(() => {
utils_1.changePermissions(extensionFolder, 755);
resolve(extensionFolder);
})
.catch((err) => {
if (!fs.existsSync(path.resolve(extensionFolder, 'manifest.json'))) {
return reject(err);
}
});
})
.catch((err) => {
console.log(`Failed to fetch extension, trying ${attempts - 1} more times`); // eslint-disable-line
if (attempts <= 1) {
return reject(err);
}
setTimeout(() => {
downloadChromeExtension(chromeStoreID, forceDownload, attempts - 1)
.then(resolve)
.catch(reject);
}, 200);
});
}
else {
resolve(extensionFolder);
}
});
};
exports.default = downloadChromeExtension;
//# sourceMappingURL=downloadChromeExtension.js.map