utils.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.changePermissions = exports.downloadFile = exports.getPath = void 0;
  4. const electron_1 = require("electron");
  5. const fs = require("fs");
  6. const path = require("path");
  7. const https = require("https");
  8. const getPath = () => {
  9. const savePath = electron_1.app.getPath('userData');
  10. return path.resolve(`${savePath}/extensions`);
  11. };
  12. exports.getPath = getPath;
  13. // Use https.get fallback for Electron < 1.4.5
  14. const request = electron_1.net ? electron_1.net.request : https.get;
  15. const downloadFile = (from, to) => {
  16. return new Promise((resolve, reject) => {
  17. const req = request(from);
  18. req.on('response', (res) => {
  19. // Shouldn't handle redirect with `electron.net`, this is for https.get fallback
  20. if (res.statusCode && res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
  21. return (0, exports.downloadFile)(res.headers.location, to).then(resolve).catch(reject);
  22. }
  23. res.pipe(fs.createWriteStream(to)).on('close', resolve);
  24. res.on('error', reject);
  25. });
  26. req.on('error', reject);
  27. req.end();
  28. });
  29. };
  30. exports.downloadFile = downloadFile;
  31. const changePermissions = (dir, mode) => {
  32. const files = fs.readdirSync(dir);
  33. files.forEach((file) => {
  34. const filePath = path.join(dir, file);
  35. fs.chmodSync(filePath, parseInt(`${mode}`, 8));
  36. if (fs.statSync(filePath).isDirectory()) {
  37. (0, exports.changePermissions)(filePath, mode);
  38. }
  39. });
  40. };
  41. exports.changePermissions = changePermissions;
  42. //# sourceMappingURL=utils.js.map