sugo-actor
Version:
Actor component of SUGOS.
152 lines (115 loc) • 9.08 kB
JavaScript
/**
* Pipe emitter
* @abstract
* @class PipeEmitter
*/
'use strict';
var _Object$assign = require("@babel/runtime/core-js/object/assign");
var _typeof = require("@babel/runtime/helpers/typeof");
var _Object$getPrototypeOf = require("@babel/runtime/core-js/object/get-prototype-of");
var _classCallCheck = require("@babel/runtime/helpers/classCallCheck");
var _createClass = require("@babel/runtime/helpers/createClass");
var _possibleConstructorReturn = require("@babel/runtime/helpers/possibleConstructorReturn");
var _get = require("@babel/runtime/helpers/get");
var _inherits = require("@babel/runtime/helpers/inherits");
var _require = require('events'),
EventEmitter = _require.EventEmitter;
var _require2 = require('sg-socket-constants'),
RemoteEvents = _require2.RemoteEvents;
var PIPE = RemoteEvents.PIPE;
var _require3 = require('sg-serializer'),
parse = _require3.parse,
format = _require3.format;
/** @lends PipeEmitter */
var PipeEmitter =
/*#__PURE__*/
function (_EventEmitter) {
_inherits(PipeEmitter, _EventEmitter);
function PipeEmitter(socket) {
var _this;
_classCallCheck(this, PipeEmitter);
_this = _possibleConstructorReturn(this, (PipeEmitter.__proto__ || _Object$getPrototypeOf(PipeEmitter)).call(this));
_this.socket = socket;
_this.opened = false;
_this.pipeHandler = function (received) {
return _this.pipeReceived(received);
};
return _this;
}
_createClass(PipeEmitter, [{
key: "pipeReceived",
value: function pipeReceived(received) {
var hit = this.shouldPipe(received);
if (!hit) {
return;
}
var event = received.event,
data = received.data,
meta = received.meta;
var types = meta.types;
if (types) {
data = parse(data, types, {});
}
_get(PipeEmitter.prototype.__proto__ || _Object$getPrototypeOf(PipeEmitter.prototype), "emit", this).call(this, event, data);
}
}, {
key: "pipeEmit",
value: function pipeEmit(event, data) {
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
if (this.opened) {
var socket = this.socket;
var _options$only = options.only,
only = _options$only === void 0 ? null : _options$only,
_options$defaults = options.defaults,
defaults = _options$defaults === void 0 ? {} : _options$defaults;
var isObject = _typeof(data) === 'object';
var _ref = isObject ? format(data) : {
payload: data
},
payload = _ref.payload,
types = _ref.meta;
var piping = _Object$assign({}, defaults, {
event: event,
data: payload,
meta: {
types: types
},
only: only
});
socket.emit(PIPE, piping);
}
_get(PipeEmitter.prototype.__proto__ || _Object$getPrototypeOf(PipeEmitter.prototype), "emit", this).call(this, event, data);
}
/**
* Open the pipe.
*/
}, {
key: "open",
value: function open() {
var socket = this.socket,
pipeHandler = this.pipeHandler;
if (this.opened) {
return;
}
this.opened = true;
socket.on(PIPE, pipeHandler);
}
/**
* Close the pipe.
*/
}, {
key: "close",
value: function close() {
var socket = this.socket,
pipeHandler = this.pipeHandler;
if (!this.opened) {
return;
}
this.opened = false;
socket.off(PIPE, pipeHandler);
}
}]);
return PipeEmitter;
}(EventEmitter);
module.exports = PipeEmitter;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtaXR0aW5nL3BpcGVfZW1pdHRlci5qcyJdLCJuYW1lcyI6WyJyZXF1aXJlIiwiRXZlbnRFbWl0dGVyIiwiUmVtb3RlRXZlbnRzIiwiUElQRSIsInBhcnNlIiwiZm9ybWF0IiwiUGlwZUVtaXR0ZXIiLCJzb2NrZXQiLCJvcGVuZWQiLCJwaXBlSGFuZGxlciIsInJlY2VpdmVkIiwicGlwZVJlY2VpdmVkIiwiaGl0Iiwic2hvdWxkUGlwZSIsImV2ZW50IiwiZGF0YSIsIm1ldGEiLCJ0eXBlcyIsIm9wdGlvbnMiLCJvbmx5IiwiZGVmYXVsdHMiLCJpc09iamVjdCIsInBheWxvYWQiLCJwaXBpbmciLCJlbWl0Iiwib24iLCJvZmYiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFLQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O2VBRXlCQSxRQUFRLFFBQVIsQztJQUFqQkMsWSxZQUFBQSxZOztnQkFDaUJELFFBQVEscUJBQVIsQztJQUFqQkUsWSxhQUFBQSxZOztJQUNBQyxJLEdBQVNELFksQ0FBVEMsSTs7Z0JBQ2tCSCxRQUFRLGVBQVIsQztJQUFsQkksSyxhQUFBQSxLO0lBQU9DLE0sYUFBQUEsTTtBQUVmOzs7SUFDTUMsVzs7Ozs7QUFDSix1QkFBYUMsTUFBYixFQUFxQjtBQUFBOztBQUFBOztBQUNuQjtBQUNBLFVBQUtBLE1BQUwsR0FBY0EsTUFBZDtBQUNBLFVBQUtDLE1BQUwsR0FBYyxLQUFkOztBQUVBLFVBQUtDLFdBQUwsR0FBbUIsVUFBQ0MsUUFBRDtBQUFBLGFBQWMsTUFBS0MsWUFBTCxDQUFrQkQsUUFBbEIsQ0FBZDtBQUFBLEtBQW5COztBQUxtQjtBQU1wQjs7OztpQ0FFYUEsUSxFQUFVO0FBQ3RCLFVBQUlFLE1BQU0sS0FBS0MsVUFBTCxDQUFnQkgsUUFBaEIsQ0FBVjs7QUFDQSxVQUFJLENBQUNFLEdBQUwsRUFBVTtBQUNSO0FBQ0Q7O0FBSnFCLFVBS2hCRSxLQUxnQixHQUtNSixRQUxOLENBS2hCSSxLQUxnQjtBQUFBLFVBS1RDLElBTFMsR0FLTUwsUUFMTixDQUtUSyxJQUxTO0FBQUEsVUFLSEMsSUFMRyxHQUtNTixRQUxOLENBS0hNLElBTEc7QUFBQSxVQU1oQkMsS0FOZ0IsR0FNTkQsSUFOTSxDQU1oQkMsS0FOZ0I7O0FBT3RCLFVBQUlBLEtBQUosRUFBVztBQUNURixlQUFPWCxNQUFNVyxJQUFOLEVBQVlFLEtBQVosRUFBbUIsRUFBbkIsQ0FBUDtBQUNEOztBQUNELHNIQUFXSCxLQUFYLEVBQWtCQyxJQUFsQjtBQUNEOzs7NkJBRVNELEssRUFBT0MsSSxFQUFvQjtBQUFBLFVBQWRHLE9BQWMsdUVBQUosRUFBSTs7QUFDbkMsVUFBSSxLQUFLVixNQUFULEVBQWlCO0FBQUEsWUFDVEQsTUFEUyxHQUNFLElBREYsQ0FDVEEsTUFEUztBQUFBLDRCQUtYVyxPQUxXLENBR2JDLElBSGE7QUFBQSxZQUdiQSxJQUhhLDhCQUdOLElBSE07QUFBQSxnQ0FLWEQsT0FMVyxDQUliRSxRQUphO0FBQUEsWUFJYkEsUUFKYSxrQ0FJRixFQUpFO0FBTWYsWUFBSUMsV0FBVyxRQUFPTixJQUFQLE1BQWdCLFFBQS9COztBQU5lLG1CQU9nQk0sV0FBV2hCLE9BQU9VLElBQVAsQ0FBWCxHQUEwQjtBQUFFTyxtQkFBU1A7QUFBWCxTQVAxQztBQUFBLFlBT1RPLE9BUFMsUUFPVEEsT0FQUztBQUFBLFlBT01MLEtBUE4sUUFPQUQsSUFQQTs7QUFRZixZQUFJTyxTQUFTLGVBQWMsRUFBZCxFQUFrQkgsUUFBbEIsRUFBNEI7QUFDdkNOLHNCQUR1QztBQUV2Q0MsZ0JBQU1PLE9BRmlDO0FBR3ZDTixnQkFBTTtBQUFFQztBQUFGLFdBSGlDO0FBSXZDRTtBQUp1QyxTQUE1QixDQUFiOztBQU1BWixlQUFPaUIsSUFBUCxDQUFZckIsSUFBWixFQUFrQm9CLE1BQWxCO0FBQ0Q7O0FBQ0Qsc0hBQVdULEtBQVgsRUFBa0JDLElBQWxCO0FBQ0Q7QUFFRDs7Ozs7OzJCQUdRO0FBQUEsVUFDQVIsTUFEQSxHQUN3QixJQUR4QixDQUNBQSxNQURBO0FBQUEsVUFDUUUsV0FEUixHQUN3QixJQUR4QixDQUNRQSxXQURSOztBQUVOLFVBQUksS0FBS0QsTUFBVCxFQUFpQjtBQUNmO0FBQ0Q7O0FBQ0QsV0FBS0EsTUFBTCxHQUFjLElBQWQ7QUFDQUQsYUFBT2tCLEVBQVAsQ0FBVXRCLElBQVYsRUFBZ0JNLFdBQWhCO0FBQ0Q7QUFFRDs7Ozs7OzRCQUdTO0FBQUEsVUFDREYsTUFEQyxHQUN1QixJQUR2QixDQUNEQSxNQURDO0FBQUEsVUFDT0UsV0FEUCxHQUN1QixJQUR2QixDQUNPQSxXQURQOztBQUVQLFVBQUksQ0FBQyxLQUFLRCxNQUFWLEVBQWtCO0FBQ2hCO0FBQ0Q7O0FBQ0QsV0FBS0EsTUFBTCxHQUFjLEtBQWQ7QUFDQUQsYUFBT21CLEdBQVAsQ0FBV3ZCLElBQVgsRUFBaUJNLFdBQWpCO0FBQ0Q7Ozs7RUFoRXVCUixZOztBQW1FMUIwQixPQUFPQyxPQUFQLEdBQWlCdEIsV0FBakIiLCJmaWxlIjoiZW1pdHRpbmcvcGlwZV9lbWl0dGVyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uL2xpYiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGlwZSBlbWl0dGVyXG4gKiBAYWJzdHJhY3RcbiAqIEBjbGFzcyBQaXBlRW1pdHRlclxuICovXG4ndXNlIHN0cmljdCdcblxuY29uc3QgeyBFdmVudEVtaXR0ZXIgfSA9IHJlcXVpcmUoJ2V2ZW50cycpXG5jb25zdCB7IFJlbW90ZUV2ZW50cyB9ID0gcmVxdWlyZSgnc2ctc29ja2V0LWNvbnN0YW50cycpXG5jb25zdCB7IFBJUEUgfSA9IFJlbW90ZUV2ZW50c1xuY29uc3QgeyBwYXJzZSwgZm9ybWF0IH0gPSByZXF1aXJlKCdzZy1zZXJpYWxpemVyJylcblxuLyoqIEBsZW5kcyBQaXBlRW1pdHRlciAqL1xuY2xhc3MgUGlwZUVtaXR0ZXIgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvciAoc29ja2V0KSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMuc29ja2V0ID0gc29ja2V0XG4gICAgdGhpcy5vcGVuZWQgPSBmYWxzZVxuXG4gICAgdGhpcy5waXBlSGFuZGxlciA9IChyZWNlaXZlZCkgPT4gdGhpcy5waXBlUmVjZWl2ZWQocmVjZWl2ZWQpXG4gIH1cblxuICBwaXBlUmVjZWl2ZWQgKHJlY2VpdmVkKSB7XG4gICAgbGV0IGhpdCA9IHRoaXMuc2hvdWxkUGlwZShyZWNlaXZlZClcbiAgICBpZiAoIWhpdCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGxldCB7IGV2ZW50LCBkYXRhLCBtZXRhIH0gPSByZWNlaXZlZFxuICAgIGxldCB7IHR5cGVzIH0gPSBtZXRhXG4gICAgaWYgKHR5cGVzKSB7XG4gICAgICBkYXRhID0gcGFyc2UoZGF0YSwgdHlwZXMsIHt9KVxuICAgIH1cbiAgICBzdXBlci5lbWl0KGV2ZW50LCBkYXRhKVxuICB9XG5cbiAgcGlwZUVtaXQgKGV2ZW50LCBkYXRhLCBvcHRpb25zID0ge30pIHtcbiAgICBpZiAodGhpcy5vcGVuZWQpIHtcbiAgICAgIGxldCB7IHNvY2tldCB9ID0gdGhpc1xuICAgICAgbGV0IHtcbiAgICAgICAgb25seSA9IG51bGwsXG4gICAgICAgIGRlZmF1bHRzID0ge31cbiAgICAgIH0gPSBvcHRpb25zXG4gICAgICBsZXQgaXNPYmplY3QgPSB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCdcbiAgICAgIGxldCB7IHBheWxvYWQsIG1ldGE6IHR5cGVzIH0gPSBpc09iamVjdCA/IGZvcm1hdChkYXRhKSA6IHsgcGF5bG9hZDogZGF0YSB9XG4gICAgICBsZXQgcGlwaW5nID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdHMsIHtcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIGRhdGE6IHBheWxvYWQsXG4gICAgICAgIG1ldGE6IHsgdHlwZXMgfSxcbiAgICAgICAgb25seVxuICAgICAgfSlcbiAgICAgIHNvY2tldC5lbWl0KFBJUEUsIHBpcGluZylcbiAgICB9XG4gICAgc3VwZXIuZW1pdChldmVudCwgZGF0YSlcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVuIHRoZSBwaXBlLlxuICAgKi9cbiAgb3BlbiAoKSB7XG4gICAgbGV0IHsgc29ja2V0LCBwaXBlSGFuZGxlciB9ID0gdGhpc1xuICAgIGlmICh0aGlzLm9wZW5lZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMub3BlbmVkID0gdHJ1ZVxuICAgIHNvY2tldC5vbihQSVBFLCBwaXBlSGFuZGxlcilcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSB0aGUgcGlwZS5cbiAgICovXG4gIGNsb3NlICgpIHtcbiAgICBsZXQgeyBzb2NrZXQsIHBpcGVIYW5kbGVyIH0gPSB0aGlzXG4gICAgaWYgKCF0aGlzLm9wZW5lZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMub3BlbmVkID0gZmFsc2VcbiAgICBzb2NrZXQub2ZmKFBJUEUsIHBpcGVIYW5kbGVyKVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUGlwZUVtaXR0ZXJcbiJdfQ==