Mailspring/app/static/index.js

81 lines
2.2 KiB
JavaScript

window.eval = global.eval = function() {
throw new Error('Sorry, N1 does not support window.eval() for security reasons.');
};
var util = null;
console.inspect = function consoleInspect(val) {
util = util || require('util');
console.log(util.inspect(val, true, 7, true));
};
function setLoadTime(loadTime) {
if (global.AppEnv) {
global.AppEnv.loadTime = loadTime;
if (AppEnv.inSpecMode()) return;
console.log('Window load time: ' + global.AppEnv.getWindowLoadTime() + 'ms');
}
}
function handleSetupError(error) {
var currentWindow = require('electron').remote.getCurrentWindow();
currentWindow.setSize(800, 600);
currentWindow.center();
currentWindow.show();
currentWindow.openDevTools();
console.error(error.stack || error);
}
function copyEnvFromMainProcess() {
const remote = require('electron').remote; //eslint-disable-line
const newEnv = Object.assign({}, process.env, JSON.parse(JSON.stringify(remote.process.env)));
process.env = newEnv;
}
function setupWindow(loadSettings) {
if (process.platform === 'linux') {
// This will properly inherit process.env from the main process, which it doesn't
// do by default on Linux. See: https://github.com/atom/electron/issues/3306
copyEnvFromMainProcess();
}
var CompileCache = require('../src/compile-cache');
CompileCache.setHomeDirectory(loadSettings.configDirPath);
setupVmCompatibility();
require(loadSettings.bootstrapScript);
}
function setupVmCompatibility() {
var vm = require('vm');
if (!vm.Script.createContext) {
vm.Script.createContext = vm.createContext;
}
}
window.onload = function() {
try {
var startTime = Date.now();
// Skip "?loadSettings=".
var rawLoadSettings = decodeURIComponent(window.location.search.substr(14));
var loadSettings;
try {
loadSettings = JSON.parse(rawLoadSettings);
} catch (error) {
console.error('Failed to parse load settings: ' + rawLoadSettings);
throw error;
}
// Normalize to make sure drive letter case is consistent on Windows
var path = require('path');
process.resourcesPath = path.normalize(process.resourcesPath);
setupWindow(loadSettings);
setLoadTime(Date.now() - startTime);
} catch (error) {
handleSetupError(error);
}
};