@webex/calling 3.12.0-mobius-socket.2 → 3.12.0-mobius-socket.4

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.
Files changed (42) hide show
  1. package/dist/CallingClient/CallingClient.js +5 -2
  2. package/dist/CallingClient/CallingClient.js.map +1 -1
  3. package/dist/CallingClient/registration/register.js +360 -303
  4. package/dist/CallingClient/registration/register.js.map +1 -1
  5. package/dist/CallingClient/registration/register.test.js +2 -8
  6. package/dist/CallingClient/registration/register.test.js.map +1 -1
  7. package/dist/CallingClient/registration/webWorker.js +41 -106
  8. package/dist/CallingClient/registration/webWorker.js.map +1 -1
  9. package/dist/CallingClient/registration/webWorker.test.js +39 -153
  10. package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
  11. package/dist/CallingClient/registration/webWorkerStr.js +1 -1
  12. package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
  13. package/dist/CallingClient/utils/mobiusSocketMapper.js +4 -0
  14. package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -1
  15. package/dist/CallingClient/utils/request.js +48 -24
  16. package/dist/CallingClient/utils/request.js.map +1 -1
  17. package/dist/common/Utils.js +0 -3
  18. package/dist/common/Utils.js.map +1 -1
  19. package/dist/common/types.js +2 -0
  20. package/dist/common/types.js.map +1 -1
  21. package/dist/module/CallingClient/CallingClient.js +2 -1
  22. package/dist/module/CallingClient/registration/register.js +43 -6
  23. package/dist/module/CallingClient/registration/webWorker.js +42 -61
  24. package/dist/module/CallingClient/registration/webWorkerStr.js +47 -82
  25. package/dist/module/CallingClient/utils/mobiusSocketMapper.js +5 -0
  26. package/dist/module/CallingClient/utils/request.js +7 -4
  27. package/dist/module/common/Utils.js +0 -1
  28. package/dist/module/common/types.js +2 -0
  29. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  30. package/dist/types/CallingClient/registration/register.d.ts +1 -0
  31. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  32. package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
  33. package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
  34. package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
  35. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +1 -0
  36. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -1
  37. package/dist/types/CallingClient/utils/request.d.ts +1 -1
  38. package/dist/types/CallingClient/utils/request.d.ts.map +1 -1
  39. package/dist/types/common/Utils.d.ts.map +1 -1
  40. package/dist/types/common/types.d.ts +2 -0
  41. package/dist/types/common/types.d.ts.map +1 -1
  42. package/package.json +2 -2
@@ -1,128 +1,63 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
- var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
4
  _Object$defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
- var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
10
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
11
- var _uuid = require("uuid");
12
8
  var _types = require("../../common/types");
13
9
  /* eslint-env worker */
14
10
 
15
11
  var keepaliveTimer;
12
+ var keepAliveRetryCount = 0;
13
+ var keepaliveInFlight = false;
14
+ var clearKeepaliveTimer = function clearKeepaliveTimer() {
15
+ if (keepaliveTimer) {
16
+ clearInterval(keepaliveTimer);
17
+ keepaliveTimer = undefined;
18
+ }
19
+ };
16
20
  var messageHandler = function messageHandler(event) {
17
21
  var type = event.data.type;
18
-
19
- // TODO: Use APIRequest to make the request
20
- var postKeepAlive = /*#__PURE__*/function () {
21
- var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(accessToken, deviceUrl, url) {
22
- var response;
23
- return _regenerator.default.wrap(function (_context) {
24
- while (1) switch (_context.prev = _context.next) {
25
- case 0:
26
- _context.next = 1;
27
- return fetch("".concat(url, "/status"), {
28
- method: _types.HTTP_METHODS.POST,
29
- headers: {
30
- 'cisco-device-url': deviceUrl,
31
- 'spark-user-agent': 'webex-calling/beta',
32
- Authorization: "".concat(accessToken),
33
- trackingId: "web_worker_".concat((0, _uuid.v4)())
34
- }
35
- });
36
- case 1:
37
- response = _context.sent;
38
- if (response.ok) {
39
- _context.next = 2;
40
- break;
41
- }
42
- throw response;
43
- case 2:
44
- return _context.abrupt("return", response);
45
- case 3:
46
- case "end":
47
- return _context.stop();
48
- }
49
- }, _callee);
50
- }));
51
- return function postKeepAlive(_x, _x2, _x3) {
52
- return _ref.apply(this, arguments);
53
- };
54
- }();
55
22
  if (type === _types.WorkerMessageType.START_KEEPALIVE) {
56
- var keepAliveRetryCount = 0;
57
23
  var _event$data = event.data,
58
- accessToken = _event$data.accessToken,
59
- deviceUrl = _event$data.deviceUrl,
60
24
  interval = _event$data.interval,
61
- retryCountThreshold = _event$data.retryCountThreshold,
62
- url = _event$data.url;
63
- if (keepaliveTimer) {
64
- clearInterval(keepaliveTimer);
65
- keepaliveTimer = undefined;
25
+ retryCountThreshold = _event$data.retryCountThreshold;
26
+ clearKeepaliveTimer();
27
+ keepAliveRetryCount = 0;
28
+ keepaliveInFlight = false;
29
+ keepaliveTimer = setInterval(function () {
30
+ if (keepAliveRetryCount < retryCountThreshold && !keepaliveInFlight) {
31
+ keepaliveInFlight = true;
32
+ postMessage({
33
+ type: _types.WorkerMessageType.SEND_KEEPALIVE
34
+ });
35
+ }
36
+ }, interval * 1000);
37
+ }
38
+ if (type === _types.WorkerMessageType.KEEPALIVE_RESULT) {
39
+ keepaliveInFlight = false;
40
+ if (event.data.err === undefined) {
41
+ if (keepAliveRetryCount > 0) {
42
+ postMessage({
43
+ type: _types.WorkerMessageType.KEEPALIVE_SUCCESS,
44
+ statusCode: event.data.statusCode
45
+ });
46
+ }
47
+ keepAliveRetryCount = 0;
48
+ } else {
49
+ keepAliveRetryCount += 1;
50
+ postMessage({
51
+ type: _types.WorkerMessageType.KEEPALIVE_FAILURE,
52
+ err: event.data.err,
53
+ keepAliveRetryCount: keepAliveRetryCount
54
+ });
66
55
  }
67
- keepaliveTimer = setInterval(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
68
- var res, statusCode, _err$headers, _err$headers2, headers, error, _t;
69
- return _regenerator.default.wrap(function (_context2) {
70
- while (1) switch (_context2.prev = _context2.next) {
71
- case 0:
72
- if (!(keepAliveRetryCount < retryCountThreshold)) {
73
- _context2.next = 4;
74
- break;
75
- }
76
- _context2.prev = 1;
77
- _context2.next = 2;
78
- return postKeepAlive(accessToken, deviceUrl, url);
79
- case 2:
80
- res = _context2.sent;
81
- statusCode = res.status;
82
- if (keepAliveRetryCount > 0) {
83
- postMessage({
84
- type: _types.WorkerMessageType.KEEPALIVE_SUCCESS,
85
- statusCode: statusCode
86
- });
87
- }
88
- keepAliveRetryCount = 0;
89
- _context2.next = 4;
90
- break;
91
- case 3:
92
- _context2.prev = 3;
93
- _t = _context2["catch"](1);
94
- headers = {};
95
- if ((_err$headers = _t.headers) !== null && _err$headers !== void 0 && _err$headers.has('Retry-After')) {
96
- headers['retry-after'] = _t.headers.get('Retry-After');
97
- }
98
- if ((_err$headers2 = _t.headers) !== null && _err$headers2 !== void 0 && _err$headers2.has('Trackingid')) {
99
- // eslint-disable-next-line dot-notation
100
- headers['trackingid'] = _t.headers.get('Trackingid');
101
- }
102
- error = {
103
- headers: headers,
104
- statusCode: _t.status,
105
- statusText: _t.statusText,
106
- type: _t.type
107
- };
108
- keepAliveRetryCount += 1;
109
- postMessage({
110
- type: _types.WorkerMessageType.KEEPALIVE_FAILURE,
111
- err: error,
112
- keepAliveRetryCount: keepAliveRetryCount
113
- });
114
- case 4:
115
- case "end":
116
- return _context2.stop();
117
- }
118
- }, _callee2, null, [[1, 3]]);
119
- })), interval * 1000);
120
56
  }
121
57
  if (type === _types.WorkerMessageType.CLEAR_KEEPALIVE) {
122
- if (keepaliveTimer) {
123
- clearInterval(keepaliveTimer);
124
- keepaliveTimer = undefined;
125
- }
58
+ clearKeepaliveTimer();
59
+ keepAliveRetryCount = 0;
60
+ keepaliveInFlight = false;
126
61
  }
127
62
  };
128
63
 
@@ -1 +1 @@
1
- {"version":3,"names":["_uuid","require","_types","keepaliveTimer","messageHandler","event","type","data","postKeepAlive","_ref","_asyncToGenerator2","default","_regenerator","mark","_callee","accessToken","deviceUrl","url","response","wrap","_context","prev","next","fetch","concat","method","HTTP_METHODS","POST","headers","Authorization","trackingId","uuid","sent","ok","abrupt","stop","_x","_x2","_x3","apply","arguments","WorkerMessageType","START_KEEPALIVE","keepAliveRetryCount","_event$data","interval","retryCountThreshold","clearInterval","undefined","setInterval","_callee2","res","statusCode","_err$headers","_err$headers2","error","_t","_context2","status","postMessage","KEEPALIVE_SUCCESS","has","get","statusText","KEEPALIVE_FAILURE","err","CLEAR_KEEPALIVE","self","addEventListener","_default","exports"],"sources":["webWorker.ts"],"sourcesContent":["/* eslint-env worker */\nimport {v4 as uuid} from 'uuid';\nimport {HTTP_METHODS, KeepaliveStatusMessage, WorkerMessageType} from '../../common/types';\n\nlet keepaliveTimer: NodeJS.Timeout | undefined;\n\nconst messageHandler = (event: MessageEvent) => {\n const {type} = event.data;\n\n // TODO: Use APIRequest to make the request\n const postKeepAlive = async (accessToken: string, deviceUrl: string, url: string) => {\n const response = await fetch(`${url}/status`, {\n method: HTTP_METHODS.POST,\n headers: {\n 'cisco-device-url': deviceUrl,\n 'spark-user-agent': 'webex-calling/beta',\n Authorization: `${accessToken}`,\n trackingId: `web_worker_${uuid()}`,\n },\n });\n\n if (!response.ok) {\n throw response;\n }\n\n return response;\n };\n\n if (type === WorkerMessageType.START_KEEPALIVE) {\n let keepAliveRetryCount = 0;\n const {accessToken, deviceUrl, interval, retryCountThreshold, url} = event.data;\n\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n\n keepaliveTimer = setInterval(async () => {\n if (keepAliveRetryCount < retryCountThreshold) {\n try {\n const res = await postKeepAlive(accessToken, deviceUrl, url);\n const statusCode = res.status;\n if (keepAliveRetryCount > 0) {\n postMessage({\n type: WorkerMessageType.KEEPALIVE_SUCCESS,\n statusCode,\n } as KeepaliveStatusMessage);\n }\n keepAliveRetryCount = 0;\n } catch (err: any) {\n const headers = {} as Record<string, string>;\n if (err.headers?.has('Retry-After')) {\n headers['retry-after'] = err.headers.get('Retry-After');\n }\n\n if (err.headers?.has('Trackingid')) {\n // eslint-disable-next-line dot-notation\n headers['trackingid'] = err.headers.get('Trackingid');\n }\n\n const error = {\n headers,\n statusCode: err.status,\n statusText: err.statusText,\n type: err.type,\n };\n keepAliveRetryCount += 1;\n postMessage({\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: error,\n keepAliveRetryCount,\n } as KeepaliveStatusMessage);\n }\n }\n }, interval * 1000);\n }\n\n if (type === WorkerMessageType.CLEAR_KEEPALIVE) {\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n }\n};\n\n// eslint-disable-next-line no-restricted-globals\nself.addEventListener('message', messageHandler);\nexport default messageHandler;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","keepaliveTimer","keepAliveRetryCount","keepaliveInFlight","clearKeepaliveTimer","clearInterval","undefined","messageHandler","event","type","data","WorkerMessageType","START_KEEPALIVE","_event$data","interval","retryCountThreshold","setInterval","postMessage","SEND_KEEPALIVE","KEEPALIVE_RESULT","err","KEEPALIVE_SUCCESS","statusCode","KEEPALIVE_FAILURE","CLEAR_KEEPALIVE","self","addEventListener","_default","exports","default"],"sources":["webWorker.ts"],"sourcesContent":["/* eslint-env worker */\nimport {KeepaliveStatusMessage, WorkerMessageType} from '../../common/types';\n\nlet keepaliveTimer: NodeJS.Timeout | undefined;\nlet keepAliveRetryCount = 0;\nlet keepaliveInFlight = false;\n\nconst clearKeepaliveTimer = () => {\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n};\n\nconst messageHandler = (event: MessageEvent) => {\n const {type} = event.data;\n\n if (type === WorkerMessageType.START_KEEPALIVE) {\n const {interval, retryCountThreshold} = event.data;\n clearKeepaliveTimer();\n keepAliveRetryCount = 0;\n keepaliveInFlight = false;\n\n keepaliveTimer = setInterval(() => {\n if (keepAliveRetryCount < retryCountThreshold && !keepaliveInFlight) {\n keepaliveInFlight = true;\n postMessage({\n type: WorkerMessageType.SEND_KEEPALIVE,\n });\n }\n }, interval * 1000);\n }\n\n if (type === WorkerMessageType.KEEPALIVE_RESULT) {\n keepaliveInFlight = false;\n\n if (event.data.err === undefined) {\n if (keepAliveRetryCount > 0) {\n postMessage({\n type: WorkerMessageType.KEEPALIVE_SUCCESS,\n statusCode: event.data.statusCode,\n } as KeepaliveStatusMessage);\n }\n keepAliveRetryCount = 0;\n } else {\n keepAliveRetryCount += 1;\n postMessage({\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: event.data.err,\n keepAliveRetryCount,\n } as KeepaliveStatusMessage);\n }\n }\n\n if (type === WorkerMessageType.CLEAR_KEEPALIVE) {\n clearKeepaliveTimer();\n keepAliveRetryCount = 0;\n keepaliveInFlight = false;\n }\n};\n\n// eslint-disable-next-line no-restricted-globals\nself.addEventListener('message', messageHandler);\nexport default messageHandler;\n"],"mappings":";;;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AADA;;AAGA,IAAIC,cAA0C;AAC9C,IAAIC,mBAAmB,GAAG,CAAC;AAC3B,IAAIC,iBAAiB,GAAG,KAAK;AAE7B,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAA,EAAS;EAChC,IAAIH,cAAc,EAAE;IAClBI,aAAa,CAACJ,cAAc,CAAC;IAC7BA,cAAc,GAAGK,SAAS;EAC5B;AACF,CAAC;AAED,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,KAAmB,EAAK;EAC9C,IAAOC,IAAI,GAAID,KAAK,CAACE,IAAI,CAAlBD,IAAI;EAEX,IAAIA,IAAI,KAAKE,wBAAiB,CAACC,eAAe,EAAE;IAC9C,IAAAC,WAAA,GAAwCL,KAAK,CAACE,IAAI;MAA3CI,QAAQ,GAAAD,WAAA,CAARC,QAAQ;MAAEC,mBAAmB,GAAAF,WAAA,CAAnBE,mBAAmB;IACpCX,mBAAmB,CAAC,CAAC;IACrBF,mBAAmB,GAAG,CAAC;IACvBC,iBAAiB,GAAG,KAAK;IAEzBF,cAAc,GAAGe,WAAW,CAAC,YAAM;MACjC,IAAId,mBAAmB,GAAGa,mBAAmB,IAAI,CAACZ,iBAAiB,EAAE;QACnEA,iBAAiB,GAAG,IAAI;QACxBc,WAAW,CAAC;UACVR,IAAI,EAAEE,wBAAiB,CAACO;QAC1B,CAAC,CAAC;MACJ;IACF,CAAC,EAAEJ,QAAQ,GAAG,IAAI,CAAC;EACrB;EAEA,IAAIL,IAAI,KAAKE,wBAAiB,CAACQ,gBAAgB,EAAE;IAC/ChB,iBAAiB,GAAG,KAAK;IAEzB,IAAIK,KAAK,CAACE,IAAI,CAACU,GAAG,KAAKd,SAAS,EAAE;MAChC,IAAIJ,mBAAmB,GAAG,CAAC,EAAE;QAC3Be,WAAW,CAAC;UACVR,IAAI,EAAEE,wBAAiB,CAACU,iBAAiB;UACzCC,UAAU,EAAEd,KAAK,CAACE,IAAI,CAACY;QACzB,CAA2B,CAAC;MAC9B;MACApB,mBAAmB,GAAG,CAAC;IACzB,CAAC,MAAM;MACLA,mBAAmB,IAAI,CAAC;MACxBe,WAAW,CAAC;QACVR,IAAI,EAAEE,wBAAiB,CAACY,iBAAiB;QACzCH,GAAG,EAAEZ,KAAK,CAACE,IAAI,CAACU,GAAG;QACnBlB,mBAAmB,EAAnBA;MACF,CAA2B,CAAC;IAC9B;EACF;EAEA,IAAIO,IAAI,KAAKE,wBAAiB,CAACa,eAAe,EAAE;IAC9CpB,mBAAmB,CAAC,CAAC;IACrBF,mBAAmB,GAAG,CAAC;IACvBC,iBAAiB,GAAG,KAAK;EAC3B;AACF,CAAC;;AAED;AACAsB,IAAI,CAACC,gBAAgB,CAAC,SAAS,EAAEnB,cAAc,CAAC;AAAC,IAAAoB,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAClCtB,cAAc","ignoreList":[]}
@@ -3,11 +3,9 @@
3
3
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
4
4
  var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
5
5
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
6
- var _uuid = require("uuid");
7
6
  var _webWorker = _interopRequireDefault(require("./webWorker"));
8
7
  var _types = require("../../common/types");
9
8
  global.self = global;
10
- jest.mock('uuid');
11
9
  describe('webWorker', function () {
12
10
  var postMessageSpy;
13
11
  var capturedIntervalCallback;
@@ -15,8 +13,6 @@ describe('webWorker', function () {
15
13
  var clearIntervalSpy;
16
14
  beforeEach(function () {
17
15
  jest.useFakeTimers();
18
- global.fetch = jest.fn();
19
- _uuid.v4.mockReturnValue('mock-uuid');
20
16
  postMessageSpy = jest.spyOn(global, 'postMessage').mockImplementation(function () {});
21
17
  clearIntervalSpy = jest.spyOn(global, 'clearInterval');
22
18
 
@@ -37,133 +33,56 @@ describe('webWorker', function () {
37
33
  jest.clearAllTimers();
38
34
  jest.useRealTimers();
39
35
  });
40
- it('should start keepalive lifecycle correctly', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
41
- var fakeSuccessResponse, failureHeaders, fakeFailureResponse;
36
+ it('should post SEND_KEEPALIVE on a keepalive tick', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
42
37
  return _regenerator.default.wrap(function (_context) {
43
38
  while (1) switch (_context.prev = _context.next) {
44
39
  case 0:
45
- fakeSuccessResponse = {
46
- ok: true,
47
- status: 200
48
- };
49
- global.fetch.mockResolvedValue(fakeSuccessResponse);
50
40
  (0, _webWorker.default)({
51
41
  data: {
52
42
  type: _types.WorkerMessageType.START_KEEPALIVE,
53
- accessToken: 'dummy',
54
- deviceUrl: 'dummyDevice',
55
43
  interval: 1,
56
- retryCountThreshold: 3,
57
- url: 'http://example.com'
44
+ retryCountThreshold: 3
58
45
  }
59
46
  });
60
-
61
- // Manually invoke the captured interval callback to simulate one tick
62
47
  _context.next = 1;
63
48
  return capturedIntervalCallback();
64
49
  case 1:
65
- expect(global.fetch.mock.calls.length).toBe(1);
66
- expect(global.fetch).toHaveBeenCalledWith('http://example.com/status', {
67
- method: 'POST',
68
- headers: {
69
- 'cisco-device-url': 'dummyDevice',
70
- 'spark-user-agent': 'webex-calling/beta',
71
- Authorization: 'dummy',
72
- trackingId: 'web_worker_mock-uuid'
73
- }
74
- });
75
- expect(postMessageSpy).not.toHaveBeenCalled();
76
- failureHeaders = {
77
- has: function has(key) {
78
- return key === 'Retry-After' || key === 'Trackingid';
79
- },
80
- get: function get(key) {
81
- return (
82
- // eslint-disable-next-line no-nested-ternary
83
- key === 'Retry-After' ? '10' : key === 'Trackingid' ? 'web_worker_mock-uuid' : null
84
- );
85
- }
86
- };
87
- fakeFailureResponse = {
88
- ok: false,
89
- status: 429,
90
- statusText: 'Too Many Requests',
91
- headers: failureHeaders
92
- };
93
- global.fetch.mockResolvedValue(fakeFailureResponse);
94
- (0, _webWorker.default)({
95
- data: {
96
- type: _types.WorkerMessageType.START_KEEPALIVE,
97
- accessToken: 'dummy',
98
- deviceUrl: 'dummyDevice',
99
- interval: 1,
100
- retryCountThreshold: 3,
101
- url: 'http://example.com'
102
- }
103
- });
104
-
105
- // Manually invoke the captured interval callback to simulate one tick
106
- _context.next = 2;
107
- return capturedIntervalCallback();
108
- case 2:
109
- expect(global.fetch.mock.calls.length).toBe(2);
110
50
  expect(postMessageSpy).toHaveBeenCalledWith({
111
- type: _types.WorkerMessageType.KEEPALIVE_FAILURE,
112
- err: {
113
- headers: {
114
- 'retry-after': '10',
115
- trackingid: 'web_worker_mock-uuid'
116
- },
117
- statusCode: 429,
118
- statusText: 'Too Many Requests',
119
- type: undefined
120
- },
121
- keepAliveRetryCount: 1
51
+ type: _types.WorkerMessageType.SEND_KEEPALIVE
122
52
  });
123
- case 3:
53
+ case 2:
124
54
  case "end":
125
55
  return _context.stop();
126
56
  }
127
57
  }, _callee);
128
58
  })));
129
- it('should post KEEPALIVE_FAILURE when fetch fails', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
130
- var failureHeaders2;
59
+ it('should post KEEPALIVE_FAILURE when keepalive result is a failure', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
131
60
  return _regenerator.default.wrap(function (_context2) {
132
61
  while (1) switch (_context2.prev = _context2.next) {
133
62
  case 0:
134
- failureHeaders2 = {
135
- has: function has(key) {
136
- return key === 'Trackingid';
137
- },
138
- get: function get(key) {
139
- return key === 'Trackingid' ? 'web_worker_mock-uuid' : null;
140
- }
141
- };
142
- global.fetch.mockResolvedValueOnce({
143
- ok: false,
144
- status: 401,
145
- statusText: 'Unauthorized',
146
- headers: failureHeaders2
147
- });
148
63
  (0, _webWorker.default)({
149
64
  data: {
150
65
  type: _types.WorkerMessageType.START_KEEPALIVE,
151
- accessToken: 'dummy',
152
- deviceUrl: 'dummyDevice',
153
66
  interval: 1,
154
- retryCountThreshold: 1,
155
- url: 'http://example.com'
67
+ retryCountThreshold: 3
156
68
  }
157
69
  });
158
70
  _context2.next = 1;
159
71
  return capturedIntervalCallback();
160
72
  case 1:
73
+ (0, _webWorker.default)({
74
+ data: {
75
+ type: _types.WorkerMessageType.KEEPALIVE_RESULT,
76
+ err: {
77
+ statusCode: 401,
78
+ statusText: 'Unauthorized',
79
+ type: undefined
80
+ }
81
+ }
82
+ });
161
83
  expect(postMessageSpy).toHaveBeenCalledWith({
162
84
  type: _types.WorkerMessageType.KEEPALIVE_FAILURE,
163
85
  err: {
164
- headers: {
165
- trackingid: 'web_worker_mock-uuid'
166
- },
167
86
  statusCode: 401,
168
87
  statusText: 'Unauthorized',
169
88
  type: undefined
@@ -176,77 +95,53 @@ describe('webWorker', function () {
176
95
  }
177
96
  }, _callee2);
178
97
  })));
179
- it('should post KEEPALIVE_SUCCESS after a failure when fetch succeeds', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
180
- var failureHeaders3, mockError;
98
+ it('should post KEEPALIVE_SUCCESS after a failure when keepalive result succeeds', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3() {
181
99
  return _regenerator.default.wrap(function (_context3) {
182
100
  while (1) switch (_context3.prev = _context3.next) {
183
101
  case 0:
184
- // Set fetch so that first tick rejects (failure) and second tick resolves (success)
185
- failureHeaders3 = {
186
- has: function has(key) {
187
- return key === 'Trackingid';
188
- },
189
- get: function get(key) {
190
- return key === 'Trackingid' ? 'web_worker_mock-uuid' : null;
191
- }
192
- };
193
- mockError = {
194
- ok: false,
195
- status: 404,
196
- statusText: 'Not Found',
197
- headers: failureHeaders3
198
- };
199
- global.fetch.mockResolvedValueOnce(mockError).mockResolvedValueOnce({
200
- ok: true,
201
- status: 200
202
- });
203
102
  (0, _webWorker.default)({
204
103
  data: {
205
104
  type: _types.WorkerMessageType.START_KEEPALIVE,
206
- accessToken: 'dummy',
207
- deviceUrl: 'dummyDevice',
208
105
  interval: 1,
209
- retryCountThreshold: 3,
210
- url: 'http://example.com'
106
+ retryCountThreshold: 3
211
107
  }
212
108
  });
213
-
214
- // First tick: trigger failure
215
109
  _context3.next = 1;
216
110
  return capturedIntervalCallback();
217
111
  case 1:
218
- expect(postMessageSpy.mock.calls[0][0].type).toBe(_types.WorkerMessageType.KEEPALIVE_FAILURE);
219
-
220
- // Second tick: trigger success.
221
- _context3.next = 2;
222
- return capturedIntervalCallback();
112
+ (0, _webWorker.default)({
113
+ data: {
114
+ type: _types.WorkerMessageType.KEEPALIVE_RESULT,
115
+ err: {
116
+ statusCode: 404,
117
+ statusText: 'Not Found'
118
+ }
119
+ }
120
+ });
121
+ (0, _webWorker.default)({
122
+ data: {
123
+ type: _types.WorkerMessageType.KEEPALIVE_RESULT,
124
+ statusCode: 200
125
+ }
126
+ });
127
+ expect(postMessageSpy.mock.calls[2][0].type).toBe(_types.WorkerMessageType.KEEPALIVE_SUCCESS);
128
+ expect(postMessageSpy.mock.calls[2][0].statusCode).toBe(200);
223
129
  case 2:
224
- expect(postMessageSpy.mock.calls[1][0].type).toBe(_types.WorkerMessageType.KEEPALIVE_SUCCESS);
225
- expect(postMessageSpy.mock.calls[1][0].statusCode).toBe(200);
226
- case 3:
227
130
  case "end":
228
131
  return _context3.stop();
229
132
  }
230
133
  }, _callee3);
231
134
  })));
232
135
  it('should clear keepalive timer on receiving CLEAR_KEEPALIVE message', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4() {
233
- var fakeSuccessResponse, startEvent;
136
+ var startEvent;
234
137
  return _regenerator.default.wrap(function (_context4) {
235
138
  while (1) switch (_context4.prev = _context4.next) {
236
139
  case 0:
237
- fakeSuccessResponse = {
238
- ok: true,
239
- status: 200
240
- };
241
- global.fetch.mockResolvedValue(fakeSuccessResponse);
242
140
  startEvent = {
243
141
  data: {
244
142
  type: _types.WorkerMessageType.START_KEEPALIVE,
245
- accessToken: 'dummy',
246
- deviceUrl: 'dummyDevice',
247
143
  interval: 1,
248
- retryCountThreshold: 1,
249
- url: 'http://example.com'
144
+ retryCountThreshold: 1
250
145
  }
251
146
  };
252
147
  (0, _webWorker.default)(startEvent);
@@ -256,7 +151,6 @@ describe('webWorker', function () {
256
151
  }
257
152
  });
258
153
  jest.advanceTimersByTime(3000);
259
- expect(global.fetch.mock.calls.length).toBeLessThanOrEqual(3);
260
154
  expect(clearIntervalSpy).toHaveBeenCalled();
261
155
  case 1:
262
156
  case "end":
@@ -265,24 +159,16 @@ describe('webWorker', function () {
265
159
  }, _callee4);
266
160
  })));
267
161
  it('improve coverage: should not clear keepalive timer on receiving CLEAR_KEEPALIVE message without keepTimer', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5() {
268
- var fakeSuccessResponse, startEvent;
162
+ var startEvent;
269
163
  return _regenerator.default.wrap(function (_context5) {
270
164
  while (1) switch (_context5.prev = _context5.next) {
271
165
  case 0:
272
166
  jest.spyOn(global, 'setInterval').mockReturnValue(undefined);
273
- fakeSuccessResponse = {
274
- ok: true,
275
- status: 200
276
- };
277
- global.fetch.mockResolvedValue(fakeSuccessResponse);
278
167
  startEvent = {
279
168
  data: {
280
169
  type: _types.WorkerMessageType.START_KEEPALIVE,
281
- accessToken: 'dummy',
282
- deviceUrl: 'dummyDevice',
283
170
  interval: 1,
284
- retryCountThreshold: 1,
285
- url: 'http://example.com'
171
+ retryCountThreshold: 1
286
172
  }
287
173
  };
288
174
  (0, _webWorker.default)(startEvent);
@@ -1 +1 @@
1
- {"version":3,"names":["_uuid","require","_webWorker","_interopRequireDefault","_types","global","self","jest","mock","describe","postMessageSpy","capturedIntervalCallback","capturedIntervalTimer","clearIntervalSpy","beforeEach","useFakeTimers","fetch","fn","uuid","mockReturnValue","spyOn","mockImplementation","callback","interval","dummy","afterEach","clearAllMocks","clearAllTimers","useRealTimers","it","_asyncToGenerator2","default","_regenerator","mark","_callee","fakeSuccessResponse","failureHeaders","fakeFailureResponse","wrap","_context","prev","next","ok","status","mockResolvedValue","messageHandler","data","type","WorkerMessageType","START_KEEPALIVE","accessToken","deviceUrl","retryCountThreshold","url","expect","calls","length","toBe","toHaveBeenCalledWith","method","headers","Authorization","trackingId","not","toHaveBeenCalled","has","key","get","statusText","KEEPALIVE_FAILURE","err","trackingid","statusCode","undefined","keepAliveRetryCount","stop","_callee2","failureHeaders2","_context2","mockResolvedValueOnce","_callee3","failureHeaders3","mockError","_context3","KEEPALIVE_SUCCESS","_callee4","startEvent","_context4","CLEAR_KEEPALIVE","advanceTimersByTime","toBeLessThanOrEqual","_callee5","_context5"],"sources":["webWorker.test.ts"],"sourcesContent":["import {v4 as uuid} from 'uuid';\nimport messageHandler from './webWorker';\nimport {WorkerMessageType} from '../../common/types';\n\n(global as any).self = global;\n\njest.mock('uuid');\n\ndescribe('webWorker', () => {\n let postMessageSpy: jest.SpyInstance;\n let capturedIntervalCallback: any;\n let capturedIntervalTimer: any;\n let clearIntervalSpy: jest.SpyInstance;\n\n beforeEach(() => {\n jest.useFakeTimers();\n global.fetch = jest.fn();\n (uuid as jest.Mock).mockReturnValue('mock-uuid');\n\n postMessageSpy = jest.spyOn(global, 'postMessage').mockImplementation(() => {});\n clearIntervalSpy = jest.spyOn(global, 'clearInterval');\n\n // Overriding setInterval so that we capture the callback rather than schedule a timer\n jest.spyOn(global, 'setInterval').mockImplementation(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n (callback: any, interval: number): NodeJS.Timeout => {\n capturedIntervalCallback = callback;\n // Create a dummy timer object (could be any non-null value)\n capturedIntervalTimer = {dummy: true};\n\n return capturedIntervalTimer as NodeJS.Timeout;\n }\n );\n });\n\n afterEach(() => {\n jest.clearAllMocks();\n jest.clearAllTimers();\n jest.useRealTimers();\n });\n\n it('should start keepalive lifecycle correctly', async () => {\n const fakeSuccessResponse = {\n ok: true,\n status: 200,\n };\n (global.fetch as jest.Mock).mockResolvedValue(fakeSuccessResponse);\n\n messageHandler({\n data: {\n type: WorkerMessageType.START_KEEPALIVE,\n accessToken: 'dummy',\n deviceUrl: 'dummyDevice',\n interval: 1,\n retryCountThreshold: 3,\n url: 'http://example.com',\n },\n } as MessageEvent);\n\n // Manually invoke the captured interval callback to simulate one tick\n await capturedIntervalCallback();\n\n expect((global.fetch as jest.Mock).mock.calls.length).toBe(1);\n expect(global.fetch).toHaveBeenCalledWith('http://example.com/status', {\n method: 'POST',\n headers: {\n 'cisco-device-url': 'dummyDevice',\n 'spark-user-agent': 'webex-calling/beta',\n Authorization: 'dummy',\n trackingId: 'web_worker_mock-uuid',\n },\n });\n expect(postMessageSpy).not.toHaveBeenCalled();\n\n const failureHeaders = {\n has: (key: string) => key === 'Retry-After' || key === 'Trackingid',\n get: (key: string) =>\n // eslint-disable-next-line no-nested-ternary\n key === 'Retry-After' ? '10' : key === 'Trackingid' ? 'web_worker_mock-uuid' : null,\n };\n const fakeFailureResponse = {\n ok: false,\n status: 429,\n statusText: 'Too Many Requests',\n headers: failureHeaders,\n };\n (global.fetch as jest.Mock).mockResolvedValue(fakeFailureResponse);\n\n messageHandler({\n data: {\n type: WorkerMessageType.START_KEEPALIVE,\n accessToken: 'dummy',\n deviceUrl: 'dummyDevice',\n interval: 1,\n retryCountThreshold: 3,\n url: 'http://example.com',\n },\n } as MessageEvent);\n\n // Manually invoke the captured interval callback to simulate one tick\n await capturedIntervalCallback();\n\n expect((global.fetch as jest.Mock).mock.calls.length).toBe(2);\n expect(postMessageSpy).toHaveBeenCalledWith({\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {\n headers: {'retry-after': '10', trackingid: 'web_worker_mock-uuid'},\n statusCode: 429,\n statusText: 'Too Many Requests',\n type: undefined,\n },\n keepAliveRetryCount: 1,\n });\n });\n\n it('should post KEEPALIVE_FAILURE when fetch fails', async () => {\n const failureHeaders2 = {\n has: (key: string) => key === 'Trackingid',\n get: (key: string) => (key === 'Trackingid' ? 'web_worker_mock-uuid' : null),\n };\n (global.fetch as jest.Mock).mockResolvedValueOnce({\n ok: false,\n status: 401,\n statusText: 'Unauthorized',\n headers: failureHeaders2,\n });\n\n messageHandler({\n data: {\n type: WorkerMessageType.START_KEEPALIVE,\n accessToken: 'dummy',\n deviceUrl: 'dummyDevice',\n interval: 1,\n retryCountThreshold: 1,\n url: 'http://example.com',\n },\n } as MessageEvent);\n\n await capturedIntervalCallback();\n\n expect(postMessageSpy).toHaveBeenCalledWith({\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {\n headers: {trackingid: 'web_worker_mock-uuid'},\n statusCode: 401,\n statusText: 'Unauthorized',\n type: undefined,\n },\n keepAliveRetryCount: 1,\n });\n });\n\n it('should post KEEPALIVE_SUCCESS after a failure when fetch succeeds', async () => {\n // Set fetch so that first tick rejects (failure) and second tick resolves (success)\n const failureHeaders3 = {\n has: (key: string) => key === 'Trackingid',\n get: (key: string) => (key === 'Trackingid' ? 'web_worker_mock-uuid' : null),\n };\n const mockError = {\n ok: false,\n status: 404,\n statusText: 'Not Found',\n headers: failureHeaders3,\n };\n\n (global.fetch as jest.Mock)\n .mockResolvedValueOnce(mockError)\n .mockResolvedValueOnce({ok: true, status: 200});\n\n messageHandler({\n data: {\n type: WorkerMessageType.START_KEEPALIVE,\n accessToken: 'dummy',\n deviceUrl: 'dummyDevice',\n interval: 1,\n retryCountThreshold: 3,\n url: 'http://example.com',\n },\n } as MessageEvent);\n\n // First tick: trigger failure\n await capturedIntervalCallback();\n expect(postMessageSpy.mock.calls[0][0].type).toBe(WorkerMessageType.KEEPALIVE_FAILURE);\n\n // Second tick: trigger success.\n await capturedIntervalCallback();\n expect(postMessageSpy.mock.calls[1][0].type).toBe(WorkerMessageType.KEEPALIVE_SUCCESS);\n expect(postMessageSpy.mock.calls[1][0].statusCode).toBe(200);\n });\n\n it('should clear keepalive timer on receiving CLEAR_KEEPALIVE message', async () => {\n const fakeSuccessResponse = {ok: true, status: 200};\n (global.fetch as jest.Mock).mockResolvedValue(fakeSuccessResponse);\n\n const startEvent = {\n data: {\n type: WorkerMessageType.START_KEEPALIVE,\n accessToken: 'dummy',\n deviceUrl: 'dummyDevice',\n interval: 1,\n retryCountThreshold: 1,\n url: 'http://example.com',\n },\n };\n\n messageHandler(startEvent as MessageEvent);\n messageHandler({data: {type: WorkerMessageType.CLEAR_KEEPALIVE}} as MessageEvent);\n\n jest.advanceTimersByTime(3000);\n expect((global.fetch as jest.Mock).mock.calls.length).toBeLessThanOrEqual(3);\n expect(clearIntervalSpy).toHaveBeenCalled();\n });\n\n it('improve coverage: should not clear keepalive timer on receiving CLEAR_KEEPALIVE message without keepTimer', async () => {\n jest.spyOn(global, 'setInterval').mockReturnValue(undefined);\n const fakeSuccessResponse = {ok: true, status: 200};\n (global.fetch as jest.Mock).mockResolvedValue(fakeSuccessResponse);\n\n const startEvent = {\n data: {\n type: WorkerMessageType.START_KEEPALIVE,\n accessToken: 'dummy',\n deviceUrl: 'dummyDevice',\n interval: 1,\n retryCountThreshold: 1,\n url: 'http://example.com',\n },\n };\n\n messageHandler(startEvent as MessageEvent);\n messageHandler({data: {type: WorkerMessageType.CLEAR_KEEPALIVE}} as MessageEvent);\n\n jest.advanceTimersByTime(3000);\n expect(clearIntervalSpy).not.toHaveBeenCalled();\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_webWorker","_interopRequireDefault","require","_types","global","self","describe","postMessageSpy","capturedIntervalCallback","capturedIntervalTimer","clearIntervalSpy","beforeEach","jest","useFakeTimers","spyOn","mockImplementation","callback","interval","dummy","afterEach","clearAllMocks","clearAllTimers","useRealTimers","it","_asyncToGenerator2","default","_regenerator","mark","_callee","wrap","_context","prev","next","messageHandler","data","type","WorkerMessageType","START_KEEPALIVE","retryCountThreshold","expect","toHaveBeenCalledWith","SEND_KEEPALIVE","stop","_callee2","_context2","KEEPALIVE_RESULT","err","statusCode","statusText","undefined","KEEPALIVE_FAILURE","keepAliveRetryCount","_callee3","_context3","mock","calls","toBe","KEEPALIVE_SUCCESS","_callee4","startEvent","_context4","CLEAR_KEEPALIVE","advanceTimersByTime","toHaveBeenCalled","_callee5","_context5","mockReturnValue","not"],"sources":["webWorker.test.ts"],"sourcesContent":["import messageHandler from './webWorker';\nimport {WorkerMessageType} from '../../common/types';\n\n(global as any).self = global;\n\ndescribe('webWorker', () => {\n let postMessageSpy: jest.SpyInstance;\n let capturedIntervalCallback: any;\n let capturedIntervalTimer: any;\n let clearIntervalSpy: jest.SpyInstance;\n\n beforeEach(() => {\n jest.useFakeTimers();\n\n postMessageSpy = jest.spyOn(global, 'postMessage').mockImplementation(() => {});\n clearIntervalSpy = jest.spyOn(global, 'clearInterval');\n\n // Overriding setInterval so that we capture the callback rather than schedule a timer\n jest.spyOn(global, 'setInterval').mockImplementation(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n (callback: any, interval: number): NodeJS.Timeout => {\n capturedIntervalCallback = callback;\n // Create a dummy timer object (could be any non-null value)\n capturedIntervalTimer = {dummy: true};\n\n return capturedIntervalTimer as NodeJS.Timeout;\n }\n );\n });\n\n afterEach(() => {\n jest.clearAllMocks();\n jest.clearAllTimers();\n jest.useRealTimers();\n });\n\n it('should post SEND_KEEPALIVE on a keepalive tick', async () => {\n messageHandler({\n data: {\n type: WorkerMessageType.START_KEEPALIVE,\n interval: 1,\n retryCountThreshold: 3,\n },\n } as MessageEvent);\n\n await capturedIntervalCallback();\n\n expect(postMessageSpy).toHaveBeenCalledWith({\n type: WorkerMessageType.SEND_KEEPALIVE,\n });\n });\n\n it('should post KEEPALIVE_FAILURE when keepalive result is a failure', async () => {\n messageHandler({\n data: {\n type: WorkerMessageType.START_KEEPALIVE,\n interval: 1,\n retryCountThreshold: 3,\n },\n } as MessageEvent);\n\n await capturedIntervalCallback();\n\n messageHandler({\n data: {\n type: WorkerMessageType.KEEPALIVE_RESULT,\n err: {\n statusCode: 401,\n statusText: 'Unauthorized',\n type: undefined,\n },\n },\n } as MessageEvent);\n\n expect(postMessageSpy).toHaveBeenCalledWith({\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: {\n statusCode: 401,\n statusText: 'Unauthorized',\n type: undefined,\n },\n keepAliveRetryCount: 1,\n });\n });\n\n it('should post KEEPALIVE_SUCCESS after a failure when keepalive result succeeds', async () => {\n messageHandler({\n data: {\n type: WorkerMessageType.START_KEEPALIVE,\n interval: 1,\n retryCountThreshold: 3,\n },\n } as MessageEvent);\n\n await capturedIntervalCallback();\n messageHandler({\n data: {\n type: WorkerMessageType.KEEPALIVE_RESULT,\n err: {\n statusCode: 404,\n statusText: 'Not Found',\n },\n },\n } as MessageEvent);\n\n messageHandler({\n data: {\n type: WorkerMessageType.KEEPALIVE_RESULT,\n statusCode: 200,\n },\n } as MessageEvent);\n\n expect(postMessageSpy.mock.calls[2][0].type).toBe(WorkerMessageType.KEEPALIVE_SUCCESS);\n expect(postMessageSpy.mock.calls[2][0].statusCode).toBe(200);\n });\n\n it('should clear keepalive timer on receiving CLEAR_KEEPALIVE message', async () => {\n const startEvent = {\n data: {\n type: WorkerMessageType.START_KEEPALIVE,\n interval: 1,\n retryCountThreshold: 1,\n },\n };\n\n messageHandler(startEvent as MessageEvent);\n messageHandler({data: {type: WorkerMessageType.CLEAR_KEEPALIVE}} as MessageEvent);\n\n jest.advanceTimersByTime(3000);\n expect(clearIntervalSpy).toHaveBeenCalled();\n });\n\n it('improve coverage: should not clear keepalive timer on receiving CLEAR_KEEPALIVE message without keepTimer', async () => {\n jest.spyOn(global, 'setInterval').mockReturnValue(undefined);\n\n const startEvent = {\n data: {\n type: WorkerMessageType.START_KEEPALIVE,\n interval: 1,\n retryCountThreshold: 1,\n },\n };\n\n messageHandler(startEvent as MessageEvent);\n messageHandler({data: {type: WorkerMessageType.CLEAR_KEEPALIVE}} as MessageEvent);\n\n jest.advanceTimersByTime(3000);\n expect(clearIntervalSpy).not.toHaveBeenCalled();\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -10,6 +10,6 @@ exports.default = void 0;
10
10
  * It can be used to create a Blob URL for the worker instead of loading it from a separate file
11
11
  */
12
12
 
13
- var webWorkerStr = "/* eslint-env worker */\n\nconst uuid = () => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\n// Enum values from the original imports\nconst HTTP_METHODS = {\n GET: 'GET',\n POST: 'POST',\n PUT: 'PUT',\n DELETE: 'DELETE',\n PATCH: 'PATCH',\n};\n\nconst WorkerMessageType = {\n START_KEEPALIVE: 'START_KEEPALIVE',\n CLEAR_KEEPALIVE: 'CLEAR_KEEPALIVE',\n KEEPALIVE_SUCCESS: 'KEEPALIVE_SUCCESS',\n KEEPALIVE_FAILURE: 'KEEPALIVE_FAILURE',\n};\n\nlet keepaliveTimer;\n\nconst messageHandler = (event) => {\n const {type} = event.data;\n\n const postKeepAlive = async (accessToken, deviceUrl, url) => {\n const response = await fetch(`${url}/status`, {\n method: HTTP_METHODS.POST,\n headers: {\n 'cisco-device-url': deviceUrl,\n 'spark-user-agent': 'webex-calling/beta',\n Authorization: `${accessToken}`,\n trackingId: `web_worker_${uuid()}`,\n },\n });\n\n if (!response.ok) {\n throw response;\n }\n\n return response;\n };\n\n if (type === WorkerMessageType.START_KEEPALIVE) {\n let keepAliveRetryCount = 0;\n const {accessToken, deviceUrl, interval, retryCountThreshold, url} = event.data;\n\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n\n keepaliveTimer = setInterval(async () => {\n if (keepAliveRetryCount < retryCountThreshold) {\n try {\n const res = await postKeepAlive(accessToken, deviceUrl, url);\n const statusCode = res.status;\n if (keepAliveRetryCount > 0) {\n self.postMessage({\n type: WorkerMessageType.KEEPALIVE_SUCCESS,\n statusCode,\n });\n }\n keepAliveRetryCount = 0;\n } catch (err) {\n let headers = {};\n if(err.headers?.has('Retry-After')) {\n headers['retry-after'] = err.headers.get('Retry-After');\n } \n\n if(err.headers?.has('Trackingid')) {\n headers['trackingid'] = err.headers.get('Trackingid');\n } \n\n const error = {\n headers,\n statusCode: err.status,\n statusText: err.statusText,\n type: err.type,\n };\n\n keepAliveRetryCount += 1\n self.postMessage({\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: error,\n keepAliveRetryCount,\n });\n }\n }\n }, interval * 1000);\n }\n\n if (type === WorkerMessageType.CLEAR_KEEPALIVE) {\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n }\n};\n\nself.addEventListener('message', messageHandler);\n";
13
+ var webWorkerStr = "/* eslint-env worker */\n\nconst WorkerMessageType = {\n START_KEEPALIVE: 'START_KEEPALIVE',\n CLEAR_KEEPALIVE: 'CLEAR_KEEPALIVE',\n SEND_KEEPALIVE: 'SEND_KEEPALIVE',\n KEEPALIVE_RESULT: 'KEEPALIVE_RESULT',\n KEEPALIVE_SUCCESS: 'KEEPALIVE_SUCCESS',\n KEEPALIVE_FAILURE: 'KEEPALIVE_FAILURE',\n};\n\nlet keepaliveTimer;\nlet keepAliveRetryCount = 0;\nlet keepaliveInFlight = false;\n\nconst clearKeepaliveTimer = () => {\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n};\n\nconst messageHandler = (event) => {\n const {type} = event.data;\n\n if (type === WorkerMessageType.START_KEEPALIVE) {\n const {interval, retryCountThreshold} = event.data;\n\n clearKeepaliveTimer();\n keepAliveRetryCount = 0;\n keepaliveInFlight = false;\n\n keepaliveTimer = setInterval(() => {\n if (keepAliveRetryCount < retryCountThreshold && !keepaliveInFlight) {\n keepaliveInFlight = true;\n self.postMessage({\n type: WorkerMessageType.SEND_KEEPALIVE,\n });\n }\n }, interval * 1000);\n }\n\n if (type === WorkerMessageType.KEEPALIVE_RESULT) {\n keepaliveInFlight = false;\n\n if (event.data.err === undefined) {\n if (keepAliveRetryCount > 0) {\n self.postMessage({\n type: WorkerMessageType.KEEPALIVE_SUCCESS,\n statusCode: event.data.statusCode,\n });\n }\n\n keepAliveRetryCount = 0;\n } else {\n keepAliveRetryCount += 1;\n self.postMessage({\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: event.data.err,\n keepAliveRetryCount,\n });\n }\n }\n\n if (type === WorkerMessageType.CLEAR_KEEPALIVE) {\n clearKeepaliveTimer();\n keepAliveRetryCount = 0;\n keepaliveInFlight = false;\n }\n};\n\nself.addEventListener('message', messageHandler);\n";
14
14
  var _default = exports.default = webWorkerStr;
15
15
  //# sourceMappingURL=webWorkerStr.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["webWorkerStr","_default","exports","default"],"sources":["webWorkerStr.ts"],"sourcesContent":["/**\n * This file contains the stringified version of the web worker code from webWorker.ts\n * It can be used to create a Blob URL for the worker instead of loading it from a separate file\n */\n\nconst webWorkerStr = `/* eslint-env worker */\n\nconst uuid = () => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\n// Enum values from the original imports\nconst HTTP_METHODS = {\n GET: 'GET',\n POST: 'POST',\n PUT: 'PUT',\n DELETE: 'DELETE',\n PATCH: 'PATCH',\n};\n\nconst WorkerMessageType = {\n START_KEEPALIVE: 'START_KEEPALIVE',\n CLEAR_KEEPALIVE: 'CLEAR_KEEPALIVE',\n KEEPALIVE_SUCCESS: 'KEEPALIVE_SUCCESS',\n KEEPALIVE_FAILURE: 'KEEPALIVE_FAILURE',\n};\n\nlet keepaliveTimer;\n\nconst messageHandler = (event) => {\n const {type} = event.data;\n\n const postKeepAlive = async (accessToken, deviceUrl, url) => {\n const response = await fetch(\\`\\${url}/status\\`, {\n method: HTTP_METHODS.POST,\n headers: {\n 'cisco-device-url': deviceUrl,\n 'spark-user-agent': 'webex-calling/beta',\n Authorization: \\`\\${accessToken}\\`,\n trackingId: \\`web_worker_\\${uuid()}\\`,\n },\n });\n\n if (!response.ok) {\n throw response;\n }\n\n return response;\n };\n\n if (type === WorkerMessageType.START_KEEPALIVE) {\n let keepAliveRetryCount = 0;\n const {accessToken, deviceUrl, interval, retryCountThreshold, url} = event.data;\n\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n\n keepaliveTimer = setInterval(async () => {\n if (keepAliveRetryCount < retryCountThreshold) {\n try {\n const res = await postKeepAlive(accessToken, deviceUrl, url);\n const statusCode = res.status;\n if (keepAliveRetryCount > 0) {\n self.postMessage({\n type: WorkerMessageType.KEEPALIVE_SUCCESS,\n statusCode,\n });\n }\n keepAliveRetryCount = 0;\n } catch (err) {\n let headers = {};\n if(err.headers?.has('Retry-After')) {\n headers['retry-after'] = err.headers.get('Retry-After');\n } \n\n if(err.headers?.has('Trackingid')) {\n headers['trackingid'] = err.headers.get('Trackingid');\n } \n\n const error = {\n headers,\n statusCode: err.status,\n statusText: err.statusText,\n type: err.type,\n };\n\n keepAliveRetryCount += 1\n self.postMessage({\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: error,\n keepAliveRetryCount,\n });\n }\n }\n }, interval * 1000);\n }\n\n if (type === WorkerMessageType.CLEAR_KEEPALIVE) {\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n }\n};\n\nself.addEventListener('message', messageHandler);\n`;\n\nexport default webWorkerStr;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;;AAEA,IAAMA,YAAY,2zFA2GjB;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaH,YAAY","ignoreList":[]}
1
+ {"version":3,"names":["webWorkerStr","_default","exports","default"],"sources":["webWorkerStr.ts"],"sourcesContent":["/**\n * This file contains the stringified version of the web worker code from webWorker.ts\n * It can be used to create a Blob URL for the worker instead of loading it from a separate file\n */\n\nconst webWorkerStr = `/* eslint-env worker */\n\nconst WorkerMessageType = {\n START_KEEPALIVE: 'START_KEEPALIVE',\n CLEAR_KEEPALIVE: 'CLEAR_KEEPALIVE',\n SEND_KEEPALIVE: 'SEND_KEEPALIVE',\n KEEPALIVE_RESULT: 'KEEPALIVE_RESULT',\n KEEPALIVE_SUCCESS: 'KEEPALIVE_SUCCESS',\n KEEPALIVE_FAILURE: 'KEEPALIVE_FAILURE',\n};\n\nlet keepaliveTimer;\nlet keepAliveRetryCount = 0;\nlet keepaliveInFlight = false;\n\nconst clearKeepaliveTimer = () => {\n if (keepaliveTimer) {\n clearInterval(keepaliveTimer);\n keepaliveTimer = undefined;\n }\n};\n\nconst messageHandler = (event) => {\n const {type} = event.data;\n\n if (type === WorkerMessageType.START_KEEPALIVE) {\n const {interval, retryCountThreshold} = event.data;\n\n clearKeepaliveTimer();\n keepAliveRetryCount = 0;\n keepaliveInFlight = false;\n\n keepaliveTimer = setInterval(() => {\n if (keepAliveRetryCount < retryCountThreshold && !keepaliveInFlight) {\n keepaliveInFlight = true;\n self.postMessage({\n type: WorkerMessageType.SEND_KEEPALIVE,\n });\n }\n }, interval * 1000);\n }\n\n if (type === WorkerMessageType.KEEPALIVE_RESULT) {\n keepaliveInFlight = false;\n\n if (event.data.err === undefined) {\n if (keepAliveRetryCount > 0) {\n self.postMessage({\n type: WorkerMessageType.KEEPALIVE_SUCCESS,\n statusCode: event.data.statusCode,\n });\n }\n\n keepAliveRetryCount = 0;\n } else {\n keepAliveRetryCount += 1;\n self.postMessage({\n type: WorkerMessageType.KEEPALIVE_FAILURE,\n err: event.data.err,\n keepAliveRetryCount,\n });\n }\n }\n\n if (type === WorkerMessageType.CLEAR_KEEPALIVE) {\n clearKeepaliveTimer();\n keepAliveRetryCount = 0;\n keepaliveInFlight = false;\n }\n};\n\nself.addEventListener('message', messageHandler);\n`;\n\nexport default webWorkerStr;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;;AAEA,IAAMA,YAAY,w0DAwEjB;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaH,YAAY","ignoreList":[]}
@@ -5,6 +5,7 @@ _Object$defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.deriveMobiusSocketMessageType = deriveMobiusSocketMessageType;
8
+ exports.isSupplementaryServiceMessageType = void 0;
8
9
  var _types = require("../../common/types");
9
10
  var _constants = require("./constants");
10
11
  /**
@@ -103,4 +104,7 @@ function deriveMobiusSocketMessageType(uri, httpMethodType) {
103
104
  }
104
105
  return _constants.MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;
105
106
  }
107
+ var isSupplementaryServiceMessageType = exports.isSupplementaryServiceMessageType = function isSupplementaryServiceMessageType(type) {
108
+ return [_constants.MOBIUS_SOCKET_MESSAGE_TYPE.CALL_HOLD, _constants.MOBIUS_SOCKET_MESSAGE_TYPE.CALL_RESUME, _constants.MOBIUS_SOCKET_MESSAGE_TYPE.CALL_TRANSFER].includes(type);
109
+ };
106
110
  //# sourceMappingURL=mobiusSocketMapper.js.map