UNPKG

sg-socket-client

Version:
48 lines (37 loc) 4.42 kB
/** * Extensions for wrapping * @module WrapExtension */ 'use strict'; // See https://github.com/component/emitter/blob/master/index.js var _toConsumableArray = require("@babel/runtime/helpers/toConsumableArray"); var _Object$freeze = require("@babel/runtime/core-js/object/freeze"); var wrappableNames = ['on', 'addEventListener', 'off', 'emit', 'removeListener', 'removeAllListeners', 'removeEventListener']; /* @lends WrapExtension */ var WrapExtension = _Object$freeze({ /** * Wrap events with prefix * @param {string} prefix - Event name prefix * @param {Object} options - Optional settings * @returns {Object} - Socket.IO client instnace. */ wrap: function wrap(prefix) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var sgSocketClient = require('../sg_socket_client'); var client = sgSocketClient.apply(void 0, _toConsumableArray(this.$initial)); var prefixed = function prefixed(ev) { return ev && [prefix, ev].join(':') || ev; }; wrappableNames.forEach(function (name) { var wrapping = client[name]; client[name] = function wrap(ev) { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } wrapping.call.apply(wrapping, [client, prefixed(ev)].concat(args)); }; }); return client; } }); module.exports = WrapExtension; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4dGVuc2lvbnMvd3JhcF9leHRlbnNpb24uanMiXSwibmFtZXMiOlsid3JhcHBhYmxlTmFtZXMiLCJXcmFwRXh0ZW5zaW9uIiwid3JhcCIsInByZWZpeCIsIm9wdGlvbnMiLCJzZ1NvY2tldENsaWVudCIsInJlcXVpcmUiLCJjbGllbnQiLCIkaW5pdGlhbCIsInByZWZpeGVkIiwiZXYiLCJqb2luIiwiZm9yRWFjaCIsIm5hbWUiLCJ3cmFwcGluZyIsImFyZ3MiLCJjYWxsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7QUFJQSxhLENBRUE7Ozs7OztBQUNBLElBQU1BLGlCQUFpQixDQUNyQixJQURxQixFQUVyQixrQkFGcUIsRUFHckIsS0FIcUIsRUFJckIsTUFKcUIsRUFLckIsZ0JBTHFCLEVBTXJCLG9CQU5xQixFQU9yQixxQkFQcUIsQ0FBdkI7QUFVQTs7QUFDQSxJQUFNQyxnQkFBZ0IsZUFBYztBQUNsQzs7Ozs7O0FBTUFDLE1BUGtDLGdCQU81QkMsTUFQNEIsRUFPTjtBQUFBLFFBQWRDLE9BQWMsdUVBQUosRUFBSTs7QUFDMUIsUUFBTUMsaUJBQWlCQyxRQUFRLHFCQUFSLENBQXZCOztBQUNBLFFBQUlDLFNBQVNGLGdEQUFrQixLQUFLRyxRQUF2QixFQUFiOztBQUVBLFFBQUlDLFdBQVcsU0FBWEEsUUFBVyxDQUFDQyxFQUFEO0FBQUEsYUFBUUEsTUFBTSxDQUFFUCxNQUFGLEVBQVVPLEVBQVYsRUFBZUMsSUFBZixDQUFvQixHQUFwQixDQUFOLElBQWtDRCxFQUExQztBQUFBLEtBQWY7O0FBQ0FWLG1CQUFlWSxPQUFmLENBQXVCLFVBQUNDLElBQUQsRUFBVTtBQUMvQixVQUFJQyxXQUFXUCxPQUFRTSxJQUFSLENBQWY7O0FBQ0FOLGFBQVFNLElBQVIsSUFBaUIsU0FBU1gsSUFBVCxDQUFlUSxFQUFmLEVBQTRCO0FBQUEsMENBQU5LLElBQU07QUFBTkEsY0FBTTtBQUFBOztBQUMzQ0QsaUJBQVNFLElBQVQsa0JBQWNULE1BQWQsRUFBc0JFLFNBQVNDLEVBQVQsQ0FBdEIsU0FBdUNLLElBQXZDO0FBQ0QsT0FGRDtBQUdELEtBTEQ7QUFNQSxXQUFPUixNQUFQO0FBQ0Q7QUFuQmlDLENBQWQsQ0FBdEI7O0FBc0JBVSxPQUFPQyxPQUFQLEdBQWlCakIsYUFBakIiLCJmaWxlIjoiZXh0ZW5zaW9ucy93cmFwX2V4dGVuc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi9saWIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEV4dGVuc2lvbnMgZm9yIHdyYXBwaW5nXG4gKiBAbW9kdWxlIFdyYXBFeHRlbnNpb25cbiAqL1xuJ3VzZSBzdHJpY3QnXG5cbi8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vY29tcG9uZW50L2VtaXR0ZXIvYmxvYi9tYXN0ZXIvaW5kZXguanNcbmNvbnN0IHdyYXBwYWJsZU5hbWVzID0gW1xuICAnb24nLFxuICAnYWRkRXZlbnRMaXN0ZW5lcicsXG4gICdvZmYnLFxuICAnZW1pdCcsXG4gICdyZW1vdmVMaXN0ZW5lcicsXG4gICdyZW1vdmVBbGxMaXN0ZW5lcnMnLFxuICAncmVtb3ZlRXZlbnRMaXN0ZW5lcidcbl1cblxuLyogQGxlbmRzIFdyYXBFeHRlbnNpb24gKi9cbmNvbnN0IFdyYXBFeHRlbnNpb24gPSBPYmplY3QuZnJlZXplKHtcbiAgLyoqXG4gICAqIFdyYXAgZXZlbnRzIHdpdGggcHJlZml4XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcmVmaXggLSBFdmVudCBuYW1lIHByZWZpeFxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIE9wdGlvbmFsIHNldHRpbmdzXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IC0gU29ja2V0LklPIGNsaWVudCBpbnN0bmFjZS5cbiAgICovXG4gIHdyYXAgKHByZWZpeCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3Qgc2dTb2NrZXRDbGllbnQgPSByZXF1aXJlKCcuLi9zZ19zb2NrZXRfY2xpZW50JylcbiAgICBsZXQgY2xpZW50ID0gc2dTb2NrZXRDbGllbnQoLi4udGhpcy4kaW5pdGlhbClcblxuICAgIGxldCBwcmVmaXhlZCA9IChldikgPT4gZXYgJiYgWyBwcmVmaXgsIGV2IF0uam9pbignOicpIHx8IGV2XG4gICAgd3JhcHBhYmxlTmFtZXMuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgbGV0IHdyYXBwaW5nID0gY2xpZW50WyBuYW1lIF1cbiAgICAgIGNsaWVudFsgbmFtZSBdID0gZnVuY3Rpb24gd3JhcCAoZXYsIC4uLmFyZ3MpIHtcbiAgICAgICAgd3JhcHBpbmcuY2FsbChjbGllbnQsIHByZWZpeGVkKGV2KSwgLi4uYXJncylcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBjbGllbnRcbiAgfVxufSlcblxubW9kdWxlLmV4cG9ydHMgPSBXcmFwRXh0ZW5zaW9uXG4iXX0=