@webex/calling 3.11.0 → 3.12.0-llmrefactor.2

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 (372) 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/CallRecording/CallRecording.js +160 -0
  12. package/dist/CallRecording/CallRecording.js.map +1 -0
  13. package/dist/CallRecording/CallRecording.test.js +257 -0
  14. package/dist/CallRecording/CallRecording.test.js.map +1 -0
  15. package/dist/CallRecording/WxcCallRecordingConnector.js +577 -0
  16. package/dist/CallRecording/WxcCallRecordingConnector.js.map +1 -0
  17. package/dist/CallRecording/WxcCallRecordingConnector.test.js +652 -0
  18. package/dist/CallRecording/WxcCallRecordingConnector.test.js.map +1 -0
  19. package/dist/CallRecording/callRecordingFixtures.js +235 -0
  20. package/dist/CallRecording/callRecordingFixtures.js.map +1 -0
  21. package/dist/CallRecording/constants.js +50 -0
  22. package/dist/CallRecording/constants.js.map +1 -0
  23. package/dist/CallRecording/types.js +137 -0
  24. package/dist/CallRecording/types.js.map +1 -0
  25. package/dist/CallRecording/utils.js +42 -0
  26. package/dist/CallRecording/utils.js.map +1 -0
  27. package/dist/CallRecording/utils.test.js +97 -0
  28. package/dist/CallRecording/utils.test.js.map +1 -0
  29. package/dist/CallSettings/CallSettings.js +311 -0
  30. package/dist/CallSettings/CallSettings.js.map +1 -0
  31. package/dist/CallSettings/CallSettings.test.js +122 -0
  32. package/dist/CallSettings/CallSettings.test.js.map +1 -0
  33. package/dist/CallSettings/UcmBackendConnector.js +308 -0
  34. package/dist/CallSettings/UcmBackendConnector.js.map +1 -0
  35. package/dist/CallSettings/UcmBackendConnector.test.js +411 -0
  36. package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -0
  37. package/dist/CallSettings/WxCallBackendConnector.js +597 -0
  38. package/dist/CallSettings/WxCallBackendConnector.js.map +1 -0
  39. package/dist/CallSettings/WxCallBackendConnector.test.js +904 -0
  40. package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -0
  41. package/dist/CallSettings/constants.js +31 -0
  42. package/dist/CallSettings/constants.js.map +1 -0
  43. package/dist/CallSettings/testFixtures.js +68 -0
  44. package/dist/CallSettings/testFixtures.js.map +1 -0
  45. package/dist/CallSettings/types.js +7 -0
  46. package/dist/CallSettings/types.js.map +1 -0
  47. package/dist/CallingClient/CallingClient.js +1349 -0
  48. package/dist/CallingClient/CallingClient.js.map +1 -0
  49. package/dist/CallingClient/CallingClient.test.js +1625 -0
  50. package/dist/CallingClient/CallingClient.test.js.map +1 -0
  51. package/dist/CallingClient/callRecordFixtures.js +101 -0
  52. package/dist/CallingClient/callRecordFixtures.js.map +1 -0
  53. package/dist/CallingClient/calling/CallerId/index.js +275 -0
  54. package/dist/CallingClient/calling/CallerId/index.js.map +1 -0
  55. package/dist/CallingClient/calling/CallerId/index.test.js +275 -0
  56. package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -0
  57. package/dist/CallingClient/calling/CallerId/types.js +7 -0
  58. package/dist/CallingClient/calling/CallerId/types.js.map +1 -0
  59. package/dist/CallingClient/calling/call.js +3666 -0
  60. package/dist/CallingClient/calling/call.js.map +1 -0
  61. package/dist/CallingClient/calling/call.test.js +3970 -0
  62. package/dist/CallingClient/calling/call.test.js.map +1 -0
  63. package/dist/CallingClient/calling/callManager.js +531 -0
  64. package/dist/CallingClient/calling/callManager.js.map +1 -0
  65. package/dist/CallingClient/calling/callManager.test.js +881 -0
  66. package/dist/CallingClient/calling/callManager.test.js.map +1 -0
  67. package/dist/CallingClient/calling/index.js +30 -0
  68. package/dist/CallingClient/calling/index.js.map +1 -0
  69. package/dist/CallingClient/calling/types.js +79 -0
  70. package/dist/CallingClient/calling/types.js.map +1 -0
  71. package/dist/CallingClient/callingClientFixtures.js +143 -0
  72. package/dist/CallingClient/callingClientFixtures.js.map +1 -0
  73. package/dist/CallingClient/constants.js +272 -0
  74. package/dist/CallingClient/constants.js.map +1 -0
  75. package/dist/CallingClient/line/index.js +339 -0
  76. package/dist/CallingClient/line/index.js.map +1 -0
  77. package/dist/CallingClient/line/line.test.js +379 -0
  78. package/dist/CallingClient/line/line.test.js.map +1 -0
  79. package/dist/CallingClient/line/types.js +21 -0
  80. package/dist/CallingClient/line/types.js.map +1 -0
  81. package/dist/CallingClient/registration/index.js +19 -0
  82. package/dist/CallingClient/registration/index.js.map +1 -0
  83. package/dist/CallingClient/registration/register.js +2079 -0
  84. package/dist/CallingClient/registration/register.js.map +1 -0
  85. package/dist/CallingClient/registration/register.test.js +2476 -0
  86. package/dist/CallingClient/registration/register.test.js.map +1 -0
  87. package/dist/CallingClient/registration/registerFixtures.js +36 -0
  88. package/dist/CallingClient/registration/registerFixtures.js.map +1 -0
  89. package/dist/CallingClient/registration/types.js +33 -0
  90. package/dist/CallingClient/registration/types.js.map +1 -0
  91. package/dist/CallingClient/registration/webWorker.js +67 -0
  92. package/dist/CallingClient/registration/webWorker.js.map +1 -0
  93. package/dist/CallingClient/registration/webWorker.test.js +189 -0
  94. package/dist/CallingClient/registration/webWorker.test.js.map +1 -0
  95. package/dist/CallingClient/registration/webWorkerStr.js +15 -0
  96. package/dist/CallingClient/registration/webWorkerStr.js.map +1 -0
  97. package/dist/CallingClient/types.js +14 -0
  98. package/dist/CallingClient/types.js.map +1 -0
  99. package/dist/CallingClient/utils/constants.js +58 -0
  100. package/dist/CallingClient/utils/constants.js.map +1 -0
  101. package/dist/CallingClient/utils/index.js +63 -0
  102. package/dist/CallingClient/utils/index.js.map +1 -0
  103. package/dist/CallingClient/utils/mobiusSocketMapper.js +122 -0
  104. package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -0
  105. package/dist/CallingClient/utils/mobiusSocketMapper.test.js +221 -0
  106. package/dist/CallingClient/utils/mobiusSocketMapper.test.js.map +1 -0
  107. package/dist/CallingClient/utils/request.js +435 -0
  108. package/dist/CallingClient/utils/request.js.map +1 -0
  109. package/dist/CallingClient/utils/request.test.js +999 -0
  110. package/dist/CallingClient/utils/request.test.js.map +1 -0
  111. package/dist/CallingClient/utils/types.js +7 -0
  112. package/dist/CallingClient/utils/types.js.map +1 -0
  113. package/dist/CallingClient/utils/wsFeatureFlag.js +70 -0
  114. package/dist/CallingClient/utils/wsFeatureFlag.js.map +1 -0
  115. package/dist/CallingClient/utils/wsFeatureFlag.test.js +139 -0
  116. package/dist/CallingClient/utils/wsFeatureFlag.test.js.map +1 -0
  117. package/dist/CallingClient/windowsChromiumIceWarmupUtils.js +142 -0
  118. package/dist/CallingClient/windowsChromiumIceWarmupUtils.js.map +1 -0
  119. package/dist/Contacts/ContactsClient.js +1208 -0
  120. package/dist/Contacts/ContactsClient.js.map +1 -0
  121. package/dist/Contacts/ContactsClient.test.js +999 -0
  122. package/dist/Contacts/ContactsClient.test.js.map +1 -0
  123. package/dist/Contacts/constants.js +40 -0
  124. package/dist/Contacts/constants.js.map +1 -0
  125. package/dist/Contacts/contactFixtures.js +430 -0
  126. package/dist/Contacts/contactFixtures.js.map +1 -0
  127. package/dist/Contacts/types.js +43 -0
  128. package/dist/Contacts/types.js.map +1 -0
  129. package/dist/Errors/catalog/CallError.js +89 -0
  130. package/dist/Errors/catalog/CallError.js.map +1 -0
  131. package/dist/Errors/catalog/CallingDeviceError.js +83 -0
  132. package/dist/Errors/catalog/CallingDeviceError.js.map +1 -0
  133. package/dist/Errors/catalog/ExtendedError.js +42 -0
  134. package/dist/Errors/catalog/ExtendedError.js.map +1 -0
  135. package/dist/Errors/catalog/LineError.js +85 -0
  136. package/dist/Errors/catalog/LineError.js.map +1 -0
  137. package/dist/Errors/index.js +28 -0
  138. package/dist/Errors/index.js.map +1 -0
  139. package/dist/Errors/types.js +61 -0
  140. package/dist/Errors/types.js.map +1 -0
  141. package/dist/Events/impl/index.js +79 -0
  142. package/dist/Events/impl/index.js.map +1 -0
  143. package/dist/Events/types.js +134 -0
  144. package/dist/Events/types.js.map +1 -0
  145. package/dist/Logger/index.js +228 -0
  146. package/dist/Logger/index.js.map +1 -0
  147. package/dist/Logger/index.test.js +87 -0
  148. package/dist/Logger/index.test.js.map +1 -0
  149. package/dist/Logger/types.js +34 -0
  150. package/dist/Logger/types.js.map +1 -0
  151. package/dist/Metrics/index.js +595 -0
  152. package/dist/Metrics/index.js.map +1 -0
  153. package/dist/Metrics/index.test.js +819 -0
  154. package/dist/Metrics/index.test.js.map +1 -0
  155. package/dist/Metrics/types.js +82 -0
  156. package/dist/Metrics/types.js.map +1 -0
  157. package/dist/SDKConnector/index.js +102 -0
  158. package/dist/SDKConnector/index.js.map +1 -0
  159. package/dist/SDKConnector/index.test.js +9 -0
  160. package/dist/SDKConnector/index.test.js.map +1 -0
  161. package/dist/SDKConnector/types.js +7 -0
  162. package/dist/SDKConnector/types.js.map +1 -0
  163. package/dist/SDKConnector/utils.js +39 -0
  164. package/dist/SDKConnector/utils.js.map +1 -0
  165. package/dist/SDKConnector/utils.test.js +9 -0
  166. package/dist/SDKConnector/utils.test.js.map +1 -0
  167. package/dist/Voicemail/BroadworksBackendConnector.js +699 -0
  168. package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -0
  169. package/dist/Voicemail/BroadworksBackendConnector.test.js +820 -0
  170. package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -0
  171. package/dist/Voicemail/UcmBackendConnector.js +628 -0
  172. package/dist/Voicemail/UcmBackendConnector.js.map +1 -0
  173. package/dist/Voicemail/UcmBackendConnector.test.js +738 -0
  174. package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -0
  175. package/dist/Voicemail/Voicemail.js +472 -0
  176. package/dist/Voicemail/Voicemail.js.map +1 -0
  177. package/dist/Voicemail/Voicemail.test.js +391 -0
  178. package/dist/Voicemail/Voicemail.test.js.map +1 -0
  179. package/dist/Voicemail/WxCallBackendConnector.js +657 -0
  180. package/dist/Voicemail/WxCallBackendConnector.js.map +1 -0
  181. package/dist/Voicemail/WxCallBackendConnector.test.js +1225 -0
  182. package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -0
  183. package/dist/Voicemail/constants.js +61 -0
  184. package/dist/Voicemail/constants.js.map +1 -0
  185. package/dist/Voicemail/types.js +7 -0
  186. package/dist/Voicemail/types.js.map +1 -0
  187. package/dist/Voicemail/voicemailFixture.js +524 -0
  188. package/dist/Voicemail/voicemailFixture.js.map +1 -0
  189. package/dist/api.js +213 -0
  190. package/dist/api.js.map +1 -0
  191. package/dist/common/Utils.js +1624 -0
  192. package/dist/common/Utils.js.map +1 -0
  193. package/dist/common/Utils.test.js +2225 -0
  194. package/dist/common/Utils.test.js.map +1 -0
  195. package/dist/common/constants.js +62 -0
  196. package/dist/common/constants.js.map +1 -0
  197. package/dist/common/index.js +19 -0
  198. package/dist/common/index.js.map +1 -0
  199. package/dist/common/testUtil.js +988 -0
  200. package/dist/common/testUtil.js.map +1 -0
  201. package/dist/common/types.js +78 -0
  202. package/dist/common/types.js.map +1 -0
  203. package/dist/index.js +452 -0
  204. package/dist/index.js.map +1 -0
  205. package/dist/mobius-socket/config.js +24 -0
  206. package/dist/mobius-socket/config.js.map +1 -0
  207. package/dist/mobius-socket/errors.js +143 -0
  208. package/dist/mobius-socket/errors.js.map +1 -0
  209. package/dist/mobius-socket/errors.test.js +20 -0
  210. package/dist/mobius-socket/errors.test.js.map +1 -0
  211. package/dist/mobius-socket/index.js +57 -0
  212. package/dist/mobius-socket/index.js.map +1 -0
  213. package/dist/mobius-socket/mobius-socket-events.test.js +492 -0
  214. package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -0
  215. package/dist/mobius-socket/mobius-socket.js +849 -0
  216. package/dist/mobius-socket/mobius-socket.js.map +1 -0
  217. package/dist/mobius-socket/mobius-socket.test.js +1898 -0
  218. package/dist/mobius-socket/mobius-socket.test.js.map +1 -0
  219. package/dist/mobius-socket/socket/constants.js +55 -0
  220. package/dist/mobius-socket/socket/constants.js.map +1 -0
  221. package/dist/mobius-socket/socket/index.js +15 -0
  222. package/dist/mobius-socket/socket/index.js.map +1 -0
  223. package/dist/mobius-socket/socket/socket-base.js +604 -0
  224. package/dist/mobius-socket/socket/socket-base.js.map +1 -0
  225. package/dist/mobius-socket/socket/socket.js +19 -0
  226. package/dist/mobius-socket/socket/socket.js.map +1 -0
  227. package/dist/mobius-socket/socket/socket.shim.js +26 -0
  228. package/dist/mobius-socket/socket/socket.shim.js.map +1 -0
  229. package/dist/mobius-socket/socket/types.js +7 -0
  230. package/dist/mobius-socket/socket/types.js.map +1 -0
  231. package/dist/mobius-socket/socket.test.js +727 -0
  232. package/dist/mobius-socket/socket.test.js.map +1 -0
  233. package/dist/mobius-socket/test/mocha-helpers.js +23 -0
  234. package/dist/mobius-socket/test/mocha-helpers.js.map +1 -0
  235. package/dist/mobius-socket/test/promise-tick.js +28 -0
  236. package/dist/mobius-socket/test/promise-tick.js.map +1 -0
  237. package/dist/mobius-socket/types.js +7 -0
  238. package/dist/mobius-socket/types.js.map +1 -0
  239. package/dist/module/CallHistory/CallHistory.js +28 -17
  240. package/dist/module/CallRecording/CallRecording.js +56 -0
  241. package/dist/module/CallRecording/WxcCallRecordingConnector.js +257 -0
  242. package/dist/module/CallRecording/callRecordingFixtures.js +201 -0
  243. package/dist/module/CallRecording/constants.js +28 -0
  244. package/dist/module/CallRecording/types.js +19 -0
  245. package/dist/module/CallRecording/utils.js +14 -0
  246. package/dist/module/CallingClient/CallingClient.js +166 -8
  247. package/dist/module/CallingClient/calling/call.js +201 -68
  248. package/dist/module/CallingClient/calling/callManager.js +51 -11
  249. package/dist/module/CallingClient/calling/types.js +2 -0
  250. package/dist/module/CallingClient/constants.js +29 -0
  251. package/dist/module/CallingClient/line/index.js +4 -2
  252. package/dist/module/CallingClient/registration/register.js +274 -64
  253. package/dist/module/CallingClient/registration/types.js +5 -1
  254. package/dist/module/CallingClient/registration/webWorker.js +42 -61
  255. package/dist/module/CallingClient/registration/webWorkerStr.js +47 -82
  256. package/dist/module/CallingClient/utils/constants.js +36 -0
  257. package/dist/module/CallingClient/utils/index.js +5 -0
  258. package/dist/module/CallingClient/utils/mobiusSocketMapper.js +72 -0
  259. package/dist/module/CallingClient/utils/request.js +211 -0
  260. package/dist/module/CallingClient/utils/types.js +1 -0
  261. package/dist/module/CallingClient/utils/wsFeatureFlag.js +41 -0
  262. package/dist/module/Contacts/ContactsClient.js +1 -1
  263. package/dist/module/Errors/types.js +2 -0
  264. package/dist/module/Events/types.js +23 -10
  265. package/dist/module/Metrics/index.js +48 -1
  266. package/dist/module/Metrics/types.js +18 -0
  267. package/dist/module/api.js +3 -2
  268. package/dist/module/common/Utils.js +85 -22
  269. package/dist/module/common/testUtil.js +6 -1
  270. package/dist/module/common/types.js +3 -0
  271. package/dist/module/index.js +7 -3
  272. package/dist/module/mobius-socket/config.js +15 -0
  273. package/dist/module/mobius-socket/errors.js +58 -0
  274. package/dist/module/mobius-socket/index.js +24 -0
  275. package/dist/module/mobius-socket/mobius-socket.js +593 -0
  276. package/dist/module/mobius-socket/socket/constants.js +26 -0
  277. package/dist/module/mobius-socket/socket/index.js +4 -0
  278. package/dist/module/mobius-socket/socket/socket-base.js +368 -0
  279. package/dist/module/mobius-socket/socket/socket.js +9 -0
  280. package/dist/module/mobius-socket/socket/socket.shim.js +12 -0
  281. package/dist/module/mobius-socket/socket/types.js +1 -0
  282. package/dist/module/mobius-socket/types.js +1 -0
  283. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  284. package/dist/types/CallRecording/CallRecording.d.ts +18 -0
  285. package/dist/types/CallRecording/CallRecording.d.ts.map +1 -0
  286. package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts +23 -0
  287. package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts.map +1 -0
  288. package/dist/types/CallRecording/callRecordingFixtures.d.ts +61 -0
  289. package/dist/types/CallRecording/callRecordingFixtures.d.ts.map +1 -0
  290. package/dist/types/CallRecording/constants.d.ts +29 -0
  291. package/dist/types/CallRecording/constants.d.ts.map +1 -0
  292. package/dist/types/CallRecording/types.d.ts +176 -0
  293. package/dist/types/CallRecording/types.d.ts.map +1 -0
  294. package/dist/types/CallRecording/utils.d.ts +3 -0
  295. package/dist/types/CallRecording/utils.d.ts.map +1 -0
  296. package/dist/types/CallingClient/CallingClient.d.ts +10 -1
  297. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  298. package/dist/types/CallingClient/calling/call.d.ts +17 -3
  299. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  300. package/dist/types/CallingClient/calling/callManager.d.ts +8 -4
  301. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  302. package/dist/types/CallingClient/calling/types.d.ts +38 -9
  303. package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
  304. package/dist/types/CallingClient/constants.d.ts +29 -0
  305. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  306. package/dist/types/CallingClient/line/index.d.ts +1 -1
  307. package/dist/types/CallingClient/line/index.d.ts.map +1 -1
  308. package/dist/types/CallingClient/registration/register.d.ts +10 -2
  309. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  310. package/dist/types/CallingClient/registration/types.d.ts +29 -3
  311. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  312. package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
  313. package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
  314. package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
  315. package/dist/types/CallingClient/types.d.ts +6 -3
  316. package/dist/types/CallingClient/types.d.ts.map +1 -1
  317. package/dist/types/CallingClient/utils/constants.d.ts +35 -0
  318. package/dist/types/CallingClient/utils/constants.d.ts.map +1 -0
  319. package/dist/types/CallingClient/utils/index.d.ts +6 -0
  320. package/dist/types/CallingClient/utils/index.d.ts.map +1 -0
  321. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +5 -0
  322. package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -0
  323. package/dist/types/CallingClient/utils/request.d.ts +28 -0
  324. package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
  325. package/dist/types/CallingClient/utils/types.d.ts +34 -0
  326. package/dist/types/CallingClient/utils/types.d.ts.map +1 -0
  327. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts +4 -0
  328. package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts.map +1 -0
  329. package/dist/types/Errors/types.d.ts +2 -0
  330. package/dist/types/Errors/types.d.ts.map +1 -1
  331. package/dist/types/Events/types.d.ts +80 -16
  332. package/dist/types/Events/types.d.ts.map +1 -1
  333. package/dist/types/Metrics/index.d.ts.map +1 -1
  334. package/dist/types/Metrics/types.d.ts +19 -2
  335. package/dist/types/Metrics/types.d.ts.map +1 -1
  336. package/dist/types/SDKConnector/types.d.ts +39 -12
  337. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  338. package/dist/types/api.d.ts +6 -4
  339. package/dist/types/api.d.ts.map +1 -1
  340. package/dist/types/common/Utils.d.ts +9 -4
  341. package/dist/types/common/Utils.d.ts.map +1 -1
  342. package/dist/types/common/testUtil.d.ts +5 -1
  343. package/dist/types/common/testUtil.d.ts.map +1 -1
  344. package/dist/types/common/types.d.ts +9 -1
  345. package/dist/types/common/types.d.ts.map +1 -1
  346. package/dist/types/index.d.ts +9 -4
  347. package/dist/types/index.d.ts.map +1 -1
  348. package/dist/types/mobius-socket/config.d.ts +17 -0
  349. package/dist/types/mobius-socket/config.d.ts.map +1 -0
  350. package/dist/types/mobius-socket/errors.d.ts +32 -0
  351. package/dist/types/mobius-socket/errors.d.ts.map +1 -0
  352. package/dist/types/mobius-socket/index.d.ts +14 -0
  353. package/dist/types/mobius-socket/index.d.ts.map +1 -0
  354. package/dist/types/mobius-socket/mobius-socket.d.ts +48 -0
  355. package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -0
  356. package/dist/types/mobius-socket/socket/constants.d.ts +27 -0
  357. package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -0
  358. package/dist/types/mobius-socket/socket/index.d.ts +5 -0
  359. package/dist/types/mobius-socket/socket/index.d.ts.map +1 -0
  360. package/dist/types/mobius-socket/socket/socket-base.d.ts +43 -0
  361. package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -0
  362. package/dist/types/mobius-socket/socket/socket.d.ts +6 -0
  363. package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -0
  364. package/dist/types/mobius-socket/socket/socket.shim.d.ts +6 -0
  365. package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -0
  366. package/dist/types/mobius-socket/socket/types.d.ts +61 -0
  367. package/dist/types/mobius-socket/socket/types.d.ts.map +1 -0
  368. package/dist/types/mobius-socket/types.d.ts +21 -0
  369. package/dist/types/mobius-socket/types.d.ts.map +1 -0
  370. package/package.json +21 -5
  371. package/src/mobius-socket/socket/socket.shim.ts +22 -0
  372. package/src/mobius-socket/socket/socket.ts +14 -0
@@ -1,73 +1,54 @@
1
- import { v4 as uuid } from 'uuid';
2
- import { HTTP_METHODS, WorkerMessageType } from '../../common/types';
1
+ import { WorkerMessageType } from '../../common/types';
3
2
  let keepaliveTimer;
3
+ let keepAliveRetryCount = 0;
4
+ let keepaliveInFlight = false;
5
+ const clearKeepaliveTimer = () => {
6
+ if (keepaliveTimer) {
7
+ clearInterval(keepaliveTimer);
8
+ keepaliveTimer = undefined;
9
+ }
10
+ };
4
11
  const messageHandler = (event) => {
5
12
  const { type } = event.data;
6
- const postKeepAlive = async (accessToken, deviceUrl, url) => {
7
- const response = await fetch(`${url}/status`, {
8
- method: HTTP_METHODS.POST,
9
- headers: {
10
- 'cisco-device-url': deviceUrl,
11
- 'spark-user-agent': 'webex-calling/beta',
12
- Authorization: `${accessToken}`,
13
- trackingId: `web_worker_${uuid()}`,
14
- },
15
- });
16
- if (!response.ok) {
17
- throw response;
18
- }
19
- return response;
20
- };
21
13
  if (type === WorkerMessageType.START_KEEPALIVE) {
22
- let keepAliveRetryCount = 0;
23
- const { accessToken, deviceUrl, interval, retryCountThreshold, url } = event.data;
24
- if (keepaliveTimer) {
25
- clearInterval(keepaliveTimer);
26
- keepaliveTimer = undefined;
27
- }
28
- keepaliveTimer = setInterval(async () => {
29
- if (keepAliveRetryCount < retryCountThreshold) {
30
- try {
31
- const res = await postKeepAlive(accessToken, deviceUrl, url);
32
- const statusCode = res.status;
33
- if (keepAliveRetryCount > 0) {
34
- postMessage({
35
- type: WorkerMessageType.KEEPALIVE_SUCCESS,
36
- statusCode,
37
- });
38
- }
39
- keepAliveRetryCount = 0;
40
- }
41
- catch (err) {
42
- const headers = {};
43
- if (err.headers?.has('Retry-After')) {
44
- headers['retry-after'] = err.headers.get('Retry-After');
45
- }
46
- if (err.headers?.has('Trackingid')) {
47
- headers['trackingid'] = err.headers.get('Trackingid');
48
- }
49
- const error = {
50
- headers,
51
- statusCode: err.status,
52
- statusText: err.statusText,
53
- type: err.type,
54
- };
55
- keepAliveRetryCount += 1;
56
- postMessage({
57
- type: WorkerMessageType.KEEPALIVE_FAILURE,
58
- err: error,
59
- keepAliveRetryCount,
60
- });
61
- }
14
+ const { interval, retryCountThreshold } = event.data;
15
+ clearKeepaliveTimer();
16
+ keepAliveRetryCount = 0;
17
+ keepaliveInFlight = false;
18
+ keepaliveTimer = setInterval(() => {
19
+ if (keepAliveRetryCount < retryCountThreshold && !keepaliveInFlight) {
20
+ keepaliveInFlight = true;
21
+ postMessage({
22
+ type: WorkerMessageType.SEND_KEEPALIVE,
23
+ });
62
24
  }
63
25
  }, interval * 1000);
64
26
  }
65
- if (type === WorkerMessageType.CLEAR_KEEPALIVE) {
66
- if (keepaliveTimer) {
67
- clearInterval(keepaliveTimer);
68
- keepaliveTimer = undefined;
27
+ if (type === WorkerMessageType.KEEPALIVE_RESULT) {
28
+ keepaliveInFlight = false;
29
+ if (event.data.err === undefined) {
30
+ if (keepAliveRetryCount > 0) {
31
+ postMessage({
32
+ type: WorkerMessageType.KEEPALIVE_SUCCESS,
33
+ statusCode: event.data.statusCode,
34
+ });
35
+ }
36
+ keepAliveRetryCount = 0;
37
+ }
38
+ else {
39
+ keepAliveRetryCount += 1;
40
+ postMessage({
41
+ type: WorkerMessageType.KEEPALIVE_FAILURE,
42
+ err: event.data.err,
43
+ keepAliveRetryCount,
44
+ });
69
45
  }
70
46
  }
47
+ if (type === WorkerMessageType.CLEAR_KEEPALIVE) {
48
+ clearKeepaliveTimer();
49
+ keepAliveRetryCount = 0;
50
+ keepaliveInFlight = false;
51
+ }
71
52
  };
72
53
  self.addEventListener('message', messageHandler);
73
54
  export default messageHandler;
@@ -1,106 +1,71 @@
1
1
  const webWorkerStr = `/* eslint-env worker */
2
2
 
3
- const uuid = () => {
4
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
5
- const r = (Math.random() * 16) | 0;
6
- const v = c === 'x' ? r : (r & 0x3) | 0x8;
7
- return v.toString(16);
8
- });
9
- };
10
-
11
- // Enum values from the original imports
12
- const HTTP_METHODS = {
13
- GET: 'GET',
14
- POST: 'POST',
15
- PUT: 'PUT',
16
- DELETE: 'DELETE',
17
- PATCH: 'PATCH',
18
- };
19
-
20
3
  const WorkerMessageType = {
21
4
  START_KEEPALIVE: 'START_KEEPALIVE',
22
5
  CLEAR_KEEPALIVE: 'CLEAR_KEEPALIVE',
6
+ SEND_KEEPALIVE: 'SEND_KEEPALIVE',
7
+ KEEPALIVE_RESULT: 'KEEPALIVE_RESULT',
23
8
  KEEPALIVE_SUCCESS: 'KEEPALIVE_SUCCESS',
24
9
  KEEPALIVE_FAILURE: 'KEEPALIVE_FAILURE',
25
10
  };
26
11
 
27
12
  let keepaliveTimer;
13
+ let keepAliveRetryCount = 0;
14
+ let keepaliveInFlight = false;
15
+
16
+ const clearKeepaliveTimer = () => {
17
+ if (keepaliveTimer) {
18
+ clearInterval(keepaliveTimer);
19
+ keepaliveTimer = undefined;
20
+ }
21
+ };
28
22
 
29
23
  const messageHandler = (event) => {
30
24
  const {type} = event.data;
31
25
 
32
- const postKeepAlive = async (accessToken, deviceUrl, url) => {
33
- const response = await fetch(\`\${url}/status\`, {
34
- method: HTTP_METHODS.POST,
35
- headers: {
36
- 'cisco-device-url': deviceUrl,
37
- 'spark-user-agent': 'webex-calling/beta',
38
- Authorization: \`\${accessToken}\`,
39
- trackingId: \`web_worker_\${uuid()}\`,
40
- },
41
- });
42
-
43
- if (!response.ok) {
44
- throw response;
45
- }
46
-
47
- return response;
48
- };
49
-
50
26
  if (type === WorkerMessageType.START_KEEPALIVE) {
51
- let keepAliveRetryCount = 0;
52
- const {accessToken, deviceUrl, interval, retryCountThreshold, url} = event.data;
53
-
54
- if (keepaliveTimer) {
55
- clearInterval(keepaliveTimer);
56
- keepaliveTimer = undefined;
57
- }
58
-
59
- keepaliveTimer = setInterval(async () => {
60
- if (keepAliveRetryCount < retryCountThreshold) {
61
- try {
62
- const res = await postKeepAlive(accessToken, deviceUrl, url);
63
- const statusCode = res.status;
64
- if (keepAliveRetryCount > 0) {
65
- self.postMessage({
66
- type: WorkerMessageType.KEEPALIVE_SUCCESS,
67
- statusCode,
68
- });
69
- }
70
- keepAliveRetryCount = 0;
71
- } catch (err) {
72
- let headers = {};
73
- if(err.headers?.has('Retry-After')) {
74
- headers['retry-after'] = err.headers.get('Retry-After');
75
- }
76
-
77
- if(err.headers?.has('Trackingid')) {
78
- headers['trackingid'] = err.headers.get('Trackingid');
79
- }
27
+ const {interval, retryCountThreshold} = event.data;
28
+
29
+ clearKeepaliveTimer();
30
+ keepAliveRetryCount = 0;
31
+ keepaliveInFlight = false;
32
+
33
+ keepaliveTimer = setInterval(() => {
34
+ if (keepAliveRetryCount < retryCountThreshold && !keepaliveInFlight) {
35
+ keepaliveInFlight = true;
36
+ self.postMessage({
37
+ type: WorkerMessageType.SEND_KEEPALIVE,
38
+ });
39
+ }
40
+ }, interval * 1000);
41
+ }
80
42
 
81
- const error = {
82
- headers,
83
- statusCode: err.status,
84
- statusText: err.statusText,
85
- type: err.type,
86
- };
43
+ if (type === WorkerMessageType.KEEPALIVE_RESULT) {
44
+ keepaliveInFlight = false;
87
45
 
88
- keepAliveRetryCount += 1
89
- self.postMessage({
90
- type: WorkerMessageType.KEEPALIVE_FAILURE,
91
- err: error,
92
- keepAliveRetryCount,
93
- });
94
- }
46
+ if (event.data.err === undefined) {
47
+ if (keepAliveRetryCount > 0) {
48
+ self.postMessage({
49
+ type: WorkerMessageType.KEEPALIVE_SUCCESS,
50
+ statusCode: event.data.statusCode,
51
+ });
95
52
  }
96
- }, interval * 1000);
53
+
54
+ keepAliveRetryCount = 0;
55
+ } else {
56
+ keepAliveRetryCount += 1;
57
+ self.postMessage({
58
+ type: WorkerMessageType.KEEPALIVE_FAILURE,
59
+ err: event.data.err,
60
+ keepAliveRetryCount,
61
+ });
62
+ }
97
63
  }
98
64
 
99
65
  if (type === WorkerMessageType.CLEAR_KEEPALIVE) {
100
- if (keepaliveTimer) {
101
- clearInterval(keepaliveTimer);
102
- keepaliveTimer = undefined;
103
- }
66
+ clearKeepaliveTimer();
67
+ keepAliveRetryCount = 0;
68
+ keepaliveInFlight = false;
104
69
  }
105
70
  };
106
71
 
@@ -0,0 +1,36 @@
1
+ export var MOBIUS_SOCKET_MESSAGE_TYPE;
2
+ (function (MOBIUS_SOCKET_MESSAGE_TYPE) {
3
+ MOBIUS_SOCKET_MESSAGE_TYPE["UNKNOWN"] = "UNKNOWN";
4
+ MOBIUS_SOCKET_MESSAGE_TYPE["REGISTER"] = "register";
5
+ MOBIUS_SOCKET_MESSAGE_TYPE["REGISTER_RESPONSE"] = "register.response";
6
+ MOBIUS_SOCKET_MESSAGE_TYPE["UNREGISTER"] = "unregister";
7
+ MOBIUS_SOCKET_MESSAGE_TYPE["UNREGISTER_RESPONSE"] = "unregister.response";
8
+ MOBIUS_SOCKET_MESSAGE_TYPE["DEVICE_STATUS"] = "device_status";
9
+ MOBIUS_SOCKET_MESSAGE_TYPE["DEVICE_STATUS_RESPONSE"] = "device_status.response";
10
+ MOBIUS_SOCKET_MESSAGE_TYPE["DEVICE_GET"] = "device_get";
11
+ MOBIUS_SOCKET_MESSAGE_TYPE["DEVICE_GET_RESPONSE"] = "device_get.response";
12
+ MOBIUS_SOCKET_MESSAGE_TYPE["DEVICE_LIST"] = "device_list";
13
+ MOBIUS_SOCKET_MESSAGE_TYPE["DEVICE_LIST_RESPONSE"] = "device_list.response";
14
+ MOBIUS_SOCKET_MESSAGE_TYPE["CALL_SETUP"] = "call_setup";
15
+ MOBIUS_SOCKET_MESSAGE_TYPE["CALL_SETUP_RESPONSE"] = "call_setup.response";
16
+ MOBIUS_SOCKET_MESSAGE_TYPE["CALL_STATE"] = "call_state";
17
+ MOBIUS_SOCKET_MESSAGE_TYPE["CALL_STATE_RESPONSE"] = "call_state.response";
18
+ MOBIUS_SOCKET_MESSAGE_TYPE["CALL_STATUS"] = "call_status";
19
+ MOBIUS_SOCKET_MESSAGE_TYPE["CALL_STATUS_RESPONSE"] = "call_status.response";
20
+ MOBIUS_SOCKET_MESSAGE_TYPE["CALL_MEDIA"] = "call_media";
21
+ MOBIUS_SOCKET_MESSAGE_TYPE["CALL_MEDIA_RESPONSE"] = "call_media.response";
22
+ MOBIUS_SOCKET_MESSAGE_TYPE["CALL_HOLD"] = "call_hold";
23
+ MOBIUS_SOCKET_MESSAGE_TYPE["CALL_HOLD_RESPONSE"] = "call_hold.response";
24
+ MOBIUS_SOCKET_MESSAGE_TYPE["CALL_RESUME"] = "call_resume";
25
+ MOBIUS_SOCKET_MESSAGE_TYPE["CALL_RESUME_RESPONSE"] = "call_resume.response";
26
+ MOBIUS_SOCKET_MESSAGE_TYPE["CALL_TRANSFER"] = "call_transfer";
27
+ MOBIUS_SOCKET_MESSAGE_TYPE["CALL_TRANSFER_RESPONSE"] = "call_transfer.response";
28
+ MOBIUS_SOCKET_MESSAGE_TYPE["CALL_DELETE"] = "call_delete";
29
+ MOBIUS_SOCKET_MESSAGE_TYPE["CALL_DELETE_RESPONSE"] = "call_delete.response";
30
+ })(MOBIUS_SOCKET_MESSAGE_TYPE || (MOBIUS_SOCKET_MESSAGE_TYPE = {}));
31
+ export var MOBIUS_SOCKET_DISCONNECT_REASON;
32
+ (function (MOBIUS_SOCKET_DISCONNECT_REASON) {
33
+ MOBIUS_SOCKET_DISCONNECT_REASON["PERMANENT"] = "permanent";
34
+ MOBIUS_SOCKET_DISCONNECT_REASON["TRANSIENT"] = "transient";
35
+ MOBIUS_SOCKET_DISCONNECT_REASON["REPLACED"] = "replaced";
36
+ })(MOBIUS_SOCKET_DISCONNECT_REASON || (MOBIUS_SOCKET_DISCONNECT_REASON = {}));
@@ -0,0 +1,5 @@
1
+ export * from './request';
2
+ export * from './types';
3
+ export * from './mobiusSocketMapper';
4
+ export * from './constants';
5
+ export * from './wsFeatureFlag';
@@ -0,0 +1,72 @@
1
+ import { HTTP_METHODS } from '../../common/types';
2
+ import log from '../../Logger';
3
+ import { METHODS, MOBIUS_SOCKET_MAPPER_FILE } from '../constants';
4
+ import { MOBIUS_SOCKET_MESSAGE_TYPE } from './constants';
5
+ export function deriveMobiusSocketMessageType(uri, httpMethodType) {
6
+ const logContext = {
7
+ file: MOBIUS_SOCKET_MAPPER_FILE,
8
+ method: METHODS.DERIVE_MOBIUS_SOCKET_MESSAGE_TYPE,
9
+ };
10
+ if (!uri) {
11
+ log.warn('Cannot derive Mobius socket message type: uri is empty', logContext);
12
+ return MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;
13
+ }
14
+ if (uri.includes('/services')) {
15
+ if (uri.includes('/callhold/hold')) {
16
+ return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_HOLD;
17
+ }
18
+ if (uri.includes('/callhold/resume')) {
19
+ return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_RESUME;
20
+ }
21
+ if (uri.includes('/calltransfer/commit')) {
22
+ return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_TRANSFER;
23
+ }
24
+ log.warn(`Unrecognized supplementary service uri - uri: ${uri}, httpMethod: ${httpMethodType}`, logContext);
25
+ return MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;
26
+ }
27
+ if (uri.includes('/calls/') && uri.includes('/media')) {
28
+ return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_MEDIA;
29
+ }
30
+ if (uri.includes('/calls/') && uri.includes('/status')) {
31
+ return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATUS;
32
+ }
33
+ if (uri.match(/\/calls\/[^/]+$/)) {
34
+ if (httpMethodType === HTTP_METHODS.PATCH) {
35
+ return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_STATE;
36
+ }
37
+ if (httpMethodType === HTTP_METHODS.DELETE) {
38
+ return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_DELETE;
39
+ }
40
+ log.warn(`Unrecognized httpMethod for calls/{callId} - uri: ${uri}, httpMethod: ${httpMethodType}`, logContext);
41
+ return MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;
42
+ }
43
+ if (uri.endsWith('/call')) {
44
+ return MOBIUS_SOCKET_MESSAGE_TYPE.CALL_SETUP;
45
+ }
46
+ if (!uri.includes('/calls/') && uri.endsWith('/status')) {
47
+ return MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_STATUS;
48
+ }
49
+ if (uri.endsWith('/device')) {
50
+ return MOBIUS_SOCKET_MESSAGE_TYPE.REGISTER;
51
+ }
52
+ if (uri.match(/\/devices\/[^/?]+$/) && !uri.includes('/calls')) {
53
+ if (httpMethodType === HTTP_METHODS.DELETE) {
54
+ return MOBIUS_SOCKET_MESSAGE_TYPE.UNREGISTER;
55
+ }
56
+ if (httpMethodType === HTTP_METHODS.GET) {
57
+ return MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_GET;
58
+ }
59
+ log.warn(`Unrecognized httpMethod for devices/{deviceId} - uri: ${uri}, httpMethod: ${httpMethodType}`, logContext);
60
+ return MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;
61
+ }
62
+ if (uri.includes('/devices') && !uri.match(/\/devices\/[^/?]+/)) {
63
+ return MOBIUS_SOCKET_MESSAGE_TYPE.DEVICE_LIST;
64
+ }
65
+ log.warn(`Unrecognized uri pattern for Mobius socket - uri: ${uri}, httpMethod: ${httpMethodType}`, logContext);
66
+ return MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN;
67
+ }
68
+ export const isSupplementaryServiceMessageType = (type) => [
69
+ MOBIUS_SOCKET_MESSAGE_TYPE.CALL_HOLD,
70
+ MOBIUS_SOCKET_MESSAGE_TYPE.CALL_RESUME,
71
+ MOBIUS_SOCKET_MESSAGE_TYPE.CALL_TRANSFER,
72
+ ].includes(type);
@@ -0,0 +1,211 @@
1
+ import { v4 as uuid } from 'uuid';
2
+ import { getMobiusSocketInstance } from '../../mobius-socket';
3
+ import log from '../../Logger';
4
+ import { deriveMobiusSocketMessageType, isSupplementaryServiceMessageType, } from './mobiusSocketMapper';
5
+ import { MOBIUS_SOCKET_DISCONNECT_REASON, MOBIUS_SOCKET_MESSAGE_TYPE } from './constants';
6
+ import { isMobiusWssEnabled } from './wsFeatureFlag';
7
+ import { CALLING_USER_AGENT, METHODS, REQUEST_FILE } from '../constants';
8
+ import { getMetricManager } from '../../Metrics';
9
+ import { METRIC_EVENT, METRIC_TYPE, MOBIUS_SOCKET_ACTION } from '../../Metrics/types';
10
+ function normalizeWsResponse(wsResponse) {
11
+ return {
12
+ statusCode: wsResponse.statusCode,
13
+ body: wsResponse.data ?? undefined,
14
+ headers: {
15
+ trackingid: wsResponse.trackingId,
16
+ ...(wsResponse.metadata ?? {}),
17
+ },
18
+ };
19
+ }
20
+ function normalizeWsError(err) {
21
+ const wsErr = err;
22
+ return {
23
+ statusCode: wsErr.statusCode,
24
+ body: wsErr.response?.data ?? undefined,
25
+ headers: {
26
+ trackingid: wsErr.trackingId ?? wsErr.response?.trackingId ?? '',
27
+ ...(wsErr.response?.metadata ?? {}),
28
+ },
29
+ };
30
+ }
31
+ export class APIRequest {
32
+ static instance;
33
+ isMobiusSocketEnabled;
34
+ webex;
35
+ mobiusSocket;
36
+ metricManager;
37
+ static getInstance(config) {
38
+ if (!APIRequest.instance) {
39
+ APIRequest.instance = new APIRequest(config);
40
+ }
41
+ return APIRequest.instance;
42
+ }
43
+ static resetInstance() {
44
+ APIRequest.instance = undefined;
45
+ }
46
+ constructor(config) {
47
+ const logContext = {
48
+ file: REQUEST_FILE,
49
+ method: METHODS.CONSTRUCTOR,
50
+ };
51
+ if (!config.webex) {
52
+ log.error('APIRequest instantiation failed: WebexSDK instance is required', logContext);
53
+ throw new Error('WebexSDK instance is required');
54
+ }
55
+ this.webex = config.webex;
56
+ this.isMobiusSocketEnabled = isMobiusWssEnabled(config.webex) || false;
57
+ this.mobiusSocket = getMobiusSocketInstance(this.webex);
58
+ this.metricManager = getMetricManager(this.webex);
59
+ log.info(`APIRequest initialized with transport: ${this.isMobiusSocketEnabled ? 'WSS' : 'HTTP'}`, logContext);
60
+ }
61
+ isSocketEnabled() {
62
+ return this.isMobiusSocketEnabled;
63
+ }
64
+ setSocketEnabled(enabled) {
65
+ this.isMobiusSocketEnabled = enabled;
66
+ log.info(`APIRequest transport set to: ${enabled ? 'WSS' : 'HTTP'}`, {
67
+ file: REQUEST_FILE,
68
+ method: METHODS.SET_SOCKET_ENABLED,
69
+ });
70
+ }
71
+ async connectToMobiusSocket(wssUrl) {
72
+ const logContext = {
73
+ file: REQUEST_FILE,
74
+ method: METHODS.CONNECT_TO_MOBIUS_SOCKET,
75
+ };
76
+ if (this.mobiusSocket.isConnected()) {
77
+ log.info('Mobius WebSocket already connected', logContext);
78
+ return this.mobiusSocket.getConnectedWebSocketUrl();
79
+ }
80
+ log.info('Mobius WebSocket not connected, initiating connection', logContext);
81
+ try {
82
+ await this.mobiusSocket.connect(wssUrl);
83
+ log.log('Mobius WebSocket connected successfully', logContext);
84
+ this.metricManager?.submitMobiusSocketMetric(METRIC_EVENT.MOBIUS_SOCKET, MOBIUS_SOCKET_ACTION.CONNECT, METRIC_TYPE.BEHAVIORAL, wssUrl);
85
+ return wssUrl;
86
+ }
87
+ catch (err) {
88
+ log.warn(`Mobius WebSocket connection failed: ${String(err)}`, logContext);
89
+ this.metricManager?.submitMobiusSocketMetric(METRIC_EVENT.MOBIUS_SOCKET_ERROR, MOBIUS_SOCKET_ACTION.CONNECT, METRIC_TYPE.BEHAVIORAL, wssUrl, undefined, String(err));
90
+ throw normalizeWsError(err);
91
+ }
92
+ }
93
+ getConnectedWebSocketUrl() {
94
+ return this.mobiusSocket.getConnectedWebSocketUrl();
95
+ }
96
+ async disconnectFromMobiusSocket(options) {
97
+ const logContext = {
98
+ file: REQUEST_FILE,
99
+ method: METHODS.DISCONNECT_FROM_MOBIUS_SOCKET,
100
+ };
101
+ log.info('Disconnecting from Mobius WebSocket', logContext);
102
+ const wssUrl = this.mobiusSocket.getConnectedWebSocketUrl();
103
+ try {
104
+ await this.mobiusSocket.disconnect(options);
105
+ log.log('Mobius WebSocket disconnected successfully', logContext);
106
+ this.metricManager?.submitMobiusSocketMetric(METRIC_EVENT.MOBIUS_SOCKET, MOBIUS_SOCKET_ACTION.DISCONNECT, METRIC_TYPE.BEHAVIORAL, wssUrl);
107
+ }
108
+ catch (err) {
109
+ log.warn(`Mobius WebSocket disconnection failed: ${String(err)}`, logContext);
110
+ this.metricManager?.submitMobiusSocketMetric(METRIC_EVENT.MOBIUS_SOCKET_ERROR, MOBIUS_SOCKET_ACTION.DISCONNECT, METRIC_TYPE.BEHAVIORAL, wssUrl, undefined, String(err));
111
+ }
112
+ }
113
+ async makeRequest(request) {
114
+ const logContext = {
115
+ file: REQUEST_FILE,
116
+ method: METHODS.MAKE_REQUEST,
117
+ };
118
+ log.info(`Dispatching request via ${this.isMobiusSocketEnabled ? 'WSS' : 'HTTP'} `, logContext);
119
+ if (this.isMobiusSocketEnabled) {
120
+ const trackingId = `webex-js-sdk_${uuid()}`;
121
+ const socketType = deriveMobiusSocketMessageType(request.uri, request.method);
122
+ if (socketType === MOBIUS_SOCKET_MESSAGE_TYPE.UNKNOWN) {
123
+ log.error(`Unknown Mobius Socket message type for uri: ${request.uri}, httpMethod: ${request.method}`, logContext);
124
+ throw new Error(`Unknown Mobius Socket message type: ${socketType}`);
125
+ }
126
+ const isSupplementaryService = isSupplementaryServiceMessageType(socketType);
127
+ try {
128
+ const wsResponse = await this.mobiusSocket.sendWssRequest({
129
+ type: socketType,
130
+ trackingId,
131
+ metadata: {
132
+ ...request.headers,
133
+ userAgent: CALLING_USER_AGENT,
134
+ authorization: `${(isSupplementaryService && (await this.webex.credentials.getUserToken())) || ''}`,
135
+ },
136
+ data: request.body,
137
+ });
138
+ log.log(`WSS request succeeded - socketType: ${socketType}, trackingId: ${trackingId}, statusCode: ${wsResponse.statusCode}`, logContext);
139
+ return normalizeWsResponse(wsResponse);
140
+ }
141
+ catch (err) {
142
+ log.error(`WSS request failed - socketType: ${socketType}, trackingId: ${trackingId}, error: ${String(err)}`, logContext);
143
+ throw normalizeWsError(err);
144
+ }
145
+ }
146
+ return this.webex.request(request);
147
+ }
148
+ registerMobiusSocketListener(cb) {
149
+ const logContext = {
150
+ file: REQUEST_FILE,
151
+ method: METHODS.REGISTER_MOBIUS_SOCKET_LISTENER,
152
+ };
153
+ log.info('Attaching Mobius async event listener', logContext);
154
+ this.mobiusSocket.on('event:async_event', (data) => {
155
+ log.trace(`Mobius async event received - eventType: ${data?.data?.eventType ?? 'unknown'}`, logContext);
156
+ cb(data);
157
+ });
158
+ log.log('Mobius async event listener attached', logContext);
159
+ this.metricManager?.submitMobiusSocketMetric(METRIC_EVENT.MOBIUS_SOCKET, MOBIUS_SOCKET_ACTION.LISTENER_REGISTERED, METRIC_TYPE.BEHAVIORAL);
160
+ }
161
+ unregisterMobiusSocketListener() {
162
+ const logContext = {
163
+ file: REQUEST_FILE,
164
+ method: METHODS.UNREGISTER_MOBIUS_SOCKET_LISTENER,
165
+ };
166
+ log.info('Detaching Mobius async event listener', logContext);
167
+ this.mobiusSocket.off('event:async_event');
168
+ log.log('Mobius async event listener detached', logContext);
169
+ this.metricManager?.submitMobiusSocketMetric(METRIC_EVENT.MOBIUS_SOCKET, MOBIUS_SOCKET_ACTION.LISTENER_UNREGISTERED, METRIC_TYPE.BEHAVIORAL);
170
+ }
171
+ registerMobiusSocketConnectionListener(listener) {
172
+ const logContext = {
173
+ file: REQUEST_FILE,
174
+ method: METHODS.REGISTER_MOBIUS_SOCKET_CONNECTION_LISTENER,
175
+ };
176
+ log.info('Attaching Mobius socket connection listener', logContext);
177
+ this.mobiusSocket.on('online', () => {
178
+ log.log('Mobius socket connected', logContext);
179
+ listener.onConnected();
180
+ });
181
+ this.mobiusSocket.on('offline.permanent', () => {
182
+ log.log('Mobius socket disconnected (permanent)', logContext);
183
+ listener.onDisconnected(MOBIUS_SOCKET_DISCONNECT_REASON.PERMANENT);
184
+ });
185
+ this.mobiusSocket.on('offline.transient', () => {
186
+ log.log('Mobius socket disconnected (transient)', logContext);
187
+ listener.onDisconnected(MOBIUS_SOCKET_DISCONNECT_REASON.TRANSIENT);
188
+ });
189
+ this.mobiusSocket.on('offline.replaced', () => {
190
+ log.log('Mobius socket disconnected (replaced)', logContext);
191
+ listener.onDisconnected(MOBIUS_SOCKET_DISCONNECT_REASON.REPLACED);
192
+ });
193
+ log.log('Mobius socket connection listener attached', logContext);
194
+ }
195
+ isSocketConnected() {
196
+ return this.mobiusSocket.isConnected();
197
+ }
198
+ unregisterMobiusSocketConnectionListener() {
199
+ const logContext = {
200
+ file: REQUEST_FILE,
201
+ method: METHODS.UNREGISTER_MOBIUS_SOCKET_CONNECTION_LISTENER,
202
+ };
203
+ log.info('Detaching Mobius socket connection listener', logContext);
204
+ this.mobiusSocket.off('online');
205
+ this.mobiusSocket.off('offline.permanent');
206
+ this.mobiusSocket.off('offline.transient');
207
+ this.mobiusSocket.off('offline.replaced');
208
+ log.log('Mobius socket connection listener detached', logContext);
209
+ }
210
+ }
211
+ export const createAPIRequest = (config) => APIRequest.getInstance(config);
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,41 @@
1
+ import log from '../../Logger';
2
+ import { METHODS, WS_FEATURE_FLAG_FILE } from '../constants';
3
+ export const WEBRTC_CALLING_OVER_WS_FEATURE_KEY = 'webrtc-calling-over-ws-CALL-219562';
4
+ const ALLOWED_ORIGINS = ['localhost', '127.0.0.1', 'web-sdk.webex.com'];
5
+ function samplesPageToggleValue() {
6
+ if (typeof window === 'undefined' || !window.localStorage) {
7
+ return null;
8
+ }
9
+ const hostname = window.location.hostname;
10
+ const isAllowedOrigin = ALLOWED_ORIGINS.some((origin) => hostname === origin || hostname.endsWith(`.${origin}`));
11
+ if (!isAllowedOrigin) {
12
+ return null;
13
+ }
14
+ const localStorageValue = localStorage.getItem('mobius-wss-enabled');
15
+ if (localStorageValue === 'true') {
16
+ log.trace(`Mobius WSS force-enabled via samples page localStorage override on ${hostname}`, {
17
+ file: WS_FEATURE_FLAG_FILE,
18
+ method: METHODS.IS_MOBIUS_WSS_ENABLED,
19
+ });
20
+ return true;
21
+ }
22
+ if (localStorageValue === 'false') {
23
+ log.trace(`Mobius WSS force-disabled via samples page localStorage override on ${hostname}`, {
24
+ file: WS_FEATURE_FLAG_FILE,
25
+ method: METHODS.IS_MOBIUS_WSS_ENABLED,
26
+ });
27
+ return false;
28
+ }
29
+ return null;
30
+ }
31
+ export function isMobiusWssEnabled(webex) {
32
+ const enabled = webex.internal?.device?.features?.developer?.get(WEBRTC_CALLING_OVER_WS_FEATURE_KEY)?.value ===
33
+ true;
34
+ const localStorageOverride = samplesPageToggleValue();
35
+ const finalValue = localStorageOverride !== null ? localStorageOverride : enabled;
36
+ log.trace(`Mobius WSS feature flag '${WEBRTC_CALLING_OVER_WS_FEATURE_KEY}' resolved to: ${finalValue} (backend: ${enabled}, localStorage: ${localStorageOverride})`, {
37
+ file: WS_FEATURE_FLAG_FILE,
38
+ method: METHODS.IS_MOBIUS_WSS_ENABLED,
39
+ });
40
+ return finalValue;
41
+ }
@@ -283,7 +283,7 @@ export class ContactsClient {
283
283
  return this.encryptionKeyUrl;
284
284
  }
285
285
  if (this.groups === undefined) {
286
- this.getContacts();
286
+ await this.getContacts();
287
287
  }
288
288
  if (this.groups && this.groups.length) {
289
289
  return this.groups[0].encryptionKeyUrl;
@@ -12,6 +12,7 @@ export var ERROR_TYPE;
12
12
  ERROR_TYPE["NOT_FOUND"] = "not_found";
13
13
  ERROR_TYPE["REGISTRATION_ERROR"] = "registration_error";
14
14
  ERROR_TYPE["SERVICE_UNAVAILABLE"] = "service_unavailable";
15
+ ERROR_TYPE["SESSION_SUPERSEDED"] = "session_superseded";
15
16
  ERROR_TYPE["TIMEOUT"] = "timeout";
16
17
  ERROR_TYPE["TOKEN_ERROR"] = "token_error";
17
18
  ERROR_TYPE["TOO_MANY_REQUESTS"] = "too_many_requests";
@@ -22,6 +23,7 @@ export var ERROR_CODE;
22
23
  ERROR_CODE[ERROR_CODE["UNAUTHORIZED"] = 401] = "UNAUTHORIZED";
23
24
  ERROR_CODE[ERROR_CODE["FORBIDDEN"] = 403] = "FORBIDDEN";
24
25
  ERROR_CODE[ERROR_CODE["DEVICE_NOT_FOUND"] = 404] = "DEVICE_NOT_FOUND";
26
+ ERROR_CODE[ERROR_CODE["CONFLICT"] = 409] = "CONFLICT";
25
27
  ERROR_CODE[ERROR_CODE["INTERNAL_SERVER_ERROR"] = 500] = "INTERNAL_SERVER_ERROR";
26
28
  ERROR_CODE[ERROR_CODE["NOT_IMPLEMENTED"] = 501] = "NOT_IMPLEMENTED";
27
29
  ERROR_CODE[ERROR_CODE["SERVICE_UNAVAILABLE"] = 503] = "SERVICE_UNAVAILABLE";