UNPKG

electron-compile

Version:

Electron supporting package to compile JS and CSS in Electron applications

61 lines (47 loc) 5.42 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = sanitizeFilePath; var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _lruCache = require('lru-cache'); var _lruCache2 = _interopRequireDefault(_lruCache); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const d = require('debug-electron')('electron-compile:sanitize-paths'); const realpathCache = (0, _lruCache2.default)({ max: 32 }); function cachedRealpath(p) { let ret = realpathCache.get(p); if (ret) return ret; ret = _fs2.default.realpathSync(p); d(`Cache miss for cachedRealpath: '${ p }' => '${ ret }'`); realpathCache.set(p, ret); return ret; } /** * Electron will sometimes hand us paths that don't match the platform if they * were derived from a URL (i.e. 'C:/Users/Paul/...'), whereas the cache will have * saved paths with backslashes. * * @private */ function sanitizeFilePath(file) { if (!file) return file; // NB: Some people add symlinks into system directories. node.js will internally // call realpath on paths that it finds, which will break our cache resolution. // We need to catch this scenario and fix it up. The tricky part is, some parts // of Electron will give us the pre-resolved paths, and others will give us the // post-resolved one. We need to handle both. let realFile = null; let parts = file.split(/[\\\/]app.asar[\\\/]/); if (!parts[1]) { // Not using an ASAR archive realFile = cachedRealpath(file); } else { // We do all this silliness to work around // https://github.com/atom/electron/issues/4610 realFile = `${ cachedRealpath(parts[0]) }/app.asar/${ parts[1] }`; } return realFile.replace(/[\\\/]/g, '/'); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zYW5pdGl6ZS1wYXRocy5qcyJdLCJuYW1lcyI6WyJzYW5pdGl6ZUZpbGVQYXRoIiwiZCIsInJlcXVpcmUiLCJyZWFscGF0aENhY2hlIiwibWF4IiwiY2FjaGVkUmVhbHBhdGgiLCJwIiwicmV0IiwiZ2V0IiwicmVhbHBhdGhTeW5jIiwic2V0IiwiZmlsZSIsInJlYWxGaWxlIiwicGFydHMiLCJzcGxpdCIsInJlcGxhY2UiXSwibWFwcGluZ3MiOiI7Ozs7O2tCQXdCd0JBLGdCOztBQXhCeEI7Ozs7QUFDQTs7Ozs7O0FBRUEsTUFBTUMsSUFBSUMsUUFBUSxnQkFBUixFQUEwQixpQ0FBMUIsQ0FBVjtBQUNBLE1BQU1DLGdCQUFnQix3QkFBUyxFQUFFQyxLQUFLLEVBQVAsRUFBVCxDQUF0Qjs7QUFFQSxTQUFTQyxjQUFULENBQXdCQyxDQUF4QixFQUEyQjtBQUN6QixNQUFJQyxNQUFNSixjQUFjSyxHQUFkLENBQWtCRixDQUFsQixDQUFWO0FBQ0EsTUFBSUMsR0FBSixFQUFTLE9BQU9BLEdBQVA7O0FBRVRBLFFBQU0sYUFBR0UsWUFBSCxDQUFnQkgsQ0FBaEIsQ0FBTjtBQUNBTCxJQUFHLG9DQUFrQ0ssQ0FBRSxXQUFRQyxHQUFJLElBQW5EOztBQUVBSixnQkFBY08sR0FBZCxDQUFrQkosQ0FBbEIsRUFBcUJDLEdBQXJCO0FBQ0EsU0FBT0EsR0FBUDtBQUNEOztBQUVEOzs7Ozs7O0FBT2UsU0FBU1AsZ0JBQVQsQ0FBMEJXLElBQTFCLEVBQWdDO0FBQzdDLE1BQUksQ0FBQ0EsSUFBTCxFQUFXLE9BQU9BLElBQVA7O0FBRVg7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxNQUFJQyxXQUFXLElBQWY7QUFDQSxNQUFJQyxRQUFRRixLQUFLRyxLQUFMLENBQVcsc0JBQVgsQ0FBWjtBQUNBLE1BQUksQ0FBQ0QsTUFBTSxDQUFOLENBQUwsRUFBZTtBQUNiO0FBQ0FELGVBQVdQLGVBQWVNLElBQWYsQ0FBWDtBQUNELEdBSEQsTUFHTztBQUNMO0FBQ0E7QUFDQUMsZUFBWSxJQUFFUCxlQUFlUSxNQUFNLENBQU4sQ0FBZixDQUF5QixlQUFZQSxNQUFNLENBQU4sQ0FBUyxHQUE1RDtBQUNEOztBQUVELFNBQU9ELFNBQVNHLE9BQVQsQ0FBaUIsU0FBakIsRUFBNEIsR0FBNUIsQ0FBUDtBQUNEIiwiZmlsZSI6InNhbml0aXplLXBhdGhzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzJztcclxuaW1wb3J0IExSVUNhY2hlIGZyb20gJ2xydS1jYWNoZSc7XHJcblxyXG5jb25zdCBkID0gcmVxdWlyZSgnZGVidWctZWxlY3Ryb24nKSgnZWxlY3Ryb24tY29tcGlsZTpzYW5pdGl6ZS1wYXRocycpO1xyXG5jb25zdCByZWFscGF0aENhY2hlID0gTFJVQ2FjaGUoeyBtYXg6IDMyIH0pO1xyXG5cclxuZnVuY3Rpb24gY2FjaGVkUmVhbHBhdGgocCkge1xyXG4gIGxldCByZXQgPSByZWFscGF0aENhY2hlLmdldChwKTtcclxuICBpZiAocmV0KSByZXR1cm4gcmV0O1xyXG5cclxuICByZXQgPSBmcy5yZWFscGF0aFN5bmMocCk7XHJcbiAgZChgQ2FjaGUgbWlzcyBmb3IgY2FjaGVkUmVhbHBhdGg6ICcke3B9JyA9PiAnJHtyZXR9J2ApO1xyXG5cclxuICByZWFscGF0aENhY2hlLnNldChwLCByZXQpO1xyXG4gIHJldHVybiByZXQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBFbGVjdHJvbiB3aWxsIHNvbWV0aW1lcyBoYW5kIHVzIHBhdGhzIHRoYXQgZG9uJ3QgbWF0Y2ggdGhlIHBsYXRmb3JtIGlmIHRoZXlcclxuICogd2VyZSBkZXJpdmVkIGZyb20gYSBVUkwgKGkuZS4gJ0M6L1VzZXJzL1BhdWwvLi4uJyksIHdoZXJlYXMgdGhlIGNhY2hlIHdpbGwgaGF2ZVxyXG4gKiBzYXZlZCBwYXRocyB3aXRoIGJhY2tzbGFzaGVzLlxyXG4gKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2FuaXRpemVGaWxlUGF0aChmaWxlKSB7XHJcbiAgaWYgKCFmaWxlKSByZXR1cm4gZmlsZTtcclxuXHJcbiAgLy8gTkI6IFNvbWUgcGVvcGxlIGFkZCBzeW1saW5rcyBpbnRvIHN5c3RlbSBkaXJlY3Rvcmllcy4gbm9kZS5qcyB3aWxsIGludGVybmFsbHlcclxuICAvLyBjYWxsIHJlYWxwYXRoIG9uIHBhdGhzIHRoYXQgaXQgZmluZHMsIHdoaWNoIHdpbGwgYnJlYWsgb3VyIGNhY2hlIHJlc29sdXRpb24uXHJcbiAgLy8gV2UgbmVlZCB0byBjYXRjaCB0aGlzIHNjZW5hcmlvIGFuZCBmaXggaXQgdXAuIFRoZSB0cmlja3kgcGFydCBpcywgc29tZSBwYXJ0c1xyXG4gIC8vIG9mIEVsZWN0cm9uIHdpbGwgZ2l2ZSB1cyB0aGUgcHJlLXJlc29sdmVkIHBhdGhzLCBhbmQgb3RoZXJzIHdpbGwgZ2l2ZSB1cyB0aGVcclxuICAvLyBwb3N0LXJlc29sdmVkIG9uZS4gV2UgbmVlZCB0byBoYW5kbGUgYm90aC5cclxuXHJcbiAgbGV0IHJlYWxGaWxlID0gbnVsbDtcclxuICBsZXQgcGFydHMgPSBmaWxlLnNwbGl0KC9bXFxcXFxcL11hcHAuYXNhcltcXFxcXFwvXS8pO1xyXG4gIGlmICghcGFydHNbMV0pIHtcclxuICAgIC8vIE5vdCB1c2luZyBhbiBBU0FSIGFyY2hpdmVcclxuICAgIHJlYWxGaWxlID0gY2FjaGVkUmVhbHBhdGgoZmlsZSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIC8vIFdlIGRvIGFsbCB0aGlzIHNpbGxpbmVzcyB0byB3b3JrIGFyb3VuZFxyXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F0b20vZWxlY3Ryb24vaXNzdWVzLzQ2MTBcclxuICAgIHJlYWxGaWxlID0gYCR7Y2FjaGVkUmVhbHBhdGgocGFydHNbMF0pfS9hcHAuYXNhci8ke3BhcnRzWzFdfWA7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gcmVhbEZpbGUucmVwbGFjZSgvW1xcXFxcXC9dL2csICcvJyk7XHJcbn1cclxuIl19