ue-softphone-sdk 3.0.18 → 4.0.0

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 (585) hide show
  1. package/Dockerfile +0 -6
  2. package/dist/lib/types/index.d.ts +1 -0
  3. package/dist/lib/types/lib/sip.js/api/ack.d.ts +12 -0
  4. package/dist/lib/types/lib/sip.js/api/bye.d.ts +16 -0
  5. package/dist/lib/types/lib/sip.js/api/dtmf.d.ts +15 -0
  6. package/dist/lib/types/lib/sip.js/api/emitter.d.ts +88 -0
  7. package/dist/lib/types/lib/sip.js/api/exceptions/content-type-unsupported.d.ts +8 -0
  8. package/dist/lib/types/lib/sip.js/api/exceptions/index.d.ts +5 -0
  9. package/dist/lib/types/lib/sip.js/api/exceptions/request-pending.d.ts +9 -0
  10. package/dist/lib/types/lib/sip.js/api/exceptions/session-description-handler.d.ts +8 -0
  11. package/dist/lib/types/lib/sip.js/api/exceptions/session-terminated.d.ts +8 -0
  12. package/dist/lib/types/lib/sip.js/api/exceptions/state-transition.d.ts +8 -0
  13. package/dist/lib/types/lib/sip.js/api/index.d.ts +59 -0
  14. package/dist/lib/types/lib/sip.js/api/info.d.ts +16 -0
  15. package/dist/lib/types/lib/sip.js/api/invitation-accept-options.d.ts +19 -0
  16. package/dist/lib/types/lib/sip.js/api/invitation-progress-options.d.ts +38 -0
  17. package/dist/lib/types/lib/sip.js/api/invitation-reject-options.d.ts +25 -0
  18. package/dist/lib/types/lib/sip.js/api/invitation.d.ts +179 -0
  19. package/dist/lib/types/lib/sip.js/api/inviter-cancel-options.d.ts +9 -0
  20. package/dist/lib/types/lib/sip.js/api/inviter-invite-options.d.ts +28 -0
  21. package/dist/lib/types/lib/sip.js/api/inviter-options.d.ts +43 -0
  22. package/dist/lib/types/lib/sip.js/api/inviter.d.ts +236 -0
  23. package/dist/lib/types/lib/sip.js/api/message.d.ts +16 -0
  24. package/dist/lib/types/lib/sip.js/api/messager-message-options.d.ts +11 -0
  25. package/dist/lib/types/lib/sip.js/api/messager-options.d.ts +17 -0
  26. package/dist/lib/types/lib/sip.js/api/messager.d.ts +26 -0
  27. package/dist/lib/types/lib/sip.js/api/notification.d.ts +16 -0
  28. package/dist/lib/types/lib/sip.js/api/notifier.d.ts +8 -0
  29. package/dist/lib/types/lib/sip.js/api/publisher-options.d.ts +33 -0
  30. package/dist/lib/types/lib/sip.js/api/publisher-publish-options.d.ts +6 -0
  31. package/dist/lib/types/lib/sip.js/api/publisher-state.d.ts +21 -0
  32. package/dist/lib/types/lib/sip.js/api/publisher-unpublish-options.d.ts +6 -0
  33. package/dist/lib/types/lib/sip.js/api/publisher.d.ts +65 -0
  34. package/dist/lib/types/lib/sip.js/api/referral.d.ts +38 -0
  35. package/dist/lib/types/lib/sip.js/api/registerer-options.d.ts +46 -0
  36. package/dist/lib/types/lib/sip.js/api/registerer-register-options.d.ts +11 -0
  37. package/dist/lib/types/lib/sip.js/api/registerer-state.d.ts +21 -0
  38. package/dist/lib/types/lib/sip.js/api/registerer-unregister-options.d.ts +16 -0
  39. package/dist/lib/types/lib/sip.js/api/registerer.d.ts +144 -0
  40. package/dist/lib/types/lib/sip.js/api/session-bye-options.d.ts +11 -0
  41. package/dist/lib/types/lib/sip.js/api/session-delegate.d.ts +79 -0
  42. package/dist/lib/types/lib/sip.js/api/session-description-handler-factory.d.ts +15 -0
  43. package/dist/lib/types/lib/sip.js/api/session-description-handler.d.ts +74 -0
  44. package/dist/lib/types/lib/sip.js/api/session-info-options.d.ts +11 -0
  45. package/dist/lib/types/lib/sip.js/api/session-invite-options.d.ts +28 -0
  46. package/dist/lib/types/lib/sip.js/api/session-message-options.d.ts +11 -0
  47. package/dist/lib/types/lib/sip.js/api/session-options.d.ts +8 -0
  48. package/dist/lib/types/lib/sip.js/api/session-refer-options.d.ts +14 -0
  49. package/dist/lib/types/lib/sip.js/api/session-state.d.ts +45 -0
  50. package/dist/lib/types/lib/sip.js/api/session.d.ts +359 -0
  51. package/dist/lib/types/lib/sip.js/api/subscriber-options.d.ts +11 -0
  52. package/dist/lib/types/lib/sip.js/api/subscriber-subscribe-options.d.ts +6 -0
  53. package/dist/lib/types/lib/sip.js/api/subscriber.d.ts +94 -0
  54. package/dist/lib/types/lib/sip.js/api/subscription-delegate.d.ts +12 -0
  55. package/dist/lib/types/lib/sip.js/api/subscription-options.d.ts +8 -0
  56. package/dist/lib/types/lib/sip.js/api/subscription-state.d.ts +19 -0
  57. package/dist/lib/types/lib/sip.js/api/subscription-subscribe-options.d.ts +6 -0
  58. package/dist/lib/types/lib/sip.js/api/subscription-unsubscribe-options.d.ts +6 -0
  59. package/dist/lib/types/lib/sip.js/api/subscription.d.ts +84 -0
  60. package/dist/lib/types/lib/sip.js/api/transport-state.d.ts +37 -0
  61. package/dist/lib/types/lib/sip.js/api/transport.d.ts +159 -0
  62. package/dist/lib/types/lib/sip.js/api/user-agent-delegate.d.ts +84 -0
  63. package/dist/lib/types/lib/sip.js/api/user-agent-options.d.ts +253 -0
  64. package/dist/lib/types/lib/sip.js/api/user-agent-state.d.ts +14 -0
  65. package/dist/lib/types/lib/sip.js/api/user-agent.d.ts +200 -0
  66. package/dist/lib/types/lib/sip.js/core/dialogs/dialog-state.d.ts +34 -0
  67. package/dist/lib/types/lib/sip.js/core/dialogs/dialog.d.ts +161 -0
  68. package/dist/lib/types/lib/sip.js/core/dialogs/index.d.ts +4 -0
  69. package/dist/lib/types/lib/sip.js/core/dialogs/session-dialog.d.ts +196 -0
  70. package/dist/lib/types/lib/sip.js/core/dialogs/subscription-dialog.d.ts +120 -0
  71. package/dist/lib/types/lib/sip.js/core/exceptions/exception.d.ts +8 -0
  72. package/dist/lib/types/lib/sip.js/core/exceptions/index.d.ts +3 -0
  73. package/dist/lib/types/lib/sip.js/core/exceptions/transaction-state-error.d.ts +8 -0
  74. package/dist/lib/types/lib/sip.js/core/exceptions/transport-error.d.ts +8 -0
  75. package/dist/lib/types/lib/sip.js/core/index.d.ts +15 -0
  76. package/dist/lib/types/lib/sip.js/core/log/index.d.ts +3 -0
  77. package/dist/lib/types/lib/sip.js/core/log/levels.d.ts +10 -0
  78. package/dist/lib/types/lib/sip.js/core/log/logger-factory.d.ts +21 -0
  79. package/dist/lib/types/lib/sip.js/core/log/logger.d.ts +19 -0
  80. package/dist/lib/types/lib/sip.js/core/messages/body.d.ts +64 -0
  81. package/dist/lib/types/lib/sip.js/core/messages/digest-authentication.d.ts +51 -0
  82. package/dist/lib/types/lib/sip.js/core/messages/incoming-message.d.ts +79 -0
  83. package/dist/lib/types/lib/sip.js/core/messages/incoming-request-message.d.ts +10 -0
  84. package/dist/lib/types/lib/sip.js/core/messages/incoming-request.d.ts +67 -0
  85. package/dist/lib/types/lib/sip.js/core/messages/incoming-response-message.d.ts +10 -0
  86. package/dist/lib/types/lib/sip.js/core/messages/incoming-response.d.ts +12 -0
  87. package/dist/lib/types/lib/sip.js/core/messages/index.d.ts +13 -0
  88. package/dist/lib/types/lib/sip.js/core/messages/md5.d.ts +32 -0
  89. package/dist/lib/types/lib/sip.js/core/messages/methods/ack.d.ts +18 -0
  90. package/dist/lib/types/lib/sip.js/core/messages/methods/bye.d.ts +21 -0
  91. package/dist/lib/types/lib/sip.js/core/messages/methods/cancel.d.ts +21 -0
  92. package/dist/lib/types/lib/sip.js/core/messages/methods/constants.d.ts +20 -0
  93. package/dist/lib/types/lib/sip.js/core/messages/methods/index.d.ts +13 -0
  94. package/dist/lib/types/lib/sip.js/core/messages/methods/info.d.ts +21 -0
  95. package/dist/lib/types/lib/sip.js/core/messages/methods/invite.d.ts +86 -0
  96. package/dist/lib/types/lib/sip.js/core/messages/methods/message.d.ts +21 -0
  97. package/dist/lib/types/lib/sip.js/core/messages/methods/notify.d.ts +21 -0
  98. package/dist/lib/types/lib/sip.js/core/messages/methods/prack.d.ts +21 -0
  99. package/dist/lib/types/lib/sip.js/core/messages/methods/publish.d.ts +21 -0
  100. package/dist/lib/types/lib/sip.js/core/messages/methods/refer.d.ts +21 -0
  101. package/dist/lib/types/lib/sip.js/core/messages/methods/register.d.ts +21 -0
  102. package/dist/lib/types/lib/sip.js/core/messages/methods/subscribe.d.ts +54 -0
  103. package/dist/lib/types/lib/sip.js/core/messages/outgoing-request-message.d.ts +94 -0
  104. package/dist/lib/types/lib/sip.js/core/messages/outgoing-request.d.ts +67 -0
  105. package/dist/lib/types/lib/sip.js/core/messages/outgoing-response.d.ts +42 -0
  106. package/dist/lib/types/lib/sip.js/core/messages/parser.d.ts +14 -0
  107. package/dist/lib/types/lib/sip.js/core/messages/utils.d.ts +24 -0
  108. package/dist/lib/types/lib/sip.js/core/session/index.d.ts +2 -0
  109. package/dist/lib/types/lib/sip.js/core/session/session-delegate.d.ts +70 -0
  110. package/dist/lib/types/lib/sip.js/core/session/session.d.ts +134 -0
  111. package/dist/lib/types/lib/sip.js/core/subscription/index.d.ts +2 -0
  112. package/dist/lib/types/lib/sip.js/core/subscription/subscription-delegate.d.ts +27 -0
  113. package/dist/lib/types/lib/sip.js/core/subscription/subscription.d.ts +55 -0
  114. package/dist/lib/types/lib/sip.js/core/timers.d.ts +20 -0
  115. package/dist/lib/types/lib/sip.js/core/transactions/client-transaction.d.ts +45 -0
  116. package/dist/lib/types/lib/sip.js/core/transactions/index.d.ts +10 -0
  117. package/dist/lib/types/lib/sip.js/core/transactions/invite-client-transaction.d.ts +116 -0
  118. package/dist/lib/types/lib/sip.js/core/transactions/invite-server-transaction.d.ts +127 -0
  119. package/dist/lib/types/lib/sip.js/core/transactions/non-invite-client-transaction.d.ts +69 -0
  120. package/dist/lib/types/lib/sip.js/core/transactions/non-invite-server-transaction.d.ts +57 -0
  121. package/dist/lib/types/lib/sip.js/core/transactions/server-transaction.d.ts +35 -0
  122. package/dist/lib/types/lib/sip.js/core/transactions/transaction-state.d.ts +13 -0
  123. package/dist/lib/types/lib/sip.js/core/transactions/transaction-user.d.ts +72 -0
  124. package/dist/lib/types/lib/sip.js/core/transactions/transaction.d.ts +79 -0
  125. package/dist/lib/types/lib/sip.js/core/transport.d.ts +31 -0
  126. package/dist/lib/types/lib/sip.js/core/user-agent-core/allowed-methods.d.ts +4 -0
  127. package/dist/lib/types/lib/sip.js/core/user-agent-core/index.d.ts +3 -0
  128. package/dist/lib/types/lib/sip.js/core/user-agent-core/user-agent-core-configuration.d.ts +99 -0
  129. package/dist/lib/types/lib/sip.js/core/user-agent-core/user-agent-core-delegate.d.ts +37 -0
  130. package/dist/lib/types/lib/sip.js/core/user-agent-core/user-agent-core.d.ts +179 -0
  131. package/dist/lib/types/lib/sip.js/core/user-agents/bye-user-agent-client.d.ts +10 -0
  132. package/dist/lib/types/lib/sip.js/core/user-agents/bye-user-agent-server.d.ts +10 -0
  133. package/dist/lib/types/lib/sip.js/core/user-agents/cancel-user-agent-client.d.ts +10 -0
  134. package/dist/lib/types/lib/sip.js/core/user-agents/index.d.ts +26 -0
  135. package/dist/lib/types/lib/sip.js/core/user-agents/info-user-agent-client.d.ts +10 -0
  136. package/dist/lib/types/lib/sip.js/core/user-agents/info-user-agent-server.d.ts +10 -0
  137. package/dist/lib/types/lib/sip.js/core/user-agents/invite-user-agent-client.d.ts +35 -0
  138. package/dist/lib/types/lib/sip.js/core/user-agents/invite-user-agent-server.d.ts +77 -0
  139. package/dist/lib/types/lib/sip.js/core/user-agents/message-user-agent-client.d.ts +10 -0
  140. package/dist/lib/types/lib/sip.js/core/user-agents/message-user-agent-server.d.ts +10 -0
  141. package/dist/lib/types/lib/sip.js/core/user-agents/notify-user-agent-client.d.ts +10 -0
  142. package/dist/lib/types/lib/sip.js/core/user-agents/notify-user-agent-server.d.ts +16 -0
  143. package/dist/lib/types/lib/sip.js/core/user-agents/prack-user-agent-client.d.ts +10 -0
  144. package/dist/lib/types/lib/sip.js/core/user-agents/prack-user-agent-server.d.ts +16 -0
  145. package/dist/lib/types/lib/sip.js/core/user-agents/publish-user-agent-client.d.ts +10 -0
  146. package/dist/lib/types/lib/sip.js/core/user-agents/re-invite-user-agent-client.d.ts +18 -0
  147. package/dist/lib/types/lib/sip.js/core/user-agents/re-invite-user-agent-server.d.ts +41 -0
  148. package/dist/lib/types/lib/sip.js/core/user-agents/re-subscribe-user-agent-client.d.ts +17 -0
  149. package/dist/lib/types/lib/sip.js/core/user-agents/re-subscribe-user-agent-server.d.ts +10 -0
  150. package/dist/lib/types/lib/sip.js/core/user-agents/refer-user-agent-client.d.ts +10 -0
  151. package/dist/lib/types/lib/sip.js/core/user-agents/refer-user-agent-server.d.ts +16 -0
  152. package/dist/lib/types/lib/sip.js/core/user-agents/register-user-agent-client.d.ts +10 -0
  153. package/dist/lib/types/lib/sip.js/core/user-agents/register-user-agent-server.d.ts +11 -0
  154. package/dist/lib/types/lib/sip.js/core/user-agents/subscribe-user-agent-client.d.ts +65 -0
  155. package/dist/lib/types/lib/sip.js/core/user-agents/subscribe-user-agent-server.d.ts +11 -0
  156. package/dist/lib/types/lib/sip.js/core/user-agents/user-agent-client.d.ts +103 -0
  157. package/dist/lib/types/lib/sip.js/core/user-agents/user-agent-server.d.ts +79 -0
  158. package/dist/lib/types/lib/sip.js/grammar/grammar.d.ts +26 -0
  159. package/dist/lib/types/lib/sip.js/grammar/index.d.ts +4 -0
  160. package/dist/lib/types/lib/sip.js/grammar/name-addr-header.d.ts +24 -0
  161. package/dist/lib/types/lib/sip.js/grammar/parameters.d.ts +16 -0
  162. package/dist/lib/types/lib/sip.js/grammar/pegjs/dist/grammar.d.ts +50 -0
  163. package/dist/lib/types/lib/sip.js/grammar/uri.d.ts +62 -0
  164. package/dist/lib/types/lib/sip.js/index.d.ts +9 -0
  165. package/dist/lib/types/lib/sip.js/platform/web/index.d.ts +4 -0
  166. package/dist/lib/types/lib/sip.js/platform/web/modifiers/index.d.ts +5 -0
  167. package/dist/lib/types/lib/sip.js/platform/web/modifiers/modifiers.d.ts +41 -0
  168. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/index.d.ts +14 -0
  169. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/media-stream-factory-default.d.ts +6 -0
  170. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/media-stream-factory.d.ts +6 -0
  171. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/peer-connection-configuration-default.d.ts +5 -0
  172. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/peer-connection-delegate.d.ts +63 -0
  173. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-configuration.d.ts +16 -0
  174. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory-default.d.ts +11 -0
  175. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory-options.d.ts +9 -0
  176. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory.d.ts +16 -0
  177. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-options.d.ts +47 -0
  178. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/session-description-handler.d.ts +212 -0
  179. package/dist/lib/types/lib/sip.js/platform/web/simple-user/index.d.ts +7 -0
  180. package/dist/lib/types/lib/sip.js/platform/web/simple-user/simple-user-delegate.d.ts +72 -0
  181. package/dist/lib/types/lib/sip.js/platform/web/simple-user/simple-user-options.d.ts +90 -0
  182. package/dist/lib/types/lib/sip.js/platform/web/simple-user/simple-user.d.ts +226 -0
  183. package/dist/lib/types/lib/sip.js/platform/web/transport/index.d.ts +6 -0
  184. package/dist/lib/types/lib/sip.js/platform/web/transport/transport-options.d.ts +30 -0
  185. package/dist/lib/types/lib/sip.js/platform/web/transport/transport.d.ts +125 -0
  186. package/dist/lib/types/lib/sip.js/version.d.ts +1 -0
  187. package/dist/lib/types/webrtc/webrtc-method.d.ts +2 -0
  188. package/dist/lib/types/webrtc/webrtc.d.ts +38 -0
  189. package/dist/lib/ue-soft-phone.min.js +3 -3
  190. package/dist/types/index.d.ts +1 -0
  191. package/dist/types/lib/sip.js/api/ack.d.ts +12 -0
  192. package/dist/types/lib/sip.js/api/bye.d.ts +16 -0
  193. package/dist/types/lib/sip.js/api/dtmf.d.ts +15 -0
  194. package/dist/types/lib/sip.js/api/emitter.d.ts +88 -0
  195. package/dist/types/lib/sip.js/api/exceptions/content-type-unsupported.d.ts +8 -0
  196. package/dist/types/lib/sip.js/api/exceptions/index.d.ts +5 -0
  197. package/dist/types/lib/sip.js/api/exceptions/request-pending.d.ts +9 -0
  198. package/dist/types/lib/sip.js/api/exceptions/session-description-handler.d.ts +8 -0
  199. package/dist/types/lib/sip.js/api/exceptions/session-terminated.d.ts +8 -0
  200. package/dist/types/lib/sip.js/api/exceptions/state-transition.d.ts +8 -0
  201. package/dist/types/lib/sip.js/api/index.d.ts +59 -0
  202. package/dist/types/lib/sip.js/api/info.d.ts +16 -0
  203. package/dist/types/lib/sip.js/api/invitation-accept-options.d.ts +19 -0
  204. package/dist/types/lib/sip.js/api/invitation-progress-options.d.ts +38 -0
  205. package/dist/types/lib/sip.js/api/invitation-reject-options.d.ts +25 -0
  206. package/dist/types/lib/sip.js/api/invitation.d.ts +179 -0
  207. package/dist/types/lib/sip.js/api/inviter-cancel-options.d.ts +9 -0
  208. package/dist/types/lib/sip.js/api/inviter-invite-options.d.ts +28 -0
  209. package/dist/types/lib/sip.js/api/inviter-options.d.ts +43 -0
  210. package/dist/types/lib/sip.js/api/inviter.d.ts +236 -0
  211. package/dist/types/lib/sip.js/api/message.d.ts +16 -0
  212. package/dist/types/lib/sip.js/api/messager-message-options.d.ts +11 -0
  213. package/dist/types/lib/sip.js/api/messager-options.d.ts +17 -0
  214. package/dist/types/lib/sip.js/api/messager.d.ts +26 -0
  215. package/dist/types/lib/sip.js/api/notification.d.ts +16 -0
  216. package/dist/types/lib/sip.js/api/notifier.d.ts +8 -0
  217. package/dist/types/lib/sip.js/api/publisher-options.d.ts +33 -0
  218. package/dist/types/lib/sip.js/api/publisher-publish-options.d.ts +6 -0
  219. package/dist/types/lib/sip.js/api/publisher-state.d.ts +21 -0
  220. package/dist/types/lib/sip.js/api/publisher-unpublish-options.d.ts +6 -0
  221. package/dist/types/lib/sip.js/api/publisher.d.ts +65 -0
  222. package/dist/types/lib/sip.js/api/referral.d.ts +38 -0
  223. package/dist/types/lib/sip.js/api/registerer-options.d.ts +46 -0
  224. package/dist/types/lib/sip.js/api/registerer-register-options.d.ts +11 -0
  225. package/dist/types/lib/sip.js/api/registerer-state.d.ts +21 -0
  226. package/dist/types/lib/sip.js/api/registerer-unregister-options.d.ts +16 -0
  227. package/dist/types/lib/sip.js/api/registerer.d.ts +144 -0
  228. package/dist/types/lib/sip.js/api/session-bye-options.d.ts +11 -0
  229. package/dist/types/lib/sip.js/api/session-delegate.d.ts +79 -0
  230. package/dist/types/lib/sip.js/api/session-description-handler-factory.d.ts +15 -0
  231. package/dist/types/lib/sip.js/api/session-description-handler.d.ts +74 -0
  232. package/dist/types/lib/sip.js/api/session-info-options.d.ts +11 -0
  233. package/dist/types/lib/sip.js/api/session-invite-options.d.ts +28 -0
  234. package/dist/types/lib/sip.js/api/session-message-options.d.ts +11 -0
  235. package/dist/types/lib/sip.js/api/session-options.d.ts +8 -0
  236. package/dist/types/lib/sip.js/api/session-refer-options.d.ts +14 -0
  237. package/dist/types/lib/sip.js/api/session-state.d.ts +45 -0
  238. package/dist/types/lib/sip.js/api/session.d.ts +359 -0
  239. package/dist/types/lib/sip.js/api/subscriber-options.d.ts +11 -0
  240. package/dist/types/lib/sip.js/api/subscriber-subscribe-options.d.ts +6 -0
  241. package/dist/types/lib/sip.js/api/subscriber.d.ts +94 -0
  242. package/dist/types/lib/sip.js/api/subscription-delegate.d.ts +12 -0
  243. package/dist/types/lib/sip.js/api/subscription-options.d.ts +8 -0
  244. package/dist/types/lib/sip.js/api/subscription-state.d.ts +19 -0
  245. package/dist/types/lib/sip.js/api/subscription-subscribe-options.d.ts +6 -0
  246. package/dist/types/lib/sip.js/api/subscription-unsubscribe-options.d.ts +6 -0
  247. package/dist/types/lib/sip.js/api/subscription.d.ts +84 -0
  248. package/dist/types/lib/sip.js/api/transport-state.d.ts +37 -0
  249. package/dist/types/lib/sip.js/api/transport.d.ts +159 -0
  250. package/dist/types/lib/sip.js/api/user-agent-delegate.d.ts +84 -0
  251. package/dist/types/lib/sip.js/api/user-agent-options.d.ts +253 -0
  252. package/dist/types/lib/sip.js/api/user-agent-state.d.ts +14 -0
  253. package/dist/types/lib/sip.js/api/user-agent.d.ts +200 -0
  254. package/dist/types/lib/sip.js/core/dialogs/dialog-state.d.ts +34 -0
  255. package/dist/types/lib/sip.js/core/dialogs/dialog.d.ts +161 -0
  256. package/dist/types/lib/sip.js/core/dialogs/index.d.ts +4 -0
  257. package/dist/types/lib/sip.js/core/dialogs/session-dialog.d.ts +196 -0
  258. package/dist/types/lib/sip.js/core/dialogs/subscription-dialog.d.ts +120 -0
  259. package/dist/types/lib/sip.js/core/exceptions/exception.d.ts +8 -0
  260. package/dist/types/lib/sip.js/core/exceptions/index.d.ts +3 -0
  261. package/dist/types/lib/sip.js/core/exceptions/transaction-state-error.d.ts +8 -0
  262. package/dist/types/lib/sip.js/core/exceptions/transport-error.d.ts +8 -0
  263. package/dist/types/lib/sip.js/core/index.d.ts +15 -0
  264. package/dist/types/lib/sip.js/core/log/index.d.ts +3 -0
  265. package/dist/types/lib/sip.js/core/log/levels.d.ts +10 -0
  266. package/dist/types/lib/sip.js/core/log/logger-factory.d.ts +21 -0
  267. package/dist/types/lib/sip.js/core/log/logger.d.ts +19 -0
  268. package/dist/types/lib/sip.js/core/messages/body.d.ts +64 -0
  269. package/dist/types/lib/sip.js/core/messages/digest-authentication.d.ts +51 -0
  270. package/dist/types/lib/sip.js/core/messages/incoming-message.d.ts +79 -0
  271. package/dist/types/lib/sip.js/core/messages/incoming-request-message.d.ts +10 -0
  272. package/dist/types/lib/sip.js/core/messages/incoming-request.d.ts +67 -0
  273. package/dist/types/lib/sip.js/core/messages/incoming-response-message.d.ts +10 -0
  274. package/dist/types/lib/sip.js/core/messages/incoming-response.d.ts +12 -0
  275. package/dist/types/lib/sip.js/core/messages/index.d.ts +13 -0
  276. package/dist/types/lib/sip.js/core/messages/md5.d.ts +32 -0
  277. package/dist/types/lib/sip.js/core/messages/methods/ack.d.ts +18 -0
  278. package/dist/types/lib/sip.js/core/messages/methods/bye.d.ts +21 -0
  279. package/dist/types/lib/sip.js/core/messages/methods/cancel.d.ts +21 -0
  280. package/dist/types/lib/sip.js/core/messages/methods/constants.d.ts +20 -0
  281. package/dist/types/lib/sip.js/core/messages/methods/index.d.ts +13 -0
  282. package/dist/types/lib/sip.js/core/messages/methods/info.d.ts +21 -0
  283. package/dist/types/lib/sip.js/core/messages/methods/invite.d.ts +86 -0
  284. package/dist/types/lib/sip.js/core/messages/methods/message.d.ts +21 -0
  285. package/dist/types/lib/sip.js/core/messages/methods/notify.d.ts +21 -0
  286. package/dist/types/lib/sip.js/core/messages/methods/prack.d.ts +21 -0
  287. package/dist/types/lib/sip.js/core/messages/methods/publish.d.ts +21 -0
  288. package/dist/types/lib/sip.js/core/messages/methods/refer.d.ts +21 -0
  289. package/dist/types/lib/sip.js/core/messages/methods/register.d.ts +21 -0
  290. package/dist/types/lib/sip.js/core/messages/methods/subscribe.d.ts +54 -0
  291. package/dist/types/lib/sip.js/core/messages/outgoing-request-message.d.ts +94 -0
  292. package/dist/types/lib/sip.js/core/messages/outgoing-request.d.ts +67 -0
  293. package/dist/types/lib/sip.js/core/messages/outgoing-response.d.ts +42 -0
  294. package/dist/types/lib/sip.js/core/messages/parser.d.ts +14 -0
  295. package/dist/types/lib/sip.js/core/messages/utils.d.ts +24 -0
  296. package/dist/types/lib/sip.js/core/session/index.d.ts +2 -0
  297. package/dist/types/lib/sip.js/core/session/session-delegate.d.ts +70 -0
  298. package/dist/types/lib/sip.js/core/session/session.d.ts +134 -0
  299. package/dist/types/lib/sip.js/core/subscription/index.d.ts +2 -0
  300. package/dist/types/lib/sip.js/core/subscription/subscription-delegate.d.ts +27 -0
  301. package/dist/types/lib/sip.js/core/subscription/subscription.d.ts +55 -0
  302. package/dist/types/lib/sip.js/core/timers.d.ts +20 -0
  303. package/dist/types/lib/sip.js/core/transactions/client-transaction.d.ts +45 -0
  304. package/dist/types/lib/sip.js/core/transactions/index.d.ts +10 -0
  305. package/dist/types/lib/sip.js/core/transactions/invite-client-transaction.d.ts +116 -0
  306. package/dist/types/lib/sip.js/core/transactions/invite-server-transaction.d.ts +127 -0
  307. package/dist/types/lib/sip.js/core/transactions/non-invite-client-transaction.d.ts +69 -0
  308. package/dist/types/lib/sip.js/core/transactions/non-invite-server-transaction.d.ts +57 -0
  309. package/dist/types/lib/sip.js/core/transactions/server-transaction.d.ts +35 -0
  310. package/dist/types/lib/sip.js/core/transactions/transaction-state.d.ts +13 -0
  311. package/dist/types/lib/sip.js/core/transactions/transaction-user.d.ts +72 -0
  312. package/dist/types/lib/sip.js/core/transactions/transaction.d.ts +79 -0
  313. package/dist/types/lib/sip.js/core/transport.d.ts +31 -0
  314. package/dist/types/lib/sip.js/core/user-agent-core/allowed-methods.d.ts +4 -0
  315. package/dist/types/lib/sip.js/core/user-agent-core/index.d.ts +3 -0
  316. package/dist/types/lib/sip.js/core/user-agent-core/user-agent-core-configuration.d.ts +99 -0
  317. package/dist/types/lib/sip.js/core/user-agent-core/user-agent-core-delegate.d.ts +37 -0
  318. package/dist/types/lib/sip.js/core/user-agent-core/user-agent-core.d.ts +179 -0
  319. package/dist/types/lib/sip.js/core/user-agents/bye-user-agent-client.d.ts +10 -0
  320. package/dist/types/lib/sip.js/core/user-agents/bye-user-agent-server.d.ts +10 -0
  321. package/dist/types/lib/sip.js/core/user-agents/cancel-user-agent-client.d.ts +10 -0
  322. package/dist/types/lib/sip.js/core/user-agents/index.d.ts +26 -0
  323. package/dist/types/lib/sip.js/core/user-agents/info-user-agent-client.d.ts +10 -0
  324. package/dist/types/lib/sip.js/core/user-agents/info-user-agent-server.d.ts +10 -0
  325. package/dist/types/lib/sip.js/core/user-agents/invite-user-agent-client.d.ts +35 -0
  326. package/dist/types/lib/sip.js/core/user-agents/invite-user-agent-server.d.ts +77 -0
  327. package/dist/types/lib/sip.js/core/user-agents/message-user-agent-client.d.ts +10 -0
  328. package/dist/types/lib/sip.js/core/user-agents/message-user-agent-server.d.ts +10 -0
  329. package/dist/types/lib/sip.js/core/user-agents/notify-user-agent-client.d.ts +10 -0
  330. package/dist/types/lib/sip.js/core/user-agents/notify-user-agent-server.d.ts +16 -0
  331. package/dist/types/lib/sip.js/core/user-agents/prack-user-agent-client.d.ts +10 -0
  332. package/dist/types/lib/sip.js/core/user-agents/prack-user-agent-server.d.ts +16 -0
  333. package/dist/types/lib/sip.js/core/user-agents/publish-user-agent-client.d.ts +10 -0
  334. package/dist/types/lib/sip.js/core/user-agents/re-invite-user-agent-client.d.ts +18 -0
  335. package/dist/types/lib/sip.js/core/user-agents/re-invite-user-agent-server.d.ts +41 -0
  336. package/dist/types/lib/sip.js/core/user-agents/re-subscribe-user-agent-client.d.ts +17 -0
  337. package/dist/types/lib/sip.js/core/user-agents/re-subscribe-user-agent-server.d.ts +10 -0
  338. package/dist/types/lib/sip.js/core/user-agents/refer-user-agent-client.d.ts +10 -0
  339. package/dist/types/lib/sip.js/core/user-agents/refer-user-agent-server.d.ts +16 -0
  340. package/dist/types/lib/sip.js/core/user-agents/register-user-agent-client.d.ts +10 -0
  341. package/dist/types/lib/sip.js/core/user-agents/register-user-agent-server.d.ts +11 -0
  342. package/dist/types/lib/sip.js/core/user-agents/subscribe-user-agent-client.d.ts +65 -0
  343. package/dist/types/lib/sip.js/core/user-agents/subscribe-user-agent-server.d.ts +11 -0
  344. package/dist/types/lib/sip.js/core/user-agents/user-agent-client.d.ts +103 -0
  345. package/dist/types/lib/sip.js/core/user-agents/user-agent-server.d.ts +79 -0
  346. package/dist/types/lib/sip.js/grammar/grammar.d.ts +26 -0
  347. package/dist/types/lib/sip.js/grammar/index.d.ts +4 -0
  348. package/dist/types/lib/sip.js/grammar/name-addr-header.d.ts +24 -0
  349. package/dist/types/lib/sip.js/grammar/parameters.d.ts +16 -0
  350. package/dist/types/lib/sip.js/grammar/pegjs/dist/grammar.d.ts +50 -0
  351. package/dist/types/lib/sip.js/grammar/uri.d.ts +62 -0
  352. package/dist/types/lib/sip.js/index.d.ts +9 -0
  353. package/dist/types/lib/sip.js/platform/web/index.d.ts +4 -0
  354. package/dist/types/lib/sip.js/platform/web/modifiers/index.d.ts +5 -0
  355. package/dist/types/lib/sip.js/platform/web/modifiers/modifiers.d.ts +41 -0
  356. package/dist/types/lib/sip.js/platform/web/session-description-handler/index.d.ts +14 -0
  357. package/dist/types/lib/sip.js/platform/web/session-description-handler/media-stream-factory-default.d.ts +6 -0
  358. package/dist/types/lib/sip.js/platform/web/session-description-handler/media-stream-factory.d.ts +6 -0
  359. package/dist/types/lib/sip.js/platform/web/session-description-handler/peer-connection-configuration-default.d.ts +5 -0
  360. package/dist/types/lib/sip.js/platform/web/session-description-handler/peer-connection-delegate.d.ts +63 -0
  361. package/dist/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-configuration.d.ts +16 -0
  362. package/dist/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory-default.d.ts +11 -0
  363. package/dist/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory-options.d.ts +9 -0
  364. package/dist/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory.d.ts +16 -0
  365. package/dist/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-options.d.ts +47 -0
  366. package/dist/types/lib/sip.js/platform/web/session-description-handler/session-description-handler.d.ts +212 -0
  367. package/dist/types/lib/sip.js/platform/web/simple-user/index.d.ts +7 -0
  368. package/dist/types/lib/sip.js/platform/web/simple-user/simple-user-delegate.d.ts +72 -0
  369. package/dist/types/lib/sip.js/platform/web/simple-user/simple-user-options.d.ts +90 -0
  370. package/dist/types/lib/sip.js/platform/web/simple-user/simple-user.d.ts +226 -0
  371. package/dist/types/lib/sip.js/platform/web/transport/index.d.ts +6 -0
  372. package/dist/types/lib/sip.js/platform/web/transport/transport-options.d.ts +30 -0
  373. package/dist/types/lib/sip.js/platform/web/transport/transport.d.ts +125 -0
  374. package/dist/types/lib/sip.js/version.d.ts +1 -0
  375. package/dist/types/webrtc/webrtc-method.d.ts +2 -0
  376. package/dist/types/webrtc/webrtc.d.ts +38 -0
  377. package/dist/ue-softphone-sdk.js +2 -2
  378. package/index.html/index.html +23 -9
  379. package/package.json +1 -1
  380. package/src/index.ts +33 -15
  381. package/src/lib/sip.js/api/ack.ts +15 -0
  382. package/src/lib/sip.js/api/api-extractor.json +350 -0
  383. package/src/lib/sip.js/api/bye.ts +27 -0
  384. package/src/lib/sip.js/api/dtmf.ts +27 -0
  385. package/src/lib/sip.js/api/emitter.ts +110 -0
  386. package/src/lib/sip.js/api/exceptions/content-type-unsupported.ts +11 -0
  387. package/src/lib/sip.js/api/exceptions/index.ts +5 -0
  388. package/src/lib/sip.js/api/exceptions/request-pending.ts +12 -0
  389. package/src/lib/sip.js/api/exceptions/session-description-handler.ts +11 -0
  390. package/src/lib/sip.js/api/exceptions/session-terminated.ts +11 -0
  391. package/src/lib/sip.js/api/exceptions/state-transition.ts +11 -0
  392. package/src/lib/sip.js/api/index.ts +59 -0
  393. package/src/lib/sip.js/api/info.ts +27 -0
  394. package/src/lib/sip.js/api/invitation-accept-options.ts +20 -0
  395. package/src/lib/sip.js/api/invitation-progress-options.ts +36 -0
  396. package/src/lib/sip.js/api/invitation-reject-options.ts +22 -0
  397. package/src/lib/sip.js/api/invitation.ts +815 -0
  398. package/src/lib/sip.js/api/inviter-cancel-options.ts +9 -0
  399. package/src/lib/sip.js/api/inviter-invite-options.ts +29 -0
  400. package/src/lib/sip.js/api/inviter-options.ts +44 -0
  401. package/src/lib/sip.js/api/inviter.ts +1126 -0
  402. package/src/lib/sip.js/api/message.ts +27 -0
  403. package/src/lib/sip.js/api/messager-message-options.ts +12 -0
  404. package/src/lib/sip.js/api/messager-options.ts +18 -0
  405. package/src/lib/sip.js/api/messager.ts +89 -0
  406. package/src/lib/sip.js/api/notification.ts +27 -0
  407. package/src/lib/sip.js/api/notifier.ts +7 -0
  408. package/src/lib/sip.js/api/publisher-options.ts +34 -0
  409. package/src/lib/sip.js/api/publisher-publish-options.ts +6 -0
  410. package/src/lib/sip.js/api/publisher-state.ts +21 -0
  411. package/src/lib/sip.js/api/publisher-unpublish-options.ts +6 -0
  412. package/src/lib/sip.js/api/publisher.ts +421 -0
  413. package/src/lib/sip.js/api/referral.ts +89 -0
  414. package/src/lib/sip.js/api/registerer-options.ts +55 -0
  415. package/src/lib/sip.js/api/registerer-register-options.ts +12 -0
  416. package/src/lib/sip.js/api/registerer-state.ts +21 -0
  417. package/src/lib/sip.js/api/registerer-unregister-options.ts +17 -0
  418. package/src/lib/sip.js/api/registerer.ts +819 -0
  419. package/src/lib/sip.js/api/session-bye-options.ts +12 -0
  420. package/src/lib/sip.js/api/session-delegate.ts +87 -0
  421. package/src/lib/sip.js/api/session-description-handler-factory.ts +16 -0
  422. package/src/lib/sip.js/api/session-description-handler.ts +89 -0
  423. package/src/lib/sip.js/api/session-info-options.ts +12 -0
  424. package/src/lib/sip.js/api/session-invite-options.ts +29 -0
  425. package/src/lib/sip.js/api/session-message-options.ts +12 -0
  426. package/src/lib/sip.js/api/session-options.ts +8 -0
  427. package/src/lib/sip.js/api/session-refer-options.ts +15 -0
  428. package/src/lib/sip.js/api/session-state.ts +45 -0
  429. package/src/lib/sip.js/api/session.ts +1454 -0
  430. package/src/lib/sip.js/api/subscriber-options.ts +12 -0
  431. package/src/lib/sip.js/api/subscriber-subscribe-options.ts +6 -0
  432. package/src/lib/sip.js/api/subscriber.ts +537 -0
  433. package/src/lib/sip.js/api/subscription-delegate.ts +13 -0
  434. package/src/lib/sip.js/api/subscription-options.ts +8 -0
  435. package/src/lib/sip.js/api/subscription-state.ts +19 -0
  436. package/src/lib/sip.js/api/subscription-subscribe-options.ts +6 -0
  437. package/src/lib/sip.js/api/subscription-unsubscribe-options.ts +6 -0
  438. package/src/lib/sip.js/api/subscription.ts +161 -0
  439. package/src/lib/sip.js/api/transport-state.ts +37 -0
  440. package/src/lib/sip.js/api/transport.ts +169 -0
  441. package/src/lib/sip.js/api/user-agent-delegate.ts +95 -0
  442. package/src/lib/sip.js/api/user-agent-options.ts +322 -0
  443. package/src/lib/sip.js/api/user-agent-state.ts +14 -0
  444. package/src/lib/sip.js/api/user-agent.ts +1013 -0
  445. package/src/lib/sip.js/core/api-extractor.json +350 -0
  446. package/src/lib/sip.js/core/dialogs/dialog-state.ts +35 -0
  447. package/src/lib/sip.js/core/dialogs/dialog.ts +605 -0
  448. package/src/lib/sip.js/core/dialogs/index.ts +4 -0
  449. package/src/lib/sip.js/core/dialogs/session-dialog.ts +997 -0
  450. package/src/lib/sip.js/core/dialogs/subscription-dialog.ts +558 -0
  451. package/src/lib/sip.js/core/exceptions/exception.ts +11 -0
  452. package/src/lib/sip.js/core/exceptions/index.ts +3 -0
  453. package/src/lib/sip.js/core/exceptions/transaction-state-error.ts +11 -0
  454. package/src/lib/sip.js/core/exceptions/transport-error.ts +11 -0
  455. package/src/lib/sip.js/core/index.ts +19 -0
  456. package/src/lib/sip.js/core/log/index.ts +3 -0
  457. package/src/lib/sip.js/core/log/levels.ts +10 -0
  458. package/src/lib/sip.js/core/log/logger-factory.ts +119 -0
  459. package/src/lib/sip.js/core/log/logger.ts +42 -0
  460. package/src/lib/sip.js/core/messages/body.ts +171 -0
  461. package/src/lib/sip.js/core/messages/digest-authentication.ts +190 -0
  462. package/src/lib/sip.js/core/messages/incoming-message.ts +152 -0
  463. package/src/lib/sip.js/core/messages/incoming-request-message.ts +14 -0
  464. package/src/lib/sip.js/core/messages/incoming-request.ts +75 -0
  465. package/src/lib/sip.js/core/messages/incoming-response-message.ts +14 -0
  466. package/src/lib/sip.js/core/messages/incoming-response.ts +13 -0
  467. package/src/lib/sip.js/core/messages/index.ts +18 -0
  468. package/src/lib/sip.js/core/messages/md5.ts +437 -0
  469. package/src/lib/sip.js/core/messages/methods/ack.ts +22 -0
  470. package/src/lib/sip.js/core/messages/methods/bye.ts +22 -0
  471. package/src/lib/sip.js/core/messages/methods/cancel.ts +22 -0
  472. package/src/lib/sip.js/core/messages/methods/constants.ts +21 -0
  473. package/src/lib/sip.js/core/messages/methods/index.ts +13 -0
  474. package/src/lib/sip.js/core/messages/methods/info.ts +22 -0
  475. package/src/lib/sip.js/core/messages/methods/invite.ts +104 -0
  476. package/src/lib/sip.js/core/messages/methods/message.ts +22 -0
  477. package/src/lib/sip.js/core/messages/methods/notify.ts +22 -0
  478. package/src/lib/sip.js/core/messages/methods/prack.ts +22 -0
  479. package/src/lib/sip.js/core/messages/methods/publish.ts +22 -0
  480. package/src/lib/sip.js/core/messages/methods/refer.ts +22 -0
  481. package/src/lib/sip.js/core/messages/methods/register.ts +22 -0
  482. package/src/lib/sip.js/core/messages/methods/subscribe.ts +59 -0
  483. package/src/lib/sip.js/core/messages/outgoing-request-message.ts +299 -0
  484. package/src/lib/sip.js/core/messages/outgoing-request.ts +77 -0
  485. package/src/lib/sip.js/core/messages/outgoing-response.ts +174 -0
  486. package/src/lib/sip.js/core/messages/parser.ts +265 -0
  487. package/src/lib/sip.js/core/messages/utils.ts +144 -0
  488. package/src/lib/sip.js/core/session/index.ts +2 -0
  489. package/src/lib/sip.js/core/session/session-delegate.ts +88 -0
  490. package/src/lib/sip.js/core/session/session.ts +158 -0
  491. package/src/lib/sip.js/core/subscription/index.ts +2 -0
  492. package/src/lib/sip.js/core/subscription/subscription-delegate.ts +30 -0
  493. package/src/lib/sip.js/core/subscription/subscription.ts +61 -0
  494. package/src/lib/sip.js/core/timers.ts +24 -0
  495. package/src/lib/sip.js/core/transactions/client-transaction.ts +78 -0
  496. package/src/lib/sip.js/core/transactions/index.ts +10 -0
  497. package/src/lib/sip.js/core/transactions/invite-client-transaction.ts +505 -0
  498. package/src/lib/sip.js/core/transactions/invite-server-transaction.ts +433 -0
  499. package/src/lib/sip.js/core/transactions/non-invite-client-transaction.ts +258 -0
  500. package/src/lib/sip.js/core/transactions/non-invite-server-transaction.ts +242 -0
  501. package/src/lib/sip.js/core/transactions/server-transaction.ts +47 -0
  502. package/src/lib/sip.js/core/transactions/transaction-state.ts +13 -0
  503. package/src/lib/sip.js/core/transactions/transaction-user.ts +82 -0
  504. package/src/lib/sip.js/core/transactions/transaction.ts +149 -0
  505. package/src/lib/sip.js/core/transport.ts +32 -0
  506. package/src/lib/sip.js/core/user-agent-core/allowed-methods.ts +19 -0
  507. package/src/lib/sip.js/core/user-agent-core/index.ts +3 -0
  508. package/src/lib/sip.js/core/user-agent-core/user-agent-core-configuration.ts +111 -0
  509. package/src/lib/sip.js/core/user-agent-core/user-agent-core-delegate.ts +50 -0
  510. package/src/lib/sip.js/core/user-agent-core/user-agent-core.ts +905 -0
  511. package/src/lib/sip.js/core/user-agents/bye-user-agent-client.ts +16 -0
  512. package/src/lib/sip.js/core/user-agents/bye-user-agent-server.ts +14 -0
  513. package/src/lib/sip.js/core/user-agents/cancel-user-agent-client.ts +14 -0
  514. package/src/lib/sip.js/core/user-agents/index.ts +26 -0
  515. package/src/lib/sip.js/core/user-agents/info-user-agent-client.ts +15 -0
  516. package/src/lib/sip.js/core/user-agents/info-user-agent-server.ts +14 -0
  517. package/src/lib/sip.js/core/user-agents/invite-user-agent-client.ts +406 -0
  518. package/src/lib/sip.js/core/user-agents/invite-user-agent-server.ts +269 -0
  519. package/src/lib/sip.js/core/user-agents/message-user-agent-client.ts +14 -0
  520. package/src/lib/sip.js/core/user-agents/message-user-agent-server.ts +14 -0
  521. package/src/lib/sip.js/core/user-agents/notify-user-agent-client.ts +15 -0
  522. package/src/lib/sip.js/core/user-agents/notify-user-agent-server.ts +30 -0
  523. package/src/lib/sip.js/core/user-agents/prack-user-agent-client.ts +16 -0
  524. package/src/lib/sip.js/core/user-agents/prack-user-agent-server.ts +37 -0
  525. package/src/lib/sip.js/core/user-agents/publish-user-agent-client.ts +14 -0
  526. package/src/lib/sip.js/core/user-agents/re-invite-user-agent-client.ts +128 -0
  527. package/src/lib/sip.js/core/user-agents/re-invite-user-agent-server.ts +109 -0
  528. package/src/lib/sip.js/core/user-agents/re-subscribe-user-agent-client.ts +78 -0
  529. package/src/lib/sip.js/core/user-agents/re-subscribe-user-agent-server.ts +14 -0
  530. package/src/lib/sip.js/core/user-agents/refer-user-agent-client.ts +15 -0
  531. package/src/lib/sip.js/core/user-agents/refer-user-agent-server.ts +30 -0
  532. package/src/lib/sip.js/core/user-agents/register-user-agent-client.ts +14 -0
  533. package/src/lib/sip.js/core/user-agents/register-user-agent-server.ts +14 -0
  534. package/src/lib/sip.js/core/user-agents/subscribe-user-agent-client.ts +342 -0
  535. package/src/lib/sip.js/core/user-agents/subscribe-user-agent-server.ts +14 -0
  536. package/src/lib/sip.js/core/user-agents/user-agent-client.ts +378 -0
  537. package/src/lib/sip.js/core/user-agents/user-agent-server.ts +276 -0
  538. package/src/lib/sip.js/grammar/grammar.ts +55 -0
  539. package/src/lib/sip.js/grammar/index.ts +4 -0
  540. package/src/lib/sip.js/grammar/name-addr-header.ts +58 -0
  541. package/src/lib/sip.js/grammar/parameters.ts +45 -0
  542. package/src/lib/sip.js/grammar/pegjs/README.md +9 -0
  543. package/src/lib/sip.js/grammar/pegjs/dist/grammar.ts +1557 -0
  544. package/src/lib/sip.js/grammar/pegjs/src/grammar.pegjs +1009 -0
  545. package/src/lib/sip.js/grammar/uri.ts +370 -0
  546. package/src/lib/sip.js/index.ts +20 -0
  547. package/src/lib/sip.js/platform/react/README.md +1 -0
  548. package/src/lib/sip.js/platform/web/index.ts +4 -0
  549. package/src/lib/sip.js/platform/web/modifiers/index.ts +5 -0
  550. package/src/lib/sip.js/platform/web/modifiers/modifiers.ts +180 -0
  551. package/src/lib/sip.js/platform/web/session-description-handler/api-extractor.json +350 -0
  552. package/src/lib/sip.js/platform/web/session-description-handler/index.ts +14 -0
  553. package/src/lib/sip.js/platform/web/session-description-handler/media-stream-factory-default.ts +22 -0
  554. package/src/lib/sip.js/platform/web/session-description-handler/media-stream-factory.ts +10 -0
  555. package/src/lib/sip.js/platform/web/session-description-handler/peer-connection-configuration-default.ts +17 -0
  556. package/src/lib/sip.js/platform/web/session-description-handler/peer-connection-delegate.ts +72 -0
  557. package/src/lib/sip.js/platform/web/session-description-handler/session-description-handler-configuration.ts +17 -0
  558. package/src/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory-default.ts +45 -0
  559. package/src/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory-options.ts +10 -0
  560. package/src/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory.ts +17 -0
  561. package/src/lib/sip.js/platform/web/session-description-handler/session-description-handler-options.ts +56 -0
  562. package/src/lib/sip.js/platform/web/session-description-handler/session-description-handler.ts +938 -0
  563. package/src/lib/sip.js/platform/web/simple-user/api-extractor.json +350 -0
  564. package/src/lib/sip.js/platform/web/simple-user/index.ts +7 -0
  565. package/src/lib/sip.js/platform/web/simple-user/simple-user-delegate.ts +82 -0
  566. package/src/lib/sip.js/platform/web/simple-user/simple-user-options.ts +102 -0
  567. package/src/lib/sip.js/platform/web/simple-user/simple-user.ts +1099 -0
  568. package/src/lib/sip.js/platform/web/transport/api-extractor.json +350 -0
  569. package/src/lib/sip.js/platform/web/transport/index.ts +6 -0
  570. package/src/lib/sip.js/platform/web/transport/transport-options.ts +34 -0
  571. package/src/lib/sip.js/platform/web/transport/transport.ts +743 -0
  572. package/src/lib/sip.js/version.ts +1 -0
  573. package/src/webrtc/webrtc-method.ts +49 -0
  574. package/src/webrtc/webrtc.ts +350 -0
  575. package/sdkdemo/hangup.wav +0 -0
  576. package/sdkdemo/img/wifi1.b7af5ed5.svg +0 -10
  577. package/sdkdemo/img/wifi2.1648a543.svg +0 -4
  578. package/sdkdemo/img/wifi3.ec030889.svg +0 -4
  579. package/sdkdemo/img/wifi4.101d572a.svg +0 -4
  580. package/sdkdemo/ring.wav +0 -0
  581. package/sdkdemo/ue-load.min.js +0 -119
  582. package/sdkdemo/ue.global.js +0 -15361
  583. package/sdkdemo/ue.lib.css +0 -1
  584. package/sdkdemo/ue.min.js +0 -49
  585. package/sdkdemo/webphone_ez.html +0 -76
@@ -0,0 +1,743 @@
1
+ // @ts-nocheck
2
+ import { Emitter, EmitterImpl } from '../../../api/emitter'
3
+ import { StateTransitionError } from '../../../api/exceptions'
4
+ import { Transport as TransportDefinition } from '../../../api/transport'
5
+ import { TransportState } from '../../../api/transport-state'
6
+ import { Grammar, Logger } from '../../../core'
7
+ import { TransportOptions } from './transport-options'
8
+
9
+ /**
10
+ * Transport for SIP over secure WebSocket (WSS).
11
+ * @public
12
+ */
13
+ export class Transport implements TransportDefinition {
14
+ private static defaultOptions: Required<TransportOptions> = {
15
+ server: '',
16
+ connectionTimeout: 5,
17
+ keepAliveInterval: 0,
18
+ keepAliveDebounce: 10,
19
+ traceSip: true
20
+ }
21
+
22
+ public onConnect: (() => void) | undefined
23
+ public onDisconnect: ((error?: Error) => void) | undefined
24
+ public onMessage: ((message: string) => void) | undefined
25
+
26
+ private _protocol: string
27
+ private _state: TransportState = TransportState.Disconnected
28
+ private _stateEventEmitter: EmitterImpl<TransportState>
29
+ private _ws: WebSocket | undefined
30
+
31
+ private configuration: Required<TransportOptions>
32
+
33
+ private connectPromise: Promise<void> | undefined
34
+ private connectResolve: (() => void) | undefined
35
+ private connectReject: ((error: Error) => void) | undefined
36
+ private connectTimeout: number | undefined
37
+
38
+ private disconnectPromise: Promise<void> | undefined
39
+ private disconnectResolve: (() => void) | undefined
40
+ private disconnectReject: ((error?: Error) => void) | undefined
41
+
42
+ private keepAliveInterval: number | undefined
43
+ private keepAliveDebounceTimeout: number | undefined
44
+
45
+ private logger: Logger
46
+ private transitioningState = false
47
+
48
+ constructor(logger: Logger, options?: TransportOptions) {
49
+ // state emitter
50
+ this._stateEventEmitter = new EmitterImpl<TransportState>()
51
+
52
+ // logger
53
+ this.logger = logger
54
+
55
+ // guard deprecated options (remove this in version 16.x)
56
+ if (options) {
57
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
58
+ const optionsDeprecated: any = options
59
+ const wsServersDeprecated: string | Array<string> | undefined = optionsDeprecated?.wsServers
60
+ const maxReconnectionAttemptsDeprecated: number | undefined = optionsDeprecated?.maxReconnectionAttempts
61
+ if (wsServersDeprecated !== undefined) {
62
+ const deprecatedMessage =
63
+ `The transport option "wsServers" as has apparently been specified and has been deprecated. ` +
64
+ 'It will no longer be available starting with SIP.js release 0.16.0. Please update accordingly.'
65
+ this.logger.warn(deprecatedMessage)
66
+ }
67
+ if (maxReconnectionAttemptsDeprecated !== undefined) {
68
+ const deprecatedMessage =
69
+ `The transport option "maxReconnectionAttempts" as has apparently been specified and has been deprecated. ` +
70
+ 'It will no longer be available starting with SIP.js release 0.16.0. Please update accordingly.'
71
+ this.logger.warn(deprecatedMessage)
72
+ }
73
+ // hack
74
+ if (wsServersDeprecated && !options.server) {
75
+ if (typeof wsServersDeprecated === 'string') {
76
+ options.server = wsServersDeprecated
77
+ }
78
+ if (wsServersDeprecated instanceof Array) {
79
+ options.server = wsServersDeprecated[0]
80
+ }
81
+ }
82
+ }
83
+
84
+ // initialize configuration
85
+ this.configuration = {
86
+ // start with the default option values
87
+ ...Transport.defaultOptions,
88
+ // apply any options passed in via the constructor
89
+ ...options
90
+ }
91
+
92
+ // validate server URL
93
+ const url = this.configuration.server
94
+ const parsed: { scheme: string } | -1 = Grammar.parse(url, 'absoluteURI')
95
+ if (parsed === -1) {
96
+ this.logger.error(`Invalid WebSocket Server URL "${url}"`)
97
+ throw new Error('Invalid WebSocket Server URL')
98
+ }
99
+ if (!['wss', 'ws', 'udp'].includes(parsed.scheme)) {
100
+ this.logger.error(`Invalid scheme in WebSocket Server URL "${url}"`)
101
+ throw new Error('Invalid scheme in WebSocket Server URL')
102
+ }
103
+ this._protocol = parsed.scheme.toUpperCase()
104
+ }
105
+
106
+ public dispose(): Promise<void> {
107
+ return this.disconnect()
108
+ }
109
+
110
+ /**
111
+ * The protocol.
112
+ *
113
+ * @remarks
114
+ * Formatted as defined for the Via header sent-protocol transport.
115
+ * https://tools.ietf.org/html/rfc3261#section-20.42
116
+ */
117
+ public get protocol(): string {
118
+ return this._protocol
119
+ }
120
+
121
+ /**
122
+ * The URL of the WebSocket Server.
123
+ */
124
+ public get server(): string {
125
+ return this.configuration.server
126
+ }
127
+
128
+ /**
129
+ * Transport state.
130
+ */
131
+ public get state(): TransportState {
132
+ return this._state
133
+ }
134
+
135
+ /**
136
+ * Transport state change emitter.
137
+ */
138
+ public get stateChange(): Emitter<TransportState> {
139
+ return this._stateEventEmitter
140
+ }
141
+
142
+ /**
143
+ * The WebSocket.
144
+ */
145
+ public get ws(): WebSocket | undefined {
146
+ return this._ws
147
+ }
148
+
149
+ /**
150
+ * Connect to network.
151
+ * Resolves once connected. Otherwise rejects with an Error.
152
+ */
153
+ public connect(): Promise<void> {
154
+ return this._connect()
155
+ }
156
+
157
+ /**
158
+ * Disconnect from network.
159
+ * Resolves once disconnected. Otherwise rejects with an Error.
160
+ */
161
+ public disconnect(): Promise<void> {
162
+ return this._disconnect()
163
+ }
164
+
165
+ /**
166
+ * Returns true if the `state` equals "Connected".
167
+ * @remarks
168
+ * This is equivalent to `state === TransportState.Connected`.
169
+ */
170
+ public isConnected(): boolean {
171
+ return this.state === TransportState.Connected
172
+ }
173
+
174
+ /**
175
+ * Sends a message.
176
+ * Resolves once message is sent. Otherwise rejects with an Error.
177
+ * @param message - Message to send.
178
+ */
179
+ public send(message: string): Promise<void> {
180
+ // Error handling is independent of whether the message was a request or
181
+ // response.
182
+ //
183
+ // If the transport user asks for a message to be sent over an
184
+ // unreliable transport, and the result is an ICMP error, the behavior
185
+ // depends on the type of ICMP error. Host, network, port or protocol
186
+ // unreachable errors, or parameter problem errors SHOULD cause the
187
+ // transport layer to inform the transport user of a failure in sending.
188
+ // Source quench and TTL exceeded ICMP errors SHOULD be ignored.
189
+ //
190
+ // If the transport user asks for a request to be sent over a reliable
191
+ // transport, and the result is a connection failure, the transport
192
+ // layer SHOULD inform the transport user of a failure in sending.
193
+ // https://tools.ietf.org/html/rfc3261#section-18.4
194
+ return this._send(message)
195
+ }
196
+
197
+ private _connect(): Promise<void> {
198
+ this.logger.log(`Connecting ${this.server}`)
199
+
200
+ switch (this.state) {
201
+ case TransportState.Connecting:
202
+ // If `state` is "Connecting", `state` MUST NOT transition before returning.
203
+ if (this.transitioningState) {
204
+ return Promise.reject(this.transitionLoopDetectedError(TransportState.Connecting))
205
+ }
206
+ if (!this.connectPromise) {
207
+ throw new Error('Connect promise must be defined.')
208
+ }
209
+ return this.connectPromise // Already connecting
210
+ case TransportState.Connected:
211
+ // If `state` is "Connected", `state` MUST NOT transition before returning.
212
+ if (this.transitioningState) {
213
+ return Promise.reject(this.transitionLoopDetectedError(TransportState.Connecting))
214
+ }
215
+ if (this.connectPromise) {
216
+ throw new Error('Connect promise must not be defined.')
217
+ }
218
+ return Promise.resolve() // Already connected
219
+ case TransportState.Disconnecting:
220
+ // If `state` is "Disconnecting", `state` MUST transition to "Connecting" before returning
221
+ if (this.connectPromise) {
222
+ throw new Error('Connect promise must not be defined.')
223
+ }
224
+ try {
225
+ this.transitionState(TransportState.Connecting)
226
+ } catch (e) {
227
+ if (e instanceof StateTransitionError) {
228
+ return Promise.reject(e) // Loop detected
229
+ }
230
+ throw e
231
+ }
232
+ break
233
+ case TransportState.Disconnected:
234
+ // If `state` is "Disconnected" `state` MUST transition to "Connecting" before returning
235
+ if (this.connectPromise) {
236
+ throw new Error('Connect promise must not be defined.')
237
+ }
238
+ try {
239
+ this.transitionState(TransportState.Connecting)
240
+ } catch (e) {
241
+ if (e instanceof StateTransitionError) {
242
+ return Promise.reject(e) // Loop detected
243
+ }
244
+ throw e
245
+ }
246
+ break
247
+ default:
248
+ throw new Error('Unknown state')
249
+ }
250
+
251
+ let ws: WebSocket
252
+ try {
253
+ // WebSocket()
254
+ // https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/WebSocket
255
+ ws = new WebSocket(this.server, 'sip')
256
+ ws.binaryType = 'arraybuffer' // set data type of received binary messages
257
+ ws.addEventListener('close', (ev: CloseEvent) => this.onWebSocketClose(ev, ws))
258
+ ws.addEventListener('error', (ev: Event) => this.onWebSocketError(ev, ws))
259
+ ws.addEventListener('open', (ev: Event) => this.onWebSocketOpen(ev, ws))
260
+ ws.addEventListener('message', (ev: MessageEvent) => this.onWebSocketMessage(ev, ws))
261
+ this._ws = ws
262
+ } catch (error) {
263
+ this._ws = undefined
264
+ this.logger.error('WebSocket construction failed.')
265
+ this.logger.error(error)
266
+ return new Promise((resolve, reject) => {
267
+ this.connectResolve = resolve
268
+ this.connectReject = reject
269
+ // The `state` MUST transition to "Disconnecting" or "Disconnected" before rejecting
270
+ this.transitionState(TransportState.Disconnected, error)
271
+ })
272
+ }
273
+
274
+ this.connectPromise = new Promise((resolve, reject) => {
275
+ this.connectResolve = resolve
276
+ this.connectReject = reject
277
+
278
+ this.connectTimeout = setTimeout(() => {
279
+ this.logger.warn(
280
+ 'Connect timed out. ' +
281
+ 'Exceeded time set in configuration.connectionTimeout: ' +
282
+ this.configuration.connectionTimeout +
283
+ 's.'
284
+ )
285
+ ws.close(1000) // careful here to use a local reference instead of this._ws
286
+ }, this.configuration.connectionTimeout * 1000)
287
+ })
288
+
289
+ return this.connectPromise
290
+ }
291
+
292
+ private _disconnect(): Promise<void> {
293
+ this.logger.log(`Disconnecting ${this.server}`)
294
+
295
+ switch (this.state) {
296
+ case TransportState.Connecting:
297
+ // If `state` is "Connecting", `state` MUST transition to "Disconnecting" before returning.
298
+ if (this.disconnectPromise) {
299
+ throw new Error('Disconnect promise must not be defined.')
300
+ }
301
+ try {
302
+ this.transitionState(TransportState.Disconnecting)
303
+ } catch (e) {
304
+ if (e instanceof StateTransitionError) {
305
+ return Promise.reject(e) // Loop detected
306
+ }
307
+ throw e
308
+ }
309
+ break
310
+ case TransportState.Connected:
311
+ // If `state` is "Connected", `state` MUST transition to "Disconnecting" before returning.
312
+ if (this.disconnectPromise) {
313
+ throw new Error('Disconnect promise must not be defined.')
314
+ }
315
+ try {
316
+ this.transitionState(TransportState.Disconnecting)
317
+ } catch (e) {
318
+ if (e instanceof StateTransitionError) {
319
+ return Promise.reject(e) // Loop detected
320
+ }
321
+ throw e
322
+ }
323
+ break
324
+ case TransportState.Disconnecting:
325
+ // If `state` is "Disconnecting", `state` MUST NOT transition before returning.
326
+ if (this.transitioningState) {
327
+ return Promise.reject(this.transitionLoopDetectedError(TransportState.Disconnecting))
328
+ }
329
+ if (!this.disconnectPromise) {
330
+ throw new Error('Disconnect promise must be defined.')
331
+ }
332
+ return this.disconnectPromise // Already disconnecting
333
+ case TransportState.Disconnected:
334
+ // If `state` is "Disconnected", `state` MUST NOT transition before returning.
335
+ if (this.transitioningState) {
336
+ return Promise.reject(this.transitionLoopDetectedError(TransportState.Disconnecting))
337
+ }
338
+ if (this.disconnectPromise) {
339
+ throw new Error('Disconnect promise must not be defined.')
340
+ }
341
+ return Promise.resolve() // Already disconnected
342
+ default:
343
+ throw new Error('Unknown state')
344
+ }
345
+
346
+ if (!this._ws) {
347
+ throw new Error('WebSocket must be defined.')
348
+ }
349
+ const ws = this._ws
350
+
351
+ this.disconnectPromise = new Promise((resolve, reject) => {
352
+ this.disconnectResolve = resolve
353
+ this.disconnectReject = reject
354
+
355
+ try {
356
+ // WebSocket.close()
357
+ // https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/close
358
+ ws.close(1000) // careful here to use a local reference instead of this._ws
359
+ } catch (error) {
360
+ // Treating this as a coding error as it apparently can only happen
361
+ // if you pass close() invalid parameters (so it should never happen)
362
+ this.logger.error('WebSocket close failed.')
363
+ this.logger.error(error)
364
+ throw error
365
+ }
366
+ })
367
+
368
+ return this.disconnectPromise
369
+ }
370
+
371
+ private _send(message: string): Promise<void> {
372
+ if (this.configuration.traceSip === true) {
373
+ this.logger.log('Sending WebSocket message:\n\n' + message + '\n')
374
+ }
375
+
376
+ if (this._state !== TransportState.Connected) {
377
+ return Promise.reject(new Error('Not connected.'))
378
+ }
379
+
380
+ if (!this._ws) {
381
+ throw new Error('WebSocket undefined.')
382
+ }
383
+
384
+ try {
385
+ // WebSocket.send()
386
+ // https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send
387
+ this._ws.send(message)
388
+ } catch (error) {
389
+ if (error instanceof Error) {
390
+ return Promise.reject(error)
391
+ }
392
+ return Promise.reject(new Error('WebSocket send failed.'))
393
+ }
394
+
395
+ return Promise.resolve()
396
+ }
397
+
398
+ /**
399
+ * WebSocket "onclose" event handler.
400
+ * @param ev - Event.
401
+ */
402
+ private onWebSocketClose(ev: CloseEvent, ws: WebSocket): void {
403
+ if (ws !== this._ws) {
404
+ return
405
+ }
406
+
407
+ const message = `WebSocket closed ${this.server} (code: ${ev.code})`
408
+ const error = !this.disconnectPromise ? new Error(message) : undefined
409
+ if (error) {
410
+ this.logger.warn('WebSocket closed unexpectedly')
411
+ }
412
+ this.logger.log(message)
413
+
414
+ // We are about to transition to disconnected, so clear our web socket
415
+ this._ws = undefined
416
+
417
+ // The `state` MUST transition to "Disconnected" before resolving (assuming `state` is not already "Disconnected").
418
+ this.transitionState(TransportState.Disconnected, error)
419
+ }
420
+
421
+ /**
422
+ * WebSocket "onerror" event handler.
423
+ * @param ev - Event.
424
+ */
425
+ private onWebSocketError(ev: Event, ws: WebSocket): void {
426
+ if (ws !== this._ws) {
427
+ return
428
+ }
429
+ this.logger.error('WebSocket error occurred.')
430
+ }
431
+
432
+ /**
433
+ * WebSocket "onmessage" event handler.
434
+ * @param ev - Event.
435
+ */
436
+ private onWebSocketMessage(ev: MessageEvent, ws: WebSocket): void {
437
+ if (ws !== this._ws) {
438
+ return
439
+ }
440
+
441
+ const data = ev.data
442
+ let finishedData: string
443
+
444
+ // CRLF Keep Alive response from server. Clear our keep alive timeout.
445
+ if (/^(\r\n)+$/.test(data)) {
446
+ this.clearKeepAliveTimeout()
447
+ if (this.configuration.traceSip === true) {
448
+ this.logger.log('Received WebSocket message with CRLF Keep Alive response')
449
+ }
450
+ return
451
+ }
452
+
453
+ if (!data) {
454
+ this.logger.warn('Received empty message, discarding...')
455
+ return
456
+ }
457
+
458
+ if (typeof data !== 'string') {
459
+ // WebSocket binary message.
460
+ try {
461
+ finishedData = new TextDecoder().decode(new Uint8Array(data))
462
+ // TextDecoder (above) is not supported by old browsers, but it correctly decodes UTF-8.
463
+ // The line below is an ISO 8859-1 (Latin 1) decoder, so just UTF-8 code points that are 1 byte.
464
+ // It's old code and works in old browsers (IE), so leaving it here in a comment in case someone needs it.
465
+ // finishedData = String.fromCharCode.apply(null, (new Uint8Array(data) as unknown as Array<number>));
466
+ } catch (err) {
467
+ this.logger.error(err)
468
+ this.logger.error('Received WebSocket binary message failed to be converted into string, message discarded')
469
+ return
470
+ }
471
+ if (this.configuration.traceSip === true) {
472
+ this.logger.log('Received WebSocket binary message:\n\n' + finishedData + '\n')
473
+ }
474
+ } else {
475
+ // WebSocket text message.
476
+ finishedData = data
477
+ if (this.configuration.traceSip === true) {
478
+ this.logger.log('Received WebSocket text message:\n\n' + finishedData + '\n')
479
+ }
480
+ }
481
+
482
+ if (this.state !== TransportState.Connected) {
483
+ this.logger.warn('Received message while not connected, discarding...')
484
+ return
485
+ }
486
+
487
+ if (this.onMessage) {
488
+ try {
489
+ this.onMessage(finishedData)
490
+ } catch (e) {
491
+ this.logger.error(e)
492
+ this.logger.error('Exception thrown by onMessage callback')
493
+ throw e // rethrow unhandled exception
494
+ }
495
+ }
496
+ }
497
+
498
+ /**
499
+ * WebSocket "onopen" event handler.
500
+ * @param ev - Event.
501
+ */
502
+ private onWebSocketOpen(ev: Event, ws: WebSocket): void {
503
+ if (ws !== this._ws) {
504
+ return
505
+ }
506
+ if (this._state === TransportState.Connecting) {
507
+ this.logger.log(`WebSocket opened ${this.server}`)
508
+ this.transitionState(TransportState.Connected)
509
+ }
510
+ }
511
+
512
+ /**
513
+ * Helper function to generate an Error.
514
+ * @param state - State transitioning to.
515
+ */
516
+ private transitionLoopDetectedError(state: string): StateTransitionError {
517
+ let message = `A state transition loop has been detected.`
518
+ message += ` An attempt to transition from ${this._state} to ${state} before the prior transition completed.`
519
+ message += ` Perhaps you are synchronously calling connect() or disconnect() from a callback or state change handler?`
520
+ this.logger.error(message)
521
+ return new StateTransitionError('Loop detected.')
522
+ }
523
+
524
+ /**
525
+ * Transition transport state.
526
+ * @internal
527
+ */
528
+ private transitionState(newState: TransportState, error?: Error): void {
529
+ const invalidTransition = (): Error => {
530
+ throw new Error(`Invalid state transition from ${this._state} to ${newState}`)
531
+ }
532
+
533
+ if (this.transitioningState) {
534
+ throw this.transitionLoopDetectedError(newState)
535
+ }
536
+ this.transitioningState = true
537
+
538
+ // Validate state transition
539
+ switch (this._state) {
540
+ case TransportState.Connecting:
541
+ if (
542
+ newState !== TransportState.Connected &&
543
+ newState !== TransportState.Disconnecting &&
544
+ newState !== TransportState.Disconnected
545
+ ) {
546
+ invalidTransition()
547
+ }
548
+ break
549
+ case TransportState.Connected:
550
+ if (newState !== TransportState.Disconnecting && newState !== TransportState.Disconnected) {
551
+ invalidTransition()
552
+ }
553
+ break
554
+ case TransportState.Disconnecting:
555
+ if (newState !== TransportState.Connecting && newState !== TransportState.Disconnected) {
556
+ invalidTransition()
557
+ }
558
+ break
559
+ case TransportState.Disconnected:
560
+ if (newState !== TransportState.Connecting) {
561
+ invalidTransition()
562
+ }
563
+ break
564
+ default:
565
+ throw new Error('Unknown state.')
566
+ }
567
+
568
+ // Update state
569
+ const oldState = this._state
570
+ this._state = newState
571
+
572
+ // Local copies of connect promises (guarding against callbacks changing them indirectly)
573
+ // const connectPromise = this.connectPromise;
574
+ const connectResolve = this.connectResolve
575
+ const connectReject = this.connectReject
576
+
577
+ // Reset connect promises if no longer connecting
578
+ if (oldState === TransportState.Connecting) {
579
+ this.connectPromise = undefined
580
+ this.connectResolve = undefined
581
+ this.connectReject = undefined
582
+ }
583
+
584
+ // Local copies of disconnect promises (guarding against callbacks changing them indirectly)
585
+ // const disconnectPromise = this.disconnectPromise;
586
+ const disconnectResolve = this.disconnectResolve
587
+ const disconnectReject = this.disconnectReject
588
+
589
+ // Reset disconnect promises if no longer disconnecting
590
+ if (oldState === TransportState.Disconnecting) {
591
+ this.disconnectPromise = undefined
592
+ this.disconnectResolve = undefined
593
+ this.disconnectReject = undefined
594
+ }
595
+
596
+ // Clear any outstanding connect timeout
597
+ if (this.connectTimeout) {
598
+ clearTimeout(this.connectTimeout)
599
+ this.connectTimeout = undefined
600
+ }
601
+
602
+ this.logger.log(`Transitioned from ${oldState} to ${this._state}`)
603
+ this._stateEventEmitter.emit(this._state)
604
+
605
+ // Transition to Connected
606
+ if (newState === TransportState.Connected) {
607
+ this.startSendingKeepAlives()
608
+ if (this.onConnect) {
609
+ try {
610
+ this.onConnect()
611
+ } catch (e) {
612
+ this.logger.error(e)
613
+ this.logger.error('Exception thrown by onConnect callback')
614
+ throw e // rethrow unhandled exception
615
+ }
616
+ }
617
+ }
618
+
619
+ // Transition from Connected
620
+ if (oldState === TransportState.Connected) {
621
+ this.stopSendingKeepAlives()
622
+ if (this.onDisconnect) {
623
+ try {
624
+ if (error) {
625
+ this.onDisconnect(error)
626
+ } else {
627
+ this.onDisconnect()
628
+ }
629
+ } catch (e) {
630
+ this.logger.error(e)
631
+ this.logger.error('Exception thrown by onDisconnect callback')
632
+ throw e // rethrow unhandled exception
633
+ }
634
+ }
635
+ }
636
+
637
+ // Complete connect promise
638
+ if (oldState === TransportState.Connecting) {
639
+ if (!connectResolve) {
640
+ throw new Error('Connect resolve undefined.')
641
+ }
642
+ if (!connectReject) {
643
+ throw new Error('Connect reject undefined.')
644
+ }
645
+ newState === TransportState.Connected ? connectResolve() : connectReject(error || new Error('Connect aborted.'))
646
+ }
647
+
648
+ // Complete disconnect promise
649
+ if (oldState === TransportState.Disconnecting) {
650
+ if (!disconnectResolve) {
651
+ throw new Error('Disconnect resolve undefined.')
652
+ }
653
+ if (!disconnectReject) {
654
+ throw new Error('Disconnect reject undefined.')
655
+ }
656
+ newState === TransportState.Disconnected
657
+ ? disconnectResolve()
658
+ : disconnectReject(error || new Error('Disconnect aborted.'))
659
+ }
660
+
661
+ this.transitioningState = false
662
+ }
663
+
664
+ // TODO: Review "KeepAlive Stuff".
665
+ // It is not clear if it works and there are no tests for it.
666
+ // It was blindly lifted the keep alive code unchanged from earlier transport code.
667
+ //
668
+ // From the RFC...
669
+ //
670
+ // SIP WebSocket Clients and Servers may keep their WebSocket
671
+ // connections open by sending periodic WebSocket "Ping" frames as
672
+ // described in [RFC6455], Section 5.5.2.
673
+ // ...
674
+ // The indication and use of the CRLF NAT keep-alive mechanism defined
675
+ // for SIP connection-oriented transports in [RFC5626], Section 3.5.1 or
676
+ // [RFC6223] are, of course, usable over the transport defined in this
677
+ // specification.
678
+ // https://tools.ietf.org/html/rfc7118#section-6
679
+ //
680
+ // and...
681
+ //
682
+ // The Ping frame contains an opcode of 0x9.
683
+ // https://tools.ietf.org/html/rfc6455#section-5.5.2
684
+ //
685
+ // ==============================
686
+ // KeepAlive Stuff
687
+ // ==============================
688
+
689
+ private clearKeepAliveTimeout(): void {
690
+ if (this.keepAliveDebounceTimeout) {
691
+ clearTimeout(this.keepAliveDebounceTimeout)
692
+ }
693
+ this.keepAliveDebounceTimeout = undefined
694
+ }
695
+
696
+ /**
697
+ * Send a keep-alive (a double-CRLF sequence).
698
+ */
699
+ private sendKeepAlive(): Promise<void> {
700
+ if (this.keepAliveDebounceTimeout) {
701
+ // We already have an outstanding keep alive, do not send another.
702
+ return Promise.resolve()
703
+ }
704
+
705
+ this.keepAliveDebounceTimeout = setTimeout(() => {
706
+ this.clearKeepAliveTimeout()
707
+ }, this.configuration.keepAliveDebounce * 1000)
708
+
709
+ return this.send('\r\n\r\n')
710
+ }
711
+
712
+ /**
713
+ * Start sending keep-alives.
714
+ */
715
+ private startSendingKeepAlives(): void {
716
+ // Compute an amount of time in seconds to wait before sending another keep-alive.
717
+ const computeKeepAliveTimeout = (upperBound: number): number => {
718
+ const lowerBound = upperBound * 0.8
719
+ return 1000 * (Math.random() * (upperBound - lowerBound) + lowerBound)
720
+ }
721
+
722
+ if (this.configuration.keepAliveInterval && !this.keepAliveInterval) {
723
+ this.keepAliveInterval = setInterval(() => {
724
+ this.sendKeepAlive()
725
+ this.startSendingKeepAlives()
726
+ }, computeKeepAliveTimeout(this.configuration.keepAliveInterval))
727
+ }
728
+ }
729
+
730
+ /**
731
+ * Stop sending keep-alives.
732
+ */
733
+ private stopSendingKeepAlives(): void {
734
+ if (this.keepAliveInterval) {
735
+ clearInterval(this.keepAliveInterval)
736
+ }
737
+ if (this.keepAliveDebounceTimeout) {
738
+ clearTimeout(this.keepAliveDebounceTimeout)
739
+ }
740
+ this.keepAliveInterval = undefined
741
+ this.keepAliveDebounceTimeout = undefined
742
+ }
743
+ }