@webex/calling 3.11.0 → 3.12.0-mobius-socket.1

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 (240) hide show
  1. package/dist/CallHistory/CallHistory.js +596 -0
  2. package/dist/CallHistory/CallHistory.js.map +1 -0
  3. package/dist/CallHistory/CallHistory.test.js +916 -0
  4. package/dist/CallHistory/CallHistory.test.js.map +1 -0
  5. package/dist/CallHistory/callHistoryFixtures.js +650 -0
  6. package/dist/CallHistory/callHistoryFixtures.js.map +1 -0
  7. package/dist/CallHistory/constants.js +38 -0
  8. package/dist/CallHistory/constants.js.map +1 -0
  9. package/dist/CallHistory/types.js +7 -0
  10. package/dist/CallHistory/types.js.map +1 -0
  11. package/dist/CallSettings/CallSettings.js +311 -0
  12. package/dist/CallSettings/CallSettings.js.map +1 -0
  13. package/dist/CallSettings/CallSettings.test.js +122 -0
  14. package/dist/CallSettings/CallSettings.test.js.map +1 -0
  15. package/dist/CallSettings/UcmBackendConnector.js +308 -0
  16. package/dist/CallSettings/UcmBackendConnector.js.map +1 -0
  17. package/dist/CallSettings/UcmBackendConnector.test.js +411 -0
  18. package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -0
  19. package/dist/CallSettings/WxCallBackendConnector.js +597 -0
  20. package/dist/CallSettings/WxCallBackendConnector.js.map +1 -0
  21. package/dist/CallSettings/WxCallBackendConnector.test.js +904 -0
  22. package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -0
  23. package/dist/CallSettings/constants.js +31 -0
  24. package/dist/CallSettings/constants.js.map +1 -0
  25. package/dist/CallSettings/testFixtures.js +68 -0
  26. package/dist/CallSettings/testFixtures.js.map +1 -0
  27. package/dist/CallSettings/types.js +7 -0
  28. package/dist/CallSettings/types.js.map +1 -0
  29. package/dist/CallingClient/CallingClient.js +1346 -0
  30. package/dist/CallingClient/CallingClient.js.map +1 -0
  31. package/dist/CallingClient/CallingClient.test.js +1352 -0
  32. package/dist/CallingClient/CallingClient.test.js.map +1 -0
  33. package/dist/CallingClient/callRecordFixtures.js +101 -0
  34. package/dist/CallingClient/callRecordFixtures.js.map +1 -0
  35. package/dist/CallingClient/calling/CallerId/index.js +275 -0
  36. package/dist/CallingClient/calling/CallerId/index.js.map +1 -0
  37. package/dist/CallingClient/calling/CallerId/index.test.js +275 -0
  38. package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -0
  39. package/dist/CallingClient/calling/CallerId/types.js +7 -0
  40. package/dist/CallingClient/calling/CallerId/types.js.map +1 -0
  41. package/dist/CallingClient/calling/call.js +3489 -0
  42. package/dist/CallingClient/calling/call.js.map +1 -0
  43. package/dist/CallingClient/calling/call.test.js +3653 -0
  44. package/dist/CallingClient/calling/call.test.js.map +1 -0
  45. package/dist/CallingClient/calling/callManager.js +481 -0
  46. package/dist/CallingClient/calling/callManager.js.map +1 -0
  47. package/dist/CallingClient/calling/callManager.test.js +776 -0
  48. package/dist/CallingClient/calling/callManager.test.js.map +1 -0
  49. package/dist/CallingClient/calling/index.js +30 -0
  50. package/dist/CallingClient/calling/index.js.map +1 -0
  51. package/dist/CallingClient/calling/types.js +76 -0
  52. package/dist/CallingClient/calling/types.js.map +1 -0
  53. package/dist/CallingClient/callingClientFixtures.js +143 -0
  54. package/dist/CallingClient/callingClientFixtures.js.map +1 -0
  55. package/dist/CallingClient/constants.js +249 -0
  56. package/dist/CallingClient/constants.js.map +1 -0
  57. package/dist/CallingClient/line/index.js +332 -0
  58. package/dist/CallingClient/line/index.js.map +1 -0
  59. package/dist/CallingClient/line/line.test.js +342 -0
  60. package/dist/CallingClient/line/line.test.js.map +1 -0
  61. package/dist/CallingClient/line/types.js +21 -0
  62. package/dist/CallingClient/line/types.js.map +1 -0
  63. package/dist/CallingClient/registration/index.js +19 -0
  64. package/dist/CallingClient/registration/index.js.map +1 -0
  65. package/dist/CallingClient/registration/register.js +1713 -0
  66. package/dist/CallingClient/registration/register.js.map +1 -0
  67. package/dist/CallingClient/registration/register.test.js +1894 -0
  68. package/dist/CallingClient/registration/register.test.js.map +1 -0
  69. package/dist/CallingClient/registration/registerFixtures.js +36 -0
  70. package/dist/CallingClient/registration/registerFixtures.js.map +1 -0
  71. package/dist/CallingClient/registration/types.js +7 -0
  72. package/dist/CallingClient/registration/types.js.map +1 -0
  73. package/dist/CallingClient/registration/webWorker.js +132 -0
  74. package/dist/CallingClient/registration/webWorker.js.map +1 -0
  75. package/dist/CallingClient/registration/webWorker.test.js +303 -0
  76. package/dist/CallingClient/registration/webWorker.test.js.map +1 -0
  77. package/dist/CallingClient/registration/webWorkerStr.js +15 -0
  78. package/dist/CallingClient/registration/webWorkerStr.js.map +1 -0
  79. package/dist/CallingClient/types.js +7 -0
  80. package/dist/CallingClient/types.js.map +1 -0
  81. package/dist/CallingClient/utils/constants.js +46 -0
  82. package/dist/CallingClient/utils/constants.js.map +1 -0
  83. package/dist/CallingClient/utils/index.js +63 -0
  84. package/dist/CallingClient/utils/index.js.map +1 -0
  85. package/dist/CallingClient/utils/mobiusSocketMapper.js +106 -0
  86. package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -0
  87. package/dist/CallingClient/utils/request.js +267 -0
  88. package/dist/CallingClient/utils/request.js.map +1 -0
  89. package/dist/CallingClient/utils/types.js +7 -0
  90. package/dist/CallingClient/utils/types.js.map +1 -0
  91. package/dist/CallingClient/utils/wsFeatureFlag.js +20 -0
  92. package/dist/CallingClient/utils/wsFeatureFlag.js.map +1 -0
  93. package/dist/CallingClient/windowsChromiumIceWarmupUtils.js +142 -0
  94. package/dist/CallingClient/windowsChromiumIceWarmupUtils.js.map +1 -0
  95. package/dist/Contacts/ContactsClient.js +1206 -0
  96. package/dist/Contacts/ContactsClient.js.map +1 -0
  97. package/dist/Contacts/ContactsClient.test.js +1004 -0
  98. package/dist/Contacts/ContactsClient.test.js.map +1 -0
  99. package/dist/Contacts/constants.js +40 -0
  100. package/dist/Contacts/constants.js.map +1 -0
  101. package/dist/Contacts/contactFixtures.js +430 -0
  102. package/dist/Contacts/contactFixtures.js.map +1 -0
  103. package/dist/Contacts/types.js +43 -0
  104. package/dist/Contacts/types.js.map +1 -0
  105. package/dist/Errors/catalog/CallError.js +89 -0
  106. package/dist/Errors/catalog/CallError.js.map +1 -0
  107. package/dist/Errors/catalog/CallingDeviceError.js +83 -0
  108. package/dist/Errors/catalog/CallingDeviceError.js.map +1 -0
  109. package/dist/Errors/catalog/ExtendedError.js +42 -0
  110. package/dist/Errors/catalog/ExtendedError.js.map +1 -0
  111. package/dist/Errors/catalog/LineError.js +85 -0
  112. package/dist/Errors/catalog/LineError.js.map +1 -0
  113. package/dist/Errors/index.js +28 -0
  114. package/dist/Errors/index.js.map +1 -0
  115. package/dist/Errors/types.js +59 -0
  116. package/dist/Errors/types.js.map +1 -0
  117. package/dist/Events/impl/index.js +79 -0
  118. package/dist/Events/impl/index.js.map +1 -0
  119. package/dist/Events/types.js +97 -0
  120. package/dist/Events/types.js.map +1 -0
  121. package/dist/Logger/index.js +228 -0
  122. package/dist/Logger/index.js.map +1 -0
  123. package/dist/Logger/index.test.js +87 -0
  124. package/dist/Logger/index.test.js.map +1 -0
  125. package/dist/Logger/types.js +34 -0
  126. package/dist/Logger/types.js.map +1 -0
  127. package/dist/Metrics/index.js +534 -0
  128. package/dist/Metrics/index.js.map +1 -0
  129. package/dist/Metrics/index.test.js +463 -0
  130. package/dist/Metrics/index.test.js.map +1 -0
  131. package/dist/Metrics/types.js +64 -0
  132. package/dist/Metrics/types.js.map +1 -0
  133. package/dist/SDKConnector/index.js +134 -0
  134. package/dist/SDKConnector/index.js.map +1 -0
  135. package/dist/SDKConnector/index.test.js +9 -0
  136. package/dist/SDKConnector/index.test.js.map +1 -0
  137. package/dist/SDKConnector/types.js +7 -0
  138. package/dist/SDKConnector/types.js.map +1 -0
  139. package/dist/SDKConnector/utils.js +39 -0
  140. package/dist/SDKConnector/utils.js.map +1 -0
  141. package/dist/SDKConnector/utils.test.js +9 -0
  142. package/dist/SDKConnector/utils.test.js.map +1 -0
  143. package/dist/Voicemail/BroadworksBackendConnector.js +699 -0
  144. package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -0
  145. package/dist/Voicemail/BroadworksBackendConnector.test.js +820 -0
  146. package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -0
  147. package/dist/Voicemail/UcmBackendConnector.js +628 -0
  148. package/dist/Voicemail/UcmBackendConnector.js.map +1 -0
  149. package/dist/Voicemail/UcmBackendConnector.test.js +738 -0
  150. package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -0
  151. package/dist/Voicemail/Voicemail.js +472 -0
  152. package/dist/Voicemail/Voicemail.js.map +1 -0
  153. package/dist/Voicemail/Voicemail.test.js +391 -0
  154. package/dist/Voicemail/Voicemail.test.js.map +1 -0
  155. package/dist/Voicemail/WxCallBackendConnector.js +657 -0
  156. package/dist/Voicemail/WxCallBackendConnector.js.map +1 -0
  157. package/dist/Voicemail/WxCallBackendConnector.test.js +1225 -0
  158. package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -0
  159. package/dist/Voicemail/constants.js +61 -0
  160. package/dist/Voicemail/constants.js.map +1 -0
  161. package/dist/Voicemail/types.js +7 -0
  162. package/dist/Voicemail/types.js.map +1 -0
  163. package/dist/Voicemail/voicemailFixture.js +524 -0
  164. package/dist/Voicemail/voicemailFixture.js.map +1 -0
  165. package/dist/api.js +157 -0
  166. package/dist/api.js.map +1 -0
  167. package/dist/common/Utils.js +1542 -0
  168. package/dist/common/Utils.js.map +1 -0
  169. package/dist/common/Utils.test.js +1989 -0
  170. package/dist/common/Utils.test.js.map +1 -0
  171. package/dist/common/constants.js +62 -0
  172. package/dist/common/constants.js.map +1 -0
  173. package/dist/common/index.js +19 -0
  174. package/dist/common/index.js.map +1 -0
  175. package/dist/common/testUtil.js +988 -0
  176. package/dist/common/testUtil.js.map +1 -0
  177. package/dist/common/types.js +75 -0
  178. package/dist/common/types.js.map +1 -0
  179. package/dist/index.js +321 -0
  180. package/dist/index.js.map +1 -0
  181. package/dist/module/CallHistory/CallHistory.js +28 -17
  182. package/dist/module/CallingClient/CallingClient.js +157 -4
  183. package/dist/module/CallingClient/calling/call.js +12 -8
  184. package/dist/module/CallingClient/calling/callManager.js +29 -10
  185. package/dist/module/CallingClient/calling/types.js +2 -0
  186. package/dist/module/CallingClient/constants.js +8 -0
  187. package/dist/module/CallingClient/registration/register.js +46 -16
  188. package/dist/module/CallingClient/utils/constants.js +30 -0
  189. package/dist/module/CallingClient/utils/index.js +5 -0
  190. package/dist/module/CallingClient/utils/mobiusSocketMapper.js +56 -0
  191. package/dist/module/CallingClient/utils/request.js +112 -0
  192. package/dist/module/CallingClient/utils/types.js +1 -0
  193. package/dist/module/CallingClient/utils/wsFeatureFlag.js +5 -0
  194. package/dist/module/Events/types.js +0 -10
  195. package/dist/module/SDKConnector/index.js +17 -0
  196. package/dist/module/common/Utils.js +35 -4
  197. package/dist/module/common/testUtil.js +3 -0
  198. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  199. package/dist/types/CallingClient/CallingClient.d.ts +10 -1
  200. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  201. package/dist/types/CallingClient/calling/call.d.ts +1 -0
  202. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  203. package/dist/types/CallingClient/calling/callManager.d.ts +5 -4
  204. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  205. package/dist/types/CallingClient/calling/types.d.ts +21 -9
  206. package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
  207. package/dist/types/CallingClient/constants.d.ts +8 -0
  208. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  209. package/dist/types/CallingClient/registration/register.d.ts +3 -1
  210. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  211. package/dist/types/CallingClient/registration/types.d.ts +2 -1
  212. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  213. package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
  214. package/dist/types/CallingClient/types.d.ts +3 -1
  215. package/dist/types/CallingClient/types.d.ts.map +1 -1
  216. package/dist/types/CallingClient/utils/constants.d.ts +30 -0
  217. package/dist/types/CallingClient/utils/constants.d.ts.map +1 -0
  218. package/dist/types/CallingClient/utils/index.d.ts +6 -0
  219. package/dist/types/CallingClient/utils/index.d.ts.map +1 -0
  220. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +4 -0
  221. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -0
  222. package/dist/types/CallingClient/utils/request.d.ts +20 -0
  223. package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
  224. package/dist/types/CallingClient/utils/types.d.ts +23 -0
  225. package/dist/types/CallingClient/utils/types.d.ts.map +1 -0
  226. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts +4 -0
  227. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts.map +1 -0
  228. package/dist/types/Events/types.d.ts +0 -10
  229. package/dist/types/Events/types.d.ts.map +1 -1
  230. package/dist/types/SDKConnector/index.d.ts +2 -0
  231. package/dist/types/SDKConnector/index.d.ts.map +1 -1
  232. package/dist/types/SDKConnector/types.d.ts +11 -0
  233. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  234. package/dist/types/common/Utils.d.ts +4 -1
  235. package/dist/types/common/Utils.d.ts.map +1 -1
  236. package/dist/types/common/testUtil.d.ts +3 -0
  237. package/dist/types/common/testUtil.d.ts.map +1 -1
  238. package/dist/types/common/types.d.ts +5 -0
  239. package/dist/types/common/types.d.ts.map +1 -1
  240. package/package.json +8 -4
@@ -0,0 +1,267 @@
1
+ "use strict";
2
+
3
+ var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
4
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
5
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
6
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
7
+ var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
8
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
9
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
10
+ _Object$defineProperty(exports, "__esModule", {
11
+ value: true
12
+ });
13
+ exports.createAPIRequest = exports.APIRequest = void 0;
14
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
15
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
16
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
17
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
18
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
19
+ var _uuid = require("uuid");
20
+ var _internalPluginMobiusSocket = require("@webex/internal-plugin-mobius-socket");
21
+ var _Logger = _interopRequireDefault(require("../../Logger"));
22
+ var _mobiusSocketMapper = require("./mobiusSocketMapper");
23
+ var _constants = require("./constants");
24
+ var _wsFeatureFlag = require("./wsFeatureFlag");
25
+ var _constants2 = require("../constants");
26
+ function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
27
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; } // @ts-ignore - JS module without type declarations
28
+ /**
29
+ * Converts a MobiusSocketResponse into the WebexRequestPayload shape that
30
+ * all callers (registration, call, keepalive error-handlers) expect.
31
+ */
32
+ function normalizeWsResponse(wsResponse) {
33
+ var _ref, _ref2;
34
+ return {
35
+ statusCode: wsResponse.statusCode,
36
+ body: (_ref = wsResponse.data) !== null && _ref !== void 0 ? _ref : undefined,
37
+ headers: _objectSpread({
38
+ trackingid: wsResponse.trackingId
39
+ }, (_ref2 = wsResponse.metadata) !== null && _ref2 !== void 0 ? _ref2 : {})
40
+ };
41
+ }
42
+
43
+ /**
44
+ * Converts a MobiusSocketResponseError rejection into a WebexRequestPayload-shaped
45
+ * error so handleRegistrationErrors / handleCallErrors can process it identically.
46
+ */
47
+ function normalizeWsError(err) {
48
+ var _ref3, _wsErr$response, _ref4, _wsErr$trackingId, _wsErr$response2, _ref5, _wsErr$response3;
49
+ var wsErr = err;
50
+ return {
51
+ statusCode: wsErr.statusCode,
52
+ body: (_ref3 = (_wsErr$response = wsErr.response) === null || _wsErr$response === void 0 ? void 0 : _wsErr$response.data) !== null && _ref3 !== void 0 ? _ref3 : undefined,
53
+ headers: _objectSpread({
54
+ trackingid: (_ref4 = (_wsErr$trackingId = wsErr.trackingId) !== null && _wsErr$trackingId !== void 0 ? _wsErr$trackingId : (_wsErr$response2 = wsErr.response) === null || _wsErr$response2 === void 0 ? void 0 : _wsErr$response2.trackingId) !== null && _ref4 !== void 0 ? _ref4 : ''
55
+ }, (_ref5 = (_wsErr$response3 = wsErr.response) === null || _wsErr$response3 === void 0 ? void 0 : _wsErr$response3.metadata) !== null && _ref5 !== void 0 ? _ref5 : {})
56
+ };
57
+ }
58
+
59
+ /**
60
+ * APIRequest routes Mobius traffic over HTTP (`webex.request`) or the Mobius WebSocket path
61
+ * (`mobiusSocketRequest`). `isMobiusSocketEnabled` is set in the constructor from WDM
62
+ * `webrtc-calling-over-ws` and/or SDK config (interim until WDM is fully in prod).
63
+ */
64
+ var APIRequest = exports.APIRequest = /*#__PURE__*/function () {
65
+ /**
66
+ * @param config - Webex instance plus optional SDK Mobius-socket override
67
+ */
68
+ function APIRequest(config) {
69
+ var _config$isMobiusSocke;
70
+ (0, _classCallCheck2.default)(this, APIRequest);
71
+ (0, _defineProperty2.default)(this, "isMobiusSocketEnabled", void 0);
72
+ (0, _defineProperty2.default)(this, "webex", void 0);
73
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
74
+ (0, _defineProperty2.default)(this, "mobiusSocket", void 0);
75
+ if (!config.webex) {
76
+ throw new Error('WebexSDK instance is required');
77
+ }
78
+ this.webex = config.webex;
79
+ this.isMobiusSocketEnabled = (0, _wsFeatureFlag.isMobiusWssEnabled)(config.webex) || ((_config$isMobiusSocke = config.isMobiusSocketEnabled) !== null && _config$isMobiusSocke !== void 0 ? _config$isMobiusSocke : false);
80
+ this.mobiusSocket = (0, _internalPluginMobiusSocket.getMobiusSocketInstance)(this.webex);
81
+ }
82
+
83
+ /**
84
+ * Whether the Mobius WebSocket transport is active for this instance.
85
+ */
86
+ return (0, _createClass2.default)(APIRequest, [{
87
+ key: "isSocketEnabled",
88
+ value: function isSocketEnabled() {
89
+ return this.isMobiusSocketEnabled;
90
+ }
91
+
92
+ /**
93
+ * Ensures the Mobius WebSocket is connected before sending API requests.
94
+ * If the socket is already connected, resolves immediately. Otherwise,
95
+ * initiates a new connection to the provided WebSocket URL.
96
+ * On failure, throws a normalized WebexRequestPayload-shaped error.
97
+ *
98
+ * @param wssUrl - The Mobius WebSocket URL to connect to.
99
+ */
100
+ }, {
101
+ key: "connectToMobiusSocket",
102
+ value: (function () {
103
+ var _connectToMobiusSocket = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(wssUrl) {
104
+ var logContext, _t;
105
+ return _regenerator.default.wrap(function (_context) {
106
+ while (1) switch (_context.prev = _context.next) {
107
+ case 0:
108
+ logContext = {
109
+ file: _constants2.REQUEST_FILE,
110
+ method: _constants2.METHODS.CONNECT_TO_MOBIUS_SOCKET
111
+ };
112
+ if (!this.mobiusSocket.isConnected()) {
113
+ _context.next = 1;
114
+ break;
115
+ }
116
+ _Logger.default.info('Mobius WebSocket already connected', logContext);
117
+ return _context.abrupt("return");
118
+ case 1:
119
+ _Logger.default.info('Mobius WebSocket not connected, initiating connection', logContext);
120
+ _context.prev = 2;
121
+ _context.next = 3;
122
+ return this.mobiusSocket.connect(wssUrl);
123
+ case 3:
124
+ _Logger.default.log('Mobius WebSocket connected successfully', logContext);
125
+ _context.next = 5;
126
+ break;
127
+ case 4:
128
+ _context.prev = 4;
129
+ _t = _context["catch"](2);
130
+ _Logger.default.warn("Mobius WebSocket connection failed: ".concat(String(_t)), logContext);
131
+ throw normalizeWsError(_t);
132
+ case 5:
133
+ case "end":
134
+ return _context.stop();
135
+ }
136
+ }, _callee, this, [[2, 4]]);
137
+ }));
138
+ function connectToMobiusSocket(_x) {
139
+ return _connectToMobiusSocket.apply(this, arguments);
140
+ }
141
+ return connectToMobiusSocket;
142
+ }()
143
+ /**
144
+ * Disconnects the default session from the Mobius WebSocket.
145
+ */
146
+ )
147
+ }, {
148
+ key: "disconnectFromMobiusSocket",
149
+ value: (function () {
150
+ var _disconnectFromMobiusSocket = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2(options) {
151
+ var logContext, _t2;
152
+ return _regenerator.default.wrap(function (_context2) {
153
+ while (1) switch (_context2.prev = _context2.next) {
154
+ case 0:
155
+ logContext = {
156
+ file: _constants2.REQUEST_FILE,
157
+ method: 'disconnectFromMobiusSocket'
158
+ };
159
+ _context2.prev = 1;
160
+ _context2.next = 2;
161
+ return this.mobiusSocket.disconnect(options);
162
+ case 2:
163
+ _Logger.default.log('Mobius WebSocket disconnected successfully', logContext);
164
+ _context2.next = 4;
165
+ break;
166
+ case 3:
167
+ _context2.prev = 3;
168
+ _t2 = _context2["catch"](1);
169
+ // silent error - no need to throw an error
170
+ _Logger.default.warn("Mobius WebSocket disconnection failed: ".concat(String(_t2)), logContext);
171
+ case 4:
172
+ case "end":
173
+ return _context2.stop();
174
+ }
175
+ }, _callee2, this, [[1, 3]]);
176
+ }));
177
+ function disconnectFromMobiusSocket(_x2) {
178
+ return _disconnectFromMobiusSocket.apply(this, arguments);
179
+ }
180
+ return disconnectFromMobiusSocket;
181
+ }()
182
+ /**
183
+ * Makes a request using HTTP or WebSocket transport per the flag set in the constructor.
184
+ * When using WebSocket, the response is normalized to the WebexRequestPayload shape
185
+ * so callers do not need to know which transport was used.
186
+ * @param request - Request options (uri, method, body, headers, service)
187
+ * @returns Promise resolving to WebexRequestPayload
188
+ */
189
+ )
190
+ }, {
191
+ key: "makeRequest",
192
+ value: (function () {
193
+ var _makeRequest = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3(request) {
194
+ var trackingId, socketType, wsResponse, _t3;
195
+ return _regenerator.default.wrap(function (_context3) {
196
+ while (1) switch (_context3.prev = _context3.next) {
197
+ case 0:
198
+ if (!this.isMobiusSocketEnabled) {
199
+ _context3.next = 4;
200
+ break;
201
+ }
202
+ trackingId = "webex-js-sdk_".concat((0, _uuid.v4)());
203
+ socketType = (0, _mobiusSocketMapper.deriveMobiusSocketMessageType)(request.uri, request.method);
204
+ if (!(socketType === _constants.MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN)) {
205
+ _context3.next = 1;
206
+ break;
207
+ }
208
+ throw new Error("Unknown Mobius Socket message type: ".concat(socketType));
209
+ case 1:
210
+ _context3.prev = 1;
211
+ _context3.next = 2;
212
+ return this.mobiusSocket.sendWssRequest({
213
+ type: socketType,
214
+ trackingId: trackingId,
215
+ metadata: {
216
+ // userAgent: CALLING_USER_AGENT,
217
+ userAgent: 'mobius-ws-test-ui' // TODO: Confirm if this needs to be hardcoded
218
+ },
219
+ // TODO: Add auth token to metadata for call transfer etc
220
+ data: request.body
221
+ });
222
+ case 2:
223
+ wsResponse = _context3.sent;
224
+ return _context3.abrupt("return", normalizeWsResponse(wsResponse));
225
+ case 3:
226
+ _context3.prev = 3;
227
+ _t3 = _context3["catch"](1);
228
+ throw normalizeWsError(_t3);
229
+ case 4:
230
+ return _context3.abrupt("return", this.webex.request(request));
231
+ case 5:
232
+ case "end":
233
+ return _context3.stop();
234
+ }
235
+ }, _callee3, this, [[1, 3]]);
236
+ }));
237
+ function makeRequest(_x3) {
238
+ return _makeRequest.apply(this, arguments);
239
+ }
240
+ return makeRequest;
241
+ }())
242
+ }], [{
243
+ key: "getInstance",
244
+ value: function getInstance(config) {
245
+ if (!APIRequest.instance) {
246
+ APIRequest.instance = new APIRequest(config);
247
+ }
248
+ return APIRequest.instance;
249
+ }
250
+ }, {
251
+ key: "resetInstance",
252
+ value: function resetInstance() {
253
+ APIRequest.instance = undefined;
254
+ }
255
+ }]);
256
+ }();
257
+ /**
258
+ * Factory function to create a singleton APIRequest instance
259
+ * @param config - Configuration object for APIRequest
260
+ * @returns APIRequest instance
261
+ */
262
+ // eslint-disable-next-line no-use-before-define
263
+ (0, _defineProperty2.default)(APIRequest, "instance", void 0);
264
+ var createAPIRequest = exports.createAPIRequest = function createAPIRequest(config) {
265
+ return APIRequest.getInstance(config);
266
+ };
267
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_uuid","require","_internalPluginMobiusSocket","_Logger","_interopRequireDefault","_mobiusSocketMapper","_constants","_wsFeatureFlag","_constants2","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","normalizeWsResponse","wsResponse","_ref","_ref2","statusCode","body","data","undefined","headers","trackingid","trackingId","metadata","normalizeWsError","err","_ref3","_wsErr$response","_ref4","_wsErr$trackingId","_wsErr$response2","_ref5","_wsErr$response3","wsErr","response","APIRequest","exports","config","_config$isMobiusSocke","_classCallCheck2","webex","Error","isMobiusSocketEnabled","isMobiusWssEnabled","mobiusSocket","getMobiusSocketInstance","_createClass2","key","value","isSocketEnabled","_connectToMobiusSocket","_asyncToGenerator2","_regenerator","mark","_callee","wssUrl","logContext","_t","wrap","_context","prev","next","file","REQUEST_FILE","method","METHODS","CONNECT_TO_MOBIUS_SOCKET","isConnected","log","info","abrupt","connect","warn","concat","String","stop","connectToMobiusSocket","_x","_disconnectFromMobiusSocket","_callee2","options","_t2","_context2","disconnect","disconnectFromMobiusSocket","_x2","_makeRequest","_callee3","request","socketType","_t3","_context3","uuid","deriveMobiusSocketMessageType","uri","MOBIUS_SOCKET_MESSAGE_TYPE","UNKNOWN","sendWssRequest","type","userAgent","sent","makeRequest","_x3","getInstance","instance","resetInstance","createAPIRequest"],"sources":["request.ts"],"sourcesContent":["import {v4 as uuid} from 'uuid';\n// @ts-ignore - JS module without type declarations\nimport {getMobiusSocketInstance} from '@webex/internal-plugin-mobius-socket';\nimport {WebexRequestPayload} from '../../common/types';\nimport {WebexSDK} from '../../SDKConnector/types';\nimport log from '../../Logger';\nimport {APIRequestConfig, APIRequestOptions, MobiusSocketResponse} from './types';\nimport {deriveMobiusSocketMessageType} from './mobiusSocketMapper';\nimport {MOBIUS_SOCKET_MESSAGE_TYPE} from './constants';\nimport {isMobiusWssEnabled} from './wsFeatureFlag';\nimport {METHODS, REQUEST_FILE} from '../constants';\n\n/**\n * Converts a MobiusSocketResponse into the WebexRequestPayload shape that\n * all callers (registration, call, keepalive error-handlers) expect.\n */\nfunction normalizeWsResponse(wsResponse: MobiusSocketResponse): WebexRequestPayload {\n return {\n statusCode: wsResponse.statusCode,\n body: (wsResponse.data as object) ?? undefined,\n headers: {\n trackingid: wsResponse.trackingId,\n ...((wsResponse.metadata as Record<string, string>) ?? {}),\n },\n };\n}\n\n/**\n * Converts a MobiusSocketResponseError rejection into a WebexRequestPayload-shaped\n * error so handleRegistrationErrors / handleCallErrors can process it identically.\n */\nfunction normalizeWsError(err: unknown): WebexRequestPayload {\n const wsErr = err as {\n statusCode?: number;\n statusMessage?: string;\n response?: MobiusSocketResponse;\n trackingId?: string;\n };\n\n return {\n statusCode: wsErr.statusCode,\n body: (wsErr.response?.data as object) ?? undefined,\n headers: {\n trackingid: wsErr.trackingId ?? wsErr.response?.trackingId ?? '',\n ...((wsErr.response?.metadata as Record<string, string>) ?? {}),\n },\n };\n}\n\n/**\n * APIRequest routes Mobius traffic over HTTP (`webex.request`) or the Mobius WebSocket path\n * (`mobiusSocketRequest`). `isMobiusSocketEnabled` is set in the constructor from WDM\n * `webrtc-calling-over-ws` and/or SDK config (interim until WDM is fully in prod).\n */\nexport class APIRequest {\n // eslint-disable-next-line no-use-before-define\n private static instance: APIRequest | undefined;\n private isMobiusSocketEnabled: boolean;\n private webex: WebexSDK;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private mobiusSocket: any;\n\n static getInstance(config: APIRequestConfig): APIRequest {\n if (!APIRequest.instance) {\n APIRequest.instance = new APIRequest(config);\n }\n\n return APIRequest.instance;\n }\n\n static resetInstance(): void {\n APIRequest.instance = undefined;\n }\n\n /**\n * @param config - Webex instance plus optional SDK Mobius-socket override\n */\n constructor(config: APIRequestConfig) {\n if (!config.webex) {\n throw new Error('WebexSDK instance is required');\n }\n\n this.webex = config.webex;\n this.isMobiusSocketEnabled =\n isMobiusWssEnabled(config.webex) || (config.isMobiusSocketEnabled ?? false);\n this.mobiusSocket = getMobiusSocketInstance(this.webex);\n }\n\n /**\n * Whether the Mobius WebSocket transport is active for this instance.\n */\n public isSocketEnabled(): boolean {\n return this.isMobiusSocketEnabled;\n }\n\n /**\n * Ensures the Mobius WebSocket is connected before sending API requests.\n * If the socket is already connected, resolves immediately. Otherwise,\n * initiates a new connection to the provided WebSocket URL.\n * On failure, throws a normalized WebexRequestPayload-shaped error.\n *\n * @param wssUrl - The Mobius WebSocket URL to connect to.\n */\n public async connectToMobiusSocket(wssUrl: string): Promise<void> {\n const logContext = {\n file: REQUEST_FILE,\n method: METHODS.CONNECT_TO_MOBIUS_SOCKET,\n };\n\n if (this.mobiusSocket.isConnected()) {\n log.info('Mobius WebSocket already connected', logContext);\n\n return;\n }\n\n log.info('Mobius WebSocket not connected, initiating connection', logContext);\n\n try {\n await this.mobiusSocket.connect(wssUrl);\n log.log('Mobius WebSocket connected successfully', logContext);\n } catch (err) {\n log.warn(`Mobius WebSocket connection failed: ${String(err)}`, logContext);\n throw normalizeWsError(err);\n }\n }\n\n /**\n * Disconnects the default session from the Mobius WebSocket.\n */\n public async disconnectFromMobiusSocket(options?: {code: number; reason: string}): Promise<void> {\n const logContext = {\n file: REQUEST_FILE,\n method: 'disconnectFromMobiusSocket',\n };\n\n try {\n await this.mobiusSocket.disconnect(options);\n log.log('Mobius WebSocket disconnected successfully', logContext);\n } catch (err) {\n // silent error - no need to throw an error\n log.warn(`Mobius WebSocket disconnection failed: ${String(err)}`, logContext);\n }\n }\n\n /**\n * Makes a request using HTTP or WebSocket transport per the flag set in the constructor.\n * When using WebSocket, the response is normalized to the WebexRequestPayload shape\n * so callers do not need to know which transport was used.\n * @param request - Request options (uri, method, body, headers, service)\n * @returns Promise resolving to WebexRequestPayload\n */\n public async makeRequest(request: APIRequestOptions): Promise<WebexRequestPayload> {\n if (this.isMobiusSocketEnabled) {\n const trackingId = `webex-js-sdk_${uuid()}`;\n const socketType = deriveMobiusSocketMessageType(request.uri, request.method);\n\n if (socketType === MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN) {\n throw new Error(`Unknown Mobius Socket message type: ${socketType}`);\n }\n\n try {\n const wsResponse: MobiusSocketResponse = await this.mobiusSocket.sendWssRequest({\n type: socketType,\n trackingId,\n metadata: {\n // userAgent: CALLING_USER_AGENT,\n userAgent: 'mobius-ws-test-ui', // TODO: Confirm if this needs to be hardcoded\n }, // TODO: Add auth token to metadata for call transfer etc\n data: request.body,\n });\n\n return normalizeWsResponse(wsResponse);\n } catch (err) {\n throw normalizeWsError(err);\n }\n }\n\n return this.webex.request(request) as Promise<WebexRequestPayload>;\n }\n}\n\n/**\n * Factory function to create a singleton APIRequest instance\n * @param config - Configuration object for APIRequest\n * @returns APIRequest instance\n */\nexport const createAPIRequest = (config: APIRequestConfig): APIRequest =>\n APIRequest.getInstance(config);\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ _Object$defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {WebexRequestPayload} from '../../common/types';\nimport {WebexSDK} from '../../SDKConnector/types';\n\n/**\n * Configuration for APIRequest class\n */\nexport interface APIRequestConfig {\n /**\n * Interim SDK opt-in for Mobius WebSocket transport when WDM\n * `webrtc-calling-over-ws` is not yet true (until prod rollout).\n */\n isMobiusSocketEnabled?: boolean;\n /** Webex SDK instance for making requests */\n webex: WebexSDK;\n}\n\n/**\n * Request options for makeRequest method (alias for compatibility)\n */\nexport type APIRequestOptions = WebexRequestPayload;\n\n/**\n * Request options for Mobius WebSocket requests\n */\nexport interface MobiusSocketRequestOptions {\n /** Request type (typically HTTP method like GET, POST, etc.) */\n type: string;\n /** Unique tracking ID for the request */\n trackingId: string;\n /** Optional metadata (uri, service, headers, etc.) */\n metadata?: Record<string, unknown>;\n /** Optional request data/body */\n data?: unknown;\n}\n\n/**\n * Response structure for Mobius WebSocket requests\n */\nexport type MobiusSocketResponse = {\n type: string;\n trackingId: string;\n statusCode: number;\n statusMessage: string;\n metadata?: Record<string, unknown>;\n data?: unknown;\n};\n\n/**\n * Function signature for MobiusSocket.sendWssRequest.\n * Sends a websocket request data and resolves when the matching response arrives.\n */\nexport type SendWssRequestFn = (\n data: MobiusSocketRequestOptions,\n sessionIdOrOptions?: string | Record<string, unknown>,\n options?: Record<string, unknown>\n) => Promise<MobiusSocketResponse>;\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ _Object$defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.WEBRTC_CALLING_OVER_WS_FEATURE_KEY = void 0;
8
+ exports.isMobiusWssEnabled = isMobiusWssEnabled;
9
+ /** WDM device-settings key for routing Mobius traffic over WebSocket. */
10
+ var WEBRTC_CALLING_OVER_WS_FEATURE_KEY = exports.WEBRTC_CALLING_OVER_WS_FEATURE_KEY = 'webrtc-calling-over-ws-CALL-219562';
11
+ /**
12
+ * Whether Webex Calling should use the Mobius WebSocket transport for API requests.
13
+ * Reads WDM `webex.internal.device.settings['webrtc-calling-over-ws'].value`; must be
14
+ * strictly `true` to enable WebSocket—otherwise use HTTP.
15
+ */
16
+ function isMobiusWssEnabled(webex) {
17
+ var _webex$internal, _webex$internal$devic, _webex$internal$devic2, _webex$internal$devic3, _webex$internal$devic4;
18
+ return ((_webex$internal = webex.internal) === null || _webex$internal === void 0 ? void 0 : (_webex$internal$devic = _webex$internal.device) === null || _webex$internal$devic === void 0 ? void 0 : (_webex$internal$devic2 = _webex$internal$devic.features) === null || _webex$internal$devic2 === void 0 ? void 0 : (_webex$internal$devic3 = _webex$internal$devic2.developer) === null || _webex$internal$devic3 === void 0 ? void 0 : (_webex$internal$devic4 = _webex$internal$devic3.get(WEBRTC_CALLING_OVER_WS_FEATURE_KEY)) === null || _webex$internal$devic4 === void 0 ? void 0 : _webex$internal$devic4.value) === true;
19
+ }
20
+ //# sourceMappingURL=wsFeatureFlag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["WEBRTC_CALLING_OVER_WS_FEATURE_KEY","exports","isMobiusWssEnabled","webex","_webex$internal","_webex$internal$devic","_webex$internal$devic2","_webex$internal$devic3","_webex$internal$devic4","internal","device","features","developer","get","value"],"sources":["wsFeatureFlag.ts"],"sourcesContent":["import {WebexSDK} from '../../SDKConnector/types';\n\n/** WDM device-settings key for routing Mobius traffic over WebSocket. */\nexport const WEBRTC_CALLING_OVER_WS_FEATURE_KEY = 'webrtc-calling-over-ws-CALL-219562';\n/**\n * Whether Webex Calling should use the Mobius WebSocket transport for API requests.\n * Reads WDM `webex.internal.device.settings['webrtc-calling-over-ws'].value`; must be\n * strictly `true` to enable WebSocket—otherwise use HTTP.\n */\nexport function isMobiusWssEnabled(webex: WebexSDK): boolean {\n return (\n webex.internal?.device?.features?.developer?.get(WEBRTC_CALLING_OVER_WS_FEATURE_KEY)?.value ===\n true\n );\n}\n"],"mappings":";;;;;;;;AAEA;AACO,IAAMA,kCAAkC,GAAAC,OAAA,CAAAD,kCAAA,GAAG,oCAAoC;AACtF;AACA;AACA;AACA;AACA;AACO,SAASE,kBAAkBA,CAACC,KAAe,EAAW;EAAA,IAAAC,eAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;EAC3D,OACE,EAAAJ,eAAA,GAAAD,KAAK,CAACM,QAAQ,cAAAL,eAAA,wBAAAC,qBAAA,GAAdD,eAAA,CAAgBM,MAAM,cAAAL,qBAAA,wBAAAC,sBAAA,GAAtBD,qBAAA,CAAwBM,QAAQ,cAAAL,sBAAA,wBAAAC,sBAAA,GAAhCD,sBAAA,CAAkCM,SAAS,cAAAL,sBAAA,wBAAAC,sBAAA,GAA3CD,sBAAA,CAA6CM,GAAG,CAACb,kCAAkC,CAAC,cAAAQ,sBAAA,uBAApFA,sBAAA,CAAsFM,KAAK,MAC3F,IAAI;AAER","ignoreList":[]}
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = windowsChromiumIceWarmup;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/toConsumableArray"));
11
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
12
+ var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
13
+ // This file contains a workaround for a known issue in Windows Chromium-based browsers
14
+ // See: https://issues.chromium.org/issues/332933530
15
+ // There is a rare condition where WebRTC doesn't work on the first try due to ICE gathering issues.
16
+ // This function attempts to "warm up" the ICE gathering process by creating a pair of peer connections
17
+ // and forcing ICE candidate gathering and exchange before the actual call setup.
18
+ // We need to try establishing the connection through the srflx candidates since the host candidate won't work
19
+ // This is intended to be called once at the start of the calling SDK to reduce the likelihood of ICE issues later.
20
+ function waitForIceComplete(pc, timeoutMs) {
21
+ return new _promise.default(function (resolve) {
22
+ if (!pc) {
23
+ resolve({
24
+ ok: false,
25
+ reason: 'no-pc'
26
+ });
27
+ return;
28
+ }
29
+ if (pc.iceGatheringState === 'complete') {
30
+ resolve({
31
+ ok: true,
32
+ reached: 'already'
33
+ });
34
+ return;
35
+ }
36
+ var done = false;
37
+ var _onChange = function onChange() {
38
+ if (pc.iceGatheringState === 'complete' && !done) {
39
+ done = true;
40
+ pc.removeEventListener('icegatheringstatechange', _onChange);
41
+ resolve({
42
+ ok: true,
43
+ reached: 'event'
44
+ });
45
+ }
46
+ };
47
+ pc.addEventListener('icegatheringstatechange', _onChange);
48
+
49
+ // timeout fallback
50
+ setTimeout(function () {
51
+ if (done) return;
52
+ done = true;
53
+ pc.removeEventListener('icegatheringstatechange', _onChange);
54
+ resolve({
55
+ ok: pc.iceGatheringState === 'complete',
56
+ reached: 'timeout'
57
+ });
58
+ }, timeoutMs);
59
+ });
60
+ }
61
+ function windowsChromiumIceWarmup(_x) {
62
+ return _windowsChromiumIceWarmup.apply(this, arguments);
63
+ }
64
+ function _windowsChromiumIceWarmup() {
65
+ _windowsChromiumIceWarmup = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
66
+ var _ref$iceServers, iceServers, _ref$timeoutMs, timeoutMs, pc1, pc2, candidates, offer, answer;
67
+ return _regenerator.default.wrap(function (_context) {
68
+ while (1) switch (_context.prev = _context.next) {
69
+ case 0:
70
+ _ref$iceServers = _ref.iceServers, iceServers = _ref$iceServers === void 0 ? [] : _ref$iceServers, _ref$timeoutMs = _ref.timeoutMs, timeoutMs = _ref$timeoutMs === void 0 ? 1000 : _ref$timeoutMs;
71
+ pc1 = new RTCPeerConnection({
72
+ iceServers: iceServers,
73
+ iceCandidatePoolSize: 1
74
+ });
75
+ pc2 = new RTCPeerConnection({
76
+ iceServers: iceServers,
77
+ iceCandidatePoolSize: 1
78
+ });
79
+ candidates = {
80
+ pc1: [],
81
+ pc2: []
82
+ };
83
+ pc1.onicecandidate = function (e) {
84
+ if (e.candidate && e.candidate.type !== 'host') {
85
+ candidates.pc1.push(e.candidate);
86
+ }
87
+ };
88
+ _context.next = 1;
89
+ return pc1.createDataChannel('warmup');
90
+ case 1:
91
+ _context.next = 2;
92
+ return pc1.addTransceiver('audio');
93
+ case 2:
94
+ _context.next = 3;
95
+ return pc1.createOffer();
96
+ case 3:
97
+ offer = _context.sent;
98
+ _context.next = 4;
99
+ return pc1.setLocalDescription(offer);
100
+ case 4:
101
+ _context.next = 5;
102
+ return waitForIceComplete(pc1, timeoutMs);
103
+ case 5:
104
+ _context.next = 6;
105
+ return pc2.setRemoteDescription(offer);
106
+ case 6:
107
+ pc2.onicecandidate = function (e) {
108
+ if (e.candidate && e.candidate.type !== 'host') {
109
+ candidates.pc2.push(e.candidate);
110
+ }
111
+ };
112
+ _context.next = 7;
113
+ return pc2.createAnswer();
114
+ case 7:
115
+ answer = _context.sent;
116
+ _context.next = 8;
117
+ return pc2.setLocalDescription(answer);
118
+ case 8:
119
+ _context.next = 9;
120
+ return pc1.setRemoteDescription(answer);
121
+ case 9:
122
+ _context.next = 10;
123
+ return waitForIceComplete(pc2, timeoutMs);
124
+ case 10:
125
+ _context.next = 11;
126
+ return _promise.default.all([].concat((0, _toConsumableArray2.default)(candidates.pc1.map(function (candidate) {
127
+ return pc2.addIceCandidate(candidate).catch(console.error);
128
+ })), (0, _toConsumableArray2.default)(candidates.pc2.map(function (candidate) {
129
+ return pc1.addIceCandidate(candidate).catch(console.error);
130
+ }))));
131
+ case 11:
132
+ pc1.close();
133
+ pc2.close();
134
+ case 12:
135
+ case "end":
136
+ return _context.stop();
137
+ }
138
+ }, _callee);
139
+ }));
140
+ return _windowsChromiumIceWarmup.apply(this, arguments);
141
+ }
142
+ //# sourceMappingURL=windowsChromiumIceWarmupUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["waitForIceComplete","pc","timeoutMs","_promise","default","resolve","ok","reason","iceGatheringState","reached","done","onChange","removeEventListener","addEventListener","setTimeout","windowsChromiumIceWarmup","_x","_windowsChromiumIceWarmup","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","_ref","_ref$iceServers","iceServers","_ref$timeoutMs","pc1","pc2","candidates","offer","answer","wrap","_context","prev","next","RTCPeerConnection","iceCandidatePoolSize","onicecandidate","e","candidate","type","push","createDataChannel","addTransceiver","createOffer","sent","setLocalDescription","setRemoteDescription","createAnswer","all","concat","_toConsumableArray2","map","addIceCandidate","catch","console","error","close","stop"],"sources":["windowsChromiumIceWarmupUtils.ts"],"sourcesContent":["// This file contains a workaround for a known issue in Windows Chromium-based browsers\n// See: https://issues.chromium.org/issues/332933530\n// There is a rare condition where WebRTC doesn't work on the first try due to ICE gathering issues.\n// This function attempts to \"warm up\" the ICE gathering process by creating a pair of peer connections\n// and forcing ICE candidate gathering and exchange before the actual call setup.\n// We need to try establishing the connection through the srflx candidates since the host candidate won't work\n// This is intended to be called once at the start of the calling SDK to reduce the likelihood of ICE issues later.\nfunction waitForIceComplete(pc: RTCPeerConnection, timeoutMs: number) {\n return new Promise((resolve) => {\n if (!pc) {\n resolve({ok: false, reason: 'no-pc'});\n\n return;\n }\n if (pc.iceGatheringState === 'complete') {\n resolve({ok: true, reached: 'already'});\n\n return;\n }\n\n let done = false;\n const onChange = () => {\n if (pc.iceGatheringState === 'complete' && !done) {\n done = true;\n pc.removeEventListener('icegatheringstatechange', onChange);\n resolve({ok: true, reached: 'event'});\n }\n };\n pc.addEventListener('icegatheringstatechange', onChange);\n\n // timeout fallback\n setTimeout(() => {\n if (done) return;\n done = true;\n pc.removeEventListener('icegatheringstatechange', onChange);\n resolve({ok: pc.iceGatheringState === 'complete', reached: 'timeout'});\n }, timeoutMs);\n });\n}\n\nexport default async function windowsChromiumIceWarmup({iceServers = [], timeoutMs = 1000}) {\n const pc1 = new RTCPeerConnection({iceServers, iceCandidatePoolSize: 1});\n const pc2 = new RTCPeerConnection({iceServers, iceCandidatePoolSize: 1});\n\n const candidates: {pc1: RTCIceCandidate[]; pc2: RTCIceCandidate[]} = {pc1: [], pc2: []};\n pc1.onicecandidate = (e) => {\n if (e.candidate && e.candidate.type !== 'host') {\n candidates.pc1.push(e.candidate);\n }\n };\n\n await pc1.createDataChannel('warmup');\n await pc1.addTransceiver('audio');\n\n const offer = await pc1.createOffer();\n await pc1.setLocalDescription(offer);\n\n await waitForIceComplete(pc1, timeoutMs);\n\n await pc2.setRemoteDescription(offer);\n pc2.onicecandidate = (e) => {\n if (e.candidate && e.candidate.type !== 'host') {\n candidates.pc2.push(e.candidate);\n }\n };\n\n const answer = await pc2.createAnswer();\n await pc2.setLocalDescription(answer);\n await pc1.setRemoteDescription(answer);\n\n await waitForIceComplete(pc2, timeoutMs);\n\n // Add ice candidates that were gathered\n await Promise.all([\n ...candidates.pc1.map((candidate) => pc2.addIceCandidate(candidate).catch(console.error)),\n ...candidates.pc2.map((candidate) => pc1.addIceCandidate(candidate).catch(console.error)),\n ]);\n\n pc1.close();\n pc2.close();\n}\n"],"mappings":";;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,kBAAkBA,CAACC,EAAqB,EAAEC,SAAiB,EAAE;EACpE,OAAO,IAAAC,QAAA,CAAAC,OAAA,CAAY,UAACC,OAAO,EAAK;IAC9B,IAAI,CAACJ,EAAE,EAAE;MACPI,OAAO,CAAC;QAACC,EAAE,EAAE,KAAK;QAAEC,MAAM,EAAE;MAAO,CAAC,CAAC;MAErC;IACF;IACA,IAAIN,EAAE,CAACO,iBAAiB,KAAK,UAAU,EAAE;MACvCH,OAAO,CAAC;QAACC,EAAE,EAAE,IAAI;QAAEG,OAAO,EAAE;MAAS,CAAC,CAAC;MAEvC;IACF;IAEA,IAAIC,IAAI,GAAG,KAAK;IAChB,IAAMC,SAAQ,GAAG,SAAXA,QAAQA,CAAA,EAAS;MACrB,IAAIV,EAAE,CAACO,iBAAiB,KAAK,UAAU,IAAI,CAACE,IAAI,EAAE;QAChDA,IAAI,GAAG,IAAI;QACXT,EAAE,CAACW,mBAAmB,CAAC,yBAAyB,EAAED,SAAQ,CAAC;QAC3DN,OAAO,CAAC;UAACC,EAAE,EAAE,IAAI;UAAEG,OAAO,EAAE;QAAO,CAAC,CAAC;MACvC;IACF,CAAC;IACDR,EAAE,CAACY,gBAAgB,CAAC,yBAAyB,EAAEF,SAAQ,CAAC;;IAExD;IACAG,UAAU,CAAC,YAAM;MACf,IAAIJ,IAAI,EAAE;MACVA,IAAI,GAAG,IAAI;MACXT,EAAE,CAACW,mBAAmB,CAAC,yBAAyB,EAAED,SAAQ,CAAC;MAC3DN,OAAO,CAAC;QAACC,EAAE,EAAEL,EAAE,CAACO,iBAAiB,KAAK,UAAU;QAAEC,OAAO,EAAE;MAAS,CAAC,CAAC;IACxE,CAAC,EAAEP,SAAS,CAAC;EACf,CAAC,CAAC;AACJ;AAAC,SAE6Ba,wBAAwBA,CAAAC,EAAA;EAAA,OAAAC,yBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,0BAAA;EAAAA,yBAAA,OAAAG,kBAAA,CAAAhB,OAAA,eAAAiB,YAAA,CAAAjB,OAAA,CAAAkB,IAAA,CAAvC,SAAAC,QAAAC,IAAA;IAAA,IAAAC,eAAA,EAAAC,UAAA,EAAAC,cAAA,EAAAzB,SAAA,EAAA0B,GAAA,EAAAC,GAAA,EAAAC,UAAA,EAAAC,KAAA,EAAAC,MAAA;IAAA,OAAAX,YAAA,CAAAjB,OAAA,CAAA6B,IAAA,WAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAAX,eAAA,GAAAD,IAAA,CAAyCE,UAAU,EAAVA,UAAU,GAAAD,eAAA,cAAG,EAAE,GAAAA,eAAA,EAAAE,cAAA,GAAAH,IAAA,CAAEtB,SAAS,EAATA,SAAS,GAAAyB,cAAA,cAAG,IAAI,GAAAA,cAAA;UACjFC,GAAG,GAAG,IAAIS,iBAAiB,CAAC;YAACX,UAAU,EAAVA,UAAU;YAAEY,oBAAoB,EAAE;UAAC,CAAC,CAAC;UAClET,GAAG,GAAG,IAAIQ,iBAAiB,CAAC;YAACX,UAAU,EAAVA,UAAU;YAAEY,oBAAoB,EAAE;UAAC,CAAC,CAAC;UAElER,UAA4D,GAAG;YAACF,GAAG,EAAE,EAAE;YAAEC,GAAG,EAAE;UAAE,CAAC;UACvFD,GAAG,CAACW,cAAc,GAAG,UAACC,CAAC,EAAK;YAC1B,IAAIA,CAAC,CAACC,SAAS,IAAID,CAAC,CAACC,SAAS,CAACC,IAAI,KAAK,MAAM,EAAE;cAC9CZ,UAAU,CAACF,GAAG,CAACe,IAAI,CAACH,CAAC,CAACC,SAAS,CAAC;YAClC;UACF,CAAC;UAACP,QAAA,CAAAE,IAAA;UAAA,OAEIR,GAAG,CAACgB,iBAAiB,CAAC,QAAQ,CAAC;QAAA;UAAAV,QAAA,CAAAE,IAAA;UAAA,OAC/BR,GAAG,CAACiB,cAAc,CAAC,OAAO,CAAC;QAAA;UAAAX,QAAA,CAAAE,IAAA;UAAA,OAEbR,GAAG,CAACkB,WAAW,CAAC,CAAC;QAAA;UAA/Bf,KAAK,GAAAG,QAAA,CAAAa,IAAA;UAAAb,QAAA,CAAAE,IAAA;UAAA,OACLR,GAAG,CAACoB,mBAAmB,CAACjB,KAAK,CAAC;QAAA;UAAAG,QAAA,CAAAE,IAAA;UAAA,OAE9BpC,kBAAkB,CAAC4B,GAAG,EAAE1B,SAAS,CAAC;QAAA;UAAAgC,QAAA,CAAAE,IAAA;UAAA,OAElCP,GAAG,CAACoB,oBAAoB,CAAClB,KAAK,CAAC;QAAA;UACrCF,GAAG,CAACU,cAAc,GAAG,UAACC,CAAC,EAAK;YAC1B,IAAIA,CAAC,CAACC,SAAS,IAAID,CAAC,CAACC,SAAS,CAACC,IAAI,KAAK,MAAM,EAAE;cAC9CZ,UAAU,CAACD,GAAG,CAACc,IAAI,CAACH,CAAC,CAACC,SAAS,CAAC;YAClC;UACF,CAAC;UAACP,QAAA,CAAAE,IAAA;UAAA,OAEmBP,GAAG,CAACqB,YAAY,CAAC,CAAC;QAAA;UAAjClB,MAAM,GAAAE,QAAA,CAAAa,IAAA;UAAAb,QAAA,CAAAE,IAAA;UAAA,OACNP,GAAG,CAACmB,mBAAmB,CAAChB,MAAM,CAAC;QAAA;UAAAE,QAAA,CAAAE,IAAA;UAAA,OAC/BR,GAAG,CAACqB,oBAAoB,CAACjB,MAAM,CAAC;QAAA;UAAAE,QAAA,CAAAE,IAAA;UAAA,OAEhCpC,kBAAkB,CAAC6B,GAAG,EAAE3B,SAAS,CAAC;QAAA;UAAAgC,QAAA,CAAAE,IAAA;UAAA,OAGlCjC,QAAA,CAAAC,OAAA,CAAQ+C,GAAG,IAAAC,MAAA,KAAAC,mBAAA,CAAAjD,OAAA,EACZ0B,UAAU,CAACF,GAAG,CAAC0B,GAAG,CAAC,UAACb,SAAS;YAAA,OAAKZ,GAAG,CAAC0B,eAAe,CAACd,SAAS,CAAC,CAACe,KAAK,CAACC,OAAO,CAACC,KAAK,CAAC;UAAA,EAAC,OAAAL,mBAAA,CAAAjD,OAAA,EACtF0B,UAAU,CAACD,GAAG,CAACyB,GAAG,CAAC,UAACb,SAAS;YAAA,OAAKb,GAAG,CAAC2B,eAAe,CAACd,SAAS,CAAC,CAACe,KAAK,CAACC,OAAO,CAACC,KAAK,CAAC;UAAA,EAAC,EAC1F,CAAC;QAAA;UAEF9B,GAAG,CAAC+B,KAAK,CAAC,CAAC;UACX9B,GAAG,CAAC8B,KAAK,CAAC,CAAC;QAAC;QAAA;UAAA,OAAAzB,QAAA,CAAA0B,IAAA;MAAA;IAAA,GAAArC,OAAA;EAAA,CACb;EAAA,OAAAN,yBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA","ignoreList":[]}