add eventWrapper not tested

This commit is contained in:
Jonathan Rainville 2018-05-15 17:08:08 -04:00
parent 36850895cf
commit 3c0fda5a40
5 changed files with 60 additions and 5 deletions

View File

@ -16,11 +16,18 @@
"contractFilesChanged": "contractFilesChanged", "contractFilesChanged": "contractFilesChanged",
"contractConfigChanged": "contractConfigChanged" "contractConfigChanged": "contractConfigChanged"
}, },
"process": {
"log": "log",
"events": {
"on": "on",
"request": "request",
"response": "response"
}
},
"pipeline": { "pipeline": {
"init": "init", "init": "init",
"build": "build", "build": "build",
"initiated": "initiated", "initiated": "initiated",
"built": "built", "built": "built"
"log": "log"
} }
} }

View File

@ -79,7 +79,7 @@ class Pipeline {
return next(msg.error); return next(msg.error);
} }
if (msg.result === constants.pipeline.log) { if (msg.result === constants.process.log) {
if (self.logger[msg.type]) { if (self.logger[msg.type]) {
return self.logger[msg.type](self.normalizeInput(msg.message)); return self.logger[msg.type](self.normalizeInput(msg.message));
} }

View File

@ -4,7 +4,7 @@ const utils = require('../utils/utils');
const fs = require('../core/fs'); const fs = require('../core/fs');
const constants = require('../constants'); const constants = require('../constants');
const HardSourceWebpackPlugin = require('hard-source-webpack-plugin'); const HardSourceWebpackPlugin = require('hard-source-webpack-plugin');
const ProcessWrapper = require('../core/processWrapper'); const ProcessWrapper = require('../process/processWrapper');
let webpackProcess; let webpackProcess;

View File

@ -0,0 +1,48 @@
const constants = require('../constants');
class Events {
constructor() {
this.eventId = 0;
this.subscribedEvents = {};
this.listenToParentProcess();
}
listenToParentProcess() {
process.on('message', (msg) => {
if (!msg.event || msg.event !== constants.process.events.response) {
return;
}
if (!this.subscribedEvents[msg.eventId]) {
return;
}
this.subscribedEvents[msg.eventId](msg.result);
});
}
sendEvent() {
const eventType = arguments[0];
const requestName = arguments[1];
let args = [].slice.call(arguments, 2);
this.eventId++;
this.subscribedEvents[this.eventId] = args[args.length - 1];
args = args.splice(0, args.length - 2);
process.send({
event: eventType,
requestName,
args,
eventId: this.eventId
});
}
on() {
this.sendEvent(constants.process.events.on, ...arguments);
}
request() {
this.sendEvent(constants.process.events.request, ...arguments);
}
}
module.exports = Events;

View File

@ -30,7 +30,7 @@ class ProcessWrapper {
if (messages[0].indexOf('hard-source')) { if (messages[0].indexOf('hard-source')) {
return; return;
} }
process.send({result: constants.pipeline.log, message: messages, type}); process.send({result: constants.process.log, message: messages, type});
} }
} }