mirror of
https://github.com/atom/atom.git
synced 2026-01-23 05:48:10 -05:00
69 lines
1.9 KiB
JavaScript
69 lines
1.9 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)
|