UNPKG

electron-compile

Version:

Electron supporting package to compile JS and CSS in Electron applications

61 lines (47 loc) 5.27 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 }; } var d = require('debug-electron')('electron-compile:sanitize-paths'); var realpathCache = (0, _lruCache2.default)({ max: 32 }); function cachedRealpath(p) { var 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. var realFile = null; var 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zYW5pdGl6ZS1wYXRocy5qcyJdLCJuYW1lcyI6WyJzYW5pdGl6ZUZpbGVQYXRoIiwiZCIsInJlcXVpcmUiLCJyZWFscGF0aENhY2hlIiwibWF4IiwiY2FjaGVkUmVhbHBhdGgiLCJwIiwicmV0IiwiZ2V0IiwicmVhbHBhdGhTeW5jIiwic2V0IiwiZmlsZSIsInJlYWxGaWxlIiwicGFydHMiLCJzcGxpdCIsInJlcGxhY2UiXSwibWFwcGluZ3MiOiI7Ozs7O2tCQXdCd0JBLGdCOztBQXhCeEI7Ozs7QUFDQTs7Ozs7O0FBRUEsSUFBTUMsSUFBSUMsUUFBUSxnQkFBUixFQUEwQixpQ0FBMUIsQ0FBVjtBQUNBLElBQU1DLGdCQUFnQix3QkFBUyxFQUFFQyxLQUFLLEVBQVAsRUFBVCxDQUF0Qjs7QUFFQSxTQUFTQyxjQUFULENBQXdCQyxDQUF4QixFQUEyQjtBQUN6QixNQUFJQyxNQUFNSixjQUFjSyxHQUFkLENBQWtCRixDQUFsQixDQUFWO0FBQ0EsTUFBSUMsR0FBSixFQUFTLE9BQU9BLEdBQVA7O0FBRVRBLFFBQU0sYUFBR0UsWUFBSCxDQUFnQkgsQ0FBaEIsQ0FBTjtBQUNBTCwwQ0FBcUNLLENBQXJDLGdCQUErQ0MsR0FBL0M7O0FBRUFKLGdCQUFjTyxHQUFkLENBQWtCSixDQUFsQixFQUFxQkMsR0FBckI7QUFDQSxTQUFPQSxHQUFQO0FBQ0Q7O0FBRUQ7Ozs7Ozs7QUFPZSxTQUFTUCxnQkFBVCxDQUEwQlcsSUFBMUIsRUFBZ0M7QUFDN0MsTUFBSSxDQUFDQSxJQUFMLEVBQVcsT0FBT0EsSUFBUDs7QUFFWDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQUlDLFdBQVcsSUFBZjtBQUNBLE1BQUlDLFFBQVFGLEtBQUtHLEtBQUwsQ0FBVyxzQkFBWCxDQUFaO0FBQ0EsTUFBSSxDQUFDRCxNQUFNLENBQU4sQ0FBTCxFQUFlO0FBQ2I7QUFDQUQsZUFBV1AsZUFBZU0sSUFBZixDQUFYO0FBQ0QsR0FIRCxNQUdPO0FBQ0w7QUFDQTtBQUNBQyxlQUFjUCxlQUFlUSxNQUFNLENBQU4sQ0FBZixDQUFkLGtCQUFtREEsTUFBTSxDQUFOLENBQW5EO0FBQ0Q7O0FBRUQsU0FBT0QsU0FBU0csT0FBVCxDQUFpQixTQUFqQixFQUE0QixHQUE1QixDQUFQO0FBQ0QiLCJmaWxlIjoic2FuaXRpemUtcGF0aHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IExSVUNhY2hlIGZyb20gJ2xydS1jYWNoZSc7XG5cbmNvbnN0IGQgPSByZXF1aXJlKCdkZWJ1Zy1lbGVjdHJvbicpKCdlbGVjdHJvbi1jb21waWxlOnNhbml0aXplLXBhdGhzJyk7XG5jb25zdCByZWFscGF0aENhY2hlID0gTFJVQ2FjaGUoeyBtYXg6IDMyIH0pO1xuXG5mdW5jdGlvbiBjYWNoZWRSZWFscGF0aChwKSB7XG4gIGxldCByZXQgPSByZWFscGF0aENhY2hlLmdldChwKTtcbiAgaWYgKHJldCkgcmV0dXJuIHJldDtcblxuICByZXQgPSBmcy5yZWFscGF0aFN5bmMocCk7XG4gIGQoYENhY2hlIG1pc3MgZm9yIGNhY2hlZFJlYWxwYXRoOiAnJHtwfScgPT4gJyR7cmV0fSdgKTtcblxuICByZWFscGF0aENhY2hlLnNldChwLCByZXQpO1xuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIEVsZWN0cm9uIHdpbGwgc29tZXRpbWVzIGhhbmQgdXMgcGF0aHMgdGhhdCBkb24ndCBtYXRjaCB0aGUgcGxhdGZvcm0gaWYgdGhleVxuICogd2VyZSBkZXJpdmVkIGZyb20gYSBVUkwgKGkuZS4gJ0M6L1VzZXJzL1BhdWwvLi4uJyksIHdoZXJlYXMgdGhlIGNhY2hlIHdpbGwgaGF2ZVxuICogc2F2ZWQgcGF0aHMgd2l0aCBiYWNrc2xhc2hlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzYW5pdGl6ZUZpbGVQYXRoKGZpbGUpIHtcbiAgaWYgKCFmaWxlKSByZXR1cm4gZmlsZTtcblxuICAvLyBOQjogU29tZSBwZW9wbGUgYWRkIHN5bWxpbmtzIGludG8gc3lzdGVtIGRpcmVjdG9yaWVzLiBub2RlLmpzIHdpbGwgaW50ZXJuYWxseVxuICAvLyBjYWxsIHJlYWxwYXRoIG9uIHBhdGhzIHRoYXQgaXQgZmluZHMsIHdoaWNoIHdpbGwgYnJlYWsgb3VyIGNhY2hlIHJlc29sdXRpb24uXG4gIC8vIFdlIG5lZWQgdG8gY2F0Y2ggdGhpcyBzY2VuYXJpbyBhbmQgZml4IGl0IHVwLiBUaGUgdHJpY2t5IHBhcnQgaXMsIHNvbWUgcGFydHNcbiAgLy8gb2YgRWxlY3Ryb24gd2lsbCBnaXZlIHVzIHRoZSBwcmUtcmVzb2x2ZWQgcGF0aHMsIGFuZCBvdGhlcnMgd2lsbCBnaXZlIHVzIHRoZVxuICAvLyBwb3N0LXJlc29sdmVkIG9uZS4gV2UgbmVlZCB0byBoYW5kbGUgYm90aC5cblxuICBsZXQgcmVhbEZpbGUgPSBudWxsO1xuICBsZXQgcGFydHMgPSBmaWxlLnNwbGl0KC9bXFxcXFxcL11hcHAuYXNhcltcXFxcXFwvXS8pO1xuICBpZiAoIXBhcnRzWzFdKSB7XG4gICAgLy8gTm90IHVzaW5nIGFuIEFTQVIgYXJjaGl2ZVxuICAgIHJlYWxGaWxlID0gY2FjaGVkUmVhbHBhdGgoZmlsZSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gV2UgZG8gYWxsIHRoaXMgc2lsbGluZXNzIHRvIHdvcmsgYXJvdW5kXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F0b20vZWxlY3Ryb24vaXNzdWVzLzQ2MTBcbiAgICByZWFsRmlsZSA9IGAke2NhY2hlZFJlYWxwYXRoKHBhcnRzWzBdKX0vYXBwLmFzYXIvJHtwYXJ0c1sxXX1gO1xuICB9XG5cbiAgcmV0dXJuIHJlYWxGaWxlLnJlcGxhY2UoL1tcXFxcXFwvXS9nLCAnLycpO1xufVxuIl19