mirror of
https://github.com/atom/atom.git
synced 2026-01-15 01:48:15 -05:00
91 lines
2.1 KiB
JavaScript
91 lines
2.1 KiB
JavaScript
const { userAgent } = process.env;
|
|
const [compileCachePath, taskPath] = process.argv.slice(2);
|
|
|
|
const CompileCache = require('./compile-cache');
|
|
CompileCache.setCacheDirectory(compileCachePath);
|
|
CompileCache.install(`${process.resourcesPath}`, require);
|
|
|
|
const setupGlobals = function() {
|
|
global.attachEvent = function() {};
|
|
const console = {
|
|
warn() {
|
|
return global.emit('task:warn', ...arguments);
|
|
},
|
|
log() {
|
|
return global.emit('task:log', ...arguments);
|
|
},
|
|
error() {
|
|
return global.emit('task:error', ...arguments);
|
|
},
|
|
trace() {}
|
|
};
|
|
global.__defineGetter__('console', () => console);
|
|
|
|
global.document = {
|
|
createElement() {
|
|
return {
|
|
setAttribute() {},
|
|
getElementsByTagName() {
|
|
return [];
|
|
},
|
|
appendChild() {}
|
|
};
|
|
},
|
|
documentElement: {
|
|
insertBefore() {},
|
|
removeChild() {}
|
|
},
|
|
getElementById() {
|
|
return {};
|
|
},
|
|
createComment() {
|
|
return {};
|
|
},
|
|
createDocumentFragment() {
|
|
return {};
|
|
}
|
|
};
|
|
|
|
global.emit = (event, ...args) => process.send({ event, args });
|
|
global.navigator = { userAgent };
|
|
return (global.window = global);
|
|
};
|
|
|
|
const handleEvents = function() {
|
|
process.on('uncaughtException', error =>
|
|
console.error(error.message, error.stack)
|
|
);
|
|
|
|
return process.on('message', function({ event, args } = {}) {
|
|
if (event !== 'start') {
|
|
return;
|
|
}
|
|
|
|
let isAsync = false;
|
|
const async = function() {
|
|
isAsync = true;
|
|
return result => global.emit('task:completed', result);
|
|
};
|
|
const result = handler.bind({ async })(...args);
|
|
if (!isAsync) {
|
|
return global.emit('task:completed', result);
|
|
}
|
|
});
|
|
};
|
|
|
|
const setupDeprecations = function() {
|
|
const Grim = require('grim');
|
|
return Grim.on('updated', function() {
|
|
const deprecations = Grim.getDeprecations().map(deprecation =>
|
|
deprecation.serialize()
|
|
);
|
|
Grim.clearDeprecations();
|
|
return global.emit('task:deprecations', deprecations);
|
|
});
|
|
};
|
|
|
|
setupGlobals();
|
|
handleEvents();
|
|
setupDeprecations();
|
|
const handler = require(taskPath);
|