UNPKG

1.31 kBJavaScriptView Raw
1#!/usr/bin/env node
2
3var JSONSerializer = require('./JSONSerializer');
4var HappyFakeCompiler = require('./HappyFakeCompiler');
5var HappyWorker = require('./HappyWorker');
6
7if (process.argv[1] === __filename) {
8 startAsWorker();
9}
10
11function startAsWorker() {
12 HappyWorkerChannel(String(process.argv[2]), process);
13}
14
15function HappyWorkerChannel(id, stream) {
16 var fakeCompiler = new HappyFakeCompiler(id, stream.send.bind(stream));
17 var worker = new HappyWorker({ compiler: fakeCompiler });
18
19 stream.on('message', accept);
20 stream.send({ name: 'READY' });
21
22 function accept(message) {
23 if (message.name === 'COMPILE') {
24 worker.compile(message.data, function(result) {
25 stream.send({
26 name: 'COMPILED',
27 sourcePath: result.sourcePath,
28 compiledPath: result.compiledPath,
29 success: result.success
30 });
31 });
32 }
33 else if (message.name === 'COMPILER_RESPONSE') {
34 fakeCompiler._handleResponse(message.data);
35 }
36 else if (message.name === 'CONFIGURE') {
37 fakeCompiler.configure(JSONSerializer.deserialize(message.data.compilerOptions));
38
39 stream.send({
40 name: 'CONFIGURE_DONE'
41 });
42 }
43 else {
44 console.warn('ignoring unknown message:', message);
45 }
46 }
47}
48
49module.exports = HappyWorkerChannel;
\No newline at end of file