@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,10 +1,15 @@
1
1
  import { LINE_EVENTS } from '../CallingClient/line/types';
2
+ import { MOBIUS_SOCKET_DISCONNECT_REASON } from '../CallingClient/utils/constants';
3
+ export { MOBIUS_SOCKET_DISCONNECT_REASON };
2
4
  export var COMMON_EVENT_KEYS;
3
5
  (function (COMMON_EVENT_KEYS) {
4
6
  COMMON_EVENT_KEYS["CB_VOICEMESSAGE_CONTENT_GET"] = "call_back_voicemail_content_get";
5
7
  COMMON_EVENT_KEYS["CALL_HISTORY_USER_SESSION_INFO"] = "callHistory:user_recent_sessions";
6
8
  COMMON_EVENT_KEYS["CALL_HISTORY_USER_VIEWED_SESSIONS"] = "callHistory:user_viewed_sessions";
7
9
  COMMON_EVENT_KEYS["CALL_HISTORY_USER_SESSIONS_DELETED"] = "callHistory:user_sessions_deleted";
10
+ COMMON_EVENT_KEYS["CALL_RECORDING_CREATED"] = "callRecording:created";
11
+ COMMON_EVENT_KEYS["CALL_RECORDING_UPDATED"] = "callRecording:updated";
12
+ COMMON_EVENT_KEYS["CALL_RECORDING_DELETED"] = "callRecording:deleted";
8
13
  })(COMMON_EVENT_KEYS || (COMMON_EVENT_KEYS = {}));
9
14
  export var LINE_EVENT_KEYS;
10
15
  (function (LINE_EVENT_KEYS) {
@@ -16,6 +21,8 @@ export var CALLING_CLIENT_EVENT_KEYS;
16
21
  CALLING_CLIENT_EVENT_KEYS["OUTGOING_CALL"] = "callingClient:outgoing_call";
17
22
  CALLING_CLIENT_EVENT_KEYS["USER_SESSION_INFO"] = "callingClient:user_recent_sessions";
18
23
  CALLING_CLIENT_EVENT_KEYS["ALL_CALLS_CLEARED"] = "callingClient:all_calls_cleared";
24
+ CALLING_CLIENT_EVENT_KEYS["MOBIUS_SOCKET_CONNECTED"] = "callingClient:mobius_socket_connected";
25
+ CALLING_CLIENT_EVENT_KEYS["MOBIUS_SOCKET_DISCONNECTED"] = "callingClient:mobius_socket_disconnected";
19
26
  })(CALLING_CLIENT_EVENT_KEYS || (CALLING_CLIENT_EVENT_KEYS = {}));
20
27
  export var CALL_EVENT_KEYS;
21
28
  (function (CALL_EVENT_KEYS) {
@@ -65,25 +72,31 @@ export var MOBIUS_EVENT_KEYS;
65
72
  MOBIUS_EVENT_KEYS["CALL_SESSION_EVENT_LEGACY"] = "event:janus.user_sessions";
66
73
  MOBIUS_EVENT_KEYS["CALL_SESSION_EVENT_VIEWED"] = "event:janus.user_viewed_sessions";
67
74
  MOBIUS_EVENT_KEYS["CALL_SESSION_EVENT_DELETED"] = "event:janus.user_sessions_deleted";
75
+ MOBIUS_EVENT_KEYS["RECORDING_EVENT_CREATED"] = "event:convergedRecordings.created";
76
+ MOBIUS_EVENT_KEYS["RECORDING_EVENT_UPDATED"] = "event:convergedRecordings.updated";
77
+ MOBIUS_EVENT_KEYS["RECORDING_EVENT_DELETED"] = "event:convergedRecordings.deleted";
68
78
  })(MOBIUS_EVENT_KEYS || (MOBIUS_EVENT_KEYS = {}));
69
79
  export var MEDIA_CONNECTION_EVENT_KEYS;
70
80
  (function (MEDIA_CONNECTION_EVENT_KEYS) {
71
81
  MEDIA_CONNECTION_EVENT_KEYS["ROAP_MESSAGE_TO_SEND"] = "roap:messageToSend";
72
82
  MEDIA_CONNECTION_EVENT_KEYS["MEDIA_TYPE_AUDIO"] = "audio";
73
83
  })(MEDIA_CONNECTION_EVENT_KEYS || (MEDIA_CONNECTION_EVENT_KEYS = {}));
84
+ export var RECORDING_EVENT_TYPE;
85
+ (function (RECORDING_EVENT_TYPE) {
86
+ RECORDING_EVENT_TYPE["CREATED"] = "convergedRecordings.created";
87
+ RECORDING_EVENT_TYPE["UPDATED"] = "convergedRecordings.updated";
88
+ RECORDING_EVENT_TYPE["DELETED"] = "convergedRecordings.deleted";
89
+ })(RECORDING_EVENT_TYPE || (RECORDING_EVENT_TYPE = {}));
90
+ export var RECORDING_EVENT_SUBTYPE;
91
+ (function (RECORDING_EVENT_SUBTYPE) {
92
+ RECORDING_EVENT_SUBTYPE["TRASH"] = "TRASH";
93
+ RECORDING_EVENT_SUBTYPE["PURGE"] = "PURGE";
94
+ RECORDING_EVENT_SUBTYPE["RESTORE"] = "RESTORE";
95
+ RECORDING_EVENT_SUBTYPE["SUMMARY_CREATE"] = "SUMMARY_CREATE";
96
+ })(RECORDING_EVENT_SUBTYPE || (RECORDING_EVENT_SUBTYPE = {}));
74
97
  var CALL_STATE;
75
98
  (function (CALL_STATE) {
76
99
  CALL_STATE["HELD"] = "held";
77
100
  CALL_STATE["REMOTE_HELD"] = "remoteheld";
78
101
  CALL_STATE["CONNECTED"] = "connected";
79
102
  })(CALL_STATE || (CALL_STATE = {}));
80
- export const WEBSOCKET_SCOPE = 'mobius';
81
- export var WEBSOCKET_KEYS;
82
- (function (WEBSOCKET_KEYS) {
83
- WEBSOCKET_KEYS["CALL_PROGRESS"] = "callprogress";
84
- WEBSOCKET_KEYS["CALL_CONNECTED"] = "callconnected";
85
- WEBSOCKET_KEYS["CALL_DISCONNECTED"] = "callconnected";
86
- WEBSOCKET_KEYS["CALL_INFO"] = "callinfo";
87
- WEBSOCKET_KEYS["CALL"] = "call";
88
- WEBSOCKET_KEYS["ROAP"] = "ROAP";
89
- })(WEBSOCKET_KEYS || (WEBSOCKET_KEYS = {}));
@@ -260,7 +260,7 @@ class MetricManager {
260
260
  this.webex.internal.metrics.submitClientMetrics(name, data);
261
261
  }
262
262
  }
263
- submitMediaMetric(name, metricAction, type, callId, correlationId, localSdp, remoteSdp, callError) {
263
+ submitMediaMetric(name, metricAction, type, callId, correlationId, localSdp, remoteSdp, state, callError) {
264
264
  let data;
265
265
  switch (name) {
266
266
  case METRIC_EVENT.MEDIA: {
@@ -278,6 +278,7 @@ class MetricManager {
278
278
  correlation_id: correlationId,
279
279
  local_media_details: localSdp,
280
280
  remote_media_details: remoteSdp,
281
+ state,
281
282
  },
282
283
  type,
283
284
  };
@@ -396,6 +397,52 @@ class MetricManager {
396
397
  this.webex.internal.metrics.submitClientMetrics(name, data);
397
398
  }
398
399
  }
400
+ submitMobiusSocketMetric(name, metricAction, type, wssUrl, trackingId, error, eventType) {
401
+ let data;
402
+ const commonTags = {
403
+ action: metricAction,
404
+ device_id: this.deviceInfo?.device?.deviceId,
405
+ service_indicator: this.serviceIndicator,
406
+ };
407
+ const commonFields = {
408
+ device_url: this.deviceInfo?.device?.clientDeviceUri,
409
+ mobius_url: this.deviceInfo?.device?.uri,
410
+ calling_sdk_version: process.env.CALLING_SDK_VERSION || VERSION,
411
+ wss_url: wssUrl,
412
+ tracking_id: trackingId,
413
+ event_type: eventType,
414
+ };
415
+ switch (name) {
416
+ case METRIC_EVENT.MOBIUS_SOCKET: {
417
+ data = {
418
+ tags: commonTags,
419
+ fields: commonFields,
420
+ type,
421
+ };
422
+ break;
423
+ }
424
+ case METRIC_EVENT.MOBIUS_SOCKET_ERROR: {
425
+ data = {
426
+ tags: commonTags,
427
+ fields: {
428
+ ...commonFields,
429
+ error,
430
+ },
431
+ type,
432
+ };
433
+ break;
434
+ }
435
+ default:
436
+ log.warn('Invalid metric name received. Rejecting request to submit metric.', {
437
+ file: METRIC_FILE,
438
+ method: 'submitMobiusSocketMetric',
439
+ });
440
+ break;
441
+ }
442
+ if (data) {
443
+ this.webex.internal.metrics.submitClientMetrics(name, data);
444
+ }
445
+ }
399
446
  }
400
447
  export const getMetricManager = (webex, indicator) => {
401
448
  if (!metricManager && webex) {
@@ -20,6 +20,8 @@ export var METRIC_EVENT;
20
20
  METRIC_EVENT["UPLOAD_LOGS_SUCCESS"] = "web-calling-sdk-upload-logs-success";
21
21
  METRIC_EVENT["UPLOAD_LOGS_FAILED"] = "web-calling-sdk-upload-logs-failed";
22
22
  METRIC_EVENT["MOBIUS_DISCOVERY"] = "web-calling-sdk-mobius-discovery";
23
+ METRIC_EVENT["MOBIUS_SOCKET"] = "web-calling-sdk-mobius-socket";
24
+ METRIC_EVENT["MOBIUS_SOCKET_ERROR"] = "web-calling-sdk-mobius-socket-error";
23
25
  })(METRIC_EVENT || (METRIC_EVENT = {}));
24
26
  export var MOBIUS_SERVER_ACTION;
25
27
  (function (MOBIUS_SERVER_ACTION) {
@@ -32,6 +34,14 @@ export var REG_ACTION;
32
34
  REG_ACTION["DEREGISTER"] = "deregister";
33
35
  REG_ACTION["KEEPALIVE_FAILURE"] = "keepaliveFailure";
34
36
  })(REG_ACTION || (REG_ACTION = {}));
37
+ export var MOBIUS_SOCKET_ACTION;
38
+ (function (MOBIUS_SOCKET_ACTION) {
39
+ MOBIUS_SOCKET_ACTION["CONNECT"] = "connect";
40
+ MOBIUS_SOCKET_ACTION["DISCONNECT"] = "disconnect";
41
+ MOBIUS_SOCKET_ACTION["LISTENER_REGISTERED"] = "listener_registered";
42
+ MOBIUS_SOCKET_ACTION["LISTENER_UNREGISTERED"] = "listener_unregistered";
43
+ MOBIUS_SOCKET_ACTION["REGISTRATION_DOWN"] = "registration_down";
44
+ })(MOBIUS_SOCKET_ACTION || (MOBIUS_SOCKET_ACTION = {}));
35
45
  export var TRANSFER_ACTION;
36
46
  (function (TRANSFER_ACTION) {
37
47
  TRANSFER_ACTION["BLIND"] = "TRANSFER_BLIND";
@@ -54,3 +64,11 @@ export var CONNECTION_ACTION;
54
64
  CONNECTION_ACTION["MERCURY_DOWN"] = "mercury_down";
55
65
  CONNECTION_ACTION["MERCURY_UP"] = "mercury_up";
56
66
  })(CONNECTION_ACTION || (CONNECTION_ACTION = {}));
67
+ export var MEDIA_CONNECTION_ACTION;
68
+ (function (MEDIA_CONNECTION_ACTION) {
69
+ MEDIA_CONNECTION_ACTION["ICE_GATHERING_STATE_CHANGED"] = "ICE_GATHERING_STATE_CHANGED";
70
+ MEDIA_CONNECTION_ACTION["PEER_CONNECTION_STATE_CHANGED"] = "PEER_CONNECTION_STATE_CHANGED";
71
+ MEDIA_CONNECTION_ACTION["ICE_CONNECTION_STATE_CHANGED"] = "ICE_CONNECTION_STATE_CHANGED";
72
+ MEDIA_CONNECTION_ACTION["ICE_CANDIDATE_ERROR"] = "ICE_CANDIDATE_ERROR";
73
+ MEDIA_CONNECTION_ACTION["ROAP_FAILURE"] = "ROAP_FAILURE";
74
+ })(MEDIA_CONNECTION_ACTION || (MEDIA_CONNECTION_ACTION = {}));
@@ -3,5 +3,6 @@ import { CallSettings, createCallSettingsClient } from './CallSettings/CallSetti
3
3
  import { CallingClient, createClient } from './CallingClient/CallingClient';
4
4
  import { ContactsClient, createContactsClient } from './Contacts/ContactsClient';
5
5
  import { Voicemail, createVoicemailClient } from './Voicemail/Voicemail';
6
- export { CallHistory, CallSettings, CallingClient, ContactsClient, Voicemail };
7
- export { createCallHistoryClient, createCallSettingsClient, createClient, createContactsClient, createVoicemailClient, };
6
+ import { CallRecording, createCallRecordingClient } from './CallRecording/CallRecording';
7
+ export { CallHistory, CallSettings, CallingClient, ContactsClient, Voicemail, CallRecording };
8
+ export { createCallHistoryClient, createCallSettingsClient, createClient, createContactsClient, createVoicemailClient, createCallRecordingClient, };
@@ -7,7 +7,7 @@ import { DEVICE_ERROR_CODE, ERROR_CODE, ERROR_TYPE, CALL_ERROR_CODE, } from '../
7
7
  import { CALLING_BACKEND, HTTP_METHODS, RegistrationStatus, SORT, ServiceIndicator, } from './types';
8
8
  import log from '../Logger';
9
9
  import { createClientError } from '../Errors/catalog/CallingDeviceError';
10
- import { BYTES_RECEIVED, BYTES_SENT, CALLING_USER_AGENT, CISCO_DEVICE_URL, CODEC_ID, DUMMY_METRICS, INBOUND_CODEC_MATCH, INBOUND_RTP, JITTER_BUFFER_DELAY, JITTER_BUFFER_EMITTED_COUNT, LOCAL_CANDIDATE_ID, MEDIA_ID, MEDIA_SOURCE, MIME_TYPE, NETWORK_TYPE, OUTBOUND_CODEC_MATCH, OUTBOUND_RTP, PACKETS_DISCARDED, PACKETS_LOST, PACKETS_RECEIVED, PACKETS_SENT, REMOTE_INBOUND_RTP, ROUND_TRIP_TIME_MEASUREMENTS, RTC_CODEC, RTC_ICE_CANDIDATE, RTC_ICE_CANDIDATE_PAIR, RTP_RX_STAT, RTP_TX_STAT, SELECTED_CANDIDATE_PAIR_ID, SPARK_USER_AGENT, TARGET_BIT_RATE, TIMESTAMP, TOTAL_ROUND_TRIP_TIME, TOTAL_SAMPLES_DURATION, TRANSPORT, TYPE, URL_ENDPOINT, UTILS_FILE, METHODS, DEFAULT_KEEPALIVE_INTERVAL, } from '../CallingClient/constants';
10
+ import { BYTES_RECEIVED, BYTES_SENT, CALLING_USER_AGENT, CISCO_DEVICE_URL, CODEC_ID, DUMMY_METRICS, INBOUND_CODEC_MATCH, INBOUND_RTP, JITTER_BUFFER_DELAY, JITTER_BUFFER_EMITTED_COUNT, LOCAL_CANDIDATE_ID, MEDIA_ID, MEDIA_SOURCE, MIME_TYPE, NETWORK_TYPE, OUTBOUND_CODEC_MATCH, OUTBOUND_RTP, PACKETS_DISCARDED, PACKETS_LOST, PACKETS_RECEIVED, PACKETS_SENT, REMOTE_INBOUND_RTP, ROUND_TRIP_TIME_MEASUREMENTS, RTC_CODEC, RTC_ICE_CANDIDATE, RTC_ICE_CANDIDATE_PAIR, RTP_RX_STAT, RTP_TX_STAT, SELECTED_CANDIDATE_PAIR_ID, SPARK_USER_AGENT, TARGET_BIT_RATE, TIMESTAMP, TOTAL_ROUND_TRIP_TIME, TOTAL_SAMPLES_DURATION, TRANSPORT, TYPE, URL_ENDPOINT, UTILS_FILE, METHODS, DEFAULT_KEEPALIVE_INTERVAL, SESSION_SUPERSEDED_MESSAGE, } from '../CallingClient/constants';
11
11
  import { DEVICES, ITEMS, SETTINGS, VALUES, KEY, TIME, PLACEHOLDER_KEY, XSI_ACTION_ENDPOINT_ORG_URL_PARAM, XSI_ACTION_ENDPOINT, INFER_ID_CONSTANT, BW_XSI_URL, ENTITLEMENT_BASIC, ENTITLEMENT_BROADWORKS_CONN, ENTITLEMENT_STANDARD, NATIVE_WEBEX_TEAMS_CALLING, NATIVE_SIP_CALL_TO_UCM, BW_XSI_ENDPOINT_VERSION, IDENTITY_ENDPOINT_RESOURCE, SCIM_ENDPOINT_RESOURCE, SCIM_USER_FILTER, WEBEX_API_PROD, WEBEX_API_BTS, BW_XSI_ENDPOINT_VERSION_WITH_SLASH, } from './constants';
12
12
  import SDKConnector from '../SDKConnector';
13
13
  import { createLineError } from '../Errors/catalog/LineError';
@@ -18,18 +18,32 @@ export function filterMobiusUris(mobiusServers, defaultMobiusUrl) {
18
18
  };
19
19
  const urisArrayPrimary = [];
20
20
  const urisArrayBackup = [];
21
+ const wssArrayPrimary = [];
22
+ const wssArrayBackup = [];
21
23
  if (mobiusServers?.primary?.uris) {
22
24
  log.info('Adding Primary uris', logContext);
23
25
  for (const uri of mobiusServers.primary.uris) {
24
26
  urisArrayPrimary.push(`${uri}${URL_ENDPOINT}`);
25
27
  }
26
28
  }
29
+ if (mobiusServers?.primary?.wss) {
30
+ log.info('Adding Primary wss uris', logContext);
31
+ for (const wssUri of mobiusServers.primary.wss) {
32
+ wssArrayPrimary.push(wssUri);
33
+ }
34
+ }
27
35
  if (mobiusServers?.backup?.uris) {
28
36
  log.info('Adding Backup uris', logContext);
29
37
  for (const uri of mobiusServers.backup.uris) {
30
38
  urisArrayBackup.push(`${uri}${URL_ENDPOINT}`);
31
39
  }
32
40
  }
41
+ if (mobiusServers?.backup?.wss) {
42
+ log.info('Adding Backup wss uris', logContext);
43
+ for (const wssUri of mobiusServers.backup.wss) {
44
+ wssArrayBackup.push(wssUri);
45
+ }
46
+ }
33
47
  log.info('Adding Default uri', logContext);
34
48
  if (!urisArrayPrimary.length && !urisArrayBackup.length) {
35
49
  urisArrayPrimary.push(`${defaultMobiusUrl}${URL_ENDPOINT}`);
@@ -39,6 +53,8 @@ export function filterMobiusUris(mobiusServers, defaultMobiusUrl) {
39
53
  }
40
54
  const primaryUris = [];
41
55
  const backupUris = [];
56
+ const primaryWss = [];
57
+ const backupWss = [];
42
58
  for (let i = 0; i < urisArrayPrimary.length; i += 1) {
43
59
  if (primaryUris.indexOf(urisArrayPrimary[i]) === -1) {
44
60
  primaryUris.push(urisArrayPrimary[i]);
@@ -49,7 +65,17 @@ export function filterMobiusUris(mobiusServers, defaultMobiusUrl) {
49
65
  backupUris.push(urisArrayBackup[i]);
50
66
  }
51
67
  }
52
- return { primary: primaryUris, backup: backupUris };
68
+ for (let i = 0; i < wssArrayPrimary.length; i += 1) {
69
+ if (primaryWss.indexOf(wssArrayPrimary[i]) === -1) {
70
+ primaryWss.push(wssArrayPrimary[i]);
71
+ }
72
+ }
73
+ for (let i = 0; i < wssArrayBackup.length; i += 1) {
74
+ if (backupWss.indexOf(wssArrayBackup[i]) === -1) {
75
+ backupWss.push(wssArrayBackup[i]);
76
+ }
77
+ }
78
+ return { primary: primaryUris, backup: backupUris, primaryWss, backupWss };
53
79
  }
54
80
  function updateCallErrorContext(errContext, type, message, correlationId, callError) {
55
81
  const errObj = {};
@@ -74,15 +100,25 @@ function updateErrorContext(errContext, type, message, clientError) {
74
100
  errObj.message = message;
75
101
  clientError.setError(errObj);
76
102
  }
77
- export function emitFinalFailure(emitterCb, loggerContext) {
78
- const clientError = createLineError('', {}, ERROR_TYPE.DEFAULT, RegistrationStatus.INACTIVE);
79
- updateLineErrorContext(loggerContext, ERROR_TYPE.SERVICE_UNAVAILABLE, 'An unknown error occurred. Wait a moment and try again. Please contact the administrator if the problem persists.', RegistrationStatus.INACTIVE, clientError);
103
+ export function emitFinalFailure(emitterCb, loggerContext, message) {
104
+ const clientError = createLineError(message || '', {}, ERROR_TYPE.DEFAULT, RegistrationStatus.INACTIVE);
105
+ updateLineErrorContext(loggerContext, ERROR_TYPE.SERVICE_UNAVAILABLE, message ||
106
+ 'An unknown error occurred. Wait a moment and try again. Please contact the administrator if the problem persists.', RegistrationStatus.INACTIVE, clientError);
80
107
  emitterCb(clientError);
81
108
  }
82
- export async function handleRegistrationErrors(err, emitterCb, loggerContext, retry429Cb, restoreRegCb) {
109
+ export async function handleRegistrationErrors(err, emitterCb, loggerContext, handlers = {}, serverCount = 1) {
110
+ const { retry429Cb, restoreRegCb, sessionSupersededCb } = handlers;
111
+ let shouldDisconnect = false;
112
+ let handledByCallback = false;
83
113
  const lineError = createLineError('', {}, ERROR_TYPE.DEFAULT, RegistrationStatus.INACTIVE);
84
114
  const errorCode = Number(err.statusCode);
85
115
  let finalError = false;
116
+ const handleUnknownError = () => {
117
+ updateLineErrorContext(loggerContext, ERROR_TYPE.DEFAULT, 'Unknown error', RegistrationStatus.INACTIVE, lineError);
118
+ log.warn(`Unknown Error`, loggerContext);
119
+ emitterCb(lineError, finalError);
120
+ shouldDisconnect = serverCount > 1;
121
+ };
86
122
  log.warn(`Status code: -> ${errorCode}`, loggerContext);
87
123
  switch (errorCode) {
88
124
  case ERROR_CODE.BAD_REQUEST: {
@@ -90,6 +126,7 @@ export async function handleRegistrationErrors(err, emitterCb, loggerContext, re
90
126
  log.warn(`400 Bad Request`, loggerContext);
91
127
  updateLineErrorContext(loggerContext, ERROR_TYPE.BAD_REQUEST, 'Invalid input. Please verify the required parameters, sign out and then sign back in with the valid data', RegistrationStatus.INACTIVE, lineError);
92
128
  emitterCb(lineError, finalError);
129
+ shouldDisconnect = serverCount > 1;
93
130
  break;
94
131
  }
95
132
  case ERROR_CODE.UNAUTHORIZED: {
@@ -97,6 +134,7 @@ export async function handleRegistrationErrors(err, emitterCb, loggerContext, re
97
134
  log.warn(`401 Unauthorized`, loggerContext);
98
135
  updateLineErrorContext(loggerContext, ERROR_TYPE.TOKEN_ERROR, 'User is unauthorized due to an expired token. Sign out, then sign back in.', RegistrationStatus.INACTIVE, lineError);
99
136
  emitterCb(lineError, finalError);
137
+ shouldDisconnect = serverCount > 1;
100
138
  break;
101
139
  }
102
140
  case ERROR_CODE.DEVICE_NOT_FOUND: {
@@ -104,6 +142,20 @@ export async function handleRegistrationErrors(err, emitterCb, loggerContext, re
104
142
  log.warn(`404 Device Not Found`, loggerContext);
105
143
  updateLineErrorContext(loggerContext, ERROR_TYPE.NOT_FOUND, 'Webex Calling is unable to find your device. Sign out, then sign back in', RegistrationStatus.INACTIVE, lineError);
106
144
  emitterCb(lineError, finalError);
145
+ shouldDisconnect = serverCount > 1;
146
+ break;
147
+ }
148
+ case ERROR_CODE.CONFLICT: {
149
+ if (!sessionSupersededCb) {
150
+ handleUnknownError();
151
+ break;
152
+ }
153
+ finalError = true;
154
+ handledByCallback = true;
155
+ log.warn(`409 Conflict: session superseded by another device for this user`, loggerContext);
156
+ updateLineErrorContext(loggerContext, ERROR_TYPE.SESSION_SUPERSEDED, SESSION_SUPERSEDED_MESSAGE, RegistrationStatus.INACTIVE, lineError);
157
+ await sessionSupersededCb(lineError);
158
+ shouldDisconnect = false;
107
159
  break;
108
160
  }
109
161
  case ERROR_CODE.TOO_MANY_REQUESTS: {
@@ -112,20 +164,23 @@ export async function handleRegistrationErrors(err, emitterCb, loggerContext, re
112
164
  const caller = loggerContext.method || 'handleErrors';
113
165
  if (retry429Cb && err.headers) {
114
166
  const retryAfter = Number(err.headers['retry-after']);
115
- retry429Cb(retryAfter, caller);
167
+ await retry429Cb(retryAfter, caller);
116
168
  }
169
+ shouldDisconnect = false;
117
170
  break;
118
171
  }
119
172
  case ERROR_CODE.INTERNAL_SERVER_ERROR: {
120
173
  log.warn(`500 Internal Server Error`, loggerContext);
121
174
  updateLineErrorContext(loggerContext, ERROR_TYPE.SERVER_ERROR, 'An unknown error occurred while placing the request. Wait a moment and try again.', RegistrationStatus.INACTIVE, lineError);
122
175
  emitterCb(lineError, finalError);
176
+ shouldDisconnect = serverCount > 1;
123
177
  break;
124
178
  }
125
179
  case ERROR_CODE.SERVICE_UNAVAILABLE: {
126
180
  log.warn(`503 Service Unavailable`, loggerContext);
127
181
  updateLineErrorContext(loggerContext, ERROR_TYPE.SERVICE_UNAVAILABLE, 'An error occurred on the server while processing the request. Wait a moment and try again.', RegistrationStatus.INACTIVE, lineError);
128
182
  emitterCb(lineError, finalError);
183
+ shouldDisconnect = serverCount > 1;
129
184
  break;
130
185
  }
131
186
  case ERROR_CODE.FORBIDDEN: {
@@ -135,7 +190,8 @@ export async function handleRegistrationErrors(err, emitterCb, loggerContext, re
135
190
  log.warn('Error response has no body, throwing default error', loggerContext);
136
191
  updateLineErrorContext(loggerContext, ERROR_TYPE.FORBIDDEN_ERROR, 'An unauthorized action has been received. This action has been blocked. Please contact the administrator if this persists.', RegistrationStatus.INACTIVE, lineError);
137
192
  emitterCb(lineError, finalError);
138
- return finalError;
193
+ shouldDisconnect = serverCount > 1;
194
+ return { finalError, shouldDisconnect, handledByCallback };
139
195
  }
140
196
  const code = Number(errorBody.errorCode);
141
197
  log.warn(`Error code found : ${code}`, loggerContext);
@@ -147,6 +203,7 @@ export async function handleRegistrationErrors(err, emitterCb, loggerContext, re
147
203
  const caller = loggerContext.method || 'handleErrors';
148
204
  await restoreRegCb(errorBody, caller);
149
205
  }
206
+ shouldDisconnect = false;
150
207
  break;
151
208
  }
152
209
  case DEVICE_ERROR_CODE.DEVICE_CREATION_DISABLED: {
@@ -155,6 +212,7 @@ export async function handleRegistrationErrors(err, emitterCb, loggerContext, re
155
212
  updateLineErrorContext(loggerContext, ERROR_TYPE.FORBIDDEN_ERROR, errorMessage, RegistrationStatus.INACTIVE, lineError);
156
213
  log.warn(errorMessage, loggerContext);
157
214
  emitterCb(lineError, true);
215
+ shouldDisconnect = true;
158
216
  break;
159
217
  }
160
218
  case DEVICE_ERROR_CODE.DEVICE_CREATION_FAILED: {
@@ -162,6 +220,7 @@ export async function handleRegistrationErrors(err, emitterCb, loggerContext, re
162
220
  updateLineErrorContext(loggerContext, ERROR_TYPE.FORBIDDEN_ERROR, errorMessage, RegistrationStatus.INACTIVE, lineError);
163
221
  log.warn(errorMessage, loggerContext);
164
222
  emitterCb(lineError, finalError);
223
+ shouldDisconnect = serverCount > 1;
165
224
  break;
166
225
  }
167
226
  default: {
@@ -169,17 +228,16 @@ export async function handleRegistrationErrors(err, emitterCb, loggerContext, re
169
228
  updateLineErrorContext(loggerContext, ERROR_TYPE.FORBIDDEN_ERROR, errorMessage, RegistrationStatus.INACTIVE, lineError);
170
229
  log.warn(errorMessage, loggerContext);
171
230
  emitterCb(lineError, finalError);
231
+ shouldDisconnect = serverCount > 1;
172
232
  }
173
233
  }
174
234
  break;
175
235
  }
176
236
  default: {
177
- updateLineErrorContext(loggerContext, ERROR_TYPE.DEFAULT, 'Unknown error', RegistrationStatus.INACTIVE, lineError);
178
- log.warn(`Unknown Error`, loggerContext);
179
- emitterCb(lineError, finalError);
237
+ handleUnknownError();
180
238
  }
181
239
  }
182
- return finalError;
240
+ return { finalError, shouldDisconnect, handledByCallback };
183
241
  }
184
242
  export async function handleCallingClientErrors(err, emitterCb, loggerContext) {
185
243
  const clientError = createClientError('', {}, ERROR_TYPE.DEFAULT, RegistrationStatus.INACTIVE);
@@ -623,10 +681,10 @@ export function parseMediaQualityStatistics(stats) {
623
681
  export const waitForMsecs = (msec) => new Promise((resolve) => {
624
682
  setTimeout(resolve, msec);
625
683
  });
626
- export function getCallingBackEnd(webex) {
627
- const entModels = webex.internal.device.features.entitlement.models;
684
+ export function resolveCallingBackend(device) {
685
+ const entModels = device.features.entitlement.models;
628
686
  let callingBackend;
629
- if (webex.internal.device.callingBehavior === NATIVE_WEBEX_TEAMS_CALLING) {
687
+ if (device.callingBehavior === NATIVE_WEBEX_TEAMS_CALLING) {
630
688
  for (let i = 0; i < entModels.length; i += 1) {
631
689
  if (entModels[i][VALUES][KEY] === ENTITLEMENT_BASIC ||
632
690
  entModels[i][VALUES][KEY] === ENTITLEMENT_STANDARD) {
@@ -639,20 +697,25 @@ export function getCallingBackEnd(webex) {
639
697
  }
640
698
  }
641
699
  }
642
- else if (webex.internal.device.callingBehavior === NATIVE_SIP_CALL_TO_UCM) {
700
+ else if (device.callingBehavior === NATIVE_SIP_CALL_TO_UCM) {
643
701
  callingBackend = CALLING_BACKEND.UCM;
644
702
  }
645
703
  else {
646
704
  callingBackend = CALLING_BACKEND.INVALID;
647
705
  }
648
- return callingBackend;
706
+ return callingBackend || CALLING_BACKEND.INVALID;
707
+ }
708
+ export function getCallingBackEnd(webex) {
709
+ return resolveCallingBackend(webex.internal.device);
649
710
  }
650
711
  export async function getXsiActionEndpoint(webex, loggerContext, callingBackend) {
651
712
  try {
652
713
  switch (callingBackend) {
653
714
  case CALLING_BACKEND.WXC: {
715
+ const hydraEndpoint = webex.internal.services._serviceUrls?.hydra ||
716
+ webex.internal.services.get(webex.internal.services._activeServices.hydra);
654
717
  const userIdResponse = await webex.request({
655
- uri: `${webex.internal.services._serviceUrls.hydra}/${XSI_ACTION_ENDPOINT_ORG_URL_PARAM}`,
718
+ uri: `${hydraEndpoint}/${XSI_ACTION_ENDPOINT_ORG_URL_PARAM}`,
656
719
  method: HTTP_METHODS.GET,
657
720
  });
658
721
  log.log(`Response code: ${userIdResponse.statusCode}, Response trackingid: ${userIdResponse?.headers?.trackingid}`, {
@@ -851,7 +914,7 @@ export function inferIdFromUuid(id, decodeType) {
851
914
  function isValidServiceIndicator(indicator) {
852
915
  return Object.values(ServiceIndicator).some((v) => v === indicator);
853
916
  }
854
- function isValidServiceDomain(serviceData) {
917
+ export function isValidServiceDomain(serviceData) {
855
918
  const regexp = /^[a-z0-9]+([-.]{1}[a-z0-9]+)*\.[a-z]{2,6}$/i;
856
919
  const { domain } = serviceData;
857
920
  if (!domain) {
@@ -866,9 +929,6 @@ export function validateServiceData(serviceData) {
866
929
  if (!isValidServiceIndicator(serviceData.indicator)) {
867
930
  throw new Error(`Invalid service indicator, Allowed values are: ${formattedValues}`);
868
931
  }
869
- if (!isValidServiceDomain(serviceData)) {
870
- throw new Error('Invalid service domain.');
871
- }
872
932
  }
873
933
  export function modifySdpForIPv4(sdp) {
874
934
  try {
@@ -941,3 +1001,6 @@ export async function uploadLogs(metaData = {}, throwError = false) {
941
1001
  return undefined;
942
1002
  }
943
1003
  }
1004
+ export function normalizeMobiusUris(urls) {
1005
+ return urls.map((url) => (!url.endsWith('/') ? `${url}/` : url));
1006
+ }
@@ -1,4 +1,5 @@
1
1
  import platform from 'platform';
2
+ import { CISCO_DEVICE_URL } from '../CallingClient/constants';
2
3
  const MediaSDKMock = jest.createMockFromModule('@webex/internal-media-core');
3
4
  export function getTestUtilsWebex() {
4
5
  return {
@@ -34,6 +35,9 @@ export function getTestUtilsWebex() {
34
35
  entitlement: {
35
36
  models: [{ _values: { key: 'bc-sp-standard' } }],
36
37
  },
38
+ developer: {
39
+ get: jest.fn().mockReturnValue({ value: false }),
40
+ },
37
41
  },
38
42
  },
39
43
  encryption: {
@@ -61,6 +65,7 @@ export function getTestUtilsWebex() {
61
65
  mercuryApi: 'https://mercury-api-intb.ciscospark.com/v1',
62
66
  'ucmgmt-gateway': 'https://gw.telemetry.int-ucmgmt.cisco.com',
63
67
  contactsService: 'https://contacts-service-a.wbx2.com/contact/api/v1',
68
+ hydraDeveloperApi: 'https://integration.webexapis.com/v1',
64
69
  },
65
70
  fetchClientRegionInfo: jest.fn(),
66
71
  getMobiusClusters: jest.fn(),
@@ -106,7 +111,7 @@ export const mockCallingClient = {
106
111
  export const getMockRequestTemplate = () => {
107
112
  return {
108
113
  headers: {
109
- 'cisco-device-url': 'https://wdm-intb.ciscospark.com/wdm/api/v1/devices/c5ae3b86-1bb7-40f1-a6a9-c296ee7e61d5',
114
+ [CISCO_DEVICE_URL]: 'https://wdm-intb.ciscospark.com/wdm/api/v1/devices/c5ae3b86-1bb7-40f1-a6a9-c296ee7e61d5',
110
115
  'spark-user-agent': 'webex-calling/beta',
111
116
  },
112
117
  service: 'mobius',
@@ -3,6 +3,7 @@ export var ALLOWED_SERVICES;
3
3
  (function (ALLOWED_SERVICES) {
4
4
  ALLOWED_SERVICES["MOBIUS"] = "mobius";
5
5
  ALLOWED_SERVICES["JANUS"] = "janus";
6
+ ALLOWED_SERVICES["HYDRA_DEVELOPER_API"] = "hydraDeveloperApi";
6
7
  })(ALLOWED_SERVICES || (ALLOWED_SERVICES = {}));
7
8
  export var HTTP_METHODS;
8
9
  (function (HTTP_METHODS) {
@@ -62,6 +63,8 @@ export var WorkerMessageType;
62
63
  (function (WorkerMessageType) {
63
64
  WorkerMessageType["START_KEEPALIVE"] = "START_KEEPALIVE";
64
65
  WorkerMessageType["CLEAR_KEEPALIVE"] = "CLEAR_KEEPALIVE";
66
+ WorkerMessageType["SEND_KEEPALIVE"] = "SEND_KEEPALIVE";
67
+ WorkerMessageType["KEEPALIVE_RESULT"] = "KEEPALIVE_RESULT";
65
68
  WorkerMessageType["KEEPALIVE_SUCCESS"] = "KEEPALIVE_SUCCESS";
66
69
  WorkerMessageType["KEEPALIVE_FAILURE"] = "KEEPALIVE_FAILURE";
67
70
  })(WorkerMessageType || (WorkerMessageType = {}));
@@ -4,13 +4,17 @@ import { createContactsClient } from './Contacts/ContactsClient';
4
4
  import { createClient } from './CallingClient/CallingClient';
5
5
  import { createCallHistoryClient } from './CallHistory/CallHistory';
6
6
  import { createVoicemailClient } from './Voicemail/Voicemail';
7
+ import { createCallRecordingClient } from './CallRecording/CallRecording';
7
8
  import Logger from './Logger';
8
- export { createClient, createCallHistoryClient, createCallSettingsClient, createContactsClient, createMicrophoneStream, createVoicemailClient, Logger, NoiseReductionEffect, };
9
+ export { createClient, createCallHistoryClient, createCallSettingsClient, createContactsClient, createMicrophoneStream, createVoicemailClient, createCallRecordingClient, Logger, NoiseReductionEffect, };
9
10
  export { ERROR_LAYER, ERROR_TYPE } from './Errors/types';
11
+ export { RecordingStatus, RecordingRequestType, } from './CallRecording/types';
12
+ export { getRemoteParty } from './CallRecording/utils';
10
13
  export { GroupType } from './Contacts/types';
11
14
  export { LINE_EVENTS } from './CallingClient/line/types';
12
- export { CALLING_CLIENT_EVENT_KEYS, CALL_EVENT_KEYS, Disposition, LINE_EVENT_KEYS, COMMON_EVENT_KEYS, } from './Events/types';
13
- export { CallDirection, CallType, SORT, SORT_BY, } from './common/types';
15
+ export { CALLING_CLIENT_EVENT_KEYS, CALL_EVENT_KEYS, Disposition, LINE_EVENT_KEYS, COMMON_EVENT_KEYS, MOBIUS_SOCKET_DISCONNECT_REASON, } from './Events/types';
16
+ export { CallDirection, CallType, CALLING_BACKEND, SORT, SORT_BY, } from './common/types';
17
+ export { resolveCallingBackend } from './common/Utils';
14
18
  export { CallError, LineError } from './Errors';
15
19
  export { TransferType } from './CallingClient/calling/types';
16
20
  export { LOGGER } from './Logger/types';
@@ -0,0 +1,15 @@
1
+ /*!
2
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
+ */
4
+ const mobiusSocketConfig = {
5
+ wssResponseTimeout: 10000,
6
+ backoffTimeMax: 32000,
7
+ backoffTimeReset: 1000,
8
+ initialConnectionMaxRetries: 0,
9
+ maxRetries: 3,
10
+ forceCloseDelay: 2000,
11
+ dedupCacheMaxSize: 1000,
12
+ };
13
+ export default {
14
+ mobiusSocket: mobiusSocketConfig,
15
+ };
@@ -0,0 +1,58 @@
1
+ /*!
2
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
+ */
4
+ import { Exception } from '@webex/common';
5
+ export class ConnectionError extends Exception {
6
+ static defaultMessage = 'Failed to connect to socket';
7
+ code;
8
+ reason;
9
+ constructor(event = {}) {
10
+ super(event);
11
+ this.code = event.code;
12
+ this.reason = event.reason;
13
+ }
14
+ parse(event = {}) {
15
+ return event.reason;
16
+ }
17
+ }
18
+ export class UnknownResponse extends ConnectionError {
19
+ static defaultMessage = 'UnknownResponse is produced by IE when we receive a 4XXX. You probably want to treat this like a NotFound';
20
+ constructor(event) {
21
+ super(event);
22
+ }
23
+ }
24
+ export class BadRequest extends ConnectionError {
25
+ static defaultMessage = 'BadRequest usually implies an attempt to use service account credentials';
26
+ constructor(event) {
27
+ super(event);
28
+ }
29
+ }
30
+ export class NotAuthorized extends ConnectionError {
31
+ static defaultMessage = 'Please refresh your access token';
32
+ constructor(event) {
33
+ super(event);
34
+ }
35
+ }
36
+ export class Forbidden extends ConnectionError {
37
+ static defaultMessage = 'Forbidden usually implies these credentials are not entitled for Webex';
38
+ constructor(event) {
39
+ super(event);
40
+ }
41
+ }
42
+ export function createWssResponseError(response, statusCode, statusMessage) {
43
+ const error = new Error(statusMessage || `Mobius websocket request failed with status ${statusCode || 'unknown'}`);
44
+ error.name = 'MobiusSocketResponseError';
45
+ error.statusCode = statusCode;
46
+ error.statusMessage = statusMessage;
47
+ error.response = response;
48
+ error.trackingId = response?.trackingId;
49
+ return error;
50
+ }
51
+ export function createTimeoutError(request) {
52
+ const errorPayload = {
53
+ type: 'response_event',
54
+ subtype: request.type,
55
+ trackingId: request.trackingId,
56
+ };
57
+ return createWssResponseError(errorPayload, 408, 'Mobius websocket response timed out');
58
+ }
@@ -0,0 +1,24 @@
1
+ /*!
2
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
+ */
4
+ import '@webex/internal-plugin-device';
5
+ import '@webex/internal-plugin-feature';
6
+ import '@webex/internal-plugin-metrics';
7
+ import MobiusSocket from './mobius-socket';
8
+ import config from './config';
9
+ let mobiusSocketInstance;
10
+ export function getMobiusSocketInstance(webex, mobiusSocketConfig) {
11
+ if (mobiusSocketInstance) {
12
+ return mobiusSocketInstance;
13
+ }
14
+ mobiusSocketInstance = new MobiusSocket(webex, {
15
+ ...config.mobiusSocket,
16
+ ...mobiusSocketConfig,
17
+ });
18
+ return mobiusSocketInstance;
19
+ }
20
+ export function resetMobiusSocketInstance() {
21
+ mobiusSocketInstance = undefined;
22
+ }
23
+ export default MobiusSocket;
24
+ export { MobiusSocket };