UNPKG

@meteor-community/meteor-desktop

Version:
63 lines (61 loc) 8.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _path = _interopRequireDefault(require("path")); var _isbinaryfile = _interopRequireDefault(require("isbinaryfile")); var _shelljs = _interopRequireDefault(require("shelljs")); var _log = _interopRequireDefault(require("./log")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } _shelljs.default.config.fatal = true; /** * Experimental module for detecting modules containing binary files. * Based on the same functionality from electron-builder. * * @property {MeteorDesktop} $ * @class */ class BinaryModulesDetector { /** * @constructor */ constructor(nodeModulesPath) { this.log = new _log.default('binaryModulesDetector'); this.nodeModulesPath = nodeModulesPath; } // TODO: make asynchronous detect() { this.log.verbose('detecting node modules with binary files'); const files = _shelljs.default.ls('-RAl', this.nodeModulesPath); const extract = []; files.forEach(file => { const pathSplit = file.name.split(_path.default.posix.sep); const dir = pathSplit[0]; const filename = pathSplit.pop(); if (extract.indexOf(dir) === -1 && !BinaryModulesDetector.shouldBeIgnored(dir, filename)) { if (file.isFile()) { let shouldUnpack = false; if (file.name.endsWith('.dll') || file.name.endsWith('.exe') || file.name.endsWith('.dylib')) { shouldUnpack = true; } else if (_path.default.extname(file.name) === '') { shouldUnpack = _isbinaryfile.default.sync(_path.default.join(this.nodeModulesPath, file.name)); } if (shouldUnpack) { this.log.debug(`binary file: ${file.name}`); extract.push(dir); } } } }); if (extract.length > 0) { this.log.verbose(`detected modules to be extracted: ${extract.join(', ')}`); } return extract; } static shouldBeIgnored(dir, filename) { return dir === '.bin' || filename === '.DS_Store' || filename === 'LICENSE' || filename === 'README'; } } exports.default = BinaryModulesDetector; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2lzYmluYXJ5ZmlsZSIsIl9zaGVsbGpzIiwiX2xvZyIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsInNoZWxsIiwiY29uZmlnIiwiZmF0YWwiLCJCaW5hcnlNb2R1bGVzRGV0ZWN0b3IiLCJjb25zdHJ1Y3RvciIsIm5vZGVNb2R1bGVzUGF0aCIsImxvZyIsIkxvZyIsImRldGVjdCIsInZlcmJvc2UiLCJmaWxlcyIsImxzIiwiZXh0cmFjdCIsImZvckVhY2giLCJmaWxlIiwicGF0aFNwbGl0IiwibmFtZSIsInNwbGl0IiwicGF0aCIsInBvc2l4Iiwic2VwIiwiZGlyIiwiZmlsZW5hbWUiLCJwb3AiLCJpbmRleE9mIiwic2hvdWxkQmVJZ25vcmVkIiwiaXNGaWxlIiwic2hvdWxkVW5wYWNrIiwiZW5kc1dpdGgiLCJleHRuYW1lIiwiaXNCaW5hcnlGaWxlIiwic3luYyIsImpvaW4iLCJkZWJ1ZyIsInB1c2giLCJsZW5ndGgiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vbGliL2JpbmFyeU1vZHVsZXNEZXRlY3Rvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBpc0JpbmFyeUZpbGUgZnJvbSAnaXNiaW5hcnlmaWxlJztcbmltcG9ydCBzaGVsbCBmcm9tICdzaGVsbGpzJztcblxuaW1wb3J0IExvZyBmcm9tICcuL2xvZyc7XG5cbnNoZWxsLmNvbmZpZy5mYXRhbCA9IHRydWU7XG4vKipcbiAqIEV4cGVyaW1lbnRhbCBtb2R1bGUgZm9yIGRldGVjdGluZyBtb2R1bGVzIGNvbnRhaW5pbmcgYmluYXJ5IGZpbGVzLlxuICogQmFzZWQgb24gdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSBmcm9tIGVsZWN0cm9uLWJ1aWxkZXIuXG4gKlxuICogQHByb3BlcnR5IHtNZXRlb3JEZXNrdG9wfSAkXG4gKiBAY2xhc3NcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmluYXJ5TW9kdWxlc0RldGVjdG9yIHtcbiAgICAvKipcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihub2RlTW9kdWxlc1BhdGgpIHtcbiAgICAgICAgdGhpcy5sb2cgPSBuZXcgTG9nKCdiaW5hcnlNb2R1bGVzRGV0ZWN0b3InKTtcbiAgICAgICAgdGhpcy5ub2RlTW9kdWxlc1BhdGggPSBub2RlTW9kdWxlc1BhdGg7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogbWFrZSBhc3luY2hyb25vdXNcbiAgICBkZXRlY3QoKSB7XG4gICAgICAgIHRoaXMubG9nLnZlcmJvc2UoJ2RldGVjdGluZyBub2RlIG1vZHVsZXMgd2l0aCBiaW5hcnkgZmlsZXMnKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBzaGVsbC5scygnLVJBbCcsIHRoaXMubm9kZU1vZHVsZXNQYXRoKTtcblxuICAgICAgICBjb25zdCBleHRyYWN0ID0gW107XG5cbiAgICAgICAgZmlsZXMuZm9yRWFjaCgoZmlsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGF0aFNwbGl0ID0gZmlsZS5uYW1lLnNwbGl0KHBhdGgucG9zaXguc2VwKTtcbiAgICAgICAgICAgIGNvbnN0IGRpciA9IHBhdGhTcGxpdFswXTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gcGF0aFNwbGl0LnBvcCgpO1xuXG4gICAgICAgICAgICBpZiAoZXh0cmFjdC5pbmRleE9mKGRpcikgPT09IC0xICYmXG4gICAgICAgICAgICAgICAgIUJpbmFyeU1vZHVsZXNEZXRlY3Rvci5zaG91bGRCZUlnbm9yZWQoZGlyLCBmaWxlbmFtZSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGlmIChmaWxlLmlzRmlsZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzaG91bGRVbnBhY2sgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGUubmFtZS5lbmRzV2l0aCgnLmRsbCcpIHx8IGZpbGUubmFtZS5lbmRzV2l0aCgnLmV4ZScpIHx8IGZpbGUubmFtZS5lbmRzV2l0aCgnLmR5bGliJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZFVucGFjayA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGF0aC5leHRuYW1lKGZpbGUubmFtZSkgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRVbnBhY2sgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQmluYXJ5RmlsZS5zeW5jKHBhdGguam9pbih0aGlzLm5vZGVNb2R1bGVzUGF0aCwgZmlsZS5uYW1lKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZFVucGFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2cuZGVidWcoYGJpbmFyeSBmaWxlOiAke2ZpbGUubmFtZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3QucHVzaChkaXIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGV4dHJhY3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5sb2cudmVyYm9zZShgZGV0ZWN0ZWQgbW9kdWxlcyB0byBiZSBleHRyYWN0ZWQ6ICR7ZXh0cmFjdC5qb2luKCcsICcpfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBleHRyYWN0O1xuICAgIH1cblxuICAgIHN0YXRpYyBzaG91bGRCZUlnbm9yZWQoZGlyLCBmaWxlbmFtZSkge1xuICAgICAgICByZXR1cm4gZGlyID09PSAnLmJpbicgfHwgZmlsZW5hbWUgPT09ICcuRFNfU3RvcmUnIHx8IGZpbGVuYW1lID09PSAnTElDRU5TRScgfHwgZmlsZW5hbWUgPT09ICdSRUFETUUnO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsYUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUcsSUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQXdCLFNBQUFELHVCQUFBSyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRXhCRyxnQkFBSyxDQUFDQyxNQUFNLENBQUNDLEtBQUssR0FBRyxJQUFJO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2UsTUFBTUMscUJBQXFCLENBQUM7RUFDdkM7QUFDSjtBQUNBO0VBQ0lDLFdBQVdBLENBQUNDLGVBQWUsRUFBRTtJQUN6QixJQUFJLENBQUNDLEdBQUcsR0FBRyxJQUFJQyxZQUFHLENBQUMsdUJBQXVCLENBQUM7SUFDM0MsSUFBSSxDQUFDRixlQUFlLEdBQUdBLGVBQWU7RUFDMUM7O0VBRUE7RUFDQUcsTUFBTUEsQ0FBQSxFQUFHO0lBQ0wsSUFBSSxDQUFDRixHQUFHLENBQUNHLE9BQU8sQ0FBQywwQ0FBMEMsQ0FBQztJQUM1RCxNQUFNQyxLQUFLLEdBQUdWLGdCQUFLLENBQUNXLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDTixlQUFlLENBQUM7SUFFcEQsTUFBTU8sT0FBTyxHQUFHLEVBQUU7SUFFbEJGLEtBQUssQ0FBQ0csT0FBTyxDQUFFQyxJQUFJLElBQUs7TUFDcEIsTUFBTUMsU0FBUyxHQUFHRCxJQUFJLENBQUNFLElBQUksQ0FBQ0MsS0FBSyxDQUFDQyxhQUFJLENBQUNDLEtBQUssQ0FBQ0MsR0FBRyxDQUFDO01BQ2pELE1BQU1DLEdBQUcsR0FBR04sU0FBUyxDQUFDLENBQUMsQ0FBQztNQUN4QixNQUFNTyxRQUFRLEdBQUdQLFNBQVMsQ0FBQ1EsR0FBRyxDQUFDLENBQUM7TUFFaEMsSUFBSVgsT0FBTyxDQUFDWSxPQUFPLENBQUNILEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUMzQixDQUFDbEIscUJBQXFCLENBQUNzQixlQUFlLENBQUNKLEdBQUcsRUFBRUMsUUFBUSxDQUFDLEVBQ3ZEO1FBQ0UsSUFBSVIsSUFBSSxDQUFDWSxNQUFNLENBQUMsQ0FBQyxFQUFFO1VBQ2YsSUFBSUMsWUFBWSxHQUFHLEtBQUs7VUFDeEIsSUFBSWIsSUFBSSxDQUFDRSxJQUFJLENBQUNZLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSWQsSUFBSSxDQUFDRSxJQUFJLENBQUNZLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSWQsSUFBSSxDQUFDRSxJQUFJLENBQUNZLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMxRkQsWUFBWSxHQUFHLElBQUk7VUFDdkIsQ0FBQyxNQUFNLElBQUlULGFBQUksQ0FBQ1csT0FBTyxDQUFDZixJQUFJLENBQUNFLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN2Q1csWUFBWSxHQUNSRyxxQkFBWSxDQUFDQyxJQUFJLENBQUNiLGFBQUksQ0FBQ2MsSUFBSSxDQUFDLElBQUksQ0FBQzNCLGVBQWUsRUFBRVMsSUFBSSxDQUFDRSxJQUFJLENBQUMsQ0FBQztVQUNyRTtVQUNBLElBQUlXLFlBQVksRUFBRTtZQUNkLElBQUksQ0FBQ3JCLEdBQUcsQ0FBQzJCLEtBQUssQ0FBQyxnQkFBZ0JuQixJQUFJLENBQUNFLElBQUksRUFBRSxDQUFDO1lBQzNDSixPQUFPLENBQUNzQixJQUFJLENBQUNiLEdBQUcsQ0FBQztVQUNyQjtRQUNKO01BQ0o7SUFDSixDQUFDLENBQUM7SUFDRixJQUFJVCxPQUFPLENBQUN1QixNQUFNLEdBQUcsQ0FBQyxFQUFFO01BQ3BCLElBQUksQ0FBQzdCLEdBQUcsQ0FBQ0csT0FBTyxDQUFDLHFDQUFxQ0csT0FBTyxDQUFDb0IsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDL0U7SUFDQSxPQUFPcEIsT0FBTztFQUNsQjtFQUVBLE9BQU9hLGVBQWVBLENBQUNKLEdBQUcsRUFBRUMsUUFBUSxFQUFFO0lBQ2xDLE9BQU9ELEdBQUcsS0FBSyxNQUFNLElBQUlDLFFBQVEsS0FBSyxXQUFXLElBQUlBLFFBQVEsS0FBSyxTQUFTLElBQUlBLFFBQVEsS0FBSyxRQUFRO0VBQ3hHO0FBQ0o7QUFBQ2MsT0FBQSxDQUFBckMsT0FBQSxHQUFBSSxxQkFBQSIsImlnbm9yZUxpc3QiOltdfQ==