UNPKG

childprocess-messageport

Version:

Turns ChildProcess IPC into MessagePort

57 lines (46 loc) 1.51 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _websocketUtil = require('websocket-util'); class ChildProcessMessagePort extends _websocketUtil.HTMLEventEmitter { constructor(childProcess) { super(); this.childProcess = childProcess; this.handleDisconnect = this.handleDisconnect.bind(this); this.handleMessage = this.handleMessage.bind(this); this.origin = `child-process://${this.childProcess.pid}/`; ['error', 'message', 'messageerror'].forEach(name => (0, _websocketUtil.hoistLegacyEventHandler)(this, name)); childProcess.once('disconnect', this.handleDisconnect); childProcess.on('message', this.handleMessage); } handleDisconnect() { this.childProcess.removeListener('disconnect', this.handleDisconnect); this.childProcess.removeListener('message', this.handleMessage); } handleMessage(data) { let deserialized; try { deserialized = (0, _websocketUtil.deserialize)(data); } catch (err) { return this.emit('messageerror', { origin: this.origin, source: this, type: 'messageerror' }); } this.emit('message', { data: deserialized, origin: this.origin, source: this, type: 'message' }); } postMessage(data) { this.childProcess.send((0, _websocketUtil.serialize)(data), error => { error && this.emit('error', { error }); }); } } exports.default = ChildProcessMessagePort; //# sourceMappingURL=index.js.map