@wazo/sdk 0.38.22 → 0.39.0-beta.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 (883) hide show
  1. package/README.md +0 -293
  2. package/dist/wazo-sdk.js +9 -25
  3. package/esm/__tests__/api-client.test.js +183 -5059
  4. package/esm/__tests__/web-rtc-client.test.js +177 -7930
  5. package/esm/api/agentd.js +23 -832
  6. package/esm/api/amid.js +9 -411
  7. package/esm/api/application.js +60 -829
  8. package/esm/api/auth.js +164 -1213
  9. package/esm/api/call-logd.js +24 -733
  10. package/esm/api/calld.js +114 -1469
  11. package/esm/api/chatd.js +35 -1312
  12. package/esm/api/confd.js +67 -1580
  13. package/esm/api/ctid-ng.js +92 -1343
  14. package/esm/api/dird.js +100 -1590
  15. package/esm/api/webhookd.js +7 -513
  16. package/esm/api-client.js +143 -4881
  17. package/esm/checker/Checker.js +45 -8727
  18. package/esm/checker/checks/aor.js +24 -4924
  19. package/esm/checker/checks/api.js +70 -4968
  20. package/esm/checker/checks/ice-ipv4.js +63 -117
  21. package/esm/checker/checks/index.js +8 -8677
  22. package/esm/checker/checks/symmetric-nat.js +54 -102
  23. package/esm/checker/checks/wazo-websocket.js +34 -999
  24. package/esm/checker/checks/webrtc-transport.js +28 -7845
  25. package/esm/checker/checks/webrtc.js +31 -7852
  26. package/esm/domain/AdHocAPIConference.js +86 -5115
  27. package/esm/domain/Agent.js +27 -61
  28. package/esm/domain/BadResponse.js +20 -43
  29. package/esm/domain/Call.js +120 -210
  30. package/esm/domain/CallLog.js +123 -305
  31. package/esm/domain/CallSession.js +251 -423
  32. package/esm/domain/ChatMessage.js +52 -105
  33. package/esm/domain/ChatRoom.js +28 -60
  34. package/esm/domain/Contact.js +430 -741
  35. package/esm/domain/Country.js +17 -19
  36. package/esm/domain/Device/DebugDevice.js +31 -47
  37. package/esm/domain/Device/Device.js +1 -1
  38. package/esm/domain/DirectorySource.js +1 -1
  39. package/esm/domain/ExternalApp.js +23 -56
  40. package/esm/domain/Features.js +57 -5009
  41. package/esm/domain/ForwardOption.js +35 -70
  42. package/esm/domain/IndirectTransfer.js +38 -97
  43. package/esm/domain/Line.js +37 -88
  44. package/esm/domain/Meeting.js +58 -113
  45. package/esm/domain/MeetingAuthorization.js +38 -68
  46. package/esm/domain/MeetingStatus.js +13 -28
  47. package/esm/domain/NotificationOptions.js +43 -77
  48. package/esm/domain/Phone/CTIPhone.js +245 -5743
  49. package/esm/domain/Phone/Phone.js +1 -2
  50. package/esm/domain/Phone/WebRTCPhone.js +1450 -2670
  51. package/esm/domain/Profile.js +120 -405
  52. package/esm/domain/Recording.js +27 -51
  53. package/esm/domain/Relocation.js +16 -40
  54. package/esm/domain/Room.js +90 -133
  55. package/esm/domain/SFUNotAvailableError.js +5 -8
  56. package/esm/domain/ServerError.js +8 -61
  57. package/esm/domain/Session.js +125 -251
  58. package/esm/domain/SipLine.js +78 -155
  59. package/esm/domain/Subscription.js +39 -83
  60. package/esm/domain/SwitchboardCall.js +51 -143
  61. package/esm/domain/Voicemail.js +57 -122
  62. package/esm/domain/__tests__/Agent.test.js +31 -101
  63. package/esm/domain/__tests__/Call.test.js +24 -232
  64. package/esm/domain/__tests__/CallLog.test.js +60 -386
  65. package/esm/domain/__tests__/CallSession.test.js +74 -502
  66. package/esm/domain/__tests__/Contact.test.js +220 -902
  67. package/esm/domain/__tests__/IndirectTransfer.test.js +63 -546
  68. package/esm/domain/__tests__/Line.test.js +48 -156
  69. package/esm/domain/__tests__/Meeting.test.js +73 -226
  70. package/esm/domain/__tests__/MeetingAuthorization.test.js +45 -105
  71. package/esm/domain/__tests__/Profile.test.js +135 -496
  72. package/esm/domain/__tests__/Room.test.js +227 -719
  73. package/esm/domain/__tests__/Session.test.js +357 -1025
  74. package/esm/domain/__tests__/SipLine.test.js +24 -179
  75. package/esm/domain/__tests__/Voicemail.test.js +82 -200
  76. package/esm/domain/types.js +1 -1
  77. package/esm/index.js +63 -14985
  78. package/esm/lib/WazoSessionDescriptionHandler.js +406 -890
  79. package/esm/pubkey.js +10 -0
  80. package/esm/service/CallApi.js +42 -5014
  81. package/esm/service/IssueReporter.js +278 -360
  82. package/esm/service/__tests__/IssueReporter.test.js +92 -494
  83. package/esm/service/getApiClient.js +53 -4972
  84. package/esm/simple/Auth.js +212 -14747
  85. package/esm/simple/Configuration.js +8 -14796
  86. package/esm/simple/Directory.js +6 -4964
  87. package/esm/simple/Phone.js +309 -14727
  88. package/esm/simple/Websocket.js +68 -1112
  89. package/esm/simple/index.js +125 -14792
  90. package/esm/simple/room/LocalParticipant.js +1 -14797
  91. package/esm/simple/room/Participant.js +274 -14760
  92. package/esm/simple/room/RemoteParticipant.js +6 -14796
  93. package/esm/simple/room/Room.js +648 -14736
  94. package/esm/simple/room/SipRoom.js +111 -14790
  95. package/esm/simple/room/Stream.js +40 -14792
  96. package/esm/simple/room/__tests__/Participant.test.js +68 -14872
  97. package/esm/simple/room/__tests__/RemoteParticipant.test.js +10 -14805
  98. package/esm/simple/utils.js +9 -14799
  99. package/esm/types/WebSocketMessage.js +1 -1
  100. package/esm/types/__tests__/api-client.test.d.ts +2 -0
  101. package/esm/types/__tests__/api-client.test.d.ts.map +1 -0
  102. package/esm/types/__tests__/web-rtc-client.test.d.ts +2 -0
  103. package/esm/types/__tests__/web-rtc-client.test.d.ts.map +1 -0
  104. package/esm/types/api/agentd.d.ts +17 -0
  105. package/esm/types/api/agentd.d.ts.map +1 -0
  106. package/esm/types/api/amid.d.ts +8 -0
  107. package/esm/types/api/amid.d.ts.map +1 -0
  108. package/esm/types/api/application.d.ts +34 -0
  109. package/esm/types/api/application.d.ts.map +1 -0
  110. package/esm/types/api/auth.d.ts +64 -0
  111. package/esm/types/api/auth.d.ts.map +1 -0
  112. package/esm/types/api/call-logd.d.ts +12 -0
  113. package/esm/types/api/call-logd.d.ts.map +1 -0
  114. package/esm/types/api/calld.d.ts +51 -0
  115. package/esm/types/api/calld.d.ts.map +1 -0
  116. package/esm/types/api/chatd.d.ts +42 -0
  117. package/esm/types/api/chatd.d.ts.map +1 -0
  118. package/esm/types/api/confd.d.ts +39 -0
  119. package/esm/types/api/confd.d.ts.map +1 -0
  120. package/esm/types/api/ctid-ng.d.ts +36 -0
  121. package/esm/types/api/ctid-ng.d.ts.map +1 -0
  122. package/esm/types/api/dird.d.ts +38 -0
  123. package/esm/types/api/dird.d.ts.map +1 -0
  124. package/esm/types/api/webhookd.d.ts +24 -0
  125. package/esm/types/api/webhookd.d.ts.map +1 -0
  126. package/esm/types/api-client.d.ts +63 -0
  127. package/esm/types/api-client.d.ts.map +1 -0
  128. package/esm/types/checker/Checker.d.ts +13 -0
  129. package/esm/types/checker/Checker.d.ts.map +1 -0
  130. package/esm/types/checker/checks/aor.d.ts +6 -0
  131. package/esm/types/checker/checks/aor.d.ts.map +1 -0
  132. package/esm/types/checker/checks/api.d.ts +6 -0
  133. package/esm/types/checker/checks/api.d.ts.map +1 -0
  134. package/esm/types/checker/checks/ice-ipv4.d.ts +6 -0
  135. package/esm/types/checker/checks/ice-ipv4.d.ts.map +1 -0
  136. package/esm/types/checker/checks/index.d.ts +9 -0
  137. package/esm/types/checker/checks/index.d.ts.map +1 -0
  138. package/esm/types/checker/checks/symmetric-nat.d.ts +6 -0
  139. package/esm/types/checker/checks/symmetric-nat.d.ts.map +1 -0
  140. package/esm/types/checker/checks/wazo-websocket.d.ts +6 -0
  141. package/esm/types/checker/checks/wazo-websocket.d.ts.map +1 -0
  142. package/esm/types/checker/checks/webrtc-transport.d.ts +7 -0
  143. package/esm/types/checker/checks/webrtc-transport.d.ts.map +1 -0
  144. package/esm/types/checker/checks/webrtc.d.ts +6 -0
  145. package/esm/types/checker/checks/webrtc.d.ts.map +1 -0
  146. package/esm/types/domain/AdHocAPIConference.d.ts +54 -0
  147. package/esm/types/domain/AdHocAPIConference.d.ts.map +1 -0
  148. package/esm/types/domain/Agent.d.ts +31 -0
  149. package/esm/types/domain/Agent.d.ts.map +1 -0
  150. package/esm/types/domain/BadResponse.d.ts +11 -0
  151. package/esm/types/domain/BadResponse.d.ts.map +1 -0
  152. package/esm/types/domain/Call.d.ts +79 -0
  153. package/esm/types/domain/Call.d.ts.map +1 -0
  154. package/esm/types/domain/CallLog.d.ts +91 -0
  155. package/esm/types/domain/CallLog.d.ts.map +1 -0
  156. package/esm/types/domain/CallSession.d.ts +120 -0
  157. package/esm/types/domain/CallSession.d.ts.map +1 -0
  158. package/esm/types/domain/ChatMessage.d.ts +41 -0
  159. package/esm/types/domain/ChatMessage.d.ts.map +1 -0
  160. package/esm/types/domain/ChatRoom.d.ts +22 -0
  161. package/esm/types/domain/ChatRoom.d.ts.map +1 -0
  162. package/esm/types/domain/Contact.d.ts +316 -0
  163. package/esm/types/domain/Contact.d.ts.map +1 -0
  164. package/esm/types/domain/Country.d.ts +20 -0
  165. package/esm/types/domain/Country.d.ts.map +1 -0
  166. package/esm/types/domain/Device/DebugDevice.d.ts +14 -0
  167. package/esm/types/domain/Device/DebugDevice.d.ts.map +1 -0
  168. package/esm/types/domain/Device/Device.d.ts +13 -0
  169. package/esm/types/domain/Device/Device.d.ts.map +1 -0
  170. package/esm/types/domain/DirectorySource.d.ts +13 -0
  171. package/esm/types/domain/DirectorySource.d.ts.map +1 -0
  172. package/esm/types/domain/ExternalApp.d.ts +22 -0
  173. package/esm/types/domain/ExternalApp.d.ts.map +1 -0
  174. package/esm/types/domain/Features.d.ts +24 -0
  175. package/esm/types/domain/Features.d.ts.map +1 -0
  176. package/esm/types/domain/ForwardOption.d.ts +27 -0
  177. package/esm/types/domain/ForwardOption.d.ts.map +1 -0
  178. package/esm/types/domain/IndirectTransfer.d.ts +31 -0
  179. package/esm/types/domain/IndirectTransfer.d.ts.map +1 -0
  180. package/esm/types/domain/Line.d.ts +46 -0
  181. package/esm/types/domain/Line.d.ts.map +1 -0
  182. package/esm/types/domain/Meeting.d.ts +45 -0
  183. package/esm/types/domain/Meeting.d.ts.map +1 -0
  184. package/esm/types/domain/MeetingAuthorization.d.ts +26 -0
  185. package/esm/types/domain/MeetingAuthorization.d.ts.map +1 -0
  186. package/esm/types/domain/MeetingStatus.d.ts +10 -0
  187. package/esm/types/domain/MeetingStatus.d.ts.map +1 -0
  188. package/esm/types/domain/NotificationOptions.d.ts +22 -0
  189. package/esm/types/domain/NotificationOptions.d.ts.map +1 -0
  190. package/esm/types/domain/Phone/CTIPhone.d.ts +76 -0
  191. package/esm/types/domain/Phone/CTIPhone.d.ts.map +1 -0
  192. package/esm/types/domain/Phone/Phone.d.ts +71 -0
  193. package/esm/types/domain/Phone/Phone.d.ts.map +1 -0
  194. package/esm/types/domain/Phone/WebRTCPhone.d.ts +179 -0
  195. package/esm/types/domain/Phone/WebRTCPhone.d.ts.map +1 -0
  196. package/esm/types/domain/Profile.d.ts +151 -0
  197. package/esm/types/domain/Profile.d.ts.map +1 -0
  198. package/esm/types/domain/Recording.d.ts +26 -0
  199. package/esm/types/domain/Recording.d.ts.map +1 -0
  200. package/esm/types/domain/Relocation.d.ts +23 -0
  201. package/esm/types/domain/Relocation.d.ts.map +1 -0
  202. package/esm/types/domain/Room.d.ts +35 -0
  203. package/esm/types/domain/Room.d.ts.map +1 -0
  204. package/esm/types/domain/SFUNotAvailableError.d.ts +4 -0
  205. package/esm/types/domain/SFUNotAvailableError.d.ts.map +1 -0
  206. package/esm/types/domain/ServerError.d.ts +6 -0
  207. package/esm/types/domain/ServerError.d.ts.map +1 -0
  208. package/esm/types/domain/Session.d.ts +90 -0
  209. package/esm/types/domain/Session.d.ts.map +1 -0
  210. package/esm/types/domain/SipLine.d.ts +54 -0
  211. package/esm/types/domain/SipLine.d.ts.map +1 -0
  212. package/esm/types/domain/Subscription.d.ts +43 -0
  213. package/esm/types/domain/Subscription.d.ts.map +1 -0
  214. package/esm/types/domain/SwitchboardCall.d.ts +62 -0
  215. package/esm/types/domain/SwitchboardCall.d.ts.map +1 -0
  216. package/esm/types/domain/Voicemail.d.ts +50 -0
  217. package/esm/types/domain/Voicemail.d.ts.map +1 -0
  218. package/esm/types/domain/__tests__/Agent.test.d.ts +2 -0
  219. package/esm/types/domain/__tests__/Agent.test.d.ts.map +1 -0
  220. package/esm/types/domain/__tests__/Call.test.d.ts +2 -0
  221. package/esm/types/domain/__tests__/Call.test.d.ts.map +1 -0
  222. package/esm/types/domain/__tests__/CallLog.test.d.ts +2 -0
  223. package/esm/types/domain/__tests__/CallLog.test.d.ts.map +1 -0
  224. package/esm/types/domain/__tests__/CallSession.test.d.ts +2 -0
  225. package/esm/types/domain/__tests__/CallSession.test.d.ts.map +1 -0
  226. package/esm/types/domain/__tests__/Contact.test.d.ts +2 -0
  227. package/esm/types/domain/__tests__/Contact.test.d.ts.map +1 -0
  228. package/esm/types/domain/__tests__/IndirectTransfer.test.d.ts +2 -0
  229. package/esm/types/domain/__tests__/IndirectTransfer.test.d.ts.map +1 -0
  230. package/esm/types/domain/__tests__/Line.test.d.ts +2 -0
  231. package/esm/types/domain/__tests__/Line.test.d.ts.map +1 -0
  232. package/esm/types/domain/__tests__/Meeting.test.d.ts +2 -0
  233. package/esm/types/domain/__tests__/Meeting.test.d.ts.map +1 -0
  234. package/esm/types/domain/__tests__/MeetingAuthorization.test.d.ts +2 -0
  235. package/esm/types/domain/__tests__/MeetingAuthorization.test.d.ts.map +1 -0
  236. package/esm/types/domain/__tests__/Profile.test.d.ts +2 -0
  237. package/esm/types/domain/__tests__/Profile.test.d.ts.map +1 -0
  238. package/esm/types/domain/__tests__/Room.test.d.ts +2 -0
  239. package/esm/types/domain/__tests__/Room.test.d.ts.map +1 -0
  240. package/esm/types/domain/__tests__/Session.test.d.ts +2 -0
  241. package/esm/types/domain/__tests__/Session.test.d.ts.map +1 -0
  242. package/esm/types/domain/__tests__/SipLine.test.d.ts +2 -0
  243. package/esm/types/domain/__tests__/SipLine.test.d.ts.map +1 -0
  244. package/esm/types/domain/__tests__/Voicemail.test.d.ts +2 -0
  245. package/esm/types/domain/__tests__/Voicemail.test.d.ts.map +1 -0
  246. package/esm/types/domain/types.d.ts +217 -0
  247. package/esm/types/domain/types.d.ts.map +1 -0
  248. package/esm/types/index.d.ts +304 -0
  249. package/esm/types/index.d.ts.map +1 -0
  250. package/esm/types/lib/WazoSessionDescriptionHandler.d.ts +30 -0
  251. package/esm/types/lib/WazoSessionDescriptionHandler.d.ts.map +1 -0
  252. package/esm/types/pubkey.d.ts +3 -0
  253. package/esm/types/pubkey.d.ts.map +1 -0
  254. package/esm/types/service/CallApi.d.ts +28 -0
  255. package/esm/types/service/CallApi.d.ts.map +1 -0
  256. package/esm/types/service/IssueReporter.d.ts +40 -0
  257. package/esm/types/service/IssueReporter.d.ts.map +1 -0
  258. package/esm/types/service/__tests__/IssueReporter.test.d.ts +2 -0
  259. package/esm/types/service/__tests__/IssueReporter.test.d.ts.map +1 -0
  260. package/esm/types/service/getApiClient.d.ts +16 -0
  261. package/esm/types/service/getApiClient.d.ts.map +1 -0
  262. package/esm/types/simple/Auth.d.ts +51 -0
  263. package/esm/types/simple/Auth.d.ts.map +1 -0
  264. package/esm/types/simple/Configuration.d.ts +3 -0
  265. package/esm/types/simple/Configuration.d.ts.map +1 -0
  266. package/esm/types/simple/Directory.d.ts +3 -0
  267. package/esm/types/simple/Directory.d.ts.map +1 -0
  268. package/esm/types/simple/Phone.d.ts +115 -0
  269. package/esm/types/simple/Phone.d.ts.map +1 -0
  270. package/esm/types/simple/Websocket.d.ts +19 -0
  271. package/esm/types/simple/Websocket.d.ts.map +1 -0
  272. package/esm/types/simple/index.d.ts +147 -0
  273. package/esm/types/simple/index.d.ts.map +1 -0
  274. package/esm/types/simple/room/LocalParticipant.d.ts +5 -0
  275. package/esm/types/simple/room/LocalParticipant.d.ts.map +1 -0
  276. package/esm/types/simple/room/Participant.d.ts +76 -0
  277. package/esm/types/simple/room/Participant.d.ts.map +1 -0
  278. package/esm/types/simple/room/RemoteParticipant.d.ts +7 -0
  279. package/esm/types/simple/room/RemoteParticipant.d.ts.map +1 -0
  280. package/esm/types/simple/room/Room.d.ts +116 -0
  281. package/esm/types/simple/room/Room.d.ts.map +1 -0
  282. package/esm/types/simple/room/SipRoom.d.ts +14 -0
  283. package/esm/types/simple/room/SipRoom.d.ts.map +1 -0
  284. package/esm/types/simple/room/Stream.d.ts +13 -0
  285. package/esm/types/simple/room/Stream.d.ts.map +1 -0
  286. package/esm/types/simple/room/__tests__/Participant.test.d.ts +2 -0
  287. package/esm/types/simple/room/__tests__/Participant.test.d.ts.map +1 -0
  288. package/esm/types/simple/room/__tests__/RemoteParticipant.test.d.ts +2 -0
  289. package/esm/types/simple/room/__tests__/RemoteParticipant.test.d.ts.map +1 -0
  290. package/esm/types/simple/utils.d.ts +3 -0
  291. package/esm/types/simple/utils.d.ts.map +1 -0
  292. package/esm/types/types/WebSocketMessage.d.ts +285 -0
  293. package/esm/types/types/WebSocketMessage.d.ts.map +1 -0
  294. package/esm/types/utils/Emitter.d.ts +18 -0
  295. package/esm/types/utils/Emitter.d.ts.map +1 -0
  296. package/esm/types/utils/Heartbeat.d.ts +21 -0
  297. package/esm/types/utils/Heartbeat.d.ts.map +1 -0
  298. package/esm/types/utils/PhoneNumberUtil.d.ts +8 -0
  299. package/esm/types/utils/PhoneNumberUtil.d.ts.map +1 -0
  300. package/esm/types/utils/__tests__/Heartbeat.test.d.ts +2 -0
  301. package/esm/types/utils/__tests__/Heartbeat.test.d.ts.map +1 -0
  302. package/esm/types/utils/__tests__/PhoneNumberUtil.test.d.ts +2 -0
  303. package/esm/types/utils/__tests__/PhoneNumberUtil.test.d.ts.map +1 -0
  304. package/esm/types/utils/__tests__/api-requester.test.d.ts +2 -0
  305. package/esm/types/utils/__tests__/api-requester.test.d.ts.map +1 -0
  306. package/esm/types/utils/__tests__/array.test.d.ts +2 -0
  307. package/esm/types/utils/__tests__/array.test.d.ts.map +1 -0
  308. package/esm/types/utils/__tests__/compare-version.test.d.ts +2 -0
  309. package/esm/types/utils/__tests__/compare-version.test.d.ts.map +1 -0
  310. package/esm/types/utils/__tests__/object.test.d.ts +2 -0
  311. package/esm/types/utils/__tests__/object.test.d.ts.map +1 -0
  312. package/esm/types/utils/__tests__/sdp.test.d.ts +2 -0
  313. package/esm/types/utils/__tests__/sdp.test.d.ts.map +1 -0
  314. package/esm/types/utils/__tests__/string.test.d.ts +2 -0
  315. package/esm/types/utils/__tests__/string.test.d.ts.map +1 -0
  316. package/esm/types/utils/api-requester.d.ts +45 -0
  317. package/esm/types/utils/api-requester.d.ts.map +1 -0
  318. package/esm/types/utils/array.d.ts +2 -0
  319. package/esm/types/utils/array.d.ts.map +1 -0
  320. package/esm/types/utils/compare-version.d.ts +3 -0
  321. package/esm/types/utils/compare-version.d.ts.map +1 -0
  322. package/esm/types/utils/isMobile.d.ts +3 -0
  323. package/esm/types/utils/isMobile.d.ts.map +1 -0
  324. package/esm/types/utils/new-from.d.ts +3 -0
  325. package/esm/types/utils/new-from.d.ts.map +1 -0
  326. package/esm/types/utils/object.d.ts +2 -0
  327. package/esm/types/utils/object.d.ts.map +1 -0
  328. package/esm/types/utils/once.d.ts +2 -0
  329. package/esm/types/utils/once.d.ts.map +1 -0
  330. package/esm/types/utils/sdp.d.ts +13 -0
  331. package/esm/types/utils/sdp.d.ts.map +1 -0
  332. package/esm/types/utils/string.d.ts +2 -0
  333. package/esm/types/utils/string.d.ts.map +1 -0
  334. package/esm/types/utils/update-from.d.ts +3 -0
  335. package/esm/types/utils/update-from.d.ts.map +1 -0
  336. package/esm/types/utils/webrtc.d.ts +15 -0
  337. package/esm/types/utils/webrtc.d.ts.map +1 -0
  338. package/esm/types/web-rtc-client.d.ts +211 -0
  339. package/esm/types/web-rtc-client.d.ts.map +1 -0
  340. package/esm/types/websocket-client.d.ts +134 -0
  341. package/esm/types/websocket-client.d.ts.map +1 -0
  342. package/esm/utils/Emitter.js +17 -27
  343. package/esm/utils/Heartbeat.js +60 -83
  344. package/esm/utils/PhoneNumberUtil.js +48 -63
  345. package/esm/utils/__tests__/Heartbeat.test.js +59 -168
  346. package/esm/utils/__tests__/PhoneNumberUtil.test.js +55 -125
  347. package/esm/utils/__tests__/api-requester.test.js +127 -780
  348. package/esm/utils/__tests__/array.test.js +16 -19
  349. package/esm/utils/__tests__/compare-version.test.js +8 -26
  350. package/esm/utils/__tests__/object.test.js +73 -54
  351. package/esm/utils/__tests__/sdp.test.js +87 -216
  352. package/esm/utils/__tests__/string.test.js +21 -27
  353. package/esm/utils/api-requester.js +197 -675
  354. package/esm/utils/array.js +7 -11
  355. package/esm/utils/compare-version.js +12 -15
  356. package/esm/utils/isMobile.js +0 -2
  357. package/esm/utils/new-from.js +7 -12
  358. package/esm/utils/object.js +9 -23
  359. package/esm/utils/once.js +12 -13
  360. package/esm/utils/sdp.js +87 -131
  361. package/esm/utils/string.js +5 -9
  362. package/esm/utils/update-from.js +9 -16
  363. package/esm/utils/webrtc.js +35 -36
  364. package/esm/web-rtc-client.js +1974 -7676
  365. package/esm/websocket-client.js +352 -944
  366. package/lib/__tests__/api-client.test.js +199 -5067
  367. package/lib/__tests__/web-rtc-client.test.js +191 -7941
  368. package/lib/api/agentd.js +27 -837
  369. package/lib/api/amid.js +18 -415
  370. package/lib/api/application.js +64 -834
  371. package/lib/api/auth.js +166 -1222
  372. package/lib/api/call-logd.js +28 -738
  373. package/lib/api/calld.js +126 -1473
  374. package/lib/api/chatd.js +49 -1316
  375. package/lib/api/confd.js +79 -1584
  376. package/lib/api/ctid-ng.js +96 -1348
  377. package/lib/api/dird.js +105 -1596
  378. package/lib/api/webhookd.js +11 -518
  379. package/lib/api-client.js +138 -4884
  380. package/lib/checker/Checker.js +61 -8739
  381. package/lib/checker/checks/aor.js +37 -4929
  382. package/lib/checker/checks/api.js +81 -4971
  383. package/lib/checker/checks/ice-ipv4.js +66 -118
  384. package/lib/checker/checks/index.js +13 -8687
  385. package/lib/checker/checks/symmetric-nat.js +56 -104
  386. package/lib/checker/checks/wazo-websocket.js +58 -1006
  387. package/lib/checker/checks/webrtc-transport.js +41 -7853
  388. package/lib/checker/checks/webrtc.js +42 -7858
  389. package/lib/domain/AdHocAPIConference.js +80 -5116
  390. package/lib/domain/Agent.js +23 -64
  391. package/lib/domain/BadResponse.js +17 -44
  392. package/lib/domain/Call.js +108 -215
  393. package/lib/domain/CallLog.js +117 -311
  394. package/lib/domain/CallSession.js +221 -424
  395. package/lib/domain/ChatMessage.js +49 -110
  396. package/lib/domain/ChatRoom.js +28 -60
  397. package/lib/domain/Contact.js +404 -742
  398. package/lib/domain/Country.js +19 -21
  399. package/lib/domain/Device/DebugDevice.js +34 -49
  400. package/lib/domain/Device/Device.js +2 -2
  401. package/lib/domain/DirectorySource.js +2 -2
  402. package/lib/domain/ExternalApp.js +24 -56
  403. package/lib/domain/Features.js +68 -5018
  404. package/lib/domain/ForwardOption.js +36 -71
  405. package/lib/domain/IndirectTransfer.js +39 -98
  406. package/lib/domain/Line.js +35 -88
  407. package/lib/domain/Meeting.js +51 -118
  408. package/lib/domain/MeetingAuthorization.js +35 -75
  409. package/lib/domain/MeetingStatus.js +13 -29
  410. package/lib/domain/NotificationOptions.js +45 -77
  411. package/lib/domain/Phone/CTIPhone.js +283 -5755
  412. package/lib/domain/Phone/Phone.js +2 -5
  413. package/lib/domain/Phone/WebRTCPhone.js +1450 -2715
  414. package/lib/domain/Profile.js +127 -406
  415. package/lib/domain/Recording.js +28 -57
  416. package/lib/domain/Relocation.js +15 -43
  417. package/lib/domain/Room.js +73 -134
  418. package/lib/domain/SFUNotAvailableError.js +7 -9
  419. package/lib/domain/ServerError.js +14 -63
  420. package/lib/domain/Session.js +118 -251
  421. package/lib/domain/SipLine.js +70 -155
  422. package/lib/domain/Subscription.js +32 -86
  423. package/lib/domain/SwitchboardCall.js +45 -145
  424. package/lib/domain/Voicemail.js +56 -127
  425. package/lib/domain/__tests__/Agent.test.js +36 -103
  426. package/lib/domain/__tests__/Call.test.js +28 -237
  427. package/lib/domain/__tests__/CallLog.test.js +65 -392
  428. package/lib/domain/__tests__/CallSession.test.js +78 -503
  429. package/lib/domain/__tests__/Contact.test.js +224 -903
  430. package/lib/domain/__tests__/IndirectTransfer.test.js +75 -546
  431. package/lib/domain/__tests__/Line.test.js +52 -157
  432. package/lib/domain/__tests__/Meeting.test.js +78 -232
  433. package/lib/domain/__tests__/MeetingAuthorization.test.js +50 -107
  434. package/lib/domain/__tests__/Profile.test.js +161 -496
  435. package/lib/domain/__tests__/Room.test.js +239 -719
  436. package/lib/domain/__tests__/Session.test.js +350 -1024
  437. package/lib/domain/__tests__/SipLine.test.js +28 -180
  438. package/lib/domain/__tests__/Voicemail.test.js +86 -205
  439. package/lib/domain/types.js +2 -2
  440. package/lib/index.js +105 -15010
  441. package/lib/lib/WazoSessionDescriptionHandler.js +409 -898
  442. package/lib/pubkey.js +12 -0
  443. package/lib/service/CallApi.js +88 -5015
  444. package/lib/service/IssueReporter.js +264 -366
  445. package/lib/service/__tests__/IssueReporter.test.js +97 -500
  446. package/lib/service/getApiClient.js +70 -4990
  447. package/lib/simple/Auth.js +272 -14777
  448. package/lib/simple/Configuration.js +23 -14805
  449. package/lib/simple/Directory.js +18 -4966
  450. package/lib/simple/Phone.js +345 -14746
  451. package/lib/simple/Websocket.js +98 -1117
  452. package/lib/simple/index.js +151 -14800
  453. package/lib/simple/room/LocalParticipant.js +7 -14808
  454. package/lib/simple/room/Participant.js +269 -14778
  455. package/lib/simple/room/RemoteParticipant.js +11 -14806
  456. package/lib/simple/room/Room.js +655 -14761
  457. package/lib/simple/room/SipRoom.js +136 -14805
  458. package/lib/simple/room/Stream.js +43 -14802
  459. package/lib/simple/room/__tests__/Participant.test.js +79 -14879
  460. package/lib/simple/room/__tests__/RemoteParticipant.test.js +14 -14814
  461. package/lib/simple/utils.js +22 -14808
  462. package/lib/types/WebSocketMessage.js +2 -4
  463. package/lib/types/__tests__/api-client.test.d.ts +2 -0
  464. package/lib/types/__tests__/api-client.test.d.ts.map +1 -0
  465. package/lib/types/__tests__/web-rtc-client.test.d.ts +2 -0
  466. package/lib/types/__tests__/web-rtc-client.test.d.ts.map +1 -0
  467. package/lib/types/api/agentd.d.ts +17 -0
  468. package/lib/types/api/agentd.d.ts.map +1 -0
  469. package/lib/types/api/amid.d.ts +8 -0
  470. package/lib/types/api/amid.d.ts.map +1 -0
  471. package/lib/types/api/application.d.ts +34 -0
  472. package/lib/types/api/application.d.ts.map +1 -0
  473. package/lib/types/api/auth.d.ts +64 -0
  474. package/lib/types/api/auth.d.ts.map +1 -0
  475. package/lib/types/api/call-logd.d.ts +12 -0
  476. package/lib/types/api/call-logd.d.ts.map +1 -0
  477. package/lib/types/api/calld.d.ts +51 -0
  478. package/lib/types/api/calld.d.ts.map +1 -0
  479. package/lib/types/api/chatd.d.ts +42 -0
  480. package/lib/types/api/chatd.d.ts.map +1 -0
  481. package/lib/types/api/confd.d.ts +39 -0
  482. package/lib/types/api/confd.d.ts.map +1 -0
  483. package/lib/types/api/ctid-ng.d.ts +36 -0
  484. package/lib/types/api/ctid-ng.d.ts.map +1 -0
  485. package/lib/types/api/dird.d.ts +38 -0
  486. package/lib/types/api/dird.d.ts.map +1 -0
  487. package/lib/types/api/webhookd.d.ts +24 -0
  488. package/lib/types/api/webhookd.d.ts.map +1 -0
  489. package/lib/types/api-client.d.ts +63 -0
  490. package/lib/types/api-client.d.ts.map +1 -0
  491. package/lib/types/checker/Checker.d.ts +13 -0
  492. package/lib/types/checker/Checker.d.ts.map +1 -0
  493. package/lib/types/checker/checks/aor.d.ts +6 -0
  494. package/lib/types/checker/checks/aor.d.ts.map +1 -0
  495. package/lib/types/checker/checks/api.d.ts +6 -0
  496. package/lib/types/checker/checks/api.d.ts.map +1 -0
  497. package/lib/types/checker/checks/ice-ipv4.d.ts +6 -0
  498. package/lib/types/checker/checks/ice-ipv4.d.ts.map +1 -0
  499. package/lib/types/checker/checks/index.d.ts +9 -0
  500. package/lib/types/checker/checks/index.d.ts.map +1 -0
  501. package/lib/types/checker/checks/symmetric-nat.d.ts +6 -0
  502. package/lib/types/checker/checks/symmetric-nat.d.ts.map +1 -0
  503. package/lib/types/checker/checks/wazo-websocket.d.ts +6 -0
  504. package/lib/types/checker/checks/wazo-websocket.d.ts.map +1 -0
  505. package/lib/types/checker/checks/webrtc-transport.d.ts +7 -0
  506. package/lib/types/checker/checks/webrtc-transport.d.ts.map +1 -0
  507. package/lib/types/checker/checks/webrtc.d.ts +6 -0
  508. package/lib/types/checker/checks/webrtc.d.ts.map +1 -0
  509. package/lib/types/domain/AdHocAPIConference.d.ts +54 -0
  510. package/lib/types/domain/AdHocAPIConference.d.ts.map +1 -0
  511. package/lib/types/domain/Agent.d.ts +31 -0
  512. package/lib/types/domain/Agent.d.ts.map +1 -0
  513. package/lib/types/domain/BadResponse.d.ts +11 -0
  514. package/lib/types/domain/BadResponse.d.ts.map +1 -0
  515. package/lib/types/domain/Call.d.ts +79 -0
  516. package/lib/types/domain/Call.d.ts.map +1 -0
  517. package/lib/types/domain/CallLog.d.ts +91 -0
  518. package/lib/types/domain/CallLog.d.ts.map +1 -0
  519. package/lib/types/domain/CallSession.d.ts +120 -0
  520. package/lib/types/domain/CallSession.d.ts.map +1 -0
  521. package/lib/types/domain/ChatMessage.d.ts +41 -0
  522. package/lib/types/domain/ChatMessage.d.ts.map +1 -0
  523. package/lib/types/domain/ChatRoom.d.ts +22 -0
  524. package/lib/types/domain/ChatRoom.d.ts.map +1 -0
  525. package/lib/types/domain/Contact.d.ts +316 -0
  526. package/lib/types/domain/Contact.d.ts.map +1 -0
  527. package/lib/types/domain/Country.d.ts +20 -0
  528. package/lib/types/domain/Country.d.ts.map +1 -0
  529. package/lib/types/domain/Device/DebugDevice.d.ts +14 -0
  530. package/lib/types/domain/Device/DebugDevice.d.ts.map +1 -0
  531. package/lib/types/domain/Device/Device.d.ts +13 -0
  532. package/lib/types/domain/Device/Device.d.ts.map +1 -0
  533. package/lib/types/domain/DirectorySource.d.ts +13 -0
  534. package/lib/types/domain/DirectorySource.d.ts.map +1 -0
  535. package/lib/types/domain/ExternalApp.d.ts +22 -0
  536. package/lib/types/domain/ExternalApp.d.ts.map +1 -0
  537. package/lib/types/domain/Features.d.ts +24 -0
  538. package/lib/types/domain/Features.d.ts.map +1 -0
  539. package/lib/types/domain/ForwardOption.d.ts +27 -0
  540. package/lib/types/domain/ForwardOption.d.ts.map +1 -0
  541. package/lib/types/domain/IndirectTransfer.d.ts +31 -0
  542. package/lib/types/domain/IndirectTransfer.d.ts.map +1 -0
  543. package/lib/types/domain/Line.d.ts +46 -0
  544. package/lib/types/domain/Line.d.ts.map +1 -0
  545. package/lib/types/domain/Meeting.d.ts +45 -0
  546. package/lib/types/domain/Meeting.d.ts.map +1 -0
  547. package/lib/types/domain/MeetingAuthorization.d.ts +26 -0
  548. package/lib/types/domain/MeetingAuthorization.d.ts.map +1 -0
  549. package/lib/types/domain/MeetingStatus.d.ts +10 -0
  550. package/lib/types/domain/MeetingStatus.d.ts.map +1 -0
  551. package/lib/types/domain/NotificationOptions.d.ts +22 -0
  552. package/lib/types/domain/NotificationOptions.d.ts.map +1 -0
  553. package/lib/types/domain/Phone/CTIPhone.d.ts +76 -0
  554. package/lib/types/domain/Phone/CTIPhone.d.ts.map +1 -0
  555. package/lib/types/domain/Phone/Phone.d.ts +71 -0
  556. package/lib/types/domain/Phone/Phone.d.ts.map +1 -0
  557. package/lib/types/domain/Phone/WebRTCPhone.d.ts +179 -0
  558. package/lib/types/domain/Phone/WebRTCPhone.d.ts.map +1 -0
  559. package/lib/types/domain/Profile.d.ts +151 -0
  560. package/lib/types/domain/Profile.d.ts.map +1 -0
  561. package/lib/types/domain/Recording.d.ts +26 -0
  562. package/lib/types/domain/Recording.d.ts.map +1 -0
  563. package/lib/types/domain/Relocation.d.ts +23 -0
  564. package/lib/types/domain/Relocation.d.ts.map +1 -0
  565. package/lib/types/domain/Room.d.ts +35 -0
  566. package/lib/types/domain/Room.d.ts.map +1 -0
  567. package/lib/types/domain/SFUNotAvailableError.d.ts +4 -0
  568. package/lib/types/domain/SFUNotAvailableError.d.ts.map +1 -0
  569. package/lib/types/domain/ServerError.d.ts +6 -0
  570. package/lib/types/domain/ServerError.d.ts.map +1 -0
  571. package/lib/types/domain/Session.d.ts +90 -0
  572. package/lib/types/domain/Session.d.ts.map +1 -0
  573. package/lib/types/domain/SipLine.d.ts +54 -0
  574. package/lib/types/domain/SipLine.d.ts.map +1 -0
  575. package/lib/types/domain/Subscription.d.ts +43 -0
  576. package/lib/types/domain/Subscription.d.ts.map +1 -0
  577. package/lib/types/domain/SwitchboardCall.d.ts +62 -0
  578. package/lib/types/domain/SwitchboardCall.d.ts.map +1 -0
  579. package/lib/types/domain/Voicemail.d.ts +50 -0
  580. package/lib/types/domain/Voicemail.d.ts.map +1 -0
  581. package/lib/types/domain/__tests__/Agent.test.d.ts +2 -0
  582. package/lib/types/domain/__tests__/Agent.test.d.ts.map +1 -0
  583. package/lib/types/domain/__tests__/Call.test.d.ts +2 -0
  584. package/lib/types/domain/__tests__/Call.test.d.ts.map +1 -0
  585. package/lib/types/domain/__tests__/CallLog.test.d.ts +2 -0
  586. package/lib/types/domain/__tests__/CallLog.test.d.ts.map +1 -0
  587. package/lib/types/domain/__tests__/CallSession.test.d.ts +2 -0
  588. package/lib/types/domain/__tests__/CallSession.test.d.ts.map +1 -0
  589. package/lib/types/domain/__tests__/Contact.test.d.ts +2 -0
  590. package/lib/types/domain/__tests__/Contact.test.d.ts.map +1 -0
  591. package/lib/types/domain/__tests__/IndirectTransfer.test.d.ts +2 -0
  592. package/lib/types/domain/__tests__/IndirectTransfer.test.d.ts.map +1 -0
  593. package/lib/types/domain/__tests__/Line.test.d.ts +2 -0
  594. package/lib/types/domain/__tests__/Line.test.d.ts.map +1 -0
  595. package/lib/types/domain/__tests__/Meeting.test.d.ts +2 -0
  596. package/lib/types/domain/__tests__/Meeting.test.d.ts.map +1 -0
  597. package/lib/types/domain/__tests__/MeetingAuthorization.test.d.ts +2 -0
  598. package/lib/types/domain/__tests__/MeetingAuthorization.test.d.ts.map +1 -0
  599. package/lib/types/domain/__tests__/Profile.test.d.ts +2 -0
  600. package/lib/types/domain/__tests__/Profile.test.d.ts.map +1 -0
  601. package/lib/types/domain/__tests__/Room.test.d.ts +2 -0
  602. package/lib/types/domain/__tests__/Room.test.d.ts.map +1 -0
  603. package/lib/types/domain/__tests__/Session.test.d.ts +2 -0
  604. package/lib/types/domain/__tests__/Session.test.d.ts.map +1 -0
  605. package/lib/types/domain/__tests__/SipLine.test.d.ts +2 -0
  606. package/lib/types/domain/__tests__/SipLine.test.d.ts.map +1 -0
  607. package/lib/types/domain/__tests__/Voicemail.test.d.ts +2 -0
  608. package/lib/types/domain/__tests__/Voicemail.test.d.ts.map +1 -0
  609. package/lib/types/domain/types.d.ts +217 -0
  610. package/lib/types/domain/types.d.ts.map +1 -0
  611. package/lib/types/index.d.ts +304 -0
  612. package/lib/types/index.d.ts.map +1 -0
  613. package/lib/types/lib/WazoSessionDescriptionHandler.d.ts +30 -0
  614. package/lib/types/lib/WazoSessionDescriptionHandler.d.ts.map +1 -0
  615. package/lib/types/pubkey.d.ts +3 -0
  616. package/lib/types/pubkey.d.ts.map +1 -0
  617. package/lib/types/service/CallApi.d.ts +28 -0
  618. package/lib/types/service/CallApi.d.ts.map +1 -0
  619. package/lib/types/service/IssueReporter.d.ts +40 -0
  620. package/lib/types/service/IssueReporter.d.ts.map +1 -0
  621. package/lib/types/service/__tests__/IssueReporter.test.d.ts +2 -0
  622. package/lib/types/service/__tests__/IssueReporter.test.d.ts.map +1 -0
  623. package/lib/types/service/getApiClient.d.ts +16 -0
  624. package/lib/types/service/getApiClient.d.ts.map +1 -0
  625. package/lib/types/simple/Auth.d.ts +51 -0
  626. package/lib/types/simple/Auth.d.ts.map +1 -0
  627. package/lib/types/simple/Configuration.d.ts +3 -0
  628. package/lib/types/simple/Configuration.d.ts.map +1 -0
  629. package/lib/types/simple/Directory.d.ts +3 -0
  630. package/lib/types/simple/Directory.d.ts.map +1 -0
  631. package/lib/types/simple/Phone.d.ts +115 -0
  632. package/lib/types/simple/Phone.d.ts.map +1 -0
  633. package/lib/types/simple/Websocket.d.ts +19 -0
  634. package/lib/types/simple/Websocket.d.ts.map +1 -0
  635. package/lib/types/simple/index.d.ts +147 -0
  636. package/lib/types/simple/index.d.ts.map +1 -0
  637. package/lib/types/simple/room/LocalParticipant.d.ts +5 -0
  638. package/lib/types/simple/room/LocalParticipant.d.ts.map +1 -0
  639. package/lib/types/simple/room/Participant.d.ts +76 -0
  640. package/lib/types/simple/room/Participant.d.ts.map +1 -0
  641. package/lib/types/simple/room/RemoteParticipant.d.ts +7 -0
  642. package/lib/types/simple/room/RemoteParticipant.d.ts.map +1 -0
  643. package/lib/types/simple/room/Room.d.ts +116 -0
  644. package/lib/types/simple/room/Room.d.ts.map +1 -0
  645. package/lib/types/simple/room/SipRoom.d.ts +14 -0
  646. package/lib/types/simple/room/SipRoom.d.ts.map +1 -0
  647. package/lib/types/simple/room/Stream.d.ts +13 -0
  648. package/lib/types/simple/room/Stream.d.ts.map +1 -0
  649. package/lib/types/simple/room/__tests__/Participant.test.d.ts +2 -0
  650. package/lib/types/simple/room/__tests__/Participant.test.d.ts.map +1 -0
  651. package/lib/types/simple/room/__tests__/RemoteParticipant.test.d.ts +2 -0
  652. package/lib/types/simple/room/__tests__/RemoteParticipant.test.d.ts.map +1 -0
  653. package/lib/types/simple/utils.d.ts +3 -0
  654. package/lib/types/simple/utils.d.ts.map +1 -0
  655. package/lib/types/types/WebSocketMessage.d.ts +285 -0
  656. package/lib/types/types/WebSocketMessage.d.ts.map +1 -0
  657. package/lib/types/utils/Emitter.d.ts +18 -0
  658. package/lib/types/utils/Emitter.d.ts.map +1 -0
  659. package/lib/types/utils/Heartbeat.d.ts +21 -0
  660. package/lib/types/utils/Heartbeat.d.ts.map +1 -0
  661. package/lib/types/utils/PhoneNumberUtil.d.ts +8 -0
  662. package/lib/types/utils/PhoneNumberUtil.d.ts.map +1 -0
  663. package/lib/types/utils/__tests__/Heartbeat.test.d.ts +2 -0
  664. package/lib/types/utils/__tests__/Heartbeat.test.d.ts.map +1 -0
  665. package/lib/types/utils/__tests__/PhoneNumberUtil.test.d.ts +2 -0
  666. package/lib/types/utils/__tests__/PhoneNumberUtil.test.d.ts.map +1 -0
  667. package/lib/types/utils/__tests__/api-requester.test.d.ts +2 -0
  668. package/lib/types/utils/__tests__/api-requester.test.d.ts.map +1 -0
  669. package/lib/types/utils/__tests__/array.test.d.ts +2 -0
  670. package/lib/types/utils/__tests__/array.test.d.ts.map +1 -0
  671. package/lib/types/utils/__tests__/compare-version.test.d.ts +2 -0
  672. package/lib/types/utils/__tests__/compare-version.test.d.ts.map +1 -0
  673. package/lib/types/utils/__tests__/object.test.d.ts +2 -0
  674. package/lib/types/utils/__tests__/object.test.d.ts.map +1 -0
  675. package/lib/types/utils/__tests__/sdp.test.d.ts +2 -0
  676. package/lib/types/utils/__tests__/sdp.test.d.ts.map +1 -0
  677. package/lib/types/utils/__tests__/string.test.d.ts +2 -0
  678. package/lib/types/utils/__tests__/string.test.d.ts.map +1 -0
  679. package/lib/types/utils/api-requester.d.ts +45 -0
  680. package/lib/types/utils/api-requester.d.ts.map +1 -0
  681. package/lib/types/utils/array.d.ts +2 -0
  682. package/lib/types/utils/array.d.ts.map +1 -0
  683. package/lib/types/utils/compare-version.d.ts +3 -0
  684. package/lib/types/utils/compare-version.d.ts.map +1 -0
  685. package/lib/types/utils/isMobile.d.ts +3 -0
  686. package/lib/types/utils/isMobile.d.ts.map +1 -0
  687. package/lib/types/utils/new-from.d.ts +3 -0
  688. package/lib/types/utils/new-from.d.ts.map +1 -0
  689. package/lib/types/utils/object.d.ts +2 -0
  690. package/lib/types/utils/object.d.ts.map +1 -0
  691. package/lib/types/utils/once.d.ts +2 -0
  692. package/lib/types/utils/once.d.ts.map +1 -0
  693. package/lib/types/utils/sdp.d.ts +13 -0
  694. package/lib/types/utils/sdp.d.ts.map +1 -0
  695. package/lib/types/utils/string.d.ts +2 -0
  696. package/lib/types/utils/string.d.ts.map +1 -0
  697. package/lib/types/utils/update-from.d.ts +3 -0
  698. package/lib/types/utils/update-from.d.ts.map +1 -0
  699. package/lib/types/utils/webrtc.d.ts +15 -0
  700. package/lib/types/utils/webrtc.d.ts.map +1 -0
  701. package/lib/types/web-rtc-client.d.ts +211 -0
  702. package/lib/types/web-rtc-client.d.ts.map +1 -0
  703. package/lib/types/websocket-client.d.ts +134 -0
  704. package/lib/types/websocket-client.d.ts.map +1 -0
  705. package/lib/utils/Emitter.js +22 -33
  706. package/lib/utils/Heartbeat.js +54 -86
  707. package/lib/utils/PhoneNumberUtil.js +60 -77
  708. package/lib/utils/__tests__/Heartbeat.test.js +73 -170
  709. package/lib/utils/__tests__/PhoneNumberUtil.test.js +57 -131
  710. package/lib/utils/__tests__/api-requester.test.js +139 -784
  711. package/lib/utils/__tests__/array.test.js +18 -21
  712. package/lib/utils/__tests__/compare-version.test.js +12 -27
  713. package/lib/utils/__tests__/object.test.js +75 -56
  714. package/lib/utils/__tests__/sdp.test.js +99 -220
  715. package/lib/utils/__tests__/string.test.js +23 -29
  716. package/lib/utils/api-requester.js +191 -685
  717. package/lib/utils/array.js +10 -14
  718. package/lib/utils/compare-version.js +15 -18
  719. package/lib/utils/isMobile.js +3 -5
  720. package/lib/utils/new-from.js +9 -14
  721. package/lib/utils/object.js +12 -26
  722. package/lib/utils/once.js +15 -15
  723. package/lib/utils/sdp.js +97 -150
  724. package/lib/utils/string.js +8 -12
  725. package/lib/utils/update-from.js +11 -18
  726. package/lib/utils/webrtc.js +38 -39
  727. package/lib/web-rtc-client.js +2001 -7695
  728. package/lib/websocket-client.js +357 -1021
  729. package/package.json +40 -34
  730. package/src/__tests__/{api-client.test.js → api-client.test.ts} +71 -29
  731. package/src/__tests__/{web-rtc-client.test.js → web-rtc-client.test.ts} +95 -35
  732. package/src/api/agentd.ts +37 -0
  733. package/src/api/amid.ts +16 -0
  734. package/src/api/application.ts +96 -0
  735. package/src/api/auth.ts +259 -0
  736. package/src/api/call-logd.ts +38 -0
  737. package/src/api/calld.ts +183 -0
  738. package/src/api/chatd.ts +83 -0
  739. package/src/api/confd.ts +110 -0
  740. package/src/api/ctid-ng.ts +152 -0
  741. package/src/api/dird.ts +146 -0
  742. package/src/api/webhookd.ts +30 -0
  743. package/src/{api-client.js → api-client.ts} +99 -65
  744. package/src/checker/{Checker.js → Checker.ts} +27 -20
  745. package/src/checker/checks/{aor.js → aor.ts} +10 -6
  746. package/src/checker/checks/{api.js → api.ts} +18 -17
  747. package/src/checker/checks/{ice-ipv4.js → ice-ipv4.ts} +23 -26
  748. package/src/checker/checks/{index.js → index.ts} +1 -9
  749. package/src/checker/checks/{symmetric-nat.js → symmetric-nat.ts} +14 -15
  750. package/src/checker/checks/{wazo-websocket.js → wazo-websocket.ts} +7 -5
  751. package/src/checker/checks/{webrtc-transport.js → webrtc-transport.ts} +3 -2
  752. package/src/checker/checks/{webrtc.js → webrtc.ts} +3 -4
  753. package/src/domain/{AdHocAPIConference.js → AdHocAPIConference.ts} +38 -54
  754. package/src/domain/{Agent.js → Agent.ts} +11 -7
  755. package/src/domain/BadResponse.ts +29 -0
  756. package/src/domain/{Call.js → Call.ts} +62 -46
  757. package/src/domain/{CallLog.js → CallLog.ts} +61 -63
  758. package/src/domain/{CallSession.js → CallSession.ts} +55 -52
  759. package/src/domain/{ChatMessage.js → ChatMessage.ts} +32 -21
  760. package/src/domain/{ChatRoom.js → ChatRoom.ts} +15 -11
  761. package/src/domain/{Contact.js → Contact.ts} +373 -261
  762. package/src/domain/{Country.js → Country.ts} +0 -0
  763. package/src/domain/Device/{DebugDevice.js → DebugDevice.ts} +3 -5
  764. package/src/domain/Device/{Device.js → Device.ts} +0 -11
  765. package/src/domain/DirectorySource.ts +13 -0
  766. package/src/domain/{ExternalApp.js → ExternalApp.ts} +14 -13
  767. package/src/domain/{Features.js → Features.ts} +43 -17
  768. package/src/domain/{ForwardOption.js → ForwardOption.ts} +16 -16
  769. package/src/domain/{IndirectTransfer.js → IndirectTransfer.ts} +21 -19
  770. package/src/domain/{Line.js → Line.ts} +39 -26
  771. package/src/domain/{Meeting.js → Meeting.ts} +36 -29
  772. package/src/domain/{MeetingAuthorization.js → MeetingAuthorization.ts} +13 -12
  773. package/src/domain/{MeetingStatus.js → MeetingStatus.ts} +2 -6
  774. package/src/domain/{NotificationOptions.js → NotificationOptions.ts} +14 -13
  775. package/src/domain/Phone/{CTIPhone.js → CTIPhone.ts} +90 -60
  776. package/src/domain/Phone/{Phone.js → Phone.ts} +27 -72
  777. package/src/domain/Phone/{WebRTCPhone.js → WebRTCPhone.ts} +441 -413
  778. package/src/domain/{Profile.js → Profile.ts} +117 -100
  779. package/src/domain/{Recording.js → Recording.ts} +25 -16
  780. package/src/domain/{Relocation.js → Relocation.ts} +15 -14
  781. package/src/domain/{Room.js → Room.ts} +58 -27
  782. package/src/domain/{SFUNotAvailableError.js → SFUNotAvailableError.ts} +2 -2
  783. package/src/domain/ServerError.ts +12 -0
  784. package/src/domain/{Session.js → Session.ts} +89 -67
  785. package/src/domain/{SipLine.js → SipLine.ts} +52 -45
  786. package/src/domain/{Subscription.js → Subscription.ts} +22 -13
  787. package/src/domain/{SwitchboardCall.js → SwitchboardCall.ts} +48 -43
  788. package/src/domain/{Voicemail.js → Voicemail.ts} +38 -34
  789. package/src/domain/__tests__/{Agent.test.js → Agent.test.ts} +11 -19
  790. package/src/domain/__tests__/{Call.test.js → Call.test.ts} +12 -9
  791. package/src/domain/__tests__/CallLog.test.ts +65 -0
  792. package/src/domain/__tests__/{CallSession.test.js → CallSession.test.ts} +15 -19
  793. package/src/domain/__tests__/Contact.test.ts +238 -0
  794. package/src/domain/__tests__/{IndirectTransfer.test.js → IndirectTransfer.test.ts} +38 -31
  795. package/src/domain/__tests__/Line.test.ts +53 -0
  796. package/src/domain/__tests__/{Meeting.test.js → Meeting.test.ts} +12 -38
  797. package/src/domain/__tests__/{MeetingAuthorization.test.js → MeetingAuthorization.test.ts} +13 -21
  798. package/src/domain/__tests__/Profile.test.ts +139 -0
  799. package/src/domain/__tests__/{Room.test.js → Room.test.ts} +114 -76
  800. package/src/domain/__tests__/{Session.test.js → Session.test.ts} +137 -162
  801. package/src/domain/__tests__/{SipLine.test.js → SipLine.test.ts} +7 -3
  802. package/src/domain/__tests__/{Voicemail.test.js → Voicemail.test.ts} +26 -20
  803. package/src/domain/types.ts +227 -0
  804. package/src/{index.js → index.ts} +4 -28
  805. package/src/lib/WazoSessionDescriptionHandler.ts +534 -0
  806. package/{config.js → src/pubkey.ts} +3 -3
  807. package/src/service/{CallApi.js → CallApi.ts} +14 -18
  808. package/src/service/{IssueReporter.js → IssueReporter.ts} +105 -56
  809. package/src/service/__tests__/{IssueReporter.test.js → IssueReporter.test.ts} +27 -23
  810. package/src/service/getApiClient.ts +94 -0
  811. package/src/simple/{Auth.js → Auth.ts} +129 -100
  812. package/src/simple/{Configuration.js → Configuration.ts} +2 -3
  813. package/src/simple/{Directory.js → Directory.ts} +2 -3
  814. package/src/simple/Phone.ts +623 -0
  815. package/src/simple/Websocket.ts +119 -0
  816. package/src/simple/{index.js → index.ts} +51 -21
  817. package/src/simple/room/{LocalParticipant.js → LocalParticipant.ts} +1 -3
  818. package/src/simple/room/{Participant.js → Participant.ts} +108 -46
  819. package/src/simple/room/{RemoteParticipant.js → RemoteParticipant.ts} +5 -4
  820. package/src/simple/room/{Room.js → Room.ts} +266 -183
  821. package/src/simple/room/{SipRoom.js → SipRoom.ts} +46 -29
  822. package/src/simple/room/{Stream.js → Stream.ts} +8 -6
  823. package/src/simple/room/__tests__/{Participant.test.js → Participant.test.ts} +9 -15
  824. package/src/simple/room/__tests__/{RemoteParticipant.test.js → RemoteParticipant.test.ts} +5 -1
  825. package/src/simple/utils.ts +12 -0
  826. package/src/types/WebSocketMessage.ts +335 -0
  827. package/src/types/global.d.ts +26 -0
  828. package/src/utils/Emitter.ts +34 -0
  829. package/src/utils/{Heartbeat.js → Heartbeat.ts} +17 -11
  830. package/src/utils/{PhoneNumberUtil.js → PhoneNumberUtil.ts} +12 -18
  831. package/src/utils/__tests__/{Heartbeat.test.js → Heartbeat.test.ts} +0 -15
  832. package/src/utils/__tests__/{PhoneNumberUtil.test.js → PhoneNumberUtil.test.ts} +6 -4
  833. package/src/utils/__tests__/{api-requester.test.js → api-requester.test.ts} +75 -24
  834. package/src/utils/__tests__/{array.test.js → array.test.ts} +10 -2
  835. package/src/utils/__tests__/{compare-version.test.js → compare-version.test.ts} +0 -0
  836. package/src/utils/__tests__/object.test.ts +77 -0
  837. package/src/utils/__tests__/{sdp.test.js → sdp.test.ts} +15 -37
  838. package/src/utils/__tests__/{string.test.js → string.test.ts} +4 -2
  839. package/src/utils/{api-requester.js → api-requester.ts} +104 -83
  840. package/src/utils/{array.js → array.ts} +2 -2
  841. package/src/utils/{compare-version.js → compare-version.ts} +3 -2
  842. package/src/utils/{isMobile.js → isMobile.ts} +1 -1
  843. package/src/utils/{new-from.js → new-from.ts} +3 -6
  844. package/src/utils/{object.js → object.ts} +3 -6
  845. package/src/utils/{once.js → once.ts} +5 -5
  846. package/src/utils/sdp.ts +119 -0
  847. package/src/utils/{string.js → string.ts} +2 -3
  848. package/src/utils/update-from.ts +11 -0
  849. package/src/utils/{webrtc.js → webrtc.ts} +21 -3
  850. package/src/{web-rtc-client.js → web-rtc-client.ts} +793 -463
  851. package/src/{websocket-client.js → websocket-client.ts} +146 -144
  852. package/esm/simple/Softphone.js +0 -394
  853. package/lib/simple/Softphone.js +0 -396
  854. package/src/api/agentd.js +0 -74
  855. package/src/api/amid.js +0 -13
  856. package/src/api/application.js +0 -137
  857. package/src/api/auth.js +0 -279
  858. package/src/api/call-logd.js +0 -20
  859. package/src/api/calld.js +0 -214
  860. package/src/api/chatd.js +0 -80
  861. package/src/api/confd.js +0 -127
  862. package/src/api/ctid-ng.js +0 -153
  863. package/src/api/dird.js +0 -159
  864. package/src/api/webhookd.js +0 -31
  865. package/src/domain/BadResponse.js +0 -42
  866. package/src/domain/DirectorySource.js +0 -16
  867. package/src/domain/ServerError.js +0 -18
  868. package/src/domain/__tests__/CallLog.test.js +0 -75
  869. package/src/domain/__tests__/Contact.test.js +0 -170
  870. package/src/domain/__tests__/Line.test.js +0 -73
  871. package/src/domain/__tests__/Profile.test.js +0 -104
  872. package/src/domain/types.js +0 -248
  873. package/src/lib/WazoSessionDescriptionHandler.js +0 -467
  874. package/src/service/getApiClient.js +0 -122
  875. package/src/simple/Phone.js +0 -425
  876. package/src/simple/Softphone.js +0 -392
  877. package/src/simple/Websocket.js +0 -86
  878. package/src/simple/utils.js +0 -17
  879. package/src/types/WebSocketMessage.js +0 -232
  880. package/src/utils/Emitter.js +0 -26
  881. package/src/utils/__tests__/object.test.js +0 -35
  882. package/src/utils/sdp.js +0 -140
  883. package/src/utils/update-from.js +0 -15
@@ -1,966 +1,374 @@
1
+ /* eslint-disable no-underscore-dangle */
1
2
  import ReconnectingWebSocket from 'reconnecting-websocket';
2
- import EventEmitter from 'events';
3
- import moment from 'moment';
4
- import 'js-base64';
5
-
6
- //
7
-
8
- class Emitter {
9
-
10
-
11
- constructor() {
12
- this.eventEmitter = new EventEmitter();
13
- }
14
-
15
- on(event , callback ) {
16
- this.eventEmitter.on(event, callback);
17
- }
18
-
19
- once(event , callback ) {
20
- this.eventEmitter.once(event, callback);
21
- }
22
-
23
- off(event , callback ) {
24
- this.eventEmitter.removeListener(event, callback);
25
- }
26
-
27
- unbind() {
28
- this.eventEmitter.removeAllListeners();
29
- }
30
- }
31
-
32
- /* */
33
- /* global navigator */
34
- const isMobile = () => typeof navigator !== 'undefined' && navigator.product === 'ReactNative';
35
-
36
- /* */
37
-
38
- IssueReporter$1 ? IssueReporter$1.loggerFor('api') : console;
39
-
40
- // Use a function here to be able to mock it in tests
41
- const realFetch = () => {
42
- if (typeof document !== 'undefined' && window.fetch) {
43
- // Browser
44
- return window.fetch;
45
- }
46
-
47
- if (isMobile()) {
48
- // React native
49
- return fetch;
50
- }
51
-
52
- // nodejs
53
- // this package is disable for react-native in package.json because it requires nodejs modules
54
- // Used to trick the optimizer to avoid requiring `node-fetch/lib/index` directly
55
- // It causes to require it on browsers when delivered by a nodejs engine (cf: vitejs).
56
- try {
57
- // $FlowFixMe
58
- return require(Math.random() >= 0 ? 'node-fetch/lib/index' : '');
59
- } catch (e) {
60
- return fetch;
61
- }
3
+ import Emitter from './utils/Emitter';
4
+ import IssueReporter from './service/IssueReporter';
5
+ import Heartbeat from './utils/Heartbeat';
6
+ export const SOCKET_EVENTS = {
7
+ ON_OPEN: 'onopen',
8
+ ON_MESSAGE: 'onmessage',
9
+ ON_ERROR: 'onerror',
10
+ ON_CLOSE: 'onclose',
11
+ INITIALIZED: 'initialized',
12
+ ON_AUTH_FAILED: 'on_auth_failed',
62
13
  };
63
-
64
- /* global window */
65
-
66
- const TRACE = 'trace';
67
- const DEBUG = 'debug';
68
- const INFO = 'info';
69
- const LOG = 'log';
70
- const WARN = 'warn';
71
- const ERROR = 'error';
72
- const CONSOLE_METHODS = [INFO, LOG, WARN, ERROR];
73
- const LOG_LEVELS = [TRACE, DEBUG, INFO, LOG, WARN, ERROR];
74
- const CATEGORY_PREFIX = 'logger-category=';
75
-
76
- const MAX_REMOTE_RETRY = 100;
77
-
78
- const addLevelsTo = (instance , withMethods = false) => {
79
- instance.TRACE = TRACE;
80
- instance.DEBUG = DEBUG;
81
- instance.INFO = INFO;
82
- instance.LOG = LOG;
83
- instance.WARN = WARN;
84
- instance.ERROR = ERROR;
85
-
86
- if (withMethods) {
87
- instance.trace = (...args) => instance.apply(null, [TRACE, ...args]);
88
- instance.debug = (...args) => instance.apply(null, [DEBUG, ...args]);
89
- instance.info = (...args) => instance.apply(null, [INFO, ...args]);
90
- instance.log = (...args) => instance.apply(null, [LOG, ...args]);
91
- instance.warn = (...args) => instance.apply(null, [WARN, ...args]);
92
- instance.error = (...args) => instance.apply(null, [ERROR, ...args]);
93
- }
94
-
95
- return instance;
96
- };
97
-
98
- const safeStringify = (object ) => {
99
- const result = '{"message": "Not parsable JSON"}';
100
- try {
101
- return JSON.stringify(object);
102
- } catch (e) {
103
- // Nothing to do
104
- }
105
-
106
- return result;
107
- };
108
-
109
- class IssueReporter {
110
-
111
-
112
-
113
-
114
-
115
-
116
-
117
-
118
-
119
-
120
-
121
-
122
-
123
-
124
-
125
-
126
- constructor() {
127
- addLevelsTo(this);
128
-
129
- this.oldConsoleMethods = null;
130
- this.enabled = false;
131
- this.remoteClientConfiguration = null;
132
- this.buffer = [];
133
- this.bufferTimeout = null;
134
- this._boundProcessBuffer = this._processBuffer.bind(this);
135
- this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
136
- this._callback = null;
137
- }
138
-
139
- init() {
140
- this._catchConsole();
141
- }
142
-
143
- setCallback(cb ) {
144
- this._callback = cb;
145
- }
146
-
147
- configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
148
- this.remoteClientConfiguration = configuration;
149
- }
150
-
151
- enable() {
152
- if (!this.oldConsoleMethods) {
153
- this.init();
154
- }
155
-
156
- this.enabled = true;
157
- }
158
-
159
- disable() {
160
- this.enabled = false;
161
- }
162
-
163
- loggerFor(category ) {
164
- const logger = (level , ...args ) => {
165
- this.log.apply(this, [level, this._makeCategory(category), ...args]);
166
- };
167
-
168
- return addLevelsTo(logger, true);
169
- }
170
-
171
- removeSlashes(str ) {
172
- return str.replace(/"/g, "'").replace(/\\/g, '');
173
- }
174
-
175
- log(level , ...args ) {
176
- if (!this.enabled) {
177
- return;
178
- }
179
-
180
- // Handle category label
181
- let category = null;
182
- let skipSendToRemote = false;
183
- let extra = {};
184
- if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
185
- category = args[0].split('=')[1];
186
- // eslint-disable-next-line no-param-reassign
187
- args.splice(0, 1);
188
- }
189
-
190
- // Handle extra data as object for the last argument
191
- const lastArg = args[args.length - 1];
192
- if (lastArg && ((typeof lastArg === 'object' && Object.keys(lastArg).length) || lastArg instanceof Error)) {
193
- if (lastArg instanceof Error) {
194
- extra = {
195
- errorMessage: lastArg.message,
196
- errorStack: lastArg.stack,
197
- errorType: lastArg.constructor.name,
198
- skipSendToRemote: lastArg.skipSendToRemote,
14
+ export const AUTH_SESSION_EXPIRE_SOON = 'auth_session_expire_soon';
15
+ export const FAVORITE_ADDED = 'favorite_added';
16
+ export const FAVORITE_DELETED = 'favorite_deleted';
17
+ export const USER_STATUS_UPDATE = 'user_status_update';
18
+ export const CHAT_MESSAGE_SENT = 'chat_message_sent';
19
+ export const CHAT_MESSAGE_RECEIVED = 'chat_message_received';
20
+ export const ENDPOINT_STATUS_UPDATE = 'endpoint_status_update';
21
+ export const USERS_FORWARDS_BUSY_UPDATED = 'users_forwards_busy_updated';
22
+ export const USERS_FORWARDS_NOANSWER_UPDATED = 'users_forwards_noanswer_updated';
23
+ export const USERS_FORWARDS_UNCONDITIONAL_UPDATED = 'users_forwards_unconditional_updated';
24
+ export const USERS_SERVICES_DND_UPDATED = 'users_services_dnd_updated';
25
+ export const USER_VOICEMAIL_MESSAGE_CREATED = 'user_voicemail_message_created';
26
+ export const USER_VOICEMAIL_MESSAGE_UPDATED = 'user_voicemail_message_updated';
27
+ export const USER_VOICEMAIL_MESSAGE_DELETED = 'user_voicemail_message_deleted';
28
+ export const CALL_LOG_USER_CREATED = 'call_log_user_created';
29
+ export const CALL_CREATED = 'call_created';
30
+ export const CALL_ANSWERED = 'call_answered';
31
+ export const CALL_DTMF_CREATED = 'call_dtmf_created';
32
+ export const CALL_ENDED = 'call_ended';
33
+ export const CALL_UPDATED = 'call_updated';
34
+ export const CALL_HELD = 'call_held';
35
+ export const CALL_RESUMED = 'call_resumed';
36
+ export const AUTH_USER_EXTERNAL_AUTH_ADDED = 'auth_user_external_auth_added';
37
+ export const AUTH_USER_EXTERNAL_AUTH_DELETED = 'auth_user_external_auth_deleted';
38
+ export const CHATD_PRESENCE_UPDATED = 'chatd_presence_updated';
39
+ export const CHATD_USER_ROOM_MESSAGE_CREATED = 'chatd_user_room_message_created';
40
+ export const CHATD_USER_ROOM_CREATED = 'chatd_user_room_created';
41
+ export const CONFERENCE_USER_PARTICIPANT_JOINED = 'conference_user_participant_joined';
42
+ export const CONFERENCE_USER_PARTICIPANT_LEFT = 'conference_user_participant_left';
43
+ export const CONFERENCE_USER_PARTICIPANT_TALK_STARTED = 'conference_user_participant_talk_started';
44
+ export const CONFERENCE_USER_PARTICIPANT_TALK_STOPPED = 'conference_user_participant_talk_stopped';
45
+ export const MEETING_USER_PARTICIPANT_JOINED = 'meeting_user_participant_joined';
46
+ export const MEETING_USER_PARTICIPANT_LEFT = 'meeting_user_participant_left';
47
+ export const SWITCHBOARD_QUEUED_CALLS_UPDATED = 'switchboard_queued_calls_updated';
48
+ export const SWITCHBOARD_QUEUED_CALL_ANSWERED = 'switchboard_queued_call_answered';
49
+ export const SWITCHBOARD_HELD_CALLS_UPDATED = 'switchboard_held_calls_updated';
50
+ export const SWITCHBOARD_HELD_CALL_ANSWERED = 'switchboard_held_call_answered';
51
+ export const FAX_OUTBOUND_USER_CREATED = 'fax_outbound_user_created';
52
+ export const FAX_OUTBOUND_USER_SUCCEEDED = 'fax_outbound_user_succeeded';
53
+ export const FAX_OUTBOUND_USER_FAILED = 'fax_outbound_user_failed';
54
+ export const APPLICATION_CALL_DTMF_RECEIVED = 'application_call_dtmf_received';
55
+ export const APPLICATION_CALL_ENTERED = 'application_call_entered';
56
+ export const APPLICATION_CALL_INITIATED = 'application_call_initiated';
57
+ export const APPLICATION_CALL_DELETED = 'application_call_deleted';
58
+ export const APPLICATION_CALL_UPDATED = 'application_call_updated';
59
+ export const APPLICATION_CALL_ANSWERED = 'application_call_answered';
60
+ export const APPLICATION_PROGRESS_STARTED = 'application_progress_started';
61
+ export const APPLICATION_PROGRESS_STOPPED = 'application_progress_stopped';
62
+ export const APPLICATION_DESTINATION_NODE_CREATED = 'application_destination_node_created';
63
+ export const APPLICATION_NODE_CREATED = 'application_node_created';
64
+ export const APPLICATION_NODE_DELETED = 'application_node_deleted';
65
+ export const APPLICATION_NODE_UPDATED = 'application_node_updated';
66
+ export const APPLICATION_PLAYBACK_CREATED = 'application_playback_created';
67
+ export const APPLICATION_PLAYBACK_DELETED = 'application_playback_deleted';
68
+ export const APPLICATION_SNOOP_CREATED = 'application_snoop_created';
69
+ export const APPLICATION_SNOOP_DELETED = 'application_snoop_deleted';
70
+ export const APPLICATION_SNOOP_UPDATED = 'application_snoop_updated';
71
+ export const APPLICATION_USER_OUTGOING_CALL_CREATED = 'application_user_outgoing_call_created';
72
+ export const TRUNK_STATUS_UPDATED = 'trunk_status_updated';
73
+ export const LINE_STATUS_UPDATED = 'line_status_updated';
74
+ export const AGENT_STATUS_UPDATE = 'agent_status_update';
75
+ export const AGENT_PAUSED = 'agent_paused';
76
+ export const AGENT_UNPAUSED = 'agent_unpaused';
77
+ export const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
78
+ export const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
79
+ export const MEETING_USER_PROGRESS = 'meeting_user_progress';
80
+ export const MEETING_USER_GUEST_AUTHORIZATION_CREATED = 'meeting_user_guest_authorization_created';
81
+ const BLACKLIST_EVENTS = [CHAT_MESSAGE_SENT, CHAT_MESSAGE_RECEIVED, CHATD_USER_ROOM_MESSAGE_CREATED, CHATD_USER_ROOM_CREATED];
82
+ export const HEARTBEAT_ENGINE_VERSION = '20.09';
83
+ const logger = IssueReporter.loggerFor('wazo-ws');
84
+ const messageLogger = IssueReporter.loggerFor('wazo-ws-message');
85
+ class WebSocketClient extends Emitter {
86
+ initialized;
87
+ host;
88
+ version;
89
+ token;
90
+ events;
91
+ options;
92
+ socket;
93
+ _boundOnHeartbeat;
94
+ heartbeat;
95
+ onHeartBeatTimeout;
96
+ heartbeatCb;
97
+ eventLists;
98
+ static eventLists;
99
+ /**
100
+ *
101
+ * @param host
102
+ * @param token
103
+ * @param events
104
+ * @param version
105
+ * @param heartbeat
106
+ * @param options @see https://github.com/pladaria/reconnecting-websocket#available-options
107
+ */
108
+ constructor({ host, token, version, events, heartbeat, }, options = {
109
+ host,
110
+ token,
111
+ version: 1,
112
+ events: [],
113
+ heartbeat: {},
114
+ }) {
115
+ super();
116
+ this.initialized = false;
117
+ this.socket = null;
118
+ this.host = host;
119
+ this.token = token;
120
+ this.events = events;
121
+ this.options = options;
122
+ this.version = version;
123
+ this._boundOnHeartbeat = this._onHeartbeat.bind(this);
124
+ const { delay, timeout, max, } = heartbeat || {};
125
+ this.heartbeat = new Heartbeat(delay, timeout, max);
126
+ this.heartbeat.setSendHeartbeat(this.pingServer.bind(this));
127
+ this.heartbeat.setOnHeartbeatTimeout(this._onHeartbeatTimeout.bind(this));
128
+ this.eventLists = WebSocketClient.eventLists;
129
+ }
130
+ connect() {
131
+ logger.info('connect method started', {
132
+ host: this.host,
133
+ token: this.token,
134
+ });
135
+ this.socket = new ReconnectingWebSocket(this._getUrl.bind(this), [], this.options);
136
+ if (this.options.binaryType) {
137
+ this.socket.binaryType = this.options.binaryType;
138
+ }
139
+ this.socket.onopen = () => {
140
+ logger.info('on Wazo WS open', {
141
+ method: 'connect',
142
+ host: this.host,
143
+ });
144
+ this.eventEmitter.emit(SOCKET_EVENTS.ON_OPEN);
145
+ };
146
+ this.socket.onerror = event => {
147
+ logger.error('on Wazo WS error', event.target);
148
+ this.eventEmitter.emit(SOCKET_EVENTS.ON_ERROR, event);
149
+ };
150
+ this.socket.onmessage = (event) => {
151
+ this.eventEmitter.emit(SOCKET_EVENTS.ON_MESSAGE, event.data);
152
+ const message = JSON.parse(typeof event.data === 'string' ? event.data : '{}');
153
+ let { name, } = message;
154
+ if (message.data && message.data.name) {
155
+ // eslint-disable-next-line
156
+ name = message.data.name;
157
+ }
158
+ if (BLACKLIST_EVENTS.indexOf(name) === -1) {
159
+ messageLogger.trace(IssueReporter.removeSlashes(event.data), {
160
+ method: 'onmessage',
161
+ });
162
+ }
163
+ else {
164
+ messageLogger.trace(`{"name": "${name}", "info": "content not shown"}`, {
165
+ method: 'onmessage',
166
+ });
167
+ }
168
+ if (!this.initialized) {
169
+ this._handleInitMessage(message, this.socket);
170
+ }
171
+ else {
172
+ this._handleMessage(message);
173
+ }
174
+ };
175
+ this.socket.onclose = event => {
176
+ // Can't be converted to JSON (circular structure)
177
+ logger.info('on Wazo WS close', {
178
+ reason: event.reason,
179
+ code: event.code,
180
+ readyState: event.target.readyState,
181
+ host: this.host,
182
+ token: this.token,
183
+ });
184
+ this.initialized = false;
185
+ this.eventEmitter.emit(SOCKET_EVENTS.ON_CLOSE, event);
186
+ switch (event.code) {
187
+ case 4002:
188
+ this.eventEmitter.emit(SOCKET_EVENTS.ON_AUTH_FAILED);
189
+ break;
190
+ case 4003:
191
+ break;
192
+ default:
193
+ }
194
+ };
195
+ this.socket.onerror = event => {
196
+ logger.info('Wazo WS error', {
197
+ message: event.message,
198
+ // @ts-ignore
199
+ code: event.code,
200
+ readyState: event.target.readyState,
201
+ });
199
202
  };
200
- } else {
201
- extra = lastArg;
202
- }
203
- // eslint-disable-next-line no-param-reassign
204
- args.splice(1, 1);
205
- }
206
-
207
- if (extra.skipSendToRemote) {
208
- skipSendToRemote = true;
209
- delete extra.skipSendToRemote;
210
203
  }
211
-
212
- const date = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
213
- const message = args.join(', ');
214
- let consoleMessage = message;
215
-
216
- if (Object.keys(extra).length) {
217
- const parsedExtra = safeStringify(extra);
218
- consoleMessage = `${consoleMessage} (${parsedExtra})`;
204
+ close(force = false) {
205
+ logger.info('Wazo WS close', {
206
+ socket: !!this.socket,
207
+ host: this.host,
208
+ token: this.token,
209
+ });
210
+ if (!this.socket) {
211
+ return;
212
+ }
213
+ this.socket.close();
214
+ this.initialized = false;
215
+ if (force) {
216
+ this.host = null;
217
+ this.token = null;
218
+ this.socket = null;
219
+ }
219
220
  }
220
-
221
- if (category) {
222
- consoleMessage = `[${category}] ${consoleMessage}`;
221
+ updateToken(token) {
222
+ this.token = token;
223
+ logger.info('Wazo WS updating token', {
224
+ url: this._getUrl(),
225
+ token,
226
+ socket: !!this.socket,
227
+ });
228
+ if (this.socket) {
229
+ // If still connected, send the token to the WS
230
+ if (this.isConnected() && Number(this.version) >= 2) {
231
+ this.socket.send(JSON.stringify({
232
+ op: 'token',
233
+ data: {
234
+ token,
235
+ },
236
+ }));
237
+ }
238
+ else if (!this.isConnected()) {
239
+ this.reconnect('token refreshed');
240
+ }
241
+ }
223
242
  }
224
-
225
- // Log the message in the console anyway (but don't console.error on mobile)
226
- const consoleLevel = isMobile() && level === 'error' ? WARN : level;
227
-
228
- // eslint-disable-next-line
229
- const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
230
- oldMethod.apply(oldMethod, [date, consoleMessage]);
231
-
232
- if (this._callback) {
233
- this._callback(level, consoleMessage);
243
+ hasHeartbeat() {
244
+ return this.heartbeat.hasHeartbeat;
234
245
  }
235
-
236
- if (!skipSendToRemote) {
237
- this._sendToRemoteLogger(level, { date, message, category, ...extra });
246
+ startHeartbeat() {
247
+ logger.info('Wazo WS start heartbeat', {
248
+ host: this.host,
249
+ token: this.token,
250
+ });
251
+ if (!this.socket) {
252
+ this.heartbeat.stop();
253
+ return;
254
+ }
255
+ this.off('pong', this._boundOnHeartbeat);
256
+ this.on('pong', this._boundOnHeartbeat);
257
+ this.heartbeat.start();
258
+ }
259
+ stopHeartbeat() {
260
+ logger.info('Wazo WS stop heartbeat', {
261
+ host: this.host,
262
+ token: this.token,
263
+ });
264
+ this.heartbeat.stop();
238
265
  }
239
- }
240
-
241
- logRequest(url , options , response , start ) {
242
- if (!this.enabled) {
243
- return;
266
+ setOnHeartbeatTimeout(cb) {
267
+ this.onHeartBeatTimeout = cb;
244
268
  }
245
- const { status } = response;
246
- const duration = new Date() - start;
247
-
248
- let level = TRACE;
249
- if (status >= 400 && status < 500) {
250
- level = WARN;
251
- } else if (status >= 500) {
252
- level = ERROR;
269
+ setOnHeartbeatCallback(cb) {
270
+ this.heartbeatCb = cb;
253
271
  }
254
-
255
- this.log(level, this._makeCategory('http'), url, {
256
- status,
257
- body: this.removeSlashes(JSON.stringify(options.body)),
258
- method: options.method,
259
- headers: options.headers,
260
- duration,
261
- });
262
- }
263
-
264
- // Logs aren't stored anymore
265
- getLogs() {
266
- console.warn('IssueReporter\'s logs aren\'t stored anymore. Please use fluentd to store them');
267
- return [];
268
- }
269
-
270
- getParsedLogs() {
271
- console.warn('IssueReporter\'s logs aren\'t stored anymore. Please use fluentd to store them');
272
- return [];
273
- }
274
-
275
- getReport() {
276
- return this.getParsedLogs().join('\r\n');
277
- }
278
-
279
- _catchConsole() {
280
- this.oldConsoleMethods = {};
281
- CONSOLE_METHODS.forEach((methodName ) => {
282
- // eslint-disable-next-line
283
- this.oldConsoleMethods[methodName] = console[methodName];
284
- window.console[methodName] = (...args) => {
285
- // Store message
272
+ pingServer() {
273
+ if (!this.socket || !this.isConnected()) {
274
+ return;
275
+ }
286
276
  try {
287
- this.log(methodName, args.join(' '));
288
- // Use old console method to log it normally
289
- this.oldConsoleMethods[methodName].apply(null, args);
290
- } catch (e) {
291
- // Avoid circular structure issues
277
+ this.socket.send(JSON.stringify({
278
+ op: 'ping',
279
+ data: {
280
+ payload: 'pong',
281
+ },
282
+ }));
292
283
  }
293
- };
294
- });
295
- }
296
-
297
- _sendToRemoteLogger(level , payload = {}) {
298
- if (!this.remoteClientConfiguration) {
299
- return;
300
- }
301
-
302
- const { level: minLevel, bufferSize } = this.remoteClientConfiguration;
303
- if (!minLevel || this._isLevelAbove(minLevel, level)) {
304
- return;
305
- }
306
-
307
- payload.level = level;
308
-
309
- if (bufferSize > 0) {
310
- return this._addToBuffer(payload);
311
- }
312
-
313
- this._sendDebugToGrafana(payload);
314
- }
315
-
316
- _parseLoggerBody(payload ) {
317
- const { level } = payload;
318
- const { maxMessageSize, extra } = this.remoteClientConfiguration || {};
319
-
320
- delete payload.level;
321
-
322
- if (maxMessageSize && typeof payload.message === 'string' && payload.message.length > maxMessageSize) {
323
- payload.message = `${payload.message.substr(0, maxMessageSize)}...`;
324
- }
325
-
326
- return safeStringify({
327
- level,
328
- ...payload,
329
- ...extra,
330
- });
331
- }
332
-
333
- _addToBuffer(payload ) {
334
- // Reset buffer timer
335
- if (this.bufferTimeout) {
336
- clearTimeout(this.bufferTimeout);
337
- this.bufferTimeout = null;
338
- }
339
-
340
- this.buffer.push(payload);
341
-
342
- // $FlowFixMe
343
- const { bufferSize, bufferTimeout } = this.remoteClientConfiguration;
344
-
345
- if (this.buffer.length > bufferSize) {
346
- return this._processBuffer();
347
- }
348
-
349
- if (bufferTimeout > 0) {
350
- this.bufferTimeout = setTimeout(this._boundProcessBuffer, bufferTimeout);
351
- }
352
- }
353
-
354
- _processBuffer() {
355
- this._sendDebugToGrafana(this.buffer);
356
-
357
- this.buffer = [];
358
- if (this.bufferTimeout) {
359
- clearTimeout(this.bufferTimeout);
360
- this.bufferTimeout = null;
361
- }
362
- }
363
-
364
- _sendDebugToGrafana(payload , retry = 0) {
365
- if (!this.remoteClientConfiguration || retry >= MAX_REMOTE_RETRY) {
366
- return;
367
- }
368
-
369
- const { tag, host, port } = this.remoteClientConfiguration;
370
- const isArray = Array.isArray(payload);
371
- const isSecure = +port === 443;
372
- const url = `http${isSecure ? 's' : ''}://${host}${isSecure ? '' : `:${port}`}/${tag}`;
373
- const body = isArray ? `[${payload.map(this._boundParseLoggerBody).join(',')}]` : this._parseLoggerBody(payload);
374
-
375
- realFetch()(url, {
376
- method: 'POST',
377
- headers: {
378
- Accept: 'application/json',
379
- 'Content-Type': 'application/json',
380
- },
381
- // $FlowFixMe
382
- body,
383
- }).catch((e ) => {
384
- // $FlowFixMe
385
- e.skipSendToRemote = true;
386
- this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
387
-
388
- setTimeout(() => {
389
- if (isArray) {
390
- payload = payload.map(message => this._writeRetryCount(message, retry + 1));
391
- } else if (payload && typeof payload === 'object') {
392
- payload = this._writeRetryCount(payload, retry + 1);
284
+ catch (_) { // Nothing to do
393
285
  }
394
-
395
- this._sendDebugToGrafana(payload, retry + 1);
396
- }, 5000 + retry * 1000);
397
- });
398
- }
399
-
400
- _writeRetryCount(message , count ) {
401
- if (message && typeof message === 'object') {
402
- // $FlowFixMe
403
- message._retry = count;
404
- }
405
-
406
- return message;
407
- }
408
-
409
- _isLevelAbove(level1 , level2 ) {
410
- const index1 = LOG_LEVELS.indexOf(level1);
411
- const index2 = LOG_LEVELS.indexOf(level2);
412
- if (index1 === -1 || index2 === -1) {
413
- return false;
414
- }
415
-
416
- return index1 > index2;
417
- }
418
-
419
- _makeCategory(category ) {
420
- return `${CATEGORY_PREFIX}${category}`;
421
- }
422
- }
423
-
424
- var IssueReporter$1 = new IssueReporter();
425
-
426
- //
427
-
428
- const DEFAULT_HEARTBEAT_DELAY = 2000;
429
- const DEFAULT_HEARTBEAT_TIMEOUT = 5000;
430
- const DEFAULT_MAX_HEARTBEATS = 3;
431
-
432
- class Heartbeat {
433
-
434
-
435
-
436
-
437
-
438
-
439
-
440
-
441
-
442
-
443
-
444
- constructor(heartbeatDelay = DEFAULT_HEARTBEAT_DELAY, heartbeatTimeout = DEFAULT_HEARTBEAT_TIMEOUT,
445
- maxHeartbeats = DEFAULT_MAX_HEARTBEATS) {
446
- this.heartbeatDelay = heartbeatDelay;
447
- this.heartbeatTimeout = heartbeatTimeout;
448
- this.maxHeartbeats = maxHeartbeats;
449
-
450
- this.hasHeartbeat = false;
451
- this._heartbeatTries = 0;
452
- }
453
-
454
- setSendHeartbeat(cb ) {
455
- this._sendHeartbeatCallback = cb;
456
- }
457
-
458
- setOnHeartbeatTimeout(cb ) {
459
- this._onTimeoutCallback = cb;
460
- }
461
-
462
- stop() {
463
- this.hasHeartbeat = false;
464
-
465
- if (this._heartbeatNotReceivedTimeout) {
466
- clearTimeout(this._heartbeatNotReceivedTimeout);
467
- }
468
- if (this._heartbeatDelayTimeout) {
469
- clearTimeout(this._heartbeatDelayTimeout);
470
- }
471
- }
472
-
473
- start() {
474
- this.stop();
475
- this.hasHeartbeat = true;
476
- this._heartbeatTries = 0;
477
- this._sendHeartbeat();
478
- }
479
-
480
- onHeartbeat() {
481
- this._clearTimeouts();
482
-
483
- if (!this.hasHeartbeat) {
484
- return;
485
- }
486
-
487
- this._sendHeartbeat();
488
- }
489
-
490
- _sendHeartbeat() {
491
- if (this._heartbeatTries >= this.maxHeartbeats) {
492
- return;
493
- }
494
-
495
- this._clearTimeouts();
496
-
497
- this._heartbeatDelayTimeout = setTimeout(() => {
498
- this._heartbeatTries++;
499
-
500
- if (this._sendHeartbeatCallback) {
501
- this._sendHeartbeatCallback();
502
- }
503
- }, this.heartbeatDelay);
504
-
505
- if (this._onTimeoutCallback) {
506
- this._heartbeatNotReceivedTimeout = setTimeout(this._onTimeoutCallback, this.heartbeatTimeout);
507
- }
508
- }
509
-
510
- _clearTimeouts() {
511
- if (this._heartbeatNotReceivedTimeout) {
512
- clearTimeout(this._heartbeatNotReceivedTimeout);
513
- }
514
-
515
- if (this._heartbeatDelayTimeout) {
516
- clearTimeout(this._heartbeatDelayTimeout);
517
- }
518
- }
519
- }
520
-
521
- //
522
-
523
- const SOCKET_EVENTS = {
524
- ON_OPEN: 'onopen',
525
- ON_MESSAGE: 'onmessage',
526
- ON_ERROR: 'onerror',
527
- ON_CLOSE: 'onclose',
528
- INITIALIZED: 'initialized',
529
- ON_AUTH_FAILED: 'on_auth_failed',
530
- };
531
-
532
-
533
-
534
-
535
-
536
-
537
-
538
-
539
-
540
-
541
-
542
-
543
-
544
- const AUTH_SESSION_EXPIRE_SOON = 'auth_session_expire_soon';
545
- const FAVORITE_ADDED = 'favorite_added';
546
- const FAVORITE_DELETED = 'favorite_deleted';
547
- const USER_STATUS_UPDATE = 'user_status_update';
548
- const CHAT_MESSAGE_SENT = 'chat_message_sent';
549
- const CHAT_MESSAGE_RECEIVED = 'chat_message_received';
550
- const ENDPOINT_STATUS_UPDATE = 'endpoint_status_update';
551
- const USERS_FORWARDS_BUSY_UPDATED = 'users_forwards_busy_updated';
552
- const USERS_FORWARDS_NOANSWER_UPDATED = 'users_forwards_noanswer_updated';
553
- const USERS_FORWARDS_UNCONDITIONAL_UPDATED = 'users_forwards_unconditional_updated';
554
- const USERS_SERVICES_DND_UPDATED = 'users_services_dnd_updated';
555
- const USER_VOICEMAIL_MESSAGE_CREATED = 'user_voicemail_message_created';
556
- const USER_VOICEMAIL_MESSAGE_UPDATED = 'user_voicemail_message_updated';
557
- const USER_VOICEMAIL_MESSAGE_DELETED = 'user_voicemail_message_deleted';
558
- const CALL_LOG_USER_CREATED = 'call_log_user_created';
559
- const CALL_CREATED = 'call_created';
560
- const CALL_ANSWERED = 'call_answered';
561
- const CALL_DTMF_CREATED = 'call_dtmf_created';
562
- const CALL_ENDED = 'call_ended';
563
- const CALL_UPDATED = 'call_updated';
564
- const CALL_HELD = 'call_held';
565
- const CALL_RESUMED = 'call_resumed';
566
- const AUTH_USER_EXTERNAL_AUTH_ADDED = 'auth_user_external_auth_added';
567
- const AUTH_USER_EXTERNAL_AUTH_DELETED = 'auth_user_external_auth_deleted';
568
- const CHATD_PRESENCE_UPDATED = 'chatd_presence_updated';
569
- const CHATD_USER_ROOM_MESSAGE_CREATED = 'chatd_user_room_message_created';
570
- const CHATD_USER_ROOM_CREATED = 'chatd_user_room_created';
571
- const CONFERENCE_USER_PARTICIPANT_JOINED = 'conference_user_participant_joined';
572
- const CONFERENCE_USER_PARTICIPANT_LEFT = 'conference_user_participant_left';
573
- const CONFERENCE_USER_PARTICIPANT_TALK_STARTED = 'conference_user_participant_talk_started';
574
- const CONFERENCE_USER_PARTICIPANT_TALK_STOPPED = 'conference_user_participant_talk_stopped';
575
- const MEETING_USER_PARTICIPANT_JOINED = 'meeting_user_participant_joined';
576
- const MEETING_USER_PARTICIPANT_LEFT = 'meeting_user_participant_left';
577
- const SWITCHBOARD_QUEUED_CALLS_UPDATED = 'switchboard_queued_calls_updated';
578
- const SWITCHBOARD_QUEUED_CALL_ANSWERED = 'switchboard_queued_call_answered';
579
- const SWITCHBOARD_HELD_CALLS_UPDATED = 'switchboard_held_calls_updated';
580
- const SWITCHBOARD_HELD_CALL_ANSWERED = 'switchboard_held_call_answered';
581
- const FAX_OUTBOUND_USER_CREATED = 'fax_outbound_user_created';
582
- const FAX_OUTBOUND_USER_SUCCEEDED = 'fax_outbound_user_succeeded';
583
- const FAX_OUTBOUND_USER_FAILED = 'fax_outbound_user_failed';
584
- const APPLICATION_CALL_DTMF_RECEIVED = 'application_call_dtmf_received';
585
- const APPLICATION_CALL_ENTERED = 'application_call_entered';
586
- const APPLICATION_CALL_INITIATED = 'application_call_initiated';
587
- const APPLICATION_CALL_DELETED = 'application_call_deleted';
588
- const APPLICATION_CALL_UPDATED = 'application_call_updated';
589
- const APPLICATION_CALL_ANSWERED = 'application_call_answered';
590
- const APPLICATION_PROGRESS_STARTED = 'application_progress_started';
591
- const APPLICATION_PROGRESS_STOPPED = 'application_progress_stopped';
592
- const APPLICATION_DESTINATION_NODE_CREATED = 'application_destination_node_created';
593
- const APPLICATION_NODE_CREATED = 'application_node_created';
594
- const APPLICATION_NODE_DELETED = 'application_node_deleted';
595
- const APPLICATION_NODE_UPDATED = 'application_node_updated';
596
- const APPLICATION_PLAYBACK_CREATED = 'application_playback_created';
597
- const APPLICATION_PLAYBACK_DELETED = 'application_playback_deleted';
598
- const APPLICATION_SNOOP_CREATED = 'application_snoop_created';
599
- const APPLICATION_SNOOP_DELETED = 'application_snoop_deleted';
600
- const APPLICATION_SNOOP_UPDATED = 'application_snoop_updated';
601
- const APPLICATION_USER_OUTGOING_CALL_CREATED = 'application_user_outgoing_call_created';
602
- const TRUNK_STATUS_UPDATED = 'trunk_status_updated';
603
- const LINE_STATUS_UPDATED = 'line_status_updated';
604
- const AGENT_STATUS_UPDATE = 'agent_status_update';
605
- const AGENT_PAUSED = 'agent_paused';
606
- const AGENT_UNPAUSED = 'agent_unpaused';
607
- const CONFERENCE_ADHOC_PARTICIPANT_LEFT = 'conference_adhoc_participant_left';
608
- const CONFERENCE_ADHOC_DELETED = 'conference_adhoc_deleted';
609
- const MEETING_USER_PROGRESS = 'meeting_user_progress';
610
- const MEETING_USER_GUEST_AUTHORIZATION_CREATED = 'meeting_user_guest_authorization_created';
611
-
612
- const BLACKLIST_EVENTS = [
613
- CHAT_MESSAGE_SENT,
614
- CHAT_MESSAGE_RECEIVED,
615
- CHATD_USER_ROOM_MESSAGE_CREATED,
616
- CHATD_USER_ROOM_CREATED,
617
- ];
618
-
619
- const HEARTBEAT_ENGINE_VERSION = '20.09';
620
- const logger = IssueReporter$1.loggerFor('wazo-ws');
621
- const messageLogger = IssueReporter$1.loggerFor('wazo-ws-message');
622
-
623
- class WebSocketClient extends Emitter {
624
-
625
-
626
-
627
-
628
-
629
-
630
-
631
-
632
-
633
-
634
-
635
-
636
-
637
-
638
-
639
- /**
640
- *
641
- * @param host
642
- * @param token
643
- * @param events
644
- * @param version
645
- * @param heartbeat
646
- * @param options @see https://github.com/pladaria/reconnecting-websocket#available-options
647
- */
648
- constructor({ host, token, version = 1, events = [], heartbeat = {} } , options = {}) {
649
- super();
650
- this.initialized = false;
651
-
652
- this.socket = null;
653
- this.host = host;
654
- this.token = token;
655
- this.events = events;
656
- this.options = options;
657
- this.version = version;
658
-
659
- this._boundOnHeartbeat = this._onHeartbeat.bind(this);
660
- const { delay, timeout, max } = heartbeat;
661
- this.heartbeat = new Heartbeat(delay, timeout, max);
662
- this.heartbeat.setSendHeartbeat(this.pingServer.bind(this));
663
- this.heartbeat.setOnHeartbeatTimeout(this._onHeartbeatTimeout.bind(this));
664
-
665
- this.eventLists = WebSocketClient.eventLists;
666
- }
667
-
668
- connect() {
669
- logger.info('connect method started', { host: this.host, token: this.token });
670
- this.socket = new ReconnectingWebSocket(this._getUrl.bind(this), [], this.options);
671
- if (this.options.binaryType) {
672
- this.socket.binaryType = this.options.binaryType;
673
- }
674
-
675
- this.socket.onopen = () => {
676
- logger.info('on Wazo WS open', { method: 'connect', host: this.host });
677
- this.eventEmitter.emit(SOCKET_EVENTS.ON_OPEN);
678
- };
679
-
680
- this.socket.onerror = event => {
681
- logger.error('on Wazo WS error', event.target);
682
- this.eventEmitter.emit(SOCKET_EVENTS.ON_ERROR, event);
683
- };
684
-
685
- this.socket.onmessage = (event ) => {
686
- this.eventEmitter.emit(SOCKET_EVENTS.ON_MESSAGE, event.data);
687
-
688
- const message = JSON.parse(typeof event.data === 'string' ? event.data : '{}');
689
- let { name } = message;
690
- if (message.data && message.data.name) {
691
- // eslint-disable-next-line
692
- name = message.data.name;
693
- }
694
-
695
- if (BLACKLIST_EVENTS.indexOf(name) === -1) {
696
- // $FlowFixMe
697
- messageLogger.trace(IssueReporter$1.removeSlashes(event.data), { method: 'onmessage' });
698
- } else {
699
- messageLogger.trace(`{"name": "${name}", "info": "content not shown"}`, { method: 'onmessage' });
700
- }
701
-
702
- if (!this.initialized) {
703
- this._handleInitMessage(message, this.socket);
704
- } else {
705
- this._handleMessage(message);
706
- }
707
- };
708
-
709
- this.socket.onclose = event => {
710
- // Can't be converted to JSON (circular structure)
711
- logger.info('on Wazo WS close', {
712
- reason: event.reason,
713
- code: event.code,
714
- readyState: event.target.readyState,
715
- host: this.host,
716
- token: this.token,
717
- });
718
- this.initialized = false;
719
- this.eventEmitter.emit(SOCKET_EVENTS.ON_CLOSE, event);
720
-
721
- switch (event.code) {
722
- case 4002:
723
- this.eventEmitter.emit(SOCKET_EVENTS.ON_AUTH_FAILED);
724
- break;
725
- }
726
- };
727
-
728
- this.socket.onerror = event => {
729
- logger.info('Wazo WS error', { message: event.message, code: event.code, readyState: event.target.readyState });
730
- };
731
- }
732
-
733
- close(force = false) {
734
- logger.info('Wazo WS close', { socket: !!this.socket, host: this.host, token: this.token });
735
-
736
- if (!this.socket) {
737
- return;
738
- }
739
-
740
- this.socket.close();
741
- this.initialized = false;
742
-
743
- if (force) {
744
- this.host = null;
745
- this.token = null;
746
- this.socket = null;
747
- }
748
- }
749
-
750
- updateToken(token ) {
751
- this.token = token;
752
- logger.info('Wazo WS updating token', { url: this._getUrl(), token, socket: !!this.socket });
753
-
754
- if (this.socket) {
755
- // If still connected, send the token to the WS
756
- if (this.isConnected() && this.version >= 2) {
757
- // $FlowFixMe
758
- this.socket.send(JSON.stringify({ op: 'token', data: { token } }));
759
- } else if (!this.isConnected()) {
760
- this.reconnect('token refreshed');
761
- }
762
286
  }
763
- }
764
-
765
- hasHeartbeat() {
766
- return this.heartbeat.hasHeartbeat;
767
- }
768
-
769
- startHeartbeat() {
770
- logger.info('Wazo WS start heartbeat', { host: this.host, token: this.token });
771
-
772
- if (!this.socket) {
773
- this.heartbeat.stop();
774
- return;
287
+ isConnected() {
288
+ return this.socket && this.socket.readyState === this.socket.OPEN;
775
289
  }
776
-
777
- this.off('pong', this._boundOnHeartbeat);
778
- this.on('pong', this._boundOnHeartbeat);
779
-
780
- this.heartbeat.start();
781
- }
782
-
783
- stopHeartbeat() {
784
- logger.info('Wazo WS stop heartbeat', { host: this.host, token: this.token });
785
-
786
- this.heartbeat.stop();
787
- }
788
-
789
- setOnHeartbeatTimeout(cb ) {
790
- this.onHeartBeatTimeout = cb;
791
- }
792
-
793
- setOnHeartbeatCallback(cb ) {
794
- this.heartbeatCb = cb;
795
- }
796
-
797
- pingServer() {
798
- if (!this.socket || !this.isConnected()) {
799
- return;
800
- }
801
-
802
- try {
803
- this.socket.send(JSON.stringify({ op: 'ping', data: { payload: 'pong' } }));
804
- } catch (_) {
805
- // Nothing to do
806
- }
807
- }
808
-
809
- isConnected() {
810
- return this.socket && this.socket.readyState === this.socket.OPEN;
811
- }
812
-
813
- reconnect(reason ) {
814
- logger.info('Wazo WS reconnect', { reason, socket: !!this.socket, host: this.host, token: this.token });
815
- if (!this.socket) {
816
- return;
817
- }
818
- this.socket.reconnect(reason);
819
- }
820
-
821
- _handleInitMessage(message , sock ) {
822
- switch (message.op) {
823
- case 'init':
824
- this.events.forEach(event => {
825
- const op = {
826
- op: 'subscribe',
827
- data: { event_name: event },
828
- };
829
-
830
- sock.send(JSON.stringify(op));
290
+ reconnect(reason) {
291
+ logger.info('Wazo WS reconnect', {
292
+ reason,
293
+ socket: !!this.socket,
294
+ host: this.host,
295
+ token: this.token,
831
296
  });
832
-
833
- sock.send(JSON.stringify({ op: 'start' }));
834
- break;
835
- case 'subscribe':
836
- break;
837
- case 'start':
838
- this.initialized = true;
839
- this.eventEmitter.emit(SOCKET_EVENTS.INITIALIZED);
840
- break;
841
- default:
842
- this.eventEmitter.emit('message', message);
843
- }
844
- }
845
-
846
- _handleMessage(message ) {
847
- if (message.op === 'pong') {
848
- this.eventEmitter.emit('pong', message.data);
849
- if (this.heartbeatCb) {
850
- this.heartbeatCb();
851
- }
852
- return;
853
- }
854
-
855
- if (this.version === 1) {
856
- this.eventEmitter.emit(message.name, message);
857
- return;
297
+ if (!this.socket) {
298
+ return;
299
+ }
300
+ // @HEADS UP: first arg is `code`, second is `reason`; inputing arbitrary value for `code`
301
+ this.socket.reconnect(0, reason);
302
+ }
303
+ _handleInitMessage(message, sock) {
304
+ switch (message.op) {
305
+ case 'init':
306
+ this.events?.forEach(event => {
307
+ const op = {
308
+ op: 'subscribe',
309
+ data: {
310
+ event_name: event,
311
+ },
312
+ };
313
+ sock.send(JSON.stringify(op));
314
+ });
315
+ sock.send(JSON.stringify({
316
+ op: 'start',
317
+ }));
318
+ break;
319
+ case 'subscribe':
320
+ break;
321
+ case 'start':
322
+ this.initialized = true;
323
+ this.eventEmitter.emit(SOCKET_EVENTS.INITIALIZED);
324
+ break;
325
+ default:
326
+ this.eventEmitter.emit('message', message);
327
+ }
858
328
  }
859
-
860
- if (this.version >= 2 && message.op === 'event') {
861
- this.eventEmitter.emit(message.data.name, message.data);
329
+ _handleMessage(message) {
330
+ if (message.op === 'pong') {
331
+ this.eventEmitter.emit('pong', message.data);
332
+ if (this.heartbeatCb) {
333
+ this.heartbeatCb();
334
+ }
335
+ return;
336
+ }
337
+ if (this.version === 1) {
338
+ this.eventEmitter.emit(message.name, message);
339
+ return;
340
+ }
341
+ if (Number(this.version) >= 2 && message.op === 'event') {
342
+ this.eventEmitter.emit(message.data.name, message.data);
343
+ }
862
344
  }
863
- }
864
-
865
- _getUrl() {
866
- if (!this.host || !this.token) {
867
- this.close();
345
+ _getUrl() {
346
+ if (!this.host || !this.token) {
347
+ this.close();
348
+ }
349
+ const url = `wss://${this.host || ''}/api/websocketd/?token=${this.token || ''}&version=${this.version}`;
350
+ logger.info('Wazo WS url computed to reconnect', {
351
+ url,
352
+ });
353
+ return url;
868
354
  }
869
- const url = `wss://${this.host || ''}/api/websocketd/?token=${this.token || ''}&version=${this.version}`;
870
- logger.info('Wazo WS url computed to reconnect', { url });
871
-
872
- return url;
873
- }
874
-
875
- _onHeartbeat(message ) {
876
- if (message.payload === 'pong') {
877
- this.heartbeat.onHeartbeat();
878
- logger.log('on heartbeat received from Wazo WS');
355
+ _onHeartbeat(message) {
356
+ if (message.payload === 'pong') {
357
+ this.heartbeat.onHeartbeat();
358
+ logger.log('on heartbeat received from Wazo WS');
359
+ }
879
360
  }
880
- }
881
-
882
- async _onHeartbeatTimeout() {
883
- logger.log('heartbeat timed out', { host: this.host, token: this.token });
884
-
885
- this.close();
886
- this.eventEmitter.emit(SOCKET_EVENTS.ON_CLOSE, new Error('Websocket ping failure.'));
887
-
888
- if (this.onHeartBeatTimeout) {
889
- this.onHeartBeatTimeout();
361
+ async _onHeartbeatTimeout() {
362
+ logger.log('heartbeat timed out', {
363
+ host: this.host,
364
+ token: this.token,
365
+ });
366
+ this.close();
367
+ this.eventEmitter.emit(SOCKET_EVENTS.ON_CLOSE, new Error('Websocket ping failure.'));
368
+ if (this.onHeartBeatTimeout) {
369
+ this.onHeartBeatTimeout();
370
+ }
890
371
  }
891
- }
892
- }
893
-
894
- // Can't use static
895
- WebSocketClient.eventLists = [
896
- AUTH_SESSION_EXPIRE_SOON,
897
- FAVORITE_ADDED,
898
- FAVORITE_DELETED,
899
- USER_STATUS_UPDATE,
900
- CHAT_MESSAGE_SENT,
901
- CHAT_MESSAGE_RECEIVED,
902
- ENDPOINT_STATUS_UPDATE,
903
- USERS_FORWARDS_BUSY_UPDATED,
904
- USERS_FORWARDS_NOANSWER_UPDATED,
905
- USERS_FORWARDS_UNCONDITIONAL_UPDATED,
906
- USERS_SERVICES_DND_UPDATED,
907
- USER_VOICEMAIL_MESSAGE_CREATED,
908
- USER_VOICEMAIL_MESSAGE_UPDATED,
909
- USER_VOICEMAIL_MESSAGE_DELETED,
910
- CALL_LOG_USER_CREATED,
911
- CALL_ANSWERED,
912
- CALL_CREATED,
913
- CALL_DTMF_CREATED,
914
- CALL_ENDED,
915
- CALL_UPDATED,
916
- CALL_HELD,
917
- CALL_RESUMED,
918
- AUTH_USER_EXTERNAL_AUTH_ADDED,
919
- AUTH_USER_EXTERNAL_AUTH_DELETED,
920
- CHATD_PRESENCE_UPDATED,
921
- CHATD_USER_ROOM_MESSAGE_CREATED,
922
- CHATD_USER_ROOM_CREATED,
923
- CONFERENCE_USER_PARTICIPANT_JOINED,
924
- CONFERENCE_USER_PARTICIPANT_LEFT,
925
- MEETING_USER_PARTICIPANT_JOINED,
926
- MEETING_USER_PARTICIPANT_LEFT,
927
- CONFERENCE_USER_PARTICIPANT_TALK_STARTED,
928
- CONFERENCE_USER_PARTICIPANT_TALK_STOPPED,
929
- SWITCHBOARD_QUEUED_CALLS_UPDATED,
930
- SWITCHBOARD_QUEUED_CALL_ANSWERED,
931
- SWITCHBOARD_HELD_CALLS_UPDATED,
932
- SWITCHBOARD_HELD_CALL_ANSWERED,
933
- FAX_OUTBOUND_USER_CREATED,
934
- FAX_OUTBOUND_USER_SUCCEEDED,
935
- FAX_OUTBOUND_USER_FAILED,
936
- APPLICATION_CALL_DTMF_RECEIVED,
937
- APPLICATION_CALL_ENTERED,
938
- APPLICATION_CALL_INITIATED,
939
- APPLICATION_CALL_DELETED,
940
- APPLICATION_CALL_UPDATED,
941
- APPLICATION_CALL_ANSWERED,
942
- APPLICATION_PROGRESS_STARTED,
943
- APPLICATION_PROGRESS_STOPPED,
944
- APPLICATION_DESTINATION_NODE_CREATED,
945
- APPLICATION_NODE_CREATED,
946
- APPLICATION_NODE_DELETED,
947
- APPLICATION_NODE_UPDATED,
948
- APPLICATION_PLAYBACK_CREATED,
949
- APPLICATION_PLAYBACK_DELETED,
950
- APPLICATION_SNOOP_CREATED,
951
- APPLICATION_SNOOP_DELETED,
952
- APPLICATION_SNOOP_UPDATED,
953
- APPLICATION_USER_OUTGOING_CALL_CREATED,
954
- TRUNK_STATUS_UPDATED,
955
- LINE_STATUS_UPDATED,
956
- AGENT_STATUS_UPDATE,
957
- AGENT_PAUSED,
958
- AGENT_UNPAUSED,
959
- CONFERENCE_ADHOC_PARTICIPANT_LEFT,
960
- CONFERENCE_ADHOC_DELETED,
961
- MEETING_USER_PROGRESS,
962
- MEETING_USER_GUEST_AUTHORIZATION_CREATED,
963
- ];
964
-
372
+ } // Can't use static
373
+ WebSocketClient.eventLists = [AUTH_SESSION_EXPIRE_SOON, FAVORITE_ADDED, FAVORITE_DELETED, USER_STATUS_UPDATE, CHAT_MESSAGE_SENT, CHAT_MESSAGE_RECEIVED, ENDPOINT_STATUS_UPDATE, USERS_FORWARDS_BUSY_UPDATED, USERS_FORWARDS_NOANSWER_UPDATED, USERS_FORWARDS_UNCONDITIONAL_UPDATED, USERS_SERVICES_DND_UPDATED, USER_VOICEMAIL_MESSAGE_CREATED, USER_VOICEMAIL_MESSAGE_UPDATED, USER_VOICEMAIL_MESSAGE_DELETED, CALL_LOG_USER_CREATED, CALL_ANSWERED, CALL_CREATED, CALL_DTMF_CREATED, CALL_ENDED, CALL_UPDATED, CALL_HELD, CALL_RESUMED, AUTH_USER_EXTERNAL_AUTH_ADDED, AUTH_USER_EXTERNAL_AUTH_DELETED, CHATD_PRESENCE_UPDATED, CHATD_USER_ROOM_MESSAGE_CREATED, CHATD_USER_ROOM_CREATED, CONFERENCE_USER_PARTICIPANT_JOINED, CONFERENCE_USER_PARTICIPANT_LEFT, MEETING_USER_PARTICIPANT_JOINED, MEETING_USER_PARTICIPANT_LEFT, CONFERENCE_USER_PARTICIPANT_TALK_STARTED, CONFERENCE_USER_PARTICIPANT_TALK_STOPPED, SWITCHBOARD_QUEUED_CALLS_UPDATED, SWITCHBOARD_QUEUED_CALL_ANSWERED, SWITCHBOARD_HELD_CALLS_UPDATED, SWITCHBOARD_HELD_CALL_ANSWERED, FAX_OUTBOUND_USER_CREATED, FAX_OUTBOUND_USER_SUCCEEDED, FAX_OUTBOUND_USER_FAILED, APPLICATION_CALL_DTMF_RECEIVED, APPLICATION_CALL_ENTERED, APPLICATION_CALL_INITIATED, APPLICATION_CALL_DELETED, APPLICATION_CALL_UPDATED, APPLICATION_CALL_ANSWERED, APPLICATION_PROGRESS_STARTED, APPLICATION_PROGRESS_STOPPED, APPLICATION_DESTINATION_NODE_CREATED, APPLICATION_NODE_CREATED, APPLICATION_NODE_DELETED, APPLICATION_NODE_UPDATED, APPLICATION_PLAYBACK_CREATED, APPLICATION_PLAYBACK_DELETED, APPLICATION_SNOOP_CREATED, APPLICATION_SNOOP_DELETED, APPLICATION_SNOOP_UPDATED, APPLICATION_USER_OUTGOING_CALL_CREATED, TRUNK_STATUS_UPDATED, LINE_STATUS_UPDATED, AGENT_STATUS_UPDATE, AGENT_PAUSED, AGENT_UNPAUSED, CONFERENCE_ADHOC_PARTICIPANT_LEFT, CONFERENCE_ADHOC_DELETED, MEETING_USER_PROGRESS, MEETING_USER_GUEST_AUTHORIZATION_CREATED];
965
374
  export default WebSocketClient;
966
- export { AGENT_PAUSED, AGENT_STATUS_UPDATE, AGENT_UNPAUSED, APPLICATION_CALL_ANSWERED, APPLICATION_CALL_DELETED, APPLICATION_CALL_DTMF_RECEIVED, APPLICATION_CALL_ENTERED, APPLICATION_CALL_INITIATED, APPLICATION_CALL_UPDATED, APPLICATION_DESTINATION_NODE_CREATED, APPLICATION_NODE_CREATED, APPLICATION_NODE_DELETED, APPLICATION_NODE_UPDATED, APPLICATION_PLAYBACK_CREATED, APPLICATION_PLAYBACK_DELETED, APPLICATION_PROGRESS_STARTED, APPLICATION_PROGRESS_STOPPED, APPLICATION_SNOOP_CREATED, APPLICATION_SNOOP_DELETED, APPLICATION_SNOOP_UPDATED, APPLICATION_USER_OUTGOING_CALL_CREATED, AUTH_SESSION_EXPIRE_SOON, AUTH_USER_EXTERNAL_AUTH_ADDED, AUTH_USER_EXTERNAL_AUTH_DELETED, CALL_ANSWERED, CALL_CREATED, CALL_DTMF_CREATED, CALL_ENDED, CALL_HELD, CALL_LOG_USER_CREATED, CALL_RESUMED, CALL_UPDATED, CHATD_PRESENCE_UPDATED, CHATD_USER_ROOM_CREATED, CHATD_USER_ROOM_MESSAGE_CREATED, CHAT_MESSAGE_RECEIVED, CHAT_MESSAGE_SENT, CONFERENCE_ADHOC_DELETED, CONFERENCE_ADHOC_PARTICIPANT_LEFT, CONFERENCE_USER_PARTICIPANT_JOINED, CONFERENCE_USER_PARTICIPANT_LEFT, CONFERENCE_USER_PARTICIPANT_TALK_STARTED, CONFERENCE_USER_PARTICIPANT_TALK_STOPPED, ENDPOINT_STATUS_UPDATE, FAVORITE_ADDED, FAVORITE_DELETED, FAX_OUTBOUND_USER_CREATED, FAX_OUTBOUND_USER_FAILED, FAX_OUTBOUND_USER_SUCCEEDED, HEARTBEAT_ENGINE_VERSION, LINE_STATUS_UPDATED, MEETING_USER_GUEST_AUTHORIZATION_CREATED, MEETING_USER_PARTICIPANT_JOINED, MEETING_USER_PARTICIPANT_LEFT, MEETING_USER_PROGRESS, SOCKET_EVENTS, SWITCHBOARD_HELD_CALLS_UPDATED, SWITCHBOARD_HELD_CALL_ANSWERED, SWITCHBOARD_QUEUED_CALLS_UPDATED, SWITCHBOARD_QUEUED_CALL_ANSWERED, TRUNK_STATUS_UPDATED, USERS_FORWARDS_BUSY_UPDATED, USERS_FORWARDS_NOANSWER_UPDATED, USERS_FORWARDS_UNCONDITIONAL_UPDATED, USERS_SERVICES_DND_UPDATED, USER_STATUS_UPDATE, USER_VOICEMAIL_MESSAGE_CREATED, USER_VOICEMAIL_MESSAGE_DELETED, USER_VOICEMAIL_MESSAGE_UPDATED };