UNPKG

sg-socket-client

Version:
84 lines (70 loc) 7.32 kB
/** * @function sgSocketClient * @returns {Object} */ 'use strict'; var _Promise = require("@babel/runtime/core-js/promise"); var _Object$assign = require("@babel/runtime/core-js/object/assign"); var socketIoClient = require('socket.io-client'); var _require = require('sg-socket-constants'), ReservedEvents = _require.ReservedEvents; var debug = require('debug')('sg:socket:client'); var _require2 = require('./extensions'), CallExtension = _require2.CallExtension, LockExtension = _require2.LockExtension, WrapExtension = _require2.WrapExtension, PubsubExtension = _require2.PubsubExtension; var CONNECT = ReservedEvents.CONNECT, CONNECT_ERROR = ReservedEvents.CONNECT_ERROR, CONNECT_TIMEOUT = ReservedEvents.CONNECT_TIMEOUT, DISCONNECT = ReservedEvents.DISCONNECT; /** @lends sgSocketClient */ function sgSocketClient() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } var socket = socketIoClient.apply(void 0, args); _Object$assign(socket, { $initial: args.concat() }); var io = socket.io; var untilConnect = new _Promise(function (resolve, reject) { var uri = io.uri; socket.on(CONNECT_ERROR, function (err) { var message = "Failed to connect to server: ".concat(uri, ", err: ").concat(err); debug(message, err); reject(new Error(message)); }); socket.on(CONNECT_TIMEOUT, function (err) { var message = "Connection timeout with server: \"".concat(uri, "\", err: ").concat(err); debug(message, err); reject(new Error(message)); }); socket.on(CONNECT, function () { debug("Connected to server: ".concat(uri)); resolve({ uri: uri }); }); }); var untilDisconnect = new _Promise(function (resolve, reject) { var uri = io.uri; socket.on(DISCONNECT, function () { debug("Disconnected from server: ".concat(uri)); resolve({ uri: uri }); }); }); _Object$assign(socket, CallExtension, LockExtension, WrapExtension, PubsubExtension, { waitToConnect: function waitToConnect() { return untilConnect; }, waitToDisconnect: function waitToDisconnect() { return untilDisconnect; } }); return socket; } module.exports = sgSocketClient; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNnX3NvY2tldF9jbGllbnQuanMiXSwibmFtZXMiOlsic29ja2V0SW9DbGllbnQiLCJyZXF1aXJlIiwiUmVzZXJ2ZWRFdmVudHMiLCJkZWJ1ZyIsIkNhbGxFeHRlbnNpb24iLCJMb2NrRXh0ZW5zaW9uIiwiV3JhcEV4dGVuc2lvbiIsIlB1YnN1YkV4dGVuc2lvbiIsIkNPTk5FQ1QiLCJDT05ORUNUX0VSUk9SIiwiQ09OTkVDVF9USU1FT1VUIiwiRElTQ09OTkVDVCIsInNnU29ja2V0Q2xpZW50IiwiYXJncyIsInNvY2tldCIsIiRpbml0aWFsIiwiaW8iLCJ1bnRpbENvbm5lY3QiLCJyZXNvbHZlIiwicmVqZWN0IiwidXJpIiwib24iLCJlcnIiLCJtZXNzYWdlIiwiRXJyb3IiLCJ1bnRpbERpc2Nvbm5lY3QiLCJ3YWl0VG9Db25uZWN0Iiwid2FpdFRvRGlzY29ubmVjdCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBOzs7O0FBSUE7Ozs7OztBQUVBLElBQU1BLGlCQUFpQkMsUUFBUSxrQkFBUixDQUF2Qjs7ZUFDeUJBLFFBQVEscUJBQVIsQztJQUFsQkMsYyxZQUFBQSxjOztBQUNQLElBQU1DLFFBQVFGLFFBQVEsT0FBUixFQUFpQixrQkFBakIsQ0FBZDs7Z0JBT0lBLFFBQVEsY0FBUixDO0lBSkZHLGEsYUFBQUEsYTtJQUNBQyxhLGFBQUFBLGE7SUFDQUMsYSxhQUFBQSxhO0lBQ0FDLGUsYUFBQUEsZTs7SUFJQUMsTyxHQUlFTixjLENBSkZNLE87SUFDQUMsYSxHQUdFUCxjLENBSEZPLGE7SUFDQUMsZSxHQUVFUixjLENBRkZRLGU7SUFDQUMsVSxHQUNFVCxjLENBREZTLFU7QUFHRjs7QUFDQSxTQUFTQyxjQUFULEdBQWtDO0FBQUEsb0NBQU5DLElBQU07QUFBTkEsUUFBTTtBQUFBOztBQUNoQyxNQUFNQyxTQUFTZCw2QkFBa0JhLElBQWxCLENBQWY7O0FBQ0EsaUJBQWNDLE1BQWQsRUFBc0I7QUFDcEJDLGNBQWNGLElBQWQ7QUFEb0IsR0FBdEI7O0FBRmdDLE1BS3pCRyxFQUx5QixHQUtuQkYsTUFMbUIsQ0FLekJFLEVBTHlCO0FBT2hDLE1BQU1DLGVBQWUsYUFBWSxVQUFDQyxPQUFELEVBQVVDLE1BQVYsRUFBcUI7QUFBQSxRQUM3Q0MsR0FENkMsR0FDdENKLEVBRHNDLENBQzdDSSxHQUQ2QztBQUVwRE4sV0FBT08sRUFBUCxDQUFVWixhQUFWLEVBQXlCLFVBQUNhLEdBQUQsRUFBUztBQUNoQyxVQUFJQyxpREFBMENILEdBQTFDLG9CQUF1REUsR0FBdkQsQ0FBSjtBQUNBbkIsWUFBTW9CLE9BQU4sRUFBZUQsR0FBZjtBQUNBSCxhQUFPLElBQUlLLEtBQUosQ0FBVUQsT0FBVixDQUFQO0FBQ0QsS0FKRDtBQUtBVCxXQUFPTyxFQUFQLENBQVVYLGVBQVYsRUFBMkIsVUFBQ1ksR0FBRCxFQUFTO0FBQ2xDLFVBQUlDLHNEQUE4Q0gsR0FBOUMsc0JBQTRERSxHQUE1RCxDQUFKO0FBQ0FuQixZQUFNb0IsT0FBTixFQUFlRCxHQUFmO0FBQ0FILGFBQU8sSUFBSUssS0FBSixDQUFVRCxPQUFWLENBQVA7QUFDRCxLQUpEO0FBS0FULFdBQU9PLEVBQVAsQ0FBVWIsT0FBVixFQUFtQixZQUFNO0FBQ3ZCTCwyQ0FBOEJpQixHQUE5QjtBQUNBRixjQUFRO0FBQUNFO0FBQUQsT0FBUjtBQUNELEtBSEQ7QUFJRCxHQWhCb0IsQ0FBckI7QUFrQkEsTUFBTUssa0JBQWtCLGFBQVksVUFBQ1AsT0FBRCxFQUFVQyxNQUFWLEVBQXFCO0FBQUEsUUFDaERDLEdBRGdELEdBQ3pDSixFQUR5QyxDQUNoREksR0FEZ0Q7QUFFdkROLFdBQU9PLEVBQVAsQ0FBVVYsVUFBVixFQUFzQixZQUFNO0FBQzFCUixnREFBbUNpQixHQUFuQztBQUNBRixjQUFRO0FBQUNFO0FBQUQsT0FBUjtBQUNELEtBSEQ7QUFJRCxHQU51QixDQUF4Qjs7QUFRQSxpQkFBY04sTUFBZCxFQUNFVixhQURGLEVBRUVDLGFBRkYsRUFHRUMsYUFIRixFQUlFQyxlQUpGLEVBS0U7QUFDRW1CLG1CQUFlO0FBQUEsYUFBTVQsWUFBTjtBQUFBLEtBRGpCO0FBRUVVLHNCQUFrQjtBQUFBLGFBQU1GLGVBQU47QUFBQTtBQUZwQixHQUxGOztBQVVBLFNBQU9YLE1BQVA7QUFDRDs7QUFFRGMsT0FBT0MsT0FBUCxHQUFpQmpCLGNBQWpCIiwiZmlsZSI6InNnX3NvY2tldF9jbGllbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vbGliIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZnVuY3Rpb24gc2dTb2NrZXRDbGllbnRcbiAqIEByZXR1cm5zIHtPYmplY3R9XG4gKi9cbid1c2Ugc3RyaWN0J1xuXG5jb25zdCBzb2NrZXRJb0NsaWVudCA9IHJlcXVpcmUoJ3NvY2tldC5pby1jbGllbnQnKVxuY29uc3Qge1Jlc2VydmVkRXZlbnRzfSA9IHJlcXVpcmUoJ3NnLXNvY2tldC1jb25zdGFudHMnKVxuY29uc3QgZGVidWcgPSByZXF1aXJlKCdkZWJ1ZycpKCdzZzpzb2NrZXQ6Y2xpZW50JylcblxuY29uc3Qge1xuICBDYWxsRXh0ZW5zaW9uLFxuICBMb2NrRXh0ZW5zaW9uLFxuICBXcmFwRXh0ZW5zaW9uLFxuICBQdWJzdWJFeHRlbnNpb25cbn0gPSByZXF1aXJlKCcuL2V4dGVuc2lvbnMnKVxuXG5jb25zdCB7XG4gIENPTk5FQ1QsXG4gIENPTk5FQ1RfRVJST1IsXG4gIENPTk5FQ1RfVElNRU9VVCxcbiAgRElTQ09OTkVDVFxufSA9IFJlc2VydmVkRXZlbnRzXG5cbi8qKiBAbGVuZHMgc2dTb2NrZXRDbGllbnQgKi9cbmZ1bmN0aW9uIHNnU29ja2V0Q2xpZW50ICguLi5hcmdzKSB7XG4gIGNvbnN0IHNvY2tldCA9IHNvY2tldElvQ2xpZW50KC4uLmFyZ3MpXG4gIE9iamVjdC5hc3NpZ24oc29ja2V0LCB7XG4gICAgJGluaXRpYWw6IFsuLi5hcmdzXVxuICB9KVxuICBjb25zdCB7aW99ID0gc29ja2V0XG5cbiAgY29uc3QgdW50aWxDb25uZWN0ID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHt1cml9ID0gaW9cbiAgICBzb2NrZXQub24oQ09OTkVDVF9FUlJPUiwgKGVycikgPT4ge1xuICAgICAgbGV0IG1lc3NhZ2UgPSBgRmFpbGVkIHRvIGNvbm5lY3QgdG8gc2VydmVyOiAke3VyaX0sIGVycjogJHtlcnJ9YFxuICAgICAgZGVidWcobWVzc2FnZSwgZXJyKVxuICAgICAgcmVqZWN0KG5ldyBFcnJvcihtZXNzYWdlKSlcbiAgICB9KVxuICAgIHNvY2tldC5vbihDT05ORUNUX1RJTUVPVVQsIChlcnIpID0+IHtcbiAgICAgIGxldCBtZXNzYWdlID0gYENvbm5lY3Rpb24gdGltZW91dCB3aXRoIHNlcnZlcjogXCIke3VyaX1cIiwgZXJyOiAke2Vycn1gXG4gICAgICBkZWJ1ZyhtZXNzYWdlLCBlcnIpXG4gICAgICByZWplY3QobmV3IEVycm9yKG1lc3NhZ2UpKVxuICAgIH0pXG4gICAgc29ja2V0Lm9uKENPTk5FQ1QsICgpID0+IHtcbiAgICAgIGRlYnVnKGBDb25uZWN0ZWQgdG8gc2VydmVyOiAke3VyaX1gKVxuICAgICAgcmVzb2x2ZSh7dXJpfSlcbiAgICB9KVxuICB9KVxuXG4gIGNvbnN0IHVudGlsRGlzY29ubmVjdCA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCB7dXJpfSA9IGlvXG4gICAgc29ja2V0Lm9uKERJU0NPTk5FQ1QsICgpID0+IHtcbiAgICAgIGRlYnVnKGBEaXNjb25uZWN0ZWQgZnJvbSBzZXJ2ZXI6ICR7dXJpfWApXG4gICAgICByZXNvbHZlKHt1cml9KVxuICAgIH0pXG4gIH0pXG5cbiAgT2JqZWN0LmFzc2lnbihzb2NrZXQsXG4gICAgQ2FsbEV4dGVuc2lvbixcbiAgICBMb2NrRXh0ZW5zaW9uLFxuICAgIFdyYXBFeHRlbnNpb24sXG4gICAgUHVic3ViRXh0ZW5zaW9uLFxuICAgIHtcbiAgICAgIHdhaXRUb0Nvbm5lY3Q6ICgpID0+IHVudGlsQ29ubmVjdCxcbiAgICAgIHdhaXRUb0Rpc2Nvbm5lY3Q6ICgpID0+IHVudGlsRGlzY29ubmVjdFxuICAgIH1cbiAgKVxuICByZXR1cm4gc29ja2V0XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2dTb2NrZXRDbGllbnRcbiJdfQ==