@webex/calling 3.12.0-mobius-socket.15 → 3.12.0-mobius-socket.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mobius-socket/config.js +8 -8
- package/dist/mobius-socket/config.js.map +1 -1
- package/dist/mobius-socket/errors.js +2 -3
- package/dist/mobius-socket/errors.js.map +1 -1
- package/dist/mobius-socket/index.js +16 -10
- package/dist/mobius-socket/index.js.map +1 -1
- package/dist/mobius-socket/mobius-socket-events.test.js +5 -3
- package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -1
- package/dist/mobius-socket/mobius-socket.js +3 -2
- package/dist/mobius-socket/mobius-socket.js.map +1 -1
- package/dist/mobius-socket/mobius-socket.test.js +6 -4
- package/dist/mobius-socket/mobius-socket.test.js.map +1 -1
- package/dist/mobius-socket/socket/constants.js.map +1 -1
- package/dist/mobius-socket/socket/index.js.map +1 -1
- package/dist/mobius-socket/socket/socket-base.js +57 -32
- package/dist/mobius-socket/socket/socket-base.js.map +1 -1
- package/dist/mobius-socket/socket/socket.js.map +1 -1
- package/dist/mobius-socket/socket/socket.shim.js +3 -13
- package/dist/mobius-socket/socket/socket.shim.js.map +1 -1
- package/dist/mobius-socket/socket/types.js +7 -0
- package/dist/mobius-socket/socket/types.js.map +1 -0
- package/dist/mobius-socket/socket.test.js +36 -36
- package/dist/mobius-socket/socket.test.js.map +1 -1
- package/dist/mobius-socket/test/mocha-helpers.js.map +1 -1
- package/dist/mobius-socket/test/promise-tick.js +2 -3
- package/dist/mobius-socket/test/promise-tick.js.map +1 -1
- package/dist/module/mobius-socket/index.js +4 -1
- package/dist/module/mobius-socket/mobius-socket.js +3 -1
- package/dist/module/mobius-socket/socket/socket-base.js +60 -29
- package/dist/module/mobius-socket/socket/socket.shim.js +3 -15
- package/dist/module/mobius-socket/socket/types.js +1 -0
- package/dist/types/mobius-socket/config.d.ts +15 -12
- package/dist/types/mobius-socket/config.d.ts.map +1 -1
- package/dist/types/mobius-socket/errors.d.ts +15 -6
- package/dist/types/mobius-socket/errors.d.ts.map +1 -1
- package/dist/types/mobius-socket/index.d.ts +14 -7
- package/dist/types/mobius-socket/index.d.ts.map +1 -1
- package/dist/types/mobius-socket/mobius-socket.d.ts +27 -43
- package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -1
- package/dist/types/mobius-socket/socket/constants.d.ts +2 -2
- package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -1
- package/dist/types/mobius-socket/socket/index.d.ts +4 -1
- package/dist/types/mobius-socket/socket/index.d.ts.map +1 -1
- package/dist/types/mobius-socket/socket/socket-base.d.ts +34 -28
- package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -1
- package/dist/types/mobius-socket/socket/socket.d.ts +4 -1
- package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -1
- package/dist/types/mobius-socket/socket/socket.shim.d.ts +4 -1
- package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -1
- package/dist/types/mobius-socket/socket/types.d.ts +69 -0
- package/dist/types/mobius-socket/socket/types.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/mobius-socket/socket/socket.shim.ts +22 -0
- package/src/mobius-socket/socket/{socket.js → socket.ts} +2 -1
- package/src/mobius-socket/socket/socket.shim.js +0 -31
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SOCKET_READY_STATE","exports","_freeze","default","CONNECTING","OPEN","CLOSING","CLOSED","MESSAGE_TYPES","AUTH","EVENT_ACK"],"sources":["constants.
|
|
1
|
+
{"version":3,"names":["SOCKET_READY_STATE","exports","_freeze","default","CONNECTING","OPEN","CLOSING","CLOSED","MESSAGE_TYPES","AUTH","EVENT_ACK"],"sources":["constants.ts"],"sourcesContent":["export const SOCKET_READY_STATE = Object.freeze({\n CONNECTING: 0,\n OPEN: 1,\n CLOSING: 2,\n CLOSED: 3,\n});\n\nexport const MESSAGE_TYPES = Object.freeze({\n AUTH: 'auth',\n EVENT_ACK: 'event_ack',\n});\n"],"mappings":";;;;;;;;;AAAO,IAAMA,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAAG,IAAAE,OAAA,CAAAC,OAAA,EAAc;EAC9CC,UAAU,EAAE,CAAC;EACbC,IAAI,EAAE,CAAC;EACPC,OAAO,EAAE,CAAC;EACVC,MAAM,EAAE;AACV,CAAC,CAAC;AAEK,IAAMC,aAAa,GAAAP,OAAA,CAAAO,aAAA,GAAG,IAAAN,OAAA,CAAAC,OAAA,EAAc;EACzCM,IAAI,EAAE,MAAM;EACZC,SAAS,EAAE;AACb,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_socket","_interopRequireDefault","require"],"sources":["index.
|
|
1
|
+
{"version":3,"names":["_socket","_interopRequireDefault","require"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport {default} from './socket';\n"],"mappings":";;;;;;;;;;;;;AAIA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA","ignoreList":[]}
|
|
@@ -19,12 +19,12 @@ var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/objec
|
|
|
19
19
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/define-property"));
|
|
20
20
|
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
21
21
|
var _from = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/from"));
|
|
22
|
-
var _defineProperty3 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
23
22
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
24
23
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
25
24
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
26
25
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
27
26
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
|
|
27
|
+
var _defineProperty3 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
28
28
|
var _isObject2 = _interopRequireDefault(require("lodash/isObject"));
|
|
29
29
|
var _has2 = _interopRequireDefault(require("lodash/has"));
|
|
30
30
|
var _defaults2 = _interopRequireDefault(require("lodash/defaults"));
|
|
@@ -38,8 +38,14 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
38
38
|
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
39
39
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /*!
|
|
40
40
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
41
|
-
*/
|
|
41
|
+
*/ // @ts-expect-error `@webex/common` is still JS-only and does not ship declarations.
|
|
42
|
+
// @ts-expect-error `@webex/common-timers` is still JS-only and does not ship declarations.
|
|
42
43
|
var sockets = new _weakMap.default();
|
|
44
|
+
var UnknownResponseCtor = _errors.UnknownResponse;
|
|
45
|
+
var BadRequestCtor = _errors.BadRequest;
|
|
46
|
+
var NotAuthorizedCtor = _errors.NotAuthorized;
|
|
47
|
+
var ForbiddenCtor = _errors.Forbidden;
|
|
48
|
+
var ConnectionErrorCtor = _errors.ConnectionError;
|
|
43
49
|
|
|
44
50
|
/**
|
|
45
51
|
* Generalized socket abstraction
|
|
@@ -53,6 +59,14 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
53
59
|
var _this;
|
|
54
60
|
(0, _classCallCheck2.default)(this, Socket);
|
|
55
61
|
_this = _callSuper(this, Socket);
|
|
62
|
+
(0, _defineProperty3.default)(_this, "_domain", void 0);
|
|
63
|
+
(0, _defineProperty3.default)(_this, "_pendingResponses", void 0);
|
|
64
|
+
(0, _defineProperty3.default)(_this, "forceCloseDelay", void 0);
|
|
65
|
+
(0, _defineProperty3.default)(_this, "logger", void 0);
|
|
66
|
+
(0, _defineProperty3.default)(_this, "refreshToken", void 0);
|
|
67
|
+
(0, _defineProperty3.default)(_this, "token", void 0);
|
|
68
|
+
(0, _defineProperty3.default)(_this, "trackingId", void 0);
|
|
69
|
+
(0, _defineProperty3.default)(_this, "wssResponseTimeout", void 0);
|
|
56
70
|
_this._domain = 'unknown-domain';
|
|
57
71
|
_this._pendingResponses = new _map.default();
|
|
58
72
|
_this.onmessage = _this.onmessage.bind(_this);
|
|
@@ -154,17 +168,16 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
154
168
|
resolve();
|
|
155
169
|
return;
|
|
156
170
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
var originalCode = options.code;
|
|
163
|
-
var originalReason = options.reason;
|
|
164
|
-
options = (0, _defaults2.default)(options, {
|
|
171
|
+
var originalCode = options === null || options === void 0 ? void 0 : options.code;
|
|
172
|
+
var originalReason = options === null || options === void 0 ? void 0 : options.reason;
|
|
173
|
+
var resolvedOptions = (0, _defaults2.default)(options || {}, {
|
|
165
174
|
code: 1000,
|
|
166
175
|
reason: 'Done'
|
|
167
176
|
});
|
|
177
|
+
if (resolvedOptions.code && resolvedOptions.code !== 1000 && (resolvedOptions.code < 3000 || resolvedOptions.code > 4999)) {
|
|
178
|
+
reject(new Error('`options.code` must be 1000 or between 3000 and 4999 (inclusive)'));
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
168
181
|
var closeTimer = (0, _commonTimers.safeSetTimeout)(function () {
|
|
169
182
|
try {
|
|
170
183
|
_this2.logger.info("socket,".concat(_this2._domain, ": no close event received, forcing closure"));
|
|
@@ -192,18 +205,18 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
192
205
|
_this2.logger.info("socket,".concat(_this2._domain, ": socket still connecting, triggering close manually"));
|
|
193
206
|
clearTimeout(closeTimer);
|
|
194
207
|
var closeEvent = {
|
|
195
|
-
code:
|
|
196
|
-
reason:
|
|
208
|
+
code: resolvedOptions.code,
|
|
209
|
+
reason: resolvedOptions.reason
|
|
197
210
|
};
|
|
198
211
|
_this2.onclose(closeEvent);
|
|
199
212
|
resolve(closeEvent);
|
|
200
213
|
try {
|
|
201
|
-
socket.close(
|
|
214
|
+
socket.close(resolvedOptions.code, resolvedOptions.reason);
|
|
202
215
|
} catch (error) {
|
|
203
216
|
_this2.logger.info("socket,".concat(_this2._domain, ": error while closing CONNECTING socket, likely due to browser incompatibility with custom close codes"), error);
|
|
204
217
|
}
|
|
205
218
|
} else {
|
|
206
|
-
socket.close(
|
|
219
|
+
socket.close(resolvedOptions.code, resolvedOptions.reason);
|
|
207
220
|
}
|
|
208
221
|
});
|
|
209
222
|
}
|
|
@@ -237,17 +250,17 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
237
250
|
reject(new Error('Socket#open() can only be called once per instance'));
|
|
238
251
|
return;
|
|
239
252
|
}
|
|
240
|
-
|
|
241
|
-
(0, _common.checkRequired)(['forceCloseDelay', 'token', 'trackingId', 'logger'],
|
|
242
|
-
(0, _keys.default)(
|
|
253
|
+
var resolvedOptions = options || {};
|
|
254
|
+
(0, _common.checkRequired)(['forceCloseDelay', 'token', 'trackingId', 'logger'], resolvedOptions);
|
|
255
|
+
(0, _keys.default)(resolvedOptions).forEach(function (key) {
|
|
243
256
|
(0, _defineProperty2.default)(_this3, key, {
|
|
244
257
|
enumerable: false,
|
|
245
|
-
value:
|
|
258
|
+
value: resolvedOptions[key]
|
|
246
259
|
});
|
|
247
260
|
});
|
|
248
261
|
var WebSocket = Socket.getWebSocketConstructor();
|
|
249
262
|
_this3.logger.info("socket,".concat(_this3._domain, ": creating WebSocket"));
|
|
250
|
-
var socket = new WebSocket(url, [],
|
|
263
|
+
var socket = new WebSocket(url, [], resolvedOptions);
|
|
251
264
|
socket.binaryType = 'arraybuffer';
|
|
252
265
|
socket.onmessage = _this3.onmessage;
|
|
253
266
|
socket.onclose = function (event) {
|
|
@@ -259,17 +272,17 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
259
272
|
// it's a bad websocket url. That'll trigger a device refresh; if it
|
|
260
273
|
// turns out we had a bad token, the device refresh should 401 and
|
|
261
274
|
// trigger a token refresh.
|
|
262
|
-
return reject(new
|
|
275
|
+
return reject(new UnknownResponseCtor(event));
|
|
263
276
|
case 4400:
|
|
264
|
-
return reject(new
|
|
277
|
+
return reject(new BadRequestCtor(event));
|
|
265
278
|
case 4401:
|
|
266
|
-
return reject(new
|
|
279
|
+
return reject(new NotAuthorizedCtor(event));
|
|
267
280
|
case 4403:
|
|
268
|
-
return reject(new
|
|
281
|
+
return reject(new ForbiddenCtor(event));
|
|
269
282
|
// case 4404:
|
|
270
283
|
// return reject(new NotFound(event));
|
|
271
284
|
default:
|
|
272
|
-
return reject(new
|
|
285
|
+
return reject(new ConnectionErrorCtor(event));
|
|
273
286
|
}
|
|
274
287
|
};
|
|
275
288
|
socket.onopen = function () {
|
|
@@ -298,7 +311,7 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
298
311
|
value: function onclose(event) {
|
|
299
312
|
this.logger.info("socket,".concat(this._domain, ": closed"), event.code, event.reason);
|
|
300
313
|
event = this._fixCloseCode(event);
|
|
301
|
-
this._rejectPendingResponses(new
|
|
314
|
+
this._rejectPendingResponses(new ConnectionErrorCtor(event));
|
|
302
315
|
this.emit('close', event);
|
|
303
316
|
|
|
304
317
|
// Remove all listeners to (a) avoid reacting to late pongs and (b) ensure
|
|
@@ -347,14 +360,19 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
347
360
|
var _this5 = this;
|
|
348
361
|
return new _promise.default(function (resolve, reject) {
|
|
349
362
|
if (_this5.readyState !== _constants.SOCKET_READY_STATE.OPEN) {
|
|
350
|
-
|
|
363
|
+
reject(new Error('INVALID_STATE_ERROR'));
|
|
364
|
+
return;
|
|
351
365
|
}
|
|
352
366
|
if ((0, _isObject2.default)(data)) {
|
|
353
367
|
data = (0, _stringify.default)(data);
|
|
354
368
|
}
|
|
355
369
|
var socket = sockets.get(_this5);
|
|
370
|
+
if (!socket) {
|
|
371
|
+
reject(new Error('INVALID_STATE_ERROR'));
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
356
374
|
socket.send(data);
|
|
357
|
-
|
|
375
|
+
resolve();
|
|
358
376
|
});
|
|
359
377
|
}
|
|
360
378
|
|
|
@@ -391,13 +409,13 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
391
409
|
return response === null || response === void 0 ? void 0 : response.statusMessage;
|
|
392
410
|
};
|
|
393
411
|
var createError = options.createError || function (response, statusCode, statusMessage) {
|
|
394
|
-
return new
|
|
412
|
+
return new ConnectionErrorCtor({
|
|
395
413
|
code: statusCode,
|
|
396
414
|
reason: statusMessage || (response === null || response === void 0 ? void 0 : response.reason) || 'Socket request failed'
|
|
397
415
|
});
|
|
398
416
|
};
|
|
399
417
|
var createTimeoutError = options.createTimeoutError || function () {
|
|
400
|
-
return new
|
|
418
|
+
return new ConnectionErrorCtor({
|
|
401
419
|
reason: 'Socket response not received before timeout'
|
|
402
420
|
});
|
|
403
421
|
};
|
|
@@ -469,7 +487,14 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
469
487
|
if (!token) {
|
|
470
488
|
return _promise.default.reject(new Error('`token` is required for Socket#refresh()'));
|
|
471
489
|
}
|
|
472
|
-
var refreshedToken
|
|
490
|
+
var refreshedToken;
|
|
491
|
+
if (typeof token === 'string') {
|
|
492
|
+
refreshedToken = token;
|
|
493
|
+
} else if (token && typeof token.toString === 'function') {
|
|
494
|
+
refreshedToken = token.toString();
|
|
495
|
+
} else {
|
|
496
|
+
refreshedToken = String(token);
|
|
497
|
+
}
|
|
473
498
|
return this._authorize(refreshedToken);
|
|
474
499
|
}
|
|
475
500
|
|
|
@@ -498,13 +523,13 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
498
523
|
return response === null || response === void 0 ? void 0 : response.statusMessage;
|
|
499
524
|
},
|
|
500
525
|
createError: function createError(response, statusCode, statusMessage) {
|
|
501
|
-
return new
|
|
526
|
+
return new NotAuthorizedCtor({
|
|
502
527
|
code: statusCode,
|
|
503
528
|
reason: statusMessage || 'Mobius auth failed'
|
|
504
529
|
});
|
|
505
530
|
},
|
|
506
531
|
createTimeoutError: function createTimeoutError() {
|
|
507
|
-
return new
|
|
532
|
+
return new NotAuthorizedCtor({
|
|
508
533
|
reason: 'Mobius auth response not received before timeout'
|
|
509
534
|
});
|
|
510
535
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_events","require","_common","_commonTimers","_errors","_constants","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty3","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","Boolean","prototype","valueOf","call","sockets","_weakMap","Socket","exports","_EventEmitter","_this","_classCallCheck2","_domain","_pendingResponses","_map","onmessage","bind","onclose","setMaxListeners","_inherits2","_createClass2","key","get","binaryType","bufferedAmount","extensions","protocol","readyState","url","value","close","options","_this2","_promise","resolve","reject","socket","logger","info","concat","SOCKET_READY_STATE","CLOSING","CLOSED","code","Error","originalCode","originalReason","reason","_defaults2","closeTimer","safeSetTimeout","error","warn","forceCloseDelay","event","clearTimeout","CONNECTING","closeEvent","open","_this3","URL","hostname","_unused","checkRequired","_keys","_defineProperty2","WebSocket","getWebSocketConstructor","_fixCloseCode","UnknownResponse","BadRequest","NotAuthorized","Forbidden","ConnectionError","onopen","_authorize","token","then","catch","onerror","set","_rejectPendingResponses","emit","removeAllListeners","_this4","data","JSON","parse","processedEvent","type","_acknowledge","_handlePendingResponse","send","_this5","OPEN","_isObject2","_stringify","sendRequest","_this6","undefined","request","trackingId","_createTrackingId","timeout","wssResponseTimeout","matchesResponse","response","getStatusCode","statusCode","getStatusMessage","statusMessage","createError","createTimeoutError","has","timeoutId","_clearPendingResponse","_has2","MESSAGE_TYPES","EVENT_ACK","eventId","message","refresh","refreshedToken","toString","AUTH","subtype","crypto","randomUUID","pendingResponse","delete","size","_from","values","_this7","refreshToken","toLowerCase","EventEmitter"],"sources":["socket-base.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {EventEmitter} from 'events';\n\nimport {checkRequired} from '@webex/common';\nimport {safeSetTimeout} from '@webex/common-timers';\nimport {defaults, has, isObject} from 'lodash';\n\nimport {\n BadRequest,\n ConnectionError,\n Forbidden,\n NotAuthorized,\n UnknownResponse,\n // NotFound\n} from '../errors';\nimport {MESSAGE_TYPES, SOCKET_READY_STATE} from './constants';\n\nconst sockets = new WeakMap();\n\n/**\n * Generalized socket abstraction\n */\nexport default class Socket extends EventEmitter {\n /**\n * constructor\n * @returns {Socket}\n */\n constructor() {\n super();\n this._domain = 'unknown-domain';\n this._pendingResponses = new Map();\n this.onmessage = this.onmessage.bind(this);\n this.onclose = this.onclose.bind(this);\n // Increase max listeners to avoid memory leak warning in tests\n this.setMaxListeners(10);\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {string}\n */\n get binaryType() {\n return sockets.get(this).binaryType;\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {number}\n */\n get bufferedAmount() {\n return sockets.get(this).bufferedAmount;\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {string}\n */\n get extensions() {\n return sockets.get(this).extensions;\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {string}\n */\n get protocol() {\n return sockets.get(this).protocol;\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {number}\n */\n get readyState() {\n return sockets.get(this).readyState;\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {string}\n */\n get url() {\n return sockets.get(this).url;\n }\n\n /**\n * Provides the environmentally appropriate constructor (ws in NodeJS,\n * WebSocket in browsers)\n * @returns {WebSocket}\n */\n static getWebSocketConstructor() {\n throw new Error(\n 'Socket.getWebSocketConstructor() must be implemented in an environmentally appropriate way'\n );\n }\n\n /**\n * Closes the socket\n * @param {Object} options\n * @param {string} options.reason\n * @param {number} options.code\n * @returns {Promise}\n */\n close(options) {\n return new Promise((resolve, reject) => {\n const socket = sockets.get(this);\n\n if (!socket) {\n // Open has not been called yet so there is no socket to close\n resolve();\n\n return;\n }\n // logger is defined once open is called\n this.logger.info(`socket,${this._domain}: closing`);\n\n if (\n socket.readyState === SOCKET_READY_STATE.CLOSING ||\n socket.readyState === SOCKET_READY_STATE.CLOSED\n ) {\n this.logger.info(`socket,${this._domain}: already closed`);\n resolve();\n\n return;\n }\n\n options = options || {};\n if (options.code && options.code !== 1000 && (options.code < 3000 || options.code > 4999)) {\n reject(new Error('`options.code` must be 1000 or between 3000 and 4999 (inclusive)'));\n\n return;\n }\n\n const originalCode = options.code;\n const originalReason = options.reason;\n\n options = defaults(options, {\n code: 1000,\n reason: 'Done',\n });\n\n const closeTimer = safeSetTimeout(() => {\n try {\n this.logger.info(`socket,${this._domain}: no close event received, forcing closure`);\n resolve(\n this.onclose(\n originalCode\n ? {code: originalCode, reason: originalReason || 'Done (unknown)'}\n : {\n code: 1000,\n reason: 'Done (forced)',\n }\n )\n );\n } catch (error) {\n this.logger.warn(`socket,${this._domain}: force-close failed`, error);\n }\n }, this.forceCloseDelay);\n\n socket.onclose = (event) => {\n this.logger.info(`socket,${this._domain}: close event fired`, event.code, event.reason);\n clearTimeout(closeTimer);\n this.onclose(event);\n resolve(event);\n };\n\n // If socket is still connecting, manually trigger close handler with desired code\n // because calling close() on a CONNECTING socket may not preserve custom codes\n if (socket.readyState === SOCKET_READY_STATE.CONNECTING) {\n this.logger.info(\n `socket,${this._domain}: socket still connecting, triggering close manually`\n );\n clearTimeout(closeTimer);\n const closeEvent = {code: options.code, reason: options.reason};\n this.onclose(closeEvent);\n resolve(closeEvent);\n try {\n socket.close(options.code, options.reason);\n } catch (error) {\n this.logger.info(\n `socket,${this._domain}: error while closing CONNECTING socket, likely due to browser incompatibility with custom close codes`,\n error\n );\n }\n } else {\n socket.close(options.code, options.reason);\n }\n });\n }\n\n /**\n * Opens a WebSocket\n * @param {string} url\n * @param {options} options\n * @param {number} options.forceCloseDelay (required)\n * @param {string} options.token (required)\n * @param {string} options.trackingId (required)\n * @param {Logger} options.logger (required)\n * @returns {Promise}\n */\n open(url, options) {\n try {\n this._domain = new URL(url).hostname;\n } catch {\n this._domain = url;\n }\n\n return new Promise((resolve, reject) => {\n /* eslint complexity: [0] */\n if (!url) {\n reject(new Error('`url` is required'));\n\n return;\n }\n\n if (sockets.get(this)) {\n reject(new Error('Socket#open() can only be called once per instance'));\n\n return;\n }\n\n options = options || {};\n\n checkRequired(['forceCloseDelay', 'token', 'trackingId', 'logger'], options);\n\n Object.keys(options).forEach((key) => {\n Reflect.defineProperty(this, key, {\n enumerable: false,\n value: options[key],\n });\n });\n\n const WebSocket = Socket.getWebSocketConstructor();\n\n this.logger.info(`socket,${this._domain}: creating WebSocket`);\n const socket = new WebSocket(url, [], options);\n\n socket.binaryType = 'arraybuffer';\n socket.onmessage = this.onmessage;\n\n socket.onclose = (event) => {\n event = this._fixCloseCode(event);\n this.logger.info(`socket,${this._domain}: closed before open`, event.code, event.reason);\n switch (event.code) {\n case 1005:\n // IE 11 doesn't seem to allow 4XXX codes, so if we get a 1005, assume\n // it's a bad websocket url. That'll trigger a device refresh; if it\n // turns out we had a bad token, the device refresh should 401 and\n // trigger a token refresh.\n return reject(new UnknownResponse(event));\n case 4400:\n return reject(new BadRequest(event));\n case 4401:\n return reject(new NotAuthorized(event));\n case 4403:\n return reject(new Forbidden(event));\n // case 4404:\n // return reject(new NotFound(event));\n default:\n return reject(new ConnectionError(event));\n }\n };\n\n socket.onopen = () => {\n this.logger.info(`socket,${this._domain}: connected`);\n this._authorize(this.token)\n .then(() => {\n this.logger.info(`socket,${this._domain}: authorized`);\n socket.onclose = this.onclose;\n resolve();\n })\n .catch(reject);\n };\n\n socket.onerror = (event) => {\n this.logger.warn(`socket,${this._domain}: error event fired`, event);\n };\n\n sockets.set(this, socket);\n this.logger.info(`socket,${this._domain}: waiting for server`);\n });\n }\n\n /**\n * Handles incoming CloseEvents\n * @param {CloseEvent} event\n * @returns {undefined}\n */\n onclose(event) {\n this.logger.info(`socket,${this._domain}: closed`, event.code, event.reason);\n\n event = this._fixCloseCode(event);\n this._rejectPendingResponses(new ConnectionError(event));\n this.emit('close', event);\n\n // Remove all listeners to (a) avoid reacting to late pongs and (b) ensure\n // we don't have a retain cycle.\n this.removeAllListeners();\n }\n\n /**\n * Handles incoming message events\n * @param {MessageEvent} event\n * @returns {undefined}\n */\n onmessage(event) {\n try {\n const data = JSON.parse(event.data);\n const processedEvent = {data};\n\n if (data.type === 'async_event') {\n this._acknowledge(processedEvent).catch((error) => {\n this.logger.warn(`socket,${this._domain}: failed to acknowledge async event`, error);\n });\n }\n\n // Match pending request/response promises before emitting the public message event.\n // The message is still emitted afterward for any external listeners that care about it.\n this._handlePendingResponse(data);\n this.emit('message', processedEvent);\n } catch (error) {\n /* istanbul ignore next */\n this.logger.warn(`socket,${this._domain}: error while receiving WebSocket message`, error);\n }\n }\n\n /**\n * Sends a message up the socket\n * @param {mixed} data\n * @returns {Promise}\n */\n send(data) {\n return new Promise((resolve, reject) => {\n if (this.readyState !== SOCKET_READY_STATE.OPEN) {\n return reject(new Error('INVALID_STATE_ERROR'));\n }\n\n if (isObject(data)) {\n data = JSON.stringify(data);\n }\n\n const socket = sockets.get(this);\n\n socket.send(data);\n\n return resolve();\n });\n }\n\n /**\n * Sends a request and resolves when the matching response arrives.\n * @param {Object} data\n * @param {Object} [options={}]\n * @param {Function} [options.matchesResponse]\n * @param {Function} [options.createError]\n * @param {Function} [options.createTimeoutError]\n * @param {Function} [options.getStatusCode]\n * @param {Function} [options.getStatusMessage]\n * @param {number} [options.timeout]\n * @returns {Promise<Object>}\n */\n sendRequest(data, options = {}) {\n if (!isObject(data)) {\n return Promise.reject(new Error('`data` is required'));\n }\n\n const request = {...data};\n const trackingId = request.trackingId || this._createTrackingId();\n const timeout = options.timeout || this.wssResponseTimeout || 10000;\n const matchesResponse =\n options.matchesResponse ||\n ((response) => response?.trackingId === trackingId && response?.type === 'response_event');\n const getStatusCode = options.getStatusCode || ((response) => response?.statusCode);\n const getStatusMessage = options.getStatusMessage || ((response) => response?.statusMessage);\n const createError =\n options.createError ||\n ((response, statusCode, statusMessage) =>\n new ConnectionError({\n code: statusCode,\n reason: statusMessage || response?.reason || 'Socket request failed',\n }));\n const createTimeoutError =\n options.createTimeoutError ||\n (() =>\n new ConnectionError({\n reason: 'Socket response not received before timeout',\n }));\n\n if (this._pendingResponses.has(trackingId)) {\n return Promise.reject(\n new Error(`socket request already pending for trackingId ${trackingId}`)\n );\n }\n\n request.trackingId = trackingId;\n\n return new Promise((resolve, reject) => {\n const timeoutId = safeSetTimeout(() => {\n this._clearPendingResponse(trackingId);\n reject(createTimeoutError(request));\n }, timeout);\n\n this._pendingResponses.set(trackingId, {\n request,\n matchesResponse,\n getStatusCode,\n getStatusMessage,\n createError,\n resolve: (response) => {\n this._clearPendingResponse(trackingId);\n resolve(response);\n },\n reject: (error) => {\n this._clearPendingResponse(trackingId);\n reject(error);\n },\n timeoutId,\n });\n\n this.send(request).catch((error) => {\n this._clearPendingResponse(trackingId);\n reject(error);\n });\n });\n }\n\n /**\n * Sends an acknowledgment for a specific event\n * @param {MessageEvent} event\n * @returns {Promise}\n */\n _acknowledge(event) {\n if (!event) {\n return Promise.reject(new Error('`event` is required'));\n }\n\n if (!has(event, 'data.eventId')) {\n return Promise.reject(new Error('`event.data.eventId` is required'));\n }\n\n // Don't try to acknowledge if socket is not in open state\n if (this.readyState !== SOCKET_READY_STATE.OPEN) {\n return Promise.resolve();\n }\n\n return this.send({\n type: MESSAGE_TYPES.EVENT_ACK,\n trackingId: event.data.trackingId || this._createTrackingId(),\n eventId: event.data.eventId,\n }).catch((error) => {\n if (error.message === 'INVALID_STATE_ERROR') {\n return Promise.resolve();\n }\n throw error;\n });\n }\n\n refresh(token) {\n if (!token) {\n return Promise.reject(new Error('`token` is required for Socket#refresh()'));\n }\n\n const refreshedToken = token && typeof token.toString === 'function' ? token.toString() : token;\n\n return this._authorize(refreshedToken);\n }\n\n /**\n * Sends an auth message up the socket with a refreshed token.\n * @param {string} token\n * @returns {Promise}\n */\n _authorize(token) {\n this.logger.info(`socket,${this._domain}: authorizing`);\n\n return this.sendRequest(\n {\n type: MESSAGE_TYPES.AUTH,\n data: {\n token,\n },\n },\n {\n matchesResponse: (response, request) =>\n response?.type === 'response_event' &&\n response?.subtype === MESSAGE_TYPES.AUTH &&\n response?.trackingId === request.trackingId,\n getStatusCode: (response) => response?.statusCode,\n getStatusMessage: (response) => response?.statusMessage,\n createError: (response, statusCode, statusMessage) =>\n new NotAuthorized({\n code: statusCode,\n reason: statusMessage || 'Mobius auth failed',\n }),\n createTimeoutError: () =>\n new NotAuthorized({\n reason: 'Mobius auth response not received before timeout',\n }),\n }\n );\n }\n\n /**\n * Creates a unique tracking ID\n * @private\n * @returns {string}\n */\n _createTrackingId() {\n return `${this.trackingId}_${crypto.randomUUID()}`;\n }\n\n /**\n * Clears a pending response entry.\n * @param {string} trackingId\n * @returns {void}\n */\n _clearPendingResponse(trackingId) {\n const pendingResponse = this._pendingResponses.get(trackingId);\n\n if (pendingResponse?.timeoutId) {\n clearTimeout(pendingResponse.timeoutId);\n }\n\n this._pendingResponses.delete(trackingId);\n }\n\n /**\n * Rejects all pending responses with the provided error.\n * @param {Error} error\n * @returns {void}\n */\n _rejectPendingResponses(error) {\n if (!this._pendingResponses.size) {\n return;\n }\n\n Array.from(this._pendingResponses.values()).forEach((pendingResponse) => {\n pendingResponse.reject(error);\n });\n }\n\n /**\n * Handles incoming responses for pending requests.\n * @param {Object} response\n * @returns {boolean}\n */\n _handlePendingResponse(response) {\n if (!response) {\n return false;\n }\n\n // Pending request correlation currently requires trackingId on the response.\n const pendingResponse = response.trackingId\n ? this._pendingResponses.get(response.trackingId)\n : undefined;\n\n if (!pendingResponse) {\n return false;\n }\n\n if (!pendingResponse.matchesResponse(response, pendingResponse.request)) {\n return false;\n }\n\n const statusCode = pendingResponse.getStatusCode(response);\n const statusMessage = pendingResponse.getStatusMessage(response);\n\n if (statusCode === 440 && response?.subtype !== MESSAGE_TYPES.AUTH) {\n if (typeof this.refreshToken === 'function') {\n Promise.resolve(this.refreshToken(response)).catch((error) => {\n this.logger.warn(`socket,${this._domain}: failed token-expiry re-auth`, error);\n });\n } else {\n this.logger.warn(\n `socket,${this._domain}: refreshToken callback is unavailable for statusCode 440`\n );\n }\n }\n\n if (statusCode === undefined) {\n pendingResponse.reject(\n pendingResponse.createError(\n response,\n statusCode,\n statusMessage || 'Socket response missing status code'\n )\n );\n } else if (statusCode >= 200 && statusCode < 300) {\n pendingResponse.resolve(response);\n } else {\n pendingResponse.reject(pendingResponse.createError(response, statusCode, statusMessage));\n }\n\n return true;\n }\n\n /**\n * Deals with the fact that some browsers drop some close codes (but not\n * close reasons).\n * @param {CloseEvent} event\n * @private\n * @returns {CloseEvent}\n */\n _fixCloseCode(event) {\n if (event.code === 1005 && event.reason) {\n switch (event.reason.toLowerCase()) {\n case 'replaced':\n this.logger.info(\n `socket,${this._domain}: fixing CloseEvent code for reason: `,\n event.reason\n );\n event.code = 4000;\n break;\n case 'authentication failed':\n case 'authentication did not happen within the timeout window of 30000 seconds.':\n this.logger.info(\n `socket,${this._domain}: fixing CloseEvent code for reason: `,\n event.reason\n );\n event.code = 1008;\n break;\n default:\n // do nothing\n }\n }\n\n return event;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_events","require","_common","_commonTimers","_errors","_constants","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty3","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","Boolean","prototype","valueOf","call","sockets","_weakMap","UnknownResponseCtor","UnknownResponse","BadRequestCtor","BadRequest","NotAuthorizedCtor","NotAuthorized","ForbiddenCtor","Forbidden","ConnectionErrorCtor","ConnectionError","Socket","exports","_EventEmitter","_this","_classCallCheck2","_domain","_pendingResponses","_map","onmessage","bind","onclose","setMaxListeners","_inherits2","_createClass2","key","get","binaryType","bufferedAmount","extensions","protocol","readyState","url","value","close","options","_this2","_promise","resolve","reject","socket","logger","info","concat","SOCKET_READY_STATE","CLOSING","CLOSED","originalCode","code","originalReason","reason","resolvedOptions","_defaults2","Error","closeTimer","safeSetTimeout","error","warn","forceCloseDelay","event","clearTimeout","CONNECTING","closeEvent","open","_this3","URL","hostname","_unused","checkRequired","_keys","_defineProperty2","WebSocket","getWebSocketConstructor","_fixCloseCode","onopen","_authorize","token","then","catch","onerror","set","_rejectPendingResponses","emit","removeAllListeners","_this4","data","JSON","parse","processedEvent","type","_acknowledge","_handlePendingResponse","send","_this5","OPEN","_isObject2","_stringify","sendRequest","_this6","undefined","request","trackingId","_createTrackingId","timeout","wssResponseTimeout","matchesResponse","response","getStatusCode","statusCode","getStatusMessage","statusMessage","createError","createTimeoutError","has","timeoutId","_clearPendingResponse","_has2","MESSAGE_TYPES","EVENT_ACK","eventId","message","refresh","refreshedToken","toString","String","AUTH","subtype","crypto","randomUUID","pendingResponse","delete","size","_from","values","_this7","refreshToken","toLowerCase","EventEmitter"],"sources":["socket-base.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {EventEmitter} from 'events';\n\n// @ts-expect-error `@webex/common` is still JS-only and does not ship declarations.\nimport {checkRequired} from '@webex/common';\n// @ts-expect-error `@webex/common-timers` is still JS-only and does not ship declarations.\nimport {safeSetTimeout} from '@webex/common-timers';\nimport {defaults, has, isObject} from 'lodash';\n\nimport {\n BadRequest,\n ConnectionError,\n Forbidden,\n NotAuthorized,\n UnknownResponse,\n // NotFound\n} from '../errors';\nimport {MESSAGE_TYPES, SOCKET_READY_STATE} from './constants';\nimport type {\n SocketCloseEvent,\n SocketLogger,\n SocketMessageEvent,\n PendingResponseEntry,\n SendRequestOptions,\n SocketOpenOptions,\n SocketResponse,\n SocketTransport,\n SocketTransportConstructor,\n} from './types';\n\nconst sockets = new WeakMap<Socket, SocketTransport>();\nconst UnknownResponseCtor = UnknownResponse as unknown as new (\n event?: SocketCloseEvent\n) => UnknownResponse;\nconst BadRequestCtor = BadRequest as unknown as new (event?: SocketCloseEvent) => BadRequest;\nconst NotAuthorizedCtor = NotAuthorized as unknown as new (\n event?: SocketCloseEvent\n) => NotAuthorized;\nconst ForbiddenCtor = Forbidden as unknown as new (event?: SocketCloseEvent) => Forbidden;\nconst ConnectionErrorCtor = ConnectionError as unknown as new (\n event?: SocketCloseEvent\n) => ConnectionError;\n\n/**\n * Generalized socket abstraction\n */\nexport default class Socket extends EventEmitter {\n _domain: string;\n\n _pendingResponses: Map<string, PendingResponseEntry>;\n\n forceCloseDelay!: number;\n\n logger!: SocketLogger;\n\n refreshToken?: (response: SocketResponse) => unknown;\n\n token!: string;\n\n trackingId!: string;\n\n wssResponseTimeout?: number;\n\n /**\n * constructor\n * @returns {Socket}\n */\n constructor() {\n super();\n this._domain = 'unknown-domain';\n this._pendingResponses = new Map();\n this.onmessage = this.onmessage.bind(this);\n this.onclose = this.onclose.bind(this);\n // Increase max listeners to avoid memory leak warning in tests\n this.setMaxListeners(10);\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {string}\n */\n get binaryType() {\n return sockets.get(this)!.binaryType;\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {number}\n */\n get bufferedAmount() {\n return sockets.get(this)!.bufferedAmount;\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {string}\n */\n get extensions() {\n return sockets.get(this)!.extensions;\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {string}\n */\n get protocol() {\n return sockets.get(this)!.protocol;\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {number}\n */\n get readyState() {\n return sockets.get(this)!.readyState;\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {string}\n */\n get url() {\n return sockets.get(this)!.url;\n }\n\n /**\n * Provides the environmentally appropriate constructor (ws in NodeJS,\n * WebSocket in browsers)\n * @returns {WebSocket}\n */\n static getWebSocketConstructor(): unknown {\n throw new Error(\n 'Socket.getWebSocketConstructor() must be implemented in an environmentally appropriate way'\n );\n }\n\n /**\n * Closes the socket\n * @param {Object} options\n * @param {string} options.reason\n * @param {number} options.code\n * @returns {Promise}\n */\n close(options?: {reason?: string; code?: number}) {\n return new Promise<SocketCloseEvent | void>((resolve, reject) => {\n const socket = sockets.get(this);\n\n if (!socket) {\n // Open has not been called yet so there is no socket to close\n resolve();\n\n return;\n }\n // logger is defined once open is called\n this.logger.info(`socket,${this._domain}: closing`);\n\n if (\n socket.readyState === SOCKET_READY_STATE.CLOSING ||\n socket.readyState === SOCKET_READY_STATE.CLOSED\n ) {\n this.logger.info(`socket,${this._domain}: already closed`);\n resolve();\n\n return;\n }\n\n const originalCode = options?.code;\n const originalReason = options?.reason;\n\n const resolvedOptions = defaults(options || {}, {\n code: 1000,\n reason: 'Done',\n }) as {code: number; reason: string};\n\n if (\n resolvedOptions.code &&\n resolvedOptions.code !== 1000 &&\n (resolvedOptions.code < 3000 || resolvedOptions.code > 4999)\n ) {\n reject(new Error('`options.code` must be 1000 or between 3000 and 4999 (inclusive)'));\n\n return;\n }\n\n const closeTimer = safeSetTimeout(() => {\n try {\n this.logger.info(`socket,${this._domain}: no close event received, forcing closure`);\n resolve(\n this.onclose(\n originalCode\n ? {code: originalCode, reason: originalReason || 'Done (unknown)'}\n : {\n code: 1000,\n reason: 'Done (forced)',\n }\n )\n );\n } catch (error) {\n this.logger.warn(`socket,${this._domain}: force-close failed`, error);\n }\n }, this.forceCloseDelay);\n\n socket.onclose = (event) => {\n this.logger.info(`socket,${this._domain}: close event fired`, event.code, event.reason);\n clearTimeout(closeTimer);\n this.onclose(event);\n resolve(event);\n };\n\n // If socket is still connecting, manually trigger close handler with desired code\n // because calling close() on a CONNECTING socket may not preserve custom codes\n if (socket.readyState === SOCKET_READY_STATE.CONNECTING) {\n this.logger.info(\n `socket,${this._domain}: socket still connecting, triggering close manually`\n );\n clearTimeout(closeTimer);\n const closeEvent: SocketCloseEvent = {\n code: resolvedOptions.code,\n reason: resolvedOptions.reason,\n };\n this.onclose(closeEvent);\n resolve(closeEvent);\n try {\n socket.close(resolvedOptions.code, resolvedOptions.reason);\n } catch (error) {\n this.logger.info(\n `socket,${this._domain}: error while closing CONNECTING socket, likely due to browser incompatibility with custom close codes`,\n error\n );\n }\n } else {\n socket.close(resolvedOptions.code, resolvedOptions.reason);\n }\n });\n }\n\n /**\n * Opens a WebSocket\n * @param {string} url\n * @param {options} options\n * @param {number} options.forceCloseDelay (required)\n * @param {string} options.token (required)\n * @param {string} options.trackingId (required)\n * @param {Logger} options.logger (required)\n * @returns {Promise}\n */\n open(url: string, options?: SocketOpenOptions) {\n try {\n this._domain = new URL(url).hostname;\n } catch {\n this._domain = url;\n }\n\n return new Promise<void>((resolve, reject) => {\n /* eslint complexity: [0] */\n if (!url) {\n reject(new Error('`url` is required'));\n\n return;\n }\n\n if (sockets.get(this)) {\n reject(new Error('Socket#open() can only be called once per instance'));\n\n return;\n }\n\n const resolvedOptions = (options || {}) as SocketOpenOptions;\n\n checkRequired(['forceCloseDelay', 'token', 'trackingId', 'logger'], resolvedOptions);\n\n Object.keys(resolvedOptions).forEach((key) => {\n Reflect.defineProperty(this, key, {\n enumerable: false,\n value: resolvedOptions[key],\n });\n });\n\n const WebSocket = Socket.getWebSocketConstructor() as SocketTransportConstructor;\n\n this.logger.info(`socket,${this._domain}: creating WebSocket`);\n const socket = new WebSocket(url, [], resolvedOptions);\n\n socket.binaryType = 'arraybuffer';\n socket.onmessage = this.onmessage;\n\n socket.onclose = (event) => {\n event = this._fixCloseCode(event);\n this.logger.info(`socket,${this._domain}: closed before open`, event.code, event.reason);\n switch (event.code) {\n case 1005:\n // IE 11 doesn't seem to allow 4XXX codes, so if we get a 1005, assume\n // it's a bad websocket url. That'll trigger a device refresh; if it\n // turns out we had a bad token, the device refresh should 401 and\n // trigger a token refresh.\n return reject(new UnknownResponseCtor(event));\n case 4400:\n return reject(new BadRequestCtor(event));\n case 4401:\n return reject(new NotAuthorizedCtor(event));\n case 4403:\n return reject(new ForbiddenCtor(event));\n // case 4404:\n // return reject(new NotFound(event));\n default:\n return reject(new ConnectionErrorCtor(event));\n }\n };\n\n socket.onopen = () => {\n this.logger.info(`socket,${this._domain}: connected`);\n this._authorize(this.token)\n .then(() => {\n this.logger.info(`socket,${this._domain}: authorized`);\n socket.onclose = this.onclose;\n resolve();\n })\n .catch(reject);\n };\n\n socket.onerror = (event) => {\n this.logger.warn(`socket,${this._domain}: error event fired`, event);\n };\n\n sockets.set(this, socket);\n this.logger.info(`socket,${this._domain}: waiting for server`);\n });\n }\n\n /**\n * Handles incoming CloseEvents\n * @param {CloseEvent} event\n * @returns {undefined}\n */\n onclose(event: SocketCloseEvent) {\n this.logger.info(`socket,${this._domain}: closed`, event.code, event.reason);\n\n event = this._fixCloseCode(event);\n this._rejectPendingResponses(new ConnectionErrorCtor(event));\n this.emit('close', event);\n\n // Remove all listeners to (a) avoid reacting to late pongs and (b) ensure\n // we don't have a retain cycle.\n this.removeAllListeners();\n }\n\n /**\n * Handles incoming message events\n * @param {MessageEvent} event\n * @returns {undefined}\n */\n onmessage(event: SocketMessageEvent<string>) {\n try {\n const data = JSON.parse(event.data) as SocketResponse;\n const processedEvent = {data};\n\n if (data.type === 'async_event') {\n this._acknowledge(processedEvent).catch((error) => {\n this.logger.warn(`socket,${this._domain}: failed to acknowledge async event`, error);\n });\n }\n\n // Match pending request/response promises before emitting the public message event.\n // The message is still emitted afterward for any external listeners that care about it.\n this._handlePendingResponse(data);\n this.emit('message', processedEvent);\n } catch (error) {\n /* istanbul ignore next */\n this.logger.warn(`socket,${this._domain}: error while receiving WebSocket message`, error);\n }\n }\n\n /**\n * Sends a message up the socket\n * @param {mixed} data\n * @returns {Promise}\n */\n send(data: string | Record<string, unknown>) {\n return new Promise<void>((resolve, reject) => {\n if (this.readyState !== SOCKET_READY_STATE.OPEN) {\n reject(new Error('INVALID_STATE_ERROR'));\n\n return;\n }\n\n if (isObject(data)) {\n data = JSON.stringify(data);\n }\n\n const socket = sockets.get(this);\n\n if (!socket) {\n reject(new Error('INVALID_STATE_ERROR'));\n\n return;\n }\n\n socket.send(data);\n\n resolve();\n });\n }\n\n /**\n * Sends a request and resolves when the matching response arrives.\n * @param {Object} data\n * @param {Object} [options={}]\n * @param {Function} [options.matchesResponse]\n * @param {Function} [options.createError]\n * @param {Function} [options.createTimeoutError]\n * @param {Function} [options.getStatusCode]\n * @param {Function} [options.getStatusMessage]\n * @param {number} [options.timeout]\n * @returns {Promise<Object>}\n */\n sendRequest(data: SocketResponse, options: SendRequestOptions = {}) {\n if (!isObject(data)) {\n return Promise.reject(new Error('`data` is required'));\n }\n\n const request = {...data};\n const trackingId = request.trackingId || this._createTrackingId();\n const timeout = options.timeout || this.wssResponseTimeout || 10000;\n const matchesResponse =\n options.matchesResponse ||\n ((response) => response?.trackingId === trackingId && response?.type === 'response_event');\n const getStatusCode = options.getStatusCode || ((response) => response?.statusCode);\n const getStatusMessage = options.getStatusMessage || ((response) => response?.statusMessage);\n const createError =\n options.createError ||\n ((response, statusCode, statusMessage) =>\n new ConnectionErrorCtor({\n code: statusCode,\n reason: statusMessage || response?.reason || 'Socket request failed',\n }));\n const createTimeoutError =\n options.createTimeoutError ||\n (() =>\n new ConnectionErrorCtor({\n reason: 'Socket response not received before timeout',\n }));\n\n if (this._pendingResponses.has(trackingId)) {\n return Promise.reject(\n new Error(`socket request already pending for trackingId ${trackingId}`)\n );\n }\n\n request.trackingId = trackingId;\n\n return new Promise<SocketResponse>((resolve, reject) => {\n const timeoutId = safeSetTimeout(() => {\n this._clearPendingResponse(trackingId);\n reject(createTimeoutError(request));\n }, timeout);\n\n this._pendingResponses.set(trackingId, {\n request,\n matchesResponse,\n getStatusCode,\n getStatusMessage,\n createError,\n resolve: (response) => {\n this._clearPendingResponse(trackingId);\n resolve(response);\n },\n reject: (error) => {\n this._clearPendingResponse(trackingId);\n reject(error);\n },\n timeoutId,\n });\n\n this.send(request).catch((error) => {\n this._clearPendingResponse(trackingId);\n reject(error);\n });\n });\n }\n\n /**\n * Sends an acknowledgment for a specific event\n * @param {MessageEvent} event\n * @returns {Promise}\n */\n _acknowledge(event: SocketMessageEvent<SocketResponse>) {\n if (!event) {\n return Promise.reject(new Error('`event` is required'));\n }\n\n if (!has(event, 'data.eventId')) {\n return Promise.reject(new Error('`event.data.eventId` is required'));\n }\n\n // Don't try to acknowledge if socket is not in open state\n if (this.readyState !== SOCKET_READY_STATE.OPEN) {\n return Promise.resolve();\n }\n\n return this.send({\n type: MESSAGE_TYPES.EVENT_ACK,\n trackingId: event.data.trackingId || this._createTrackingId(),\n eventId: event.data.eventId,\n }).catch((error) => {\n if (error.message === 'INVALID_STATE_ERROR') {\n return Promise.resolve();\n }\n throw error;\n });\n }\n\n refresh(token: string | {toString(): string}) {\n if (!token) {\n return Promise.reject(new Error('`token` is required for Socket#refresh()'));\n }\n\n let refreshedToken;\n\n if (typeof token === 'string') {\n refreshedToken = token;\n } else if (token && typeof token.toString === 'function') {\n refreshedToken = token.toString();\n } else {\n refreshedToken = String(token);\n }\n\n return this._authorize(refreshedToken);\n }\n\n /**\n * Sends an auth message up the socket with a refreshed token.\n * @param {string} token\n * @returns {Promise}\n */\n _authorize(token: string) {\n this.logger.info(`socket,${this._domain}: authorizing`);\n\n return this.sendRequest(\n {\n type: MESSAGE_TYPES.AUTH,\n data: {\n token,\n },\n },\n {\n matchesResponse: (response, request) =>\n response?.type === 'response_event' &&\n response?.subtype === MESSAGE_TYPES.AUTH &&\n response?.trackingId === request.trackingId,\n getStatusCode: (response) => response?.statusCode,\n getStatusMessage: (response) => response?.statusMessage,\n createError: (response, statusCode, statusMessage) =>\n new NotAuthorizedCtor({\n code: statusCode,\n reason: statusMessage || 'Mobius auth failed',\n }),\n createTimeoutError: () =>\n new NotAuthorizedCtor({\n reason: 'Mobius auth response not received before timeout',\n }),\n }\n );\n }\n\n /**\n * Creates a unique tracking ID\n * @private\n * @returns {string}\n */\n _createTrackingId() {\n return `${this.trackingId}_${crypto.randomUUID()}`;\n }\n\n /**\n * Clears a pending response entry.\n * @param {string} trackingId\n * @returns {void}\n */\n _clearPendingResponse(trackingId: string) {\n const pendingResponse = this._pendingResponses.get(trackingId);\n\n if (pendingResponse?.timeoutId) {\n clearTimeout(pendingResponse.timeoutId);\n }\n\n this._pendingResponses.delete(trackingId);\n }\n\n /**\n * Rejects all pending responses with the provided error.\n * @param {Error} error\n * @returns {void}\n */\n _rejectPendingResponses(error: unknown) {\n if (!this._pendingResponses.size) {\n return;\n }\n\n Array.from(this._pendingResponses.values()).forEach((pendingResponse) => {\n pendingResponse.reject(error);\n });\n }\n\n /**\n * Handles incoming responses for pending requests.\n * @param {Object} response\n * @returns {boolean}\n */\n _handlePendingResponse(response: SocketResponse) {\n if (!response) {\n return false;\n }\n\n // Pending request correlation currently requires trackingId on the response.\n const pendingResponse = response.trackingId\n ? this._pendingResponses.get(response.trackingId)\n : undefined;\n\n if (!pendingResponse) {\n return false;\n }\n\n if (!pendingResponse.matchesResponse(response, pendingResponse.request)) {\n return false;\n }\n\n const statusCode = pendingResponse.getStatusCode(response);\n const statusMessage = pendingResponse.getStatusMessage(response);\n\n if (statusCode === 440 && response?.subtype !== MESSAGE_TYPES.AUTH) {\n if (typeof this.refreshToken === 'function') {\n Promise.resolve(this.refreshToken(response)).catch((error) => {\n this.logger.warn(`socket,${this._domain}: failed token-expiry re-auth`, error);\n });\n } else {\n this.logger.warn(\n `socket,${this._domain}: refreshToken callback is unavailable for statusCode 440`\n );\n }\n }\n\n if (statusCode === undefined) {\n pendingResponse.reject(\n pendingResponse.createError(\n response,\n statusCode,\n statusMessage || 'Socket response missing status code'\n )\n );\n } else if (statusCode >= 200 && statusCode < 300) {\n pendingResponse.resolve(response);\n } else {\n pendingResponse.reject(pendingResponse.createError(response, statusCode, statusMessage));\n }\n\n return true;\n }\n\n /**\n * Deals with the fact that some browsers drop some close codes (but not\n * close reasons).\n * @param {CloseEvent} event\n * @private\n * @returns {CloseEvent}\n */\n _fixCloseCode(event: SocketCloseEvent) {\n if (event.code === 1005 && event.reason) {\n switch (event.reason.toLowerCase()) {\n case 'replaced':\n this.logger.info(\n `socket,${this._domain}: fixing CloseEvent code for reason: `,\n event.reason\n );\n event.code = 4000;\n break;\n case 'authentication failed':\n case 'authentication did not happen within the timeout window of 30000 seconds.':\n this.logger.info(\n `socket,${this._domain}: fixing CloseEvent code for reason: `,\n event.reason\n );\n event.code = 1008;\n break;\n default:\n // do nothing\n }\n }\n\n return event;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_ws","_interopRequireDefault","require","_socketBase","Socket","getWebSocketConstructor","WS","_default","exports","default"],"sources":["socket.
|
|
1
|
+
{"version":3,"names":["_ws","_interopRequireDefault","require","_socketBase","Socket","getWebSocketConstructor","WS","_default","exports","default"],"sources":["socket.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport WS from 'ws';\n\nimport Socket from './socket-base';\nimport type {SocketTransportConstructor} from './types';\n\nSocket.getWebSocketConstructor = function getWebSocketConstructor() {\n return WS as unknown as SocketTransportConstructor;\n};\n\nexport default Socket;\n"],"mappings":";;;;;;;;AAIA,IAAAA,GAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAF,sBAAA,CAAAC,OAAA;AANA;AACA;AACA;;AAOAE,mBAAM,CAACC,uBAAuB,GAAG,SAASA,uBAAuBA,CAAA,EAAG;EAClE,OAAOC,WAAE;AACX,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaL,mBAAM","ignoreList":[]}
|
|
@@ -16,21 +16,11 @@ var _socketBase = _interopRequireDefault(require("./socket-base"));
|
|
|
16
16
|
/* eslint-env browser */
|
|
17
17
|
|
|
18
18
|
_socketBase.default.getWebSocketConstructor = function getWebSocketConstructor() {
|
|
19
|
-
// Grabed from https://github.com/heineiuo/isomorphic-ws/blob/9b977394ac875638c045fd9cf774ed418484b394/browser.js
|
|
20
|
-
var ws;
|
|
21
19
|
if (typeof WebSocket !== 'undefined') {
|
|
22
|
-
|
|
23
|
-
} else if (typeof MozWebSocket !== 'undefined') {
|
|
24
|
-
// eslint-disable-next-line no-undef
|
|
25
|
-
ws = MozWebSocket;
|
|
26
|
-
} else if (typeof global !== 'undefined') {
|
|
27
|
-
ws = global.WebSocket || global.MozWebSocket;
|
|
28
|
-
} else if (typeof window !== 'undefined') {
|
|
29
|
-
ws = window.WebSocket || window.MozWebSocket;
|
|
30
|
-
} else if (typeof self !== 'undefined') {
|
|
31
|
-
ws = self.WebSocket || self.MozWebSocket;
|
|
20
|
+
return WebSocket;
|
|
32
21
|
}
|
|
33
|
-
|
|
22
|
+
var scope = typeof globalThis !== 'undefined' ? globalThis : undefined;
|
|
23
|
+
return (scope === null || scope === void 0 ? void 0 : scope.WebSocket) || (scope === null || scope === void 0 ? void 0 : scope.MozWebSocket);
|
|
34
24
|
};
|
|
35
25
|
var _default = exports.default = _socketBase.default;
|
|
36
26
|
//# sourceMappingURL=socket.shim.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_socketBase","_interopRequireDefault","require","Socket","getWebSocketConstructor","
|
|
1
|
+
{"version":3,"names":["_socketBase","_interopRequireDefault","require","Socket","getWebSocketConstructor","WebSocket","scope","globalThis","undefined","MozWebSocket","_default","exports","default"],"sources":["socket.shim.ts"],"sourcesContent":["/* eslint-disable no-restricted-globals */\n\n/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-env browser */\n\nimport Socket from './socket-base';\nimport type {BrowserWebSocketConstructor, ShimGlobalScope} from './types';\n\nSocket.getWebSocketConstructor = function getWebSocketConstructor() {\n if (typeof WebSocket !== 'undefined') {\n return WebSocket;\n }\n\n const scope = typeof globalThis !== 'undefined' ? (globalThis as ShimGlobalScope) : undefined;\n\n return (scope?.WebSocket || scope?.MozWebSocket) as BrowserWebSocketConstructor;\n};\n\nexport default Socket;\n"],"mappings":";;;;;;;;AAQA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AARA;;AAEA;AACA;AACA;;AAEA;;AAKAC,mBAAM,CAACC,uBAAuB,GAAG,SAASA,uBAAuBA,CAAA,EAAG;EAClE,IAAI,OAAOC,SAAS,KAAK,WAAW,EAAE;IACpC,OAAOA,SAAS;EAClB;EAEA,IAAMC,KAAK,GAAG,OAAOC,UAAU,KAAK,WAAW,GAAIA,UAAU,GAAuBC,SAAS;EAE7F,OAAQ,CAAAF,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAED,SAAS,MAAIC,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEG,YAAY;AACjD,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaT,mBAAM","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export type BrowserWebSocketConstructor = typeof WebSocket;\n\nexport type ShimGlobalScope = {\n MozWebSocket?: BrowserWebSocketConstructor;\n WebSocket?: BrowserWebSocketConstructor;\n};\n\nexport type SocketCloseEvent = {\n code?: number;\n reason?: string;\n};\n\nexport type SocketMessageEvent<T = unknown> = {\n data: T;\n};\n\nexport type SocketLogger = {\n info: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n};\n\nexport type SocketResponse = {\n trackingId?: string;\n type?: string;\n subtype?: string;\n statusCode?: number;\n statusMessage?: string;\n reason?: string;\n eventId?: string;\n [key: string]: unknown;\n};\n\nexport type PendingResponseEntry = {\n request: SocketResponse;\n matchesResponse: (response: SocketResponse, request: SocketResponse) => boolean;\n getStatusCode: (response: SocketResponse) => number | undefined;\n getStatusMessage: (response: SocketResponse) => string | undefined;\n createError: (response: SocketResponse, statusCode?: number, statusMessage?: string) => unknown;\n resolve: (response: SocketResponse) => void;\n reject: (error: unknown) => void;\n timeoutId: ReturnType<typeof setTimeout>;\n};\n\nexport type SendRequestOptions = {\n matchesResponse?: (response: SocketResponse, request: SocketResponse) => boolean;\n createError?: (response: SocketResponse, statusCode?: number, statusMessage?: string) => unknown;\n createTimeoutError?: (request: SocketResponse) => unknown;\n getStatusCode?: (response: SocketResponse) => number | undefined;\n getStatusMessage?: (response: SocketResponse) => string | undefined;\n timeout?: number;\n};\n\nexport type SocketOpenOptions = {\n forceCloseDelay: number;\n token: string;\n trackingId: string;\n logger: SocketLogger;\n wssResponseTimeout?: number;\n refreshToken?: (response: SocketResponse) => unknown;\n [key: string]: unknown;\n};\n\nexport type SocketTransport = {\n binaryType: string;\n bufferedAmount: number;\n extensions: string;\n protocol: string;\n readyState: number;\n url: string;\n onmessage: ((event: SocketMessageEvent<string>) => void) | null;\n onclose: ((event: SocketCloseEvent) => void) | null;\n onopen: (() => void) | null;\n onerror: ((event: unknown) => void) | null;\n close: (code?: number, reason?: string) => void;\n send: (data: string) => void;\n};\n\nexport type SocketTransportConstructor = new (...args: unknown[]) => SocketTransport;\n"],"mappings":"","ignoreList":[]}
|