Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

sockstream

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

sockstream - npm Package Compare versions

Comparing version 1.3.0 to 1.3.1

10

dist/sockstream.js

@@ -47,3 +47,3 @@ 'use strict';

name: 'sockstream.js',
version: 1.3,
version: 1.2,
debugLevel: 0,

@@ -169,3 +169,3 @@ keepAlive: 800

if (this.connections[connectionId].readyState === this.connections[connectionId].OPEN) {
var _id = StreamSocketClient.generateUUID();
var _id = StreamSock.generateUUID();
if (typeof cb === 'function') {

@@ -199,3 +199,3 @@ this.callbackRegister[_id] = cb;

this.console(['[CONNECTING]', '' + this._config.server.proto + this._config.server.hostname + ':' + this._config.server.port], 'info');
var connectionId = StreamSocketClient.generateUUID();
var connectionId = StreamSock.generateUUID();
this.lastConnectionId = connectionId;

@@ -214,3 +214,3 @@ this.connections[connectionId] = new WebSocket('' + this._config.server.proto + this._config.server.hostname + ':' + this._config.server.port);

this.connections[connectionId].onmessage = function (e) {
var parsed = StreamSocketClient.parseMessage(e.data);
var parsed = StreamSock.parseMessage(e.data);
if (parsed && typeof parsed['@meta'] !== 'undefined') {

@@ -270,2 +270,2 @@ if (typeof _this2.callbackRegister[parsed['@meta']._type] === 'function') {

exports.default = StreamSock;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvY2tzdHJlYW0uanMiXSwibmFtZXMiOlsiU3RyZWFtU29jayIsImhvc3QiLCJwb3J0Iiwic2VjdXJlIiwia2VlcEFsaXZlIiwiZGVidWdMZXZlbCIsImNhbGxiYWNrUmVnaXN0ZXIiLCJwaW5nIiwic2VuZCIsImNvbnNvbGUiLCJtZXNzYWdlIiwic3lzdGVtIiwiZGlzY29ubmVjdCIsImNvbm5lY3Rpb25zIiwiX2NvbmZpZyIsImNsaWVudCIsIm5hbWUiLCJ2ZXJzaW9uIiwic2VydmVyIiwiaG9zdG5hbWUiLCJwcm90byIsIk9iamVjdCIsImFzc2lnbiIsInR5cGUiLCJsZXZlbE1hcCIsInNldHRpbmciLCJkZWJ1ZyIsImNvbm5lY3Rpb25JZCIsImlkIiwibGFzdENvbm5lY3Rpb25JZCIsInB1c2giLCJjbG9zZSIsImNiIiwicmVhZHlTdGF0ZSIsIk9QRU4iLCJfaWQiLCJTdHJlYW1Tb2NrZXRDbGllbnQiLCJnZW5lcmF0ZVVVSUQiLCJKU09OIiwic3RyaW5naWZ5IiwiV2ViU29ja2V0IiwiQ09OTkVDVElORyIsIm9ub3BlbiIsInNldFRpbWVvdXQiLCJvbmVycm9yIiwiZSIsIm9ubWVzc2FnZSIsInBhcnNlZCIsInBhcnNlTWVzc2FnZSIsImRhdGEiLCJfdHlwZSIsImNhbGwiLCJfc3lzdGVtIiwib25jbG9zZSIsImluZGV4T2YiLCJvcGVuIiwiZCIsIkRhdGUiLCJnZXRUaW1lIiwid2luZG93IiwicGVyZm9ybWFuY2UiLCJub3ciLCJyZXBsYWNlIiwiYyIsInIiLCJNYXRoIiwicmFuZG9tIiwiZmxvb3IiLCJ0b1N0cmluZyIsInBhcnNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFBcUJBLFU7QUFDbkI7Ozs7Ozs7QUFPQSx3QkFBNkY7QUFBQSxRQUFqRkMsSUFBaUYsdUVBQTFFLFdBQTBFO0FBQUEsUUFBN0RDLElBQTZELHVFQUF0RCxJQUFzRDtBQUFBLFFBQWhEQyxNQUFnRCx1RUFBdkMsSUFBdUM7O0FBQUE7O0FBQUEsUUFBakNDLFNBQWlD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QUFvQztBQUNsQyxlQUFPLElBQVA7QUFDRCxPQUZELE1BRU8sSUFBSSxPQUFPQSxPQUFQLEtBQW1CLFFBQXZCLEVBQWlDO0FBQ3RDLGVBQU80QixLQUFLK0IsS0FBTCxDQUFXM0QsT0FBWCxDQUFQO0FBQ0QsT0FGTSxNQUVBO0FBQ0wsZUFBT0EsT0FBUDtBQUNEO0FBQ0Y7Ozs7OztrQkFySGtCVixVIiwiZmlsZSI6InNvY2tzdHJlYW0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJlYW1Tb2NrIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfE9iamVjdH0gaG9zdCBFaXRoZXIgZGVmaW5lIHRoZSBob3N0IG5hbWUgKGFuZCBmdXJ0aGVyIG9wdGlvbmFsIGF0dHJpYnV0ZXMpLCBPUiBwYXNzIGluIGEgY29uZmlndXJhdGlvbiBvYmplY3RcbiAgICogQHBhcmFtIHBvcnRcbiAgICogQHBhcmFtIHNlY3VyZVxuICAgKiBAcGFyYW0ga2VlcEFsaXZlXG4gICAqIEBwYXJhbSBkZWJ1Z0xldmVsXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihob3N0ID0gJ2xvY2FsaG9zdCcsIHBvcnQgPSA4MDgyLCBzZWN1cmUgPSB0cnVlLCBrZWVwQWxpdmUgPSA4MDAsIGRlYnVnTGV2ZWwgPSAwKSB7XG4gICAgdGhpcy5jYWxsYmFja1JlZ2lzdGVyID0ge1xuICAgICAgcGluZzogbWVzc2FnZSA9PiB7XG4gICAgICAgIHRoaXMuc2VuZCgncG9uZycpXG4gICAgICAgIHRoaXMuY29uc29sZShbJ1tQSU5HXScsIG1lc3NhZ2VdKVxuICAgICAgfSxcbiAgICAgIHN5c3RlbTogbWVzc2FnZSA9PiB7XG4gICAgICAgIHRoaXMuY29uc29sZShbJ1tTWVNURU1dJywgbWVzc2FnZV0pXG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZGlzY29ubmVjdCA9IFtdO1xuICAgIHRoaXMuY29ubmVjdGlvbnMgPSB7fTtcbiAgICB0aGlzLl9jb25maWcgPSB7XG4gICAgICBjbGllbnQ6IHtcbiAgICAgICAgbmFtZTogJ3NvY2tzdHJlYW0uanMnLFxuICAgICAgICB2ZXJzaW9uOiAxLjMsXG4gICAgICAgIGRlYnVnTGV2ZWw6IDAsXG4gICAgICAgIGtlZXBBbGl2ZTogODAwXG4gICAgICB9LFxuICAgICAgc2VydmVyOiB7XG4gICAgICAgIG5hbWU6ICdzb2NrZXRzL3BocC1zdHJlYW0tc29ja2V0LXNlcnZlcicsXG4gICAgICAgIHZlcnNpb246IDEuMyxcbiAgICAgICAgaG9zdG5hbWU6ICdsb2NhbGhvc3QnLFxuICAgICAgICBwb3J0OiA4MDgyLFxuICAgICAgICBwcm90bzogJ3dzczovLydcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiBob3N0ID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKHR5cGVvZiBob3N0LmNsaWVudCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGhpcy5fY29uZmlnLmNsaWVudCA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgIGRlYnVnTGV2ZWw6IDAsXG4gICAgICAgICAga2VlcEFsaXZlOiA4MDBcbiAgICAgICAgfSwgaG9zdC5jbGllbnQsIHtcbiAgICAgICAgICBuYW1lOiAnc29ja3N0cmVhbS5qcycsXG4gICAgICAgICAgdmVyc2lvbjogMC4xXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGhvc3Quc2VydmVyID09PSAnb2JqZWN0Jykge1xuICAgICAgICB0aGlzLl9jb25maWcuc2VydmVyID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgaG9zdG5hbWU6ICdsb2NhbGhvc3QnLFxuICAgICAgICAgIHBvcnQ6IDgwODIsXG4gICAgICAgICAgcHJvdG86ICd3c3M6Ly8nXG4gICAgICAgIH0sIGhvc3Quc2VydmVyLCB7XG4gICAgICAgICAgbmFtZTogJ3NvY2tldHMvcGhwLXN0cmVhbS1zb2NrZXQtc2VydmVyJyxcbiAgICAgICAgICB2ZXJzaW9uOiAxLjNcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY29uZmlnID0ge1xuICAgICAgICBjbGllbnQ6IHtcbiAgICAgICAgICBuYW1lOiAnc29ja3N0cmVhbS5qcycsXG4gICAgICAgICAgdmVyc2lvbjogMC4xLFxuICAgICAgICAgIGRlYnVnTGV2ZWw6IGRlYnVnTGV2ZWwsXG4gICAgICAgICAga2VlcEFsaXZlOiBrZWVwQWxpdmVcbiAgICAgICAgfSxcbiAgICAgICAgc2VydmVyOiB7XG4gICAgICAgICAgbmFtZTogJ3NvY2tldHMvcGhwLXN0cmVhbS1zb2NrZXQtc2VydmVyJyxcbiAgICAgICAgICB2ZXJzaW9uOiAxLjMsXG4gICAgICAgICAgaG9zdG5hbWU6IGhvc3QsXG4gICAgICAgICAgcG9ydDogcG9ydCxcbiAgICAgICAgICBwcm90bzogISFzZWN1cmUgPyAnd3NzOi8vJyA6ICd3czovLydcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnNvbGUobWVzc2FnZSwgdHlwZSA9ICdsb2cnKSB7XG4gICAgbGV0IGxldmVsTWFwID0ge1xuICAgICAgJ2xvZyc6IDQsXG4gICAgICAnZGVidWcnOiAzLFxuICAgICAgJ2luZm8nOiAyLFxuICAgICAgJ3dhcm4nOiAxLFxuICAgICAgJ2Vycm9yJzogMFxuICAgIH1cbiAgICB0aGlzLl9jb25maWcuY2xpZW50LmRlYnVnTGV2ZWwgPj0gKGxldmVsTWFwW3R5cGVdfHwwKSAmJiBjb25zb2xlW3R5cGVdKG1lc3NhZ2UpXG4gIH1cblxuICAvKipcbiAgICogRWl0aGVyIHJldHJpZXZlcyBvciBzZXRzIHRoZSBkZWJ1ZyBjb25maWcgdmFsdWVcbiAgICogQHBhcmFtIHNldHRpbmdcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBkZWJ1ZyhzZXR0aW5nKSB7XG4gICAgaWYgKHR5cGVvZiBzZXR0aW5nICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5fY29uZmlnLmNsaWVudC5kZWJ1ZyA9ICEhc2V0dGluZ1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLmNsaWVudC5kZWJ1Z1xuICB9XG5cbiAgc3RhdGljIGdlbmVyYXRlVVVJRCgpIHtcbiAgICBsZXQgZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIGlmICh3aW5kb3cucGVyZm9ybWFuY2UgJiYgdHlwZW9mIHdpbmRvdy5wZXJmb3JtYW5jZS5ub3cgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGQgKz0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgfVxuICAgIHJldHVybiAneHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4Jy5yZXBsYWNlKC9beHldL2csIGZ1bmN0aW9uIChjKSB7XG4gICAgICBsZXQgciA9IChkICsgTWF0aC5yYW5kb20oKSAqIDE2KSAlIDE2IHwgMDtcbiAgICAgIGQgPSBNYXRoLmZsb29yKGQgLyAxNik7XG4gICAgICByZXR1cm4gKGMgPT0gJ3gnID8gciA6IChyICYgMHgzIHwgMHg4KSkudG9TdHJpbmcoMTYpO1xuICAgIH0pXG4gIH1cblxuICBzdGF0aWMgcGFyc2VNZXNzYWdlKG1lc3NhZ2UpIHtcbiAgICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH0gZWxzZSBpZiAodHlwZW9mIG1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShtZXNzYWdlKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9XG4gIH1cblxuICBjbG9zZShjb25uZWN0aW9uSWQgPSBudWxsKSB7XG4gICAgbGV0IGlkID0gY29ubmVjdGlvbklkIHx8IHRoaXMubGFzdENvbm5lY3Rpb25JZDtcbiAgICBpZiAodHlwZW9mIHRoaXMuY29ubmVjdGlvbnNbaWRdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5kaXNjb25uZWN0LnB1c2goaWQpXG4gICAgICB0aGlzLmNvbm5lY3Rpb25zW2lkXS5jbG9zZSgpXG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlXG4gICAqIEBwYXJhbSB7c3RyaW5nfGZ1bmN0aW9ufSBjYiBlaXRoZXIgZGVmaW5lIGEgY2xvc3VyZSBvciBwYXNzIGluIGEgY29ubmVjdGlvbklkXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgc2VuZChtZXNzYWdlLCBjYikge1xuICAgIGxldCBjb25uZWN0aW9uSWQgPSB0aGlzLmxhc3RDb25uZWN0aW9uSWRcbiAgICBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB0aGlzLmNvbm5lY3Rpb25zW2NiXSAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICB0aGlzLmxhc3RDb25uZWN0aW9uSWQgPSBjb25uZWN0aW9uSWQgPSBjYlxuICAgIH1cbiAgICBpZiAodHlwZW9mIHRoaXMuY29ubmVjdGlvbnNbY29ubmVjdGlvbklkXSA9PT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29ubmVjdGlvbnNbY29ubmVjdGlvbklkXS5yZWFkeVN0YXRlID09PSB0aGlzLmNvbm5lY3Rpb25zW2Nvbm5lY3Rpb25JZF0uT1BFTikge1xuICAgICAgbGV0IF9pZCA9IFN0cmVhbVNvY2tldENsaWVudC5nZW5lcmF0ZVVVSUQoKVxuICAgICAgaWYgKHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLmNhbGxiYWNrUmVnaXN0ZXJbX2lkXSA9IGNiXG4gICAgICB9XG4gICAgICB0aGlzLmNvbm5lY3Rpb25zW2Nvbm5lY3Rpb25JZF0uc2VuZChKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICdAbWV0YSc6IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgICdfaWQnOiBfaWRcbiAgICAgICAgfSwgdGhpcy5fY29uZmlnKSxcbiAgICAgICAgJ21lc3NhZ2UnOiBtZXNzYWdlXG4gICAgICB9KSlcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29uc29sZSgnV2ViU29ja2V0IG5vdCBvcGVuJywgJ3dhcm4nKVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyBhIG5ldyBXZWJTb2NrZXQgY29ubmVjdGlvbiwgaXQgZG9lcyBub3Qgb3Zlci13cml0ZSBleGlzdGluZyBvcGVuIGNvbm5lY3Rpb25zXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNiXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IGNvbm5lY3Rpb25JZFxuICAgKi9cbiAgb3BlbihjYikge1xuICAgIHRoaXMuY29uc29sZShbJ1tDT05ORUNUSU5HXScsYCR7dGhpcy5fY29uZmlnLnNlcnZlci5wcm90b30ke3RoaXMuX2NvbmZpZy5zZXJ2ZXIuaG9zdG5hbWV9OiR7dGhpcy5fY29uZmlnLnNlcnZlci5wb3J0fWBdLCAnaW5mbycpXG4gICAgbGV0IGNvbm5lY3Rpb25JZCA9IFN0cmVhbVNvY2tldENsaWVudC5nZW5lcmF0ZVVVSUQoKVxuICAgIHRoaXMubGFzdENvbm5lY3Rpb25JZCA9IGNvbm5lY3Rpb25JZFxuICAgIHRoaXMuY29ubmVjdGlvbnNbY29ubmVjdGlvbklkXSA9IG5ldyBXZWJTb2NrZXQoYCR7dGhpcy5fY29uZmlnLnNlcnZlci5wcm90b30ke3RoaXMuX2NvbmZpZy5zZXJ2ZXIuaG9zdG5hbWV9OiR7dGhpcy5fY29uZmlnLnNlcnZlci5wb3J0fWApXG4gICAgaWYgKHRoaXMuY29ubmVjdGlvbnNbY29ubmVjdGlvbklkXS5yZWFkeVN0YXRlID09PSB0aGlzLmNvbm5lY3Rpb25zW2Nvbm5lY3Rpb25JZF0uQ09OTkVDVElORykge1xuICAgICAgdGhpcy5jb25uZWN0aW9uc1tjb25uZWN0aW9uSWRdLm9ub3BlbiA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb25zb2xlKCdjb25uZWN0ZWQnLCAnaW5mbycpXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2VuZCgnY29ubmVjdGluZycsIGNiKVxuICAgICAgICB9LCAyMClcbiAgICAgIH1cbiAgICAgIHRoaXMuY29ubmVjdGlvbnNbY29ubmVjdGlvbklkXS5vbmVycm9yID0gZSA9PiB7XG4gICAgICAgIHRoaXMuY29uc29sZShbJ1dlYlNvY2tldCBlcnJvcicsIGVdLCAnZXJyb3InKVxuICAgICAgfVxuICAgICAgdGhpcy5jb25uZWN0aW9uc1tjb25uZWN0aW9uSWRdLm9ubWVzc2FnZSA9IGUgPT4ge1xuICAgICAgICBsZXQgcGFyc2VkID0gU3RyZWFtU29ja2V0Q2xpZW50LnBhcnNlTWVzc2FnZShlLmRhdGEpO1xuICAgICAgICBpZiAocGFyc2VkICYmIHR5cGVvZiBwYXJzZWRbJ0BtZXRhJ10gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbGxiYWNrUmVnaXN0ZXJbcGFyc2VkWydAbWV0YSddLl90eXBlXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5jYWxsYmFja1JlZ2lzdGVyW3BhcnNlZFsnQG1ldGEnXS5fdHlwZV0uY2FsbCh0aGlzLl9jb25maWcsIHBhcnNlZFsnQG1ldGEnXS5fc3lzdGVtKVxuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuY2FsbGJhY2tSZWdpc3RlcltwYXJzZWRbJ0BtZXRhJ10uX2lkXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5jYWxsYmFja1JlZ2lzdGVyW3BhcnNlZFsnQG1ldGEnXS5faWRdLmNhbGwodGhpcy5fY29uZmlnLCBwYXJzZWQubWVzc2FnZSB8fCBudWxsKVxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuY2FsbGJhY2tSZWdpc3RlcltwYXJzZWRbJ0BtZXRhJ10uX2lkXVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbnNvbGUoWydbUkNWRF0nLCBwYXJzZWRdLCAnZGVidWcnKVxuICAgICAgfVxuICAgICAgdGhpcy5jb25uZWN0aW9uc1tjb25uZWN0aW9uSWRdLm9uY2xvc2UgPSBlID0+IHtcbiAgICAgICAgdGhpcy5jb25zb2xlKFsnV2ViU29ja2V0IGNsb3NlZCcsIGVdLCAnd2FybicpXG4gICAgICAgIGlmICh0aGlzLmRpc2Nvbm5lY3QuaW5kZXhPZihjb25uZWN0aW9uSWQpID09PSAtMSAmJiB0eXBlb2YgdGhpcy5fY29uZmlnLmNsaWVudC5rZWVwQWxpdmUgPT09ICdudW1iZXInICYmIHRoaXMuX2NvbmZpZy5jbGllbnQua2VlcEFsaXZlID4gMCkge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb25zb2xlKCdBdHRlbXB0aW5nIHRvIHJlZXN0YWJsaXNoIFdlYlNvY2tldCcsICdpbmZvJylcbiAgICAgICAgICAgIHRoaXMub3BlbigpXG4gICAgICAgICAgfSwgdGhpcy5fY29uZmlnLmNsaWVudC5rZWVwQWxpdmUpXG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlIHRoaXMuY29ubmVjdGlvbnNbY29ubmVjdGlvbklkXVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb25uZWN0aW9uSWQ7XG4gIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvY2tzdHJlYW0uanMiXSwibmFtZXMiOlsiU3RyZWFtU29jayIsImhvc3QiLCJwb3J0Iiwic2VjdXJlIiwia2VlcEFsaXZlIiwiZGVidWdMZXZlbCIsImNhbGxiYWNrUmVnaXN0ZXIiLCJwaW5nIiwic2VuZCIsImNvbnNvbGUiLCJtZXNzYWdlIiwic3lzdGVtIiwiZGlzY29ubmVjdCIsImNvbm5lY3Rpb25zIiwiX2NvbmZpZyIsImNsaWVudCIsIm5hbWUiLCJ2ZXJzaW9uIiwic2VydmVyIiwiaG9zdG5hbWUiLCJwcm90byIsIk9iamVjdCIsImFzc2lnbiIsInR5cGUiLCJsZXZlbE1hcCIsInNldHRpbmciLCJkZWJ1ZyIsImNvbm5lY3Rpb25JZCIsImlkIiwibGFzdENvbm5lY3Rpb25JZCIsInB1c2giLCJjbG9zZSIsImNiIiwicmVhZHlTdGF0ZSIsIk9QRU4iLCJfaWQiLCJnZW5lcmF0ZVVVSUQiLCJKU09OIiwic3RyaW5naWZ5IiwiV2ViU29ja2V0IiwiQ09OTkVDVElORyIsIm9ub3BlbiIsInNldFRpbWVvdXQiLCJvbmVycm9yIiwiZSIsIm9ubWVzc2FnZSIsInBhcnNlZCIsInBhcnNlTWVzc2FnZSIsImRhdGEiLCJfdHlwZSIsImNhbGwiLCJfc3lzdGVtIiwib25jbG9zZSIsImluZGV4T2YiLCJvcGVuIiwiZCIsIkRhdGUiLCJnZXRUaW1lIiwid2luZG93IiwicGVyZm9ybWFuY2UiLCJub3ciLCJyZXBsYWNlIiwiYyIsInIiLCJNYXRoIiwicmFuZG9tIiwiZmxvb3IiLCJ0b1N0cmluZyIsInBhcnNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFBcUJBLFU7QUFDbkI7Ozs7Ozs7QUFPQSx3QkFBNkY7QUFBQSxRQUFqRkMsSUFBaUYsdUVBQTFFLFdBQTBFO0FBQUEsUUFBN0RDLElBQTZELHVFQUF0RCxJQUFzRDtBQUFBLFFBQWhEQyxNQUFnRCx1RUFBdkMsSUFBdUM7O0FBQUE7O0FBQUEsUUFBakNDLFNBQWlDLHVFQUFyQixHQUFxQjtBQUFBLFFB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LE9BRkQsTUFFTyxJQUFJLE9BQU9BLE9BQVAsS0FBbUIsUUFBdkIsRUFBaUM7QUFDdEMsZUFBTzJCLEtBQUsrQixLQUFMLENBQVcxRCxPQUFYLENBQVA7QUFDRCxPQUZNLE1BRUE7QUFDTCxlQUFPQSxPQUFQO0FBQ0Q7QUFDRjs7Ozs7O2tCQXJIa0JWLFUiLCJmaWxlIjoic29ja3N0cmVhbS5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0cmVhbVNvY2sge1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd8T2JqZWN0fSBob3N0IEVpdGhlciBkZWZpbmUgdGhlIGhvc3QgbmFtZSAoYW5kIGZ1cnRoZXIgb3B0aW9uYWwgYXR0cmlidXRlcyksIE9SIHBhc3MgaW4gYSBjb25maWd1cmF0aW9uIG9iamVjdFxuICAgKiBAcGFyYW0gcG9ydFxuICAgKiBAcGFyYW0gc2VjdXJlXG4gICAqIEBwYXJhbSBrZWVwQWxpdmVcbiAgICogQHBhcmFtIGRlYnVnTGV2ZWxcbiAgICovXG4gIGNvbnN0cnVjdG9yKGhvc3QgPSAnbG9jYWxob3N0JywgcG9ydCA9IDgwODIsIHNlY3VyZSA9IHRydWUsIGtlZXBBbGl2ZSA9IDgwMCwgZGVidWdMZXZlbCA9IDApIHtcbiAgICB0aGlzLmNhbGxiYWNrUmVnaXN0ZXIgPSB7XG4gICAgICBwaW5nOiBtZXNzYWdlID0+IHtcbiAgICAgICAgdGhpcy5zZW5kKCdwb25nJylcbiAgICAgICAgdGhpcy5jb25zb2xlKFsnW1BJTkddJywgbWVzc2FnZV0pXG4gICAgICB9LFxuICAgICAgc3lzdGVtOiBtZXNzYWdlID0+IHtcbiAgICAgICAgdGhpcy5jb25zb2xlKFsnW1NZU1RFTV0nLCBtZXNzYWdlXSlcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5kaXNjb25uZWN0ID0gW107XG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IHt9O1xuICAgIHRoaXMuX2NvbmZpZyA9IHtcbiAgICAgIGNsaWVudDoge1xuICAgICAgICBuYW1lOiAnc29ja3N0cmVhbS5qcycsXG4gICAgICAgIHZlcnNpb246IDEuMixcbiAgICAgICAgZGVidWdMZXZlbDogMCxcbiAgICAgICAga2VlcEFsaXZlOiA4MDBcbiAgICAgIH0sXG4gICAgICBzZXJ2ZXI6IHtcbiAgICAgICAgbmFtZTogJ3NvY2tldHMvcGhwLXN0cmVhbS1zb2NrZXQtc2VydmVyJyxcbiAgICAgICAgdmVyc2lvbjogMS4zLFxuICAgICAgICBob3N0bmFtZTogJ2xvY2FsaG9zdCcsXG4gICAgICAgIHBvcnQ6IDgwODIsXG4gICAgICAgIHByb3RvOiAnd3NzOi8vJ1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwZW9mIGhvc3QgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAodHlwZW9mIGhvc3QuY2xpZW50ID09PSAnb2JqZWN0Jykge1xuICAgICAgICB0aGlzLl9jb25maWcuY2xpZW50ID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgZGVidWdMZXZlbDogMCxcbiAgICAgICAgICBrZWVwQWxpdmU6IDgwMFxuICAgICAgICB9LCBob3N0LmNsaWVudCwge1xuICAgICAgICAgIG5hbWU6ICdzb2Nrc3RyZWFtLmpzJyxcbiAgICAgICAgICB2ZXJzaW9uOiAwLjFcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgaG9zdC5zZXJ2ZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHRoaXMuX2NvbmZpZy5zZXJ2ZXIgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgICBob3N0bmFtZTogJ2xvY2FsaG9zdCcsXG4gICAgICAgICAgcG9ydDogODA4MixcbiAgICAgICAgICBwcm90bzogJ3dzczovLydcbiAgICAgICAgfSwgaG9zdC5zZXJ2ZXIsIHtcbiAgICAgICAgICBuYW1lOiAnc29ja2V0cy9waHAtc3RyZWFtLXNvY2tldC1zZXJ2ZXInLFxuICAgICAgICAgIHZlcnNpb246IDEuM1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jb25maWcgPSB7XG4gICAgICAgIGNsaWVudDoge1xuICAgICAgICAgIG5hbWU6ICdzb2Nrc3RyZWFtLmpzJyxcbiAgICAgICAgICB2ZXJzaW9uOiAwLjEsXG4gICAgICAgICAgZGVidWdMZXZlbDogZGVidWdMZXZlbCxcbiAgICAgICAgICBrZWVwQWxpdmU6IGtlZXBBbGl2ZVxuICAgICAgICB9LFxuICAgICAgICBzZXJ2ZXI6IHtcbiAgICAgICAgICBuYW1lOiAnc29ja2V0cy9waHAtc3RyZWFtLXNvY2tldC1zZXJ2ZXInLFxuICAgICAgICAgIHZlcnNpb246IDEuMyxcbiAgICAgICAgICBob3N0bmFtZTogaG9zdCxcbiAgICAgICAgICBwb3J0OiBwb3J0LFxuICAgICAgICAgIHByb3RvOiAhIXNlY3VyZSA/ICd3c3M6Ly8nIDogJ3dzOi8vJ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc29sZShtZXNzYWdlLCB0eXBlID0gJ2xvZycpIHtcbiAgICBsZXQgbGV2ZWxNYXAgPSB7XG4gICAgICAnbG9nJzogNCxcbiAgICAgICdkZWJ1Zyc6IDMsXG4gICAgICAnaW5mbyc6IDIsXG4gICAgICAnd2Fybic6IDEsXG4gICAgICAnZXJyb3InOiAwXG4gICAgfVxuICAgIHRoaXMuX2NvbmZpZy5jbGllbnQuZGVidWdMZXZlbCA+PSAobGV2ZWxNYXBbdHlwZV18fDApICYmIGNvbnNvbGVbdHlwZV0obWVzc2FnZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBFaXRoZXIgcmV0cmlldmVzIG9yIHNldHMgdGhlIGRlYnVnIGNvbmZpZyB2YWx1ZVxuICAgKiBAcGFyYW0gc2V0dGluZ1xuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIGRlYnVnKHNldHRpbmcpIHtcbiAgICBpZiAodHlwZW9mIHNldHRpbmcgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLl9jb25maWcuY2xpZW50LmRlYnVnID0gISFzZXR0aW5nXG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jb25maWcuY2xpZW50LmRlYnVnXG4gIH1cblxuICBzdGF0aWMgZ2VuZXJhdGVVVUlEKCkge1xuICAgIGxldCBkID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgaWYgKHdpbmRvdy5wZXJmb3JtYW5jZSAmJiB0eXBlb2Ygd2luZG93LnBlcmZvcm1hbmNlLm5vdyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZCArPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICB9XG4gICAgcmV0dXJuICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgZnVuY3Rpb24gKGMpIHtcbiAgICAgIGxldCByID0gKGQgKyBNYXRoLnJhbmRvbSgpICogMTYpICUgMTYgfCAwO1xuICAgICAgZCA9IE1hdGguZmxvb3IoZCAvIDE2KTtcbiAgICAgIHJldHVybiAoYyA9PSAneCcgPyByIDogKHIgJiAweDMgfCAweDgpKS50b1N0cmluZygxNik7XG4gICAgfSlcbiAgfVxuXG4gIHN0YXRpYyBwYXJzZU1lc3NhZ2UobWVzc2FnZSkge1xuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKG1lc3NhZ2UpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlKGNvbm5lY3Rpb25JZCA9IG51bGwpIHtcbiAgICBsZXQgaWQgPSBjb25uZWN0aW9uSWQgfHwgdGhpcy5sYXN0Q29ubmVjdGlvbklkO1xuICAgIGlmICh0eXBlb2YgdGhpcy5jb25uZWN0aW9uc1tpZF0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLmRpc2Nvbm5lY3QucHVzaChpZClcbiAgICAgIHRoaXMuY29ubmVjdGlvbnNbaWRdLmNsb3NlKClcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VcbiAgICogQHBhcmFtIHtzdHJpbmd8ZnVuY3Rpb259IGNiIGVpdGhlciBkZWZpbmUgYSBjbG9zdXJlIG9yIHBhc3MgaW4gYSBjb25uZWN0aW9uSWRcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBzZW5kKG1lc3NhZ2UsIGNiKSB7XG4gICAgbGV0IGNvbm5lY3Rpb25JZCA9IHRoaXMubGFzdENvbm5lY3Rpb25JZFxuICAgIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHRoaXMuY29ubmVjdGlvbnNbY2JdICE9PSAndW5kZWZpbmVkJyApIHtcbiAgICAgIHRoaXMubGFzdENvbm5lY3Rpb25JZCA9IGNvbm5lY3Rpb25JZCA9IGNiXG4gICAgfVxuICAgIGlmICh0eXBlb2YgdGhpcy5jb25uZWN0aW9uc1tjb25uZWN0aW9uSWRdID09PSAndW5kZWZpbmVkJyApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25uZWN0aW9uc1tjb25uZWN0aW9uSWRdLnJlYWR5U3RhdGUgPT09IHRoaXMuY29ubmVjdGlvbnNbY29ubmVjdGlvbklkXS5PUEVOKSB7XG4gICAgICBsZXQgX2lkID0gU3RyZWFtU29jay5nZW5lcmF0ZVVVSUQoKVxuICAgICAgaWYgKHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLmNhbGxiYWNrUmVnaXN0ZXJbX2lkXSA9IGNiXG4gICAgICB9XG4gICAgICB0aGlzLmNvbm5lY3Rpb25zW2Nvbm5lY3Rpb25JZF0uc2VuZChKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICdAbWV0YSc6IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICAgICdfaWQnOiBfaWRcbiAgICAgICAgfSwgdGhpcy5fY29uZmlnKSxcbiAgICAgICAgJ21lc3NhZ2UnOiBtZXNzYWdlXG4gICAgICB9KSlcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29uc29sZSgnV2ViU29ja2V0IG5vdCBvcGVuJywgJ3dhcm4nKVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyBhIG5ldyBXZWJTb2NrZXQgY29ubmVjdGlvbiwgaXQgZG9lcyBub3Qgb3Zlci13cml0ZSBleGlzdGluZyBvcGVuIGNvbm5lY3Rpb25zXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNiXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IGNvbm5lY3Rpb25JZFxuICAgKi9cbiAgb3BlbihjYikge1xuICAgIHRoaXMuY29uc29sZShbJ1tDT05ORUNUSU5HXScsYCR7dGhpcy5fY29uZmlnLnNlcnZlci5wcm90b30ke3RoaXMuX2NvbmZpZy5zZXJ2ZXIuaG9zdG5hbWV9OiR7dGhpcy5fY29uZmlnLnNlcnZlci5wb3J0fWBdLCAnaW5mbycpXG4gICAgbGV0IGNvbm5lY3Rpb25JZCA9IFN0cmVhbVNvY2suZ2VuZXJhdGVVVUlEKClcbiAgICB0aGlzLmxhc3RDb25uZWN0aW9uSWQgPSBjb25uZWN0aW9uSWRcbiAgICB0aGlzLmNvbm5lY3Rpb25zW2Nvbm5lY3Rpb25JZF0gPSBuZXcgV2ViU29ja2V0KGAke3RoaXMuX2NvbmZpZy5zZXJ2ZXIucHJvdG99JHt0aGlzLl9jb25maWcuc2VydmVyLmhvc3RuYW1lfToke3RoaXMuX2NvbmZpZy5zZXJ2ZXIucG9ydH1gKVxuICAgIGlmICh0aGlzLmNvbm5lY3Rpb25zW2Nvbm5lY3Rpb25JZF0ucmVhZHlTdGF0ZSA9PT0gdGhpcy5jb25uZWN0aW9uc1tjb25uZWN0aW9uSWRdLkNPTk5FQ1RJTkcpIHtcbiAgICAgIHRoaXMuY29ubmVjdGlvbnNbY29ubmVjdGlvbklkXS5vbm9wZW4gPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY29uc29sZSgnY29ubmVjdGVkJywgJ2luZm8nKVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNlbmQoJ2Nvbm5lY3RpbmcnLCBjYilcbiAgICAgICAgfSwgMjApXG4gICAgICB9XG4gICAgICB0aGlzLmNvbm5lY3Rpb25zW2Nvbm5lY3Rpb25JZF0ub25lcnJvciA9IGUgPT4ge1xuICAgICAgICB0aGlzLmNvbnNvbGUoWydXZWJTb2NrZXQgZXJyb3InLCBlXSwgJ2Vycm9yJylcbiAgICAgIH1cbiAgICAgIHRoaXMuY29ubmVjdGlvbnNbY29ubmVjdGlvbklkXS5vbm1lc3NhZ2UgPSBlID0+IHtcbiAgICAgICAgbGV0IHBhcnNlZCA9IFN0cmVhbVNvY2sucGFyc2VNZXNzYWdlKGUuZGF0YSk7XG4gICAgICAgIGlmIChwYXJzZWQgJiYgdHlwZW9mIHBhcnNlZFsnQG1ldGEnXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2FsbGJhY2tSZWdpc3RlcltwYXJzZWRbJ0BtZXRhJ10uX3R5cGVdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGxiYWNrUmVnaXN0ZXJbcGFyc2VkWydAbWV0YSddLl90eXBlXS5jYWxsKHRoaXMuX2NvbmZpZywgcGFyc2VkWydAbWV0YSddLl9zeXN0ZW0pXG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5jYWxsYmFja1JlZ2lzdGVyW3BhcnNlZFsnQG1ldGEnXS5faWRdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGxiYWNrUmVnaXN0ZXJbcGFyc2VkWydAbWV0YSddLl9pZF0uY2FsbCh0aGlzLl9jb25maWcsIHBhcnNlZC5tZXNzYWdlIHx8IG51bGwpXG4gICAgICAgICAgICBkZWxldGUgdGhpcy5jYWxsYmFja1JlZ2lzdGVyW3BhcnNlZFsnQG1ldGEnXS5faWRdXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29uc29sZShbJ1tSQ1ZEXScsIHBhcnNlZF0sICdkZWJ1ZycpXG4gICAgICB9XG4gICAgICB0aGlzLmNvbm5lY3Rpb25zW2Nvbm5lY3Rpb25JZF0ub25jbG9zZSA9IGUgPT4ge1xuICAgICAgICB0aGlzLmNvbnNvbGUoWydXZWJTb2NrZXQgY2xvc2VkJywgZV0sICd3YXJuJylcbiAgICAgICAgaWYgKHRoaXMuZGlzY29ubmVjdC5pbmRleE9mKGNvbm5lY3Rpb25JZCkgPT09IC0xICYmIHR5cGVvZiB0aGlzLl9jb25maWcuY2xpZW50LmtlZXBBbGl2ZSA9PT0gJ251bWJlcicgJiYgdGhpcy5fY29uZmlnLmNsaWVudC5rZWVwQWxpdmUgPiAwKSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbnNvbGUoJ0F0dGVtcHRpbmcgdG8gcmVlc3RhYmxpc2ggV2ViU29ja2V0JywgJ2luZm8nKVxuICAgICAgICAgICAgdGhpcy5vcGVuKClcbiAgICAgICAgICB9LCB0aGlzLl9jb25maWcuY2xpZW50LmtlZXBBbGl2ZSlcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgdGhpcy5jb25uZWN0aW9uc1tjb25uZWN0aW9uSWRdXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbm5lY3Rpb25JZDtcbiAgfVxufVxuIl19

@@ -1,1 +0,1 @@

"use strict";function _classCallCheck(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(exports,"__esModule",{value:!0});var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_createClass=function(){function e(e,n){for(var t=0;t<n.length;t++){var o=n[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(n,t,o){return t&&e(n.prototype,t),o&&e(n,o),n}}(),StreamSock=function(){function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"localhost",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8082,o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],i=this,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:800,c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;_classCallCheck(this,e),this.callbackRegister={ping:function(e){i.send("pong"),i.console(["[PING]",e])},system:function(e){i.console(["[SYSTEM]",e])}},this.disconnect=[],this.connections={},this._config={client:{name:"sockstream.js",version:1.3,debugLevel:0,keepAlive:800},server:{name:"sockets/php-stream-socket-server",version:1.3,hostname:"localhost",port:8082,proto:"wss://"}},"object"===("undefined"==typeof n?"undefined":_typeof(n))?("object"===_typeof(n.client)&&(this._config.client=Object.assign({debugLevel:0,keepAlive:800},n.client,{name:"sockstream.js",version:.1})),"object"===_typeof(n.server)&&(this._config.server=Object.assign({hostname:"localhost",port:8082,proto:"wss://"},n.server,{name:"sockets/php-stream-socket-server",version:1.3}))):this._config={client:{name:"sockstream.js",version:.1,debugLevel:c,keepAlive:s},server:{name:"sockets/php-stream-socket-server",version:1.3,hostname:n,port:t,proto:o?"wss://":"ws://"}}}return _createClass(e,[{key:"console",value:function(e){function n(n){return e.apply(this,arguments)}return n.toString=function(){return e.toString()},n}(function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"log",t={log:4,debug:3,info:2,warn:1,error:0};this._config.client.debugLevel>=(t[n]||0)&&console[n](e)})},{key:"debug",value:function(e){return"undefined"!=typeof e&&(this._config.client.debug=!!e),this._config.client.debug}},{key:"close",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=e||this.lastConnectionId;return"undefined"!=typeof this.connections[n]&&(this.disconnect.push(n),this.connections[n].close()),!0}},{key:"send",value:function(e,n){var t=this.lastConnectionId;if("function"!=typeof n&&"undefined"!=typeof this.connections[n]&&(this.lastConnectionId=t=n),"undefined"==typeof this.connections[t])return!1;if(this.connections[t].readyState===this.connections[t].OPEN){var o=StreamSocketClient.generateUUID();return"function"==typeof n&&(this.callbackRegister[o]=n),this.connections[t].send(JSON.stringify({"@meta":Object.assign({_id:o},this._config),message:e})),!0}return this.console("WebSocket not open","warn"),!1}},{key:"open",value:function(e){var n=this;this.console(["[CONNECTING]",""+this._config.server.proto+this._config.server.hostname+":"+this._config.server.port],"info");var t=StreamSocketClient.generateUUID();return this.lastConnectionId=t,this.connections[t]=new WebSocket(""+this._config.server.proto+this._config.server.hostname+":"+this._config.server.port),this.connections[t].readyState===this.connections[t].CONNECTING&&(this.connections[t].onopen=function(){n.console("connected","info"),setTimeout(function(){n.send("connecting",e)},20)},this.connections[t].onerror=function(e){n.console(["WebSocket error",e],"error")},this.connections[t].onmessage=function(e){var t=StreamSocketClient.parseMessage(e.data);t&&"undefined"!=typeof t["@meta"]&&("function"==typeof n.callbackRegister[t["@meta"]._type]?n.callbackRegister[t["@meta"]._type].call(n._config,t["@meta"]._system):"function"==typeof n.callbackRegister[t["@meta"]._id]&&(n.callbackRegister[t["@meta"]._id].call(n._config,t.message||null),delete n.callbackRegister[t["@meta"]._id])),n.console(["[RCVD]",t],"debug")},this.connections[t].onclose=function(e){n.console(["WebSocket closed",e],"warn"),n.disconnect.indexOf(t)===-1&&"number"==typeof n._config.client.keepAlive&&n._config.client.keepAlive>0&&setTimeout(function(){n.console("Attempting to reestablish WebSocket","info"),n.open()},n._config.client.keepAlive),delete n.connections[t]}),t}}],[{key:"generateUUID",value:function(){var e=(new Date).getTime();return window.performance&&"function"==typeof window.performance.now&&(e+=performance.now()),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(n){var t=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"==n?t:3&t|8).toString(16)})}},{key:"parseMessage",value:function(e){return"undefined"==typeof e?null:"string"==typeof e?JSON.parse(e):e}}]),e}();exports.default=StreamSock;
"use strict";function _classCallCheck(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(exports,"__esModule",{value:!0});var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_createClass=function(){function e(e,n){for(var t=0;t<n.length;t++){var o=n[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(n,t,o){return t&&e(n.prototype,t),o&&e(n,o),n}}(),StreamSock=function(){function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"localhost",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8082,o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],i=this,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:800,c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;_classCallCheck(this,e),this.callbackRegister={ping:function(e){i.send("pong"),i.console(["[PING]",e])},system:function(e){i.console(["[SYSTEM]",e])}},this.disconnect=[],this.connections={},this._config={client:{name:"sockstream.js",version:1.2,debugLevel:0,keepAlive:800},server:{name:"sockets/php-stream-socket-server",version:1.3,hostname:"localhost",port:8082,proto:"wss://"}},"object"===("undefined"==typeof n?"undefined":_typeof(n))?("object"===_typeof(n.client)&&(this._config.client=Object.assign({debugLevel:0,keepAlive:800},n.client,{name:"sockstream.js",version:.1})),"object"===_typeof(n.server)&&(this._config.server=Object.assign({hostname:"localhost",port:8082,proto:"wss://"},n.server,{name:"sockets/php-stream-socket-server",version:1.3}))):this._config={client:{name:"sockstream.js",version:.1,debugLevel:c,keepAlive:s},server:{name:"sockets/php-stream-socket-server",version:1.3,hostname:n,port:t,proto:o?"wss://":"ws://"}}}return _createClass(e,[{key:"console",value:function(e){function n(n){return e.apply(this,arguments)}return n.toString=function(){return e.toString()},n}(function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"log",t={log:4,debug:3,info:2,warn:1,error:0};this._config.client.debugLevel>=(t[n]||0)&&console[n](e)})},{key:"debug",value:function(e){return"undefined"!=typeof e&&(this._config.client.debug=!!e),this._config.client.debug}},{key:"close",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=e||this.lastConnectionId;return"undefined"!=typeof this.connections[n]&&(this.disconnect.push(n),this.connections[n].close()),!0}},{key:"send",value:function(n,t){var o=this.lastConnectionId;if("function"!=typeof t&&"undefined"!=typeof this.connections[t]&&(this.lastConnectionId=o=t),"undefined"==typeof this.connections[o])return!1;if(this.connections[o].readyState===this.connections[o].OPEN){var i=e.generateUUID();return"function"==typeof t&&(this.callbackRegister[i]=t),this.connections[o].send(JSON.stringify({"@meta":Object.assign({_id:i},this._config),message:n})),!0}return this.console("WebSocket not open","warn"),!1}},{key:"open",value:function(n){var t=this;this.console(["[CONNECTING]",""+this._config.server.proto+this._config.server.hostname+":"+this._config.server.port],"info");var o=e.generateUUID();return this.lastConnectionId=o,this.connections[o]=new WebSocket(""+this._config.server.proto+this._config.server.hostname+":"+this._config.server.port),this.connections[o].readyState===this.connections[o].CONNECTING&&(this.connections[o].onopen=function(){t.console("connected","info"),setTimeout(function(){t.send("connecting",n)},20)},this.connections[o].onerror=function(e){t.console(["WebSocket error",e],"error")},this.connections[o].onmessage=function(n){var o=e.parseMessage(n.data);o&&"undefined"!=typeof o["@meta"]&&("function"==typeof t.callbackRegister[o["@meta"]._type]?t.callbackRegister[o["@meta"]._type].call(t._config,o["@meta"]._system):"function"==typeof t.callbackRegister[o["@meta"]._id]&&(t.callbackRegister[o["@meta"]._id].call(t._config,o.message||null),delete t.callbackRegister[o["@meta"]._id])),t.console(["[RCVD]",o],"debug")},this.connections[o].onclose=function(e){t.console(["WebSocket closed",e],"warn"),t.disconnect.indexOf(o)===-1&&"number"==typeof t._config.client.keepAlive&&t._config.client.keepAlive>0&&setTimeout(function(){t.console("Attempting to reestablish WebSocket","info"),t.open()},t._config.client.keepAlive),delete t.connections[o]}),o}}],[{key:"generateUUID",value:function(){var e=(new Date).getTime();return window.performance&&"function"==typeof window.performance.now&&(e+=performance.now()),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(n){var t=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"==n?t:3&t|8).toString(16)})}},{key:"parseMessage",value:function(e){return"undefined"==typeof e?null:"string"==typeof e?JSON.parse(e):e}}]),e}();exports.default=StreamSock;
{
"name": "sockstream",
"version": "1.3.0",
"version": "1.3.1",
"description": "Provides a standard WebSocket thin manager",
"main": "src/sockstream.js",
"main": "index.js",
"scripts": {

@@ -7,0 +7,0 @@ "start": "node_modules/gulp/bin/gulp.js",

@@ -24,3 +24,3 @@ export default class StreamSock {

name: 'sockstream.js',
version: 1.3,
version: 1.2,
debugLevel: 0,

@@ -145,3 +145,3 @@ keepAlive: 800

if (this.connections[connectionId].readyState === this.connections[connectionId].OPEN) {
let _id = StreamSocketClient.generateUUID()
let _id = StreamSock.generateUUID()
if (typeof cb === 'function') {

@@ -170,3 +170,3 @@ this.callbackRegister[_id] = cb

this.console(['[CONNECTING]',`${this._config.server.proto}${this._config.server.hostname}:${this._config.server.port}`], 'info')
let connectionId = StreamSocketClient.generateUUID()
let connectionId = StreamSock.generateUUID()
this.lastConnectionId = connectionId

@@ -185,3 +185,3 @@ this.connections[connectionId] = new WebSocket(`${this._config.server.proto}${this._config.server.hostname}:${this._config.server.port}`)

this.connections[connectionId].onmessage = e => {
let parsed = StreamSocketClient.parseMessage(e.data);
let parsed = StreamSock.parseMessage(e.data);
if (parsed && typeof parsed['@meta'] !== 'undefined') {

@@ -211,2 +211,2 @@ if (typeof this.callbackRegister[parsed['@meta']._type] === 'function') {

}
}
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc