@meteor-community/meteor-desktop
Version:
Build a Meteor's desktop client with hot code push.
63 lines (61 loc) • 8.52 kB
JavaScript
;
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==