UNPKG

sugo-actor

Version:
152 lines (115 loc) 9.08 kB
/** * 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==