sg-socket-client
Version:
Web socket client for SUGOS
48 lines (37 loc) • 4.42 kB
JavaScript
/**
* Extensions for wrapping
* @module WrapExtension
*/
; // 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=