ue-softphone-sdk 3.0.17 → 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 +3 -7
  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,819 @@
1
+ // @ts-nocheck
2
+ import {
3
+ C,
4
+ Grammar,
5
+ Logger,
6
+ OutgoingRegisterRequest,
7
+ OutgoingRequestMessage,
8
+ URI,
9
+ equivalentURI,
10
+ NameAddrHeader
11
+ } from '../core'
12
+ import { Emitter, EmitterImpl } from './emitter'
13
+ import { RequestPendingError } from './exceptions'
14
+ import { RegistererOptions } from './registerer-options'
15
+ import { RegistererRegisterOptions } from './registerer-register-options'
16
+ import { RegistererState } from './registerer-state'
17
+ import { RegistererUnregisterOptions } from './registerer-unregister-options'
18
+ import { UserAgent } from './user-agent'
19
+
20
+ /**
21
+ * A registerer registers a contact for an address of record (outgoing REGISTER).
22
+ * @public
23
+ */
24
+ export class Registerer {
25
+ private static readonly defaultExpires = 600
26
+ private static readonly defaultRefreshFrequency = 99
27
+
28
+ private disposed = false
29
+ private id: string
30
+ private expires: number
31
+ private refreshFrequency: number
32
+ private logger: Logger
33
+ private options: RegistererOptions
34
+ private request: OutgoingRequestMessage
35
+ private userAgent: UserAgent
36
+
37
+ private registrationExpiredTimer: number | undefined
38
+ private registrationTimer: number | undefined
39
+
40
+ /** The contacts returned from the most recent accepted REGISTER request. */
41
+ private _contacts: Array<string> = []
42
+
43
+ /** The number of seconds to wait before retrying to register. */
44
+ private _retryAfter: number | undefined = undefined
45
+
46
+ /** The registration state. */
47
+ private _state: RegistererState = RegistererState.Initial
48
+ /** Emits when the registration state changes. */
49
+ private _stateEventEmitter: EmitterImpl<RegistererState>
50
+
51
+ /** True is waiting for final response to outstanding REGISTER request. */
52
+ private _waiting = false
53
+ /** Emits when waiting changes. */
54
+ private _waitingEventEmitter: EmitterImpl<boolean>
55
+
56
+ /**
57
+ * Constructs a new instance of the `Registerer` class.
58
+ * @param userAgent - User agent. See {@link UserAgent} for details.
59
+ * @param options - Options bucket. See {@link RegistererOptions} for details.
60
+ */
61
+ public constructor(userAgent: UserAgent, options: RegistererOptions = {}) {
62
+ // state emitter
63
+ this._stateEventEmitter = new EmitterImpl<RegistererState>()
64
+
65
+ // waiting emitter
66
+ this._waitingEventEmitter = new EmitterImpl<boolean>()
67
+
68
+ // Set user agent
69
+ this.userAgent = userAgent
70
+
71
+ // Default registrar is domain portion of user agent uri
72
+ const defaultUserAgentRegistrar = userAgent.configuration.uri.clone()
73
+ defaultUserAgentRegistrar.user = undefined
74
+
75
+ // Initialize configuration
76
+ this.options = {
77
+ // start with the default option values
78
+ ...Registerer.defaultOptions(),
79
+ // set the appropriate default registrar
80
+ ...{ registrar: defaultUserAgentRegistrar },
81
+ // apply any options passed in via the constructor
82
+ ...Registerer.stripUndefinedProperties(options)
83
+ }
84
+
85
+ // Make sure we are not using references to array options
86
+ this.options.extraContactHeaderParams = (this.options.extraContactHeaderParams || []).slice()
87
+ this.options.extraHeaders = (this.options.extraHeaders || []).slice()
88
+
89
+ // Make sure we are not using references to registrar uri
90
+ if (!this.options.registrar) {
91
+ throw new Error('Registrar undefined.')
92
+ }
93
+ this.options.registrar = this.options.registrar.clone()
94
+
95
+ // Set instanceId and regId conditional defaults and validate
96
+ if (this.options.regId && !this.options.instanceId) {
97
+ this.options.instanceId = Registerer.newUUID()
98
+ } else if (!this.options.regId && this.options.instanceId) {
99
+ this.options.regId = 1
100
+ }
101
+ if (this.options.instanceId && Grammar.parse(this.options.instanceId, 'uuid') === -1) {
102
+ throw new Error('Invalid instanceId.')
103
+ }
104
+ if (this.options.regId && this.options.regId < 0) {
105
+ throw new Error('Invalid regId.')
106
+ }
107
+
108
+ const registrar = this.options.registrar
109
+ const fromURI = (this.options.params && this.options.params.fromUri) || userAgent.userAgentCore.configuration.aor
110
+ const toURI = (this.options.params && this.options.params.toUri) || userAgent.configuration.uri
111
+ const params = this.options.params || {}
112
+ const extraHeaders = (options.extraHeaders || []).slice()
113
+
114
+ // Build the request
115
+ this.request = userAgent.userAgentCore.makeOutgoingRequestMessage(
116
+ C.REGISTER,
117
+ registrar,
118
+ fromURI,
119
+ toURI,
120
+ params,
121
+ extraHeaders,
122
+ undefined
123
+ )
124
+
125
+ // Registration expires
126
+ this.expires = this.options.expires || Registerer.defaultExpires
127
+ if (this.expires < 0) {
128
+ throw new Error('Invalid expires.')
129
+ }
130
+
131
+ // Interval at which re-REGISTER requests are sent
132
+ this.refreshFrequency = this.options.refreshFrequency || Registerer.defaultRefreshFrequency
133
+ if (this.refreshFrequency < 50 || this.refreshFrequency > 99) {
134
+ throw new Error(
135
+ 'Invalid refresh frequency. The value represents a percentage of the expiration time and should be between 50 and 99.'
136
+ )
137
+ }
138
+
139
+ // initialize logger
140
+ this.logger = userAgent.getLogger('sip.Registerer')
141
+
142
+ if (this.options.logConfiguration) {
143
+ this.logger.log('Configuration:')
144
+ Object.keys(this.options).forEach((key) => {
145
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
146
+ const value = (this.options as any)[key]
147
+ switch (key) {
148
+ case 'registrar':
149
+ this.logger.log('· ' + key + ': ' + value)
150
+ break
151
+ default:
152
+ this.logger.log('· ' + key + ': ' + JSON.stringify(value))
153
+ }
154
+ })
155
+ }
156
+
157
+ // Identifier
158
+ this.id = this.request.callId + this.request.from.parameters.tag
159
+
160
+ // Add to the user agent's session collection.
161
+ this.userAgent._registerers[this.id] = this
162
+ }
163
+
164
+ /** Default registerer options. */
165
+ private static defaultOptions(): Required<RegistererOptions> {
166
+ return {
167
+ expires: Registerer.defaultExpires,
168
+ extraContactHeaderParams: [],
169
+ extraHeaders: [],
170
+ logConfiguration: true,
171
+ instanceId: '',
172
+ params: {},
173
+ regId: 0,
174
+ registrar: new URI('sip', 'anonymous', 'anonymous.invalid'),
175
+ refreshFrequency: Registerer.defaultRefreshFrequency
176
+ }
177
+ }
178
+
179
+ // http://stackoverflow.com/users/109538/broofa
180
+ private static newUUID(): string {
181
+ const UUID: string = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
182
+ const r: number = Math.floor(Math.random() * 16)
183
+ const v: number = c === 'x' ? r : (r % 4) + 8
184
+ return v.toString(16)
185
+ })
186
+ return UUID
187
+ }
188
+
189
+ /**
190
+ * Strip properties with undefined values from options.
191
+ * This is a work around while waiting for missing vs undefined to be addressed (or not)...
192
+ * https://github.com/Microsoft/TypeScript/issues/13195
193
+ * @param options - Options to reduce
194
+ */
195
+ private static stripUndefinedProperties(options: Partial<RegistererOptions>): Partial<RegistererOptions> {
196
+ return Object.keys(options).reduce((object, key) => {
197
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
198
+ if ((options as any)[key] !== undefined) {
199
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
200
+ ;(object as any)[key] = (options as any)[key]
201
+ }
202
+ return object
203
+ }, {})
204
+ }
205
+
206
+ /** The registered contacts. */
207
+ public get contacts(): Array<string> {
208
+ return this._contacts.slice()
209
+ }
210
+
211
+ /**
212
+ * The number of seconds to wait before retrying to register.
213
+ * @defaultValue `undefined`
214
+ * @remarks
215
+ * When the server rejects a registration request, if it provides a suggested
216
+ * duration to wait before retrying, that value is available here when and if
217
+ * the state transitions to `Unsubscribed`. It is also available during the
218
+ * callback to `onReject` after a call to `register`. (Note that if the state
219
+ * if already `Unsubscribed`, a rejected request created by `register` will
220
+ * not cause the state to transition to `Unsubscribed`. One way to avoid this
221
+ * case is to dispose of `Registerer` when unregistered and create a new
222
+ * `Registerer` for any attempts to retry registering.)
223
+ * @example
224
+ * ```ts
225
+ * // Checking for retry after on state change
226
+ * registerer.stateChange.addListener((newState) => {
227
+ * switch (newState) {
228
+ * case RegistererState.Unregistered:
229
+ * const retryAfter = registerer.retryAfter;
230
+ * break;
231
+ * }
232
+ * });
233
+ *
234
+ * // Checking for retry after on request rejection
235
+ * registerer.register({
236
+ * requestDelegate: {
237
+ * onReject: () => {
238
+ * const retryAfter = registerer.retryAfter;
239
+ * }
240
+ * }
241
+ * });
242
+ * ```
243
+ */
244
+ public get retryAfter(): number | undefined {
245
+ return this._retryAfter
246
+ }
247
+
248
+ /** The registration state. */
249
+ public get state(): RegistererState {
250
+ return this._state
251
+ }
252
+
253
+ /** Emits when the registerer state changes. */
254
+ public get stateChange(): Emitter<RegistererState> {
255
+ return this._stateEventEmitter
256
+ }
257
+
258
+ /** Destructor. */
259
+ public dispose(): Promise<void> {
260
+ if (this.disposed) {
261
+ return Promise.resolve()
262
+ }
263
+ this.disposed = true
264
+ this.logger.log(`Registerer ${this.id} in state ${this.state} is being disposed`)
265
+
266
+ // Remove from the user agent's registerer collection
267
+ delete this.userAgent._registerers[this.id]
268
+
269
+ // If registered, unregisters and resolves after final response received.
270
+ return new Promise((resolve) => {
271
+ const doClose = (): void => {
272
+ // If we are registered, unregister and resolve after our state changes
273
+ if (!this.waiting && this._state === RegistererState.Registered) {
274
+ this.stateChange.addListener(
275
+ () => {
276
+ this.terminated()
277
+ resolve()
278
+ },
279
+ { once: true }
280
+ )
281
+ this.unregister()
282
+ return
283
+ }
284
+ // Otherwise just resolve
285
+ this.terminated()
286
+ resolve()
287
+ }
288
+
289
+ // If we are waiting for an outstanding request, wait for it to finish and then try closing.
290
+ // Otherwise just try closing.
291
+ if (this.waiting) {
292
+ this.waitingChange.addListener(
293
+ () => {
294
+ doClose()
295
+ },
296
+ { once: true }
297
+ )
298
+ } else {
299
+ doClose()
300
+ }
301
+ })
302
+ }
303
+
304
+ /**
305
+ * Sends the REGISTER request.
306
+ * @remarks
307
+ * If successful, sends re-REGISTER requests prior to registration expiration until `unsubscribe()` is called.
308
+ * Rejects with `RequestPendingError` if a REGISTER request is already in progress.
309
+ */
310
+ public register(options: RegistererRegisterOptions = {}): Promise<OutgoingRegisterRequest> {
311
+ if (this.state === RegistererState.Terminated) {
312
+ this.stateError()
313
+ throw new Error('Registerer terminated. Unable to register.')
314
+ }
315
+
316
+ if (this.disposed) {
317
+ this.stateError()
318
+ throw new Error('Registerer disposed. Unable to register.')
319
+ }
320
+
321
+ // UAs MUST NOT send a new registration (that is, containing new Contact
322
+ // header field values, as opposed to a retransmission) until they have
323
+ // received a final response from the registrar for the previous one or
324
+ // the previous REGISTER request has timed out.
325
+ // https://tools.ietf.org/html/rfc3261#section-10.2
326
+ if (this.waiting) {
327
+ this.waitingWarning()
328
+ const error = new RequestPendingError('REGISTER request already in progress, waiting for final response')
329
+ return Promise.reject(error)
330
+ }
331
+
332
+ // Options
333
+ if (options.requestOptions) {
334
+ this.options = { ...this.options, ...options.requestOptions }
335
+ }
336
+
337
+ // Extra headers
338
+ const extraHeaders = (this.options.extraHeaders || []).slice()
339
+ extraHeaders.push('Contact: ' + this.generateContactHeader(this.expires))
340
+ // this is UA.C.ALLOWED_METHODS, removed to get around circular dependency
341
+ extraHeaders.push(
342
+ 'Allow: ' + ['ACK', 'CANCEL', 'INVITE', 'MESSAGE', 'BYE', 'OPTIONS', 'INFO', 'NOTIFY', 'REFER'].toString()
343
+ )
344
+
345
+ // Call-ID: All registrations from a UAC SHOULD use the same Call-ID
346
+ // header field value for registrations sent to a particular
347
+ // registrar.
348
+ //
349
+ // CSeq: The CSeq value guarantees proper ordering of REGISTER
350
+ // requests. A UA MUST increment the CSeq value by one for each
351
+ // REGISTER request with the same Call-ID.
352
+ // https://tools.ietf.org/html/rfc3261#section-10.2
353
+ this.request.cseq++
354
+ this.request.setHeader('cseq', this.request.cseq + ' REGISTER')
355
+ this.request.extraHeaders = extraHeaders
356
+
357
+ this.waitingToggle(true)
358
+
359
+ const outgoingRegisterRequest = this.userAgent.userAgentCore.register(this.request, {
360
+ onAccept: (response): void => {
361
+ let expires: number | undefined
362
+
363
+ // FIXME: This does NOT appear to be to spec and should be removed.
364
+ // I haven't found anywhere that an Expires header may be used in a response.
365
+ if (response.message.hasHeader('expires')) {
366
+ expires = Number(response.message.getHeader('expires'))
367
+ }
368
+
369
+ // 8. The registrar returns a 200 (OK) response. The response MUST
370
+ // contain Contact header field values enumerating all current
371
+ // bindings. Each Contact value MUST feature an "expires"
372
+ // parameter indicating its expiration interval chosen by the
373
+ // registrar. The response SHOULD include a Date header field.
374
+ // https://tools.ietf.org/html/rfc3261#section-10.3
375
+ this._contacts = response.message.getHeaders('contact')
376
+ let contacts = this._contacts.length
377
+ if (!contacts) {
378
+ this.logger.error('No Contact header in response to REGISTER, dropping response.')
379
+ this.unregistered()
380
+ return
381
+ }
382
+
383
+ // The 200 (OK) response from the registrar contains a list of Contact
384
+ // fields enumerating all current bindings. The UA compares each
385
+ // contact address to see if it created the contact address, using
386
+ // comparison rules in Section 19.1.4. If so, it updates the expiration
387
+ // time interval according to the expires parameter or, if absent, the
388
+ // Expires field value. The UA then issues a REGISTER request for each
389
+ // of its bindings before the expiration interval has elapsed.
390
+ // https://tools.ietf.org/html/rfc3261#section-10.2.4
391
+ let contact: NameAddrHeader | undefined
392
+ while (contacts--) {
393
+ contact = response.message.parseHeader('contact', contacts)
394
+ if (!contact) {
395
+ throw new Error('Contact undefined')
396
+ }
397
+
398
+ if (this.userAgent.contact.pubGruu && equivalentURI(contact.uri, this.userAgent.contact.pubGruu)) {
399
+ expires = Number(contact.getParam('expires'))
400
+ break
401
+ }
402
+ // If we are using a randomly generated user name (which is the default behavior)
403
+ if (this.userAgent.configuration.contactName === '') {
404
+ // compare the user portion of the URI under the assumption that it will be unique
405
+ if (contact.uri.user === this.userAgent.contact.uri.user) {
406
+ expires = Number(contact.getParam('expires'))
407
+ break
408
+ }
409
+ } else {
410
+ // otherwise use comparision rules in Section 19.1.4
411
+ if (equivalentURI(contact.uri, this.userAgent.contact.uri)) {
412
+ expires = Number(contact.getParam('expires'))
413
+ break
414
+ }
415
+ }
416
+
417
+ contact = undefined
418
+ }
419
+
420
+ // There must be a matching contact.
421
+ if (contact === undefined) {
422
+ this.logger.error('No Contact header pointing to us, dropping response')
423
+ this.unregistered()
424
+ this.waitingToggle(false)
425
+ return
426
+ }
427
+
428
+ // The contact must have an expires.
429
+ if (expires === undefined) {
430
+ this.logger.error('Contact pointing to us is missing expires parameter, dropping response')
431
+ this.unregistered()
432
+ this.waitingToggle(false)
433
+ return
434
+ }
435
+
436
+ // Save gruu values
437
+ if (contact.hasParam('temp-gruu')) {
438
+ const gruu = contact.getParam('temp-gruu')
439
+ if (gruu) {
440
+ this.userAgent.contact.tempGruu = Grammar.URIParse(gruu.replace(/"/g, ''))
441
+ }
442
+ }
443
+ if (contact.hasParam('pub-gruu')) {
444
+ const gruu = contact.getParam('pub-gruu')
445
+ if (gruu) {
446
+ this.userAgent.contact.pubGruu = Grammar.URIParse(gruu.replace(/"/g, ''))
447
+ }
448
+ }
449
+
450
+ this.registered(expires)
451
+ if (options.requestDelegate && options.requestDelegate.onAccept) {
452
+ options.requestDelegate.onAccept(response)
453
+ }
454
+ this.waitingToggle(false)
455
+ },
456
+ onProgress: (response): void => {
457
+ if (options.requestDelegate && options.requestDelegate.onProgress) {
458
+ options.requestDelegate.onProgress(response)
459
+ }
460
+ },
461
+ onRedirect: (response): void => {
462
+ this.logger.error('Redirect received. Not supported.')
463
+ this.unregistered()
464
+ if (options.requestDelegate && options.requestDelegate.onRedirect) {
465
+ options.requestDelegate.onRedirect(response)
466
+ }
467
+ this.waitingToggle(false)
468
+ },
469
+ onReject: (response): void => {
470
+ if (response.message.statusCode === 423) {
471
+ // If a UA receives a 423 (Interval Too Brief) response, it MAY retry
472
+ // the registration after making the expiration interval of all contact
473
+ // addresses in the REGISTER request equal to or greater than the
474
+ // expiration interval within the Min-Expires header field of the 423
475
+ // (Interval Too Brief) response.
476
+ // https://tools.ietf.org/html/rfc3261#section-10.2.8
477
+ //
478
+ // The registrar MAY choose an expiration less than the requested
479
+ // expiration interval. If and only if the requested expiration
480
+ // interval is greater than zero AND smaller than one hour AND
481
+ // less than a registrar-configured minimum, the registrar MAY
482
+ // reject the registration with a response of 423 (Interval Too
483
+ // Brief). This response MUST contain a Min-Expires header field
484
+ // that states the minimum expiration interval the registrar is
485
+ // willing to honor. It then skips the remaining steps.
486
+ // https://tools.ietf.org/html/rfc3261#section-10.3
487
+ if (!response.message.hasHeader('min-expires')) {
488
+ // This response MUST contain a Min-Expires header field
489
+ this.logger.error('423 response received for REGISTER without Min-Expires, dropping response')
490
+ this.unregistered()
491
+ this.waitingToggle(false)
492
+ return
493
+ }
494
+ // Increase our registration interval to the suggested minimum
495
+ this.expires = Number(response.message.getHeader('min-expires'))
496
+ // Attempt the registration again immediately
497
+ this.waitingToggle(false)
498
+ this.register()
499
+ return
500
+ }
501
+ this.logger.warn(`Failed to register, status code ${response.message.statusCode}`)
502
+ // The Retry-After header field can be used with a 500 (Server Internal
503
+ // Error) or 503 (Service Unavailable) response to indicate how long the
504
+ // service is expected to be unavailable to the requesting client...
505
+ // https://tools.ietf.org/html/rfc3261#section-20.33
506
+ let retryAfterDuration = NaN
507
+ if (response.message.statusCode === 500 || response.message.statusCode === 503) {
508
+ const header = response.message.getHeader('retry-after')
509
+ if (header) {
510
+ retryAfterDuration = Number.parseInt(header, undefined)
511
+ }
512
+ }
513
+ // Set for the state change (if any) and the delegate callback (if any)
514
+ this._retryAfter = isNaN(retryAfterDuration) ? undefined : retryAfterDuration
515
+ this.unregistered()
516
+ if (options.requestDelegate && options.requestDelegate.onReject) {
517
+ options.requestDelegate.onReject(response)
518
+ }
519
+ this._retryAfter = undefined
520
+ this.waitingToggle(false)
521
+ },
522
+ onTrying: (response): void => {
523
+ if (options.requestDelegate && options.requestDelegate.onTrying) {
524
+ options.requestDelegate.onTrying(response)
525
+ }
526
+ }
527
+ })
528
+
529
+ return Promise.resolve(outgoingRegisterRequest)
530
+ }
531
+
532
+ /**
533
+ * Sends the REGISTER request with expires equal to zero.
534
+ * @remarks
535
+ * Rejects with `RequestPendingError` if a REGISTER request is already in progress.
536
+ */
537
+ public unregister(options: RegistererUnregisterOptions = {}): Promise<OutgoingRegisterRequest> {
538
+ if (this.state === RegistererState.Terminated) {
539
+ this.stateError()
540
+ throw new Error('Registerer terminated. Unable to register.')
541
+ }
542
+
543
+ if (this.disposed) {
544
+ if (this.state !== RegistererState.Registered) {
545
+ // allows unregister while disposing and registered
546
+ this.stateError()
547
+ throw new Error('Registerer disposed. Unable to register.')
548
+ }
549
+ }
550
+
551
+ // UAs MUST NOT send a new registration (that is, containing new Contact
552
+ // header field values, as opposed to a retransmission) until they have
553
+ // received a final response from the registrar for the previous one or
554
+ // the previous REGISTER request has timed out.
555
+ // https://tools.ietf.org/html/rfc3261#section-10.2
556
+ if (this.waiting) {
557
+ this.waitingWarning()
558
+ const error = new RequestPendingError('REGISTER request already in progress, waiting for final response')
559
+ return Promise.reject(error)
560
+ }
561
+
562
+ if (this._state !== RegistererState.Registered && !options.all) {
563
+ this.logger.warn('Not currently registered, but sending an unregister anyway.')
564
+ }
565
+
566
+ // Extra headers
567
+ const extraHeaders = ((options.requestOptions && options.requestOptions.extraHeaders) || []).slice()
568
+ this.request.extraHeaders = extraHeaders
569
+
570
+ // Registrations are soft state and expire unless refreshed, but can
571
+ // also be explicitly removed. A client can attempt to influence the
572
+ // expiration interval selected by the registrar as described in Section
573
+ // 10.2.1. A UA requests the immediate removal of a binding by
574
+ // specifying an expiration interval of "0" for that contact address in
575
+ // a REGISTER request. UAs SHOULD support this mechanism so that
576
+ // bindings can be removed before their expiration interval has passed.
577
+ //
578
+ // The REGISTER-specific Contact header field value of "*" applies to
579
+ // all registrations, but it MUST NOT be used unless the Expires header
580
+ // field is present with a value of "0".
581
+ // https://tools.ietf.org/html/rfc3261#section-10.2.2
582
+ if (options.all) {
583
+ extraHeaders.push('Contact: *')
584
+ extraHeaders.push('Expires: 0')
585
+ } else {
586
+ extraHeaders.push('Contact: ' + this.generateContactHeader(0))
587
+ }
588
+
589
+ // Call-ID: All registrations from a UAC SHOULD use the same Call-ID
590
+ // header field value for registrations sent to a particular
591
+ // registrar.
592
+ //
593
+ // CSeq: The CSeq value guarantees proper ordering of REGISTER
594
+ // requests. A UA MUST increment the CSeq value by one for each
595
+ // REGISTER request with the same Call-ID.
596
+ // https://tools.ietf.org/html/rfc3261#section-10.2
597
+ this.request.cseq++
598
+ this.request.setHeader('cseq', this.request.cseq + ' REGISTER')
599
+
600
+ // Pre-emptive clear the registration timer to avoid a race condition where
601
+ // this timer fires while waiting for a final response to the unsubscribe.
602
+ if (this.registrationTimer !== undefined) {
603
+ clearTimeout(this.registrationTimer)
604
+ this.registrationTimer = undefined
605
+ }
606
+
607
+ this.waitingToggle(true)
608
+
609
+ const outgoingRegisterRequest = this.userAgent.userAgentCore.register(this.request, {
610
+ onAccept: (response): void => {
611
+ this._contacts = response.message.getHeaders('contact') // Update contacts
612
+ this.unregistered()
613
+ if (options.requestDelegate && options.requestDelegate.onAccept) {
614
+ options.requestDelegate.onAccept(response)
615
+ }
616
+ this.waitingToggle(false)
617
+ },
618
+ onProgress: (response): void => {
619
+ if (options.requestDelegate && options.requestDelegate.onProgress) {
620
+ options.requestDelegate.onProgress(response)
621
+ }
622
+ },
623
+ onRedirect: (response): void => {
624
+ this.logger.error('Unregister redirected. Not currently supported.')
625
+ this.unregistered()
626
+ if (options.requestDelegate && options.requestDelegate.onRedirect) {
627
+ options.requestDelegate.onRedirect(response)
628
+ }
629
+ this.waitingToggle(false)
630
+ },
631
+ onReject: (response): void => {
632
+ this.logger.error(`Unregister rejected with status code ${response.message.statusCode}`)
633
+ this.unregistered()
634
+ if (options.requestDelegate && options.requestDelegate.onReject) {
635
+ options.requestDelegate.onReject(response)
636
+ }
637
+ this.waitingToggle(false)
638
+ },
639
+ onTrying: (response): void => {
640
+ if (options.requestDelegate && options.requestDelegate.onTrying) {
641
+ options.requestDelegate.onTrying(response)
642
+ }
643
+ }
644
+ })
645
+
646
+ return Promise.resolve(outgoingRegisterRequest)
647
+ }
648
+
649
+ /**
650
+ * Clear registration timers.
651
+ */
652
+ private clearTimers(): void {
653
+ if (this.registrationTimer !== undefined) {
654
+ clearTimeout(this.registrationTimer)
655
+ this.registrationTimer = undefined
656
+ }
657
+
658
+ if (this.registrationExpiredTimer !== undefined) {
659
+ clearTimeout(this.registrationExpiredTimer)
660
+ this.registrationExpiredTimer = undefined
661
+ }
662
+ }
663
+
664
+ /**
665
+ * Generate Contact Header
666
+ */
667
+ private generateContactHeader(expires: number): string {
668
+ let contact = this.userAgent.contact.toString()
669
+ if (this.options.regId && this.options.instanceId) {
670
+ contact += ';reg-id=' + this.options.regId
671
+ contact += ';+sip.instance="<urn:uuid:' + this.options.instanceId + '>"'
672
+ }
673
+
674
+ if (this.options.extraContactHeaderParams) {
675
+ this.options.extraContactHeaderParams.forEach((header: string) => {
676
+ contact += ';' + header
677
+ })
678
+ }
679
+
680
+ contact += ';expires=' + expires
681
+
682
+ return contact
683
+ }
684
+
685
+ /**
686
+ * Helper function, called when registered.
687
+ */
688
+ private registered(expires: number): void {
689
+ this.clearTimers()
690
+
691
+ // Re-Register before the expiration interval has elapsed.
692
+ // For that, calculate the delay as a percentage of the expiration time
693
+ this.registrationTimer = setTimeout(() => {
694
+ this.registrationTimer = undefined
695
+ this.register()
696
+ }, (this.refreshFrequency / 100) * expires * 1000)
697
+
698
+ // We are unregistered if the registration expires.
699
+ this.registrationExpiredTimer = setTimeout(() => {
700
+ this.logger.warn('Registration expired')
701
+ this.unregistered()
702
+ }, expires * 1000)
703
+
704
+ if (this._state !== RegistererState.Registered) {
705
+ this.stateTransition(RegistererState.Registered)
706
+ }
707
+ }
708
+
709
+ /**
710
+ * Helper function, called when unregistered.
711
+ */
712
+ private unregistered(): void {
713
+ this.clearTimers()
714
+
715
+ if (this._state !== RegistererState.Unregistered) {
716
+ this.stateTransition(RegistererState.Unregistered)
717
+ }
718
+ }
719
+
720
+ /**
721
+ * Helper function, called when terminated.
722
+ */
723
+ private terminated(): void {
724
+ this.clearTimers()
725
+
726
+ if (this._state !== RegistererState.Terminated) {
727
+ this.stateTransition(RegistererState.Terminated)
728
+ }
729
+ }
730
+
731
+ /**
732
+ * Transition registration state.
733
+ */
734
+ private stateTransition(newState: RegistererState): void {
735
+ const invalidTransition = (): void => {
736
+ throw new Error(`Invalid state transition from ${this._state} to ${newState}`)
737
+ }
738
+
739
+ // Validate transition
740
+ switch (this._state) {
741
+ case RegistererState.Initial:
742
+ if (
743
+ newState !== RegistererState.Registered &&
744
+ newState !== RegistererState.Unregistered &&
745
+ newState !== RegistererState.Terminated
746
+ ) {
747
+ invalidTransition()
748
+ }
749
+ break
750
+ case RegistererState.Registered:
751
+ if (newState !== RegistererState.Unregistered && newState !== RegistererState.Terminated) {
752
+ invalidTransition()
753
+ }
754
+ break
755
+ case RegistererState.Unregistered:
756
+ if (newState !== RegistererState.Registered && newState !== RegistererState.Terminated) {
757
+ invalidTransition()
758
+ }
759
+ break
760
+ case RegistererState.Terminated:
761
+ invalidTransition()
762
+ break
763
+ default:
764
+ throw new Error('Unrecognized state.')
765
+ }
766
+
767
+ // Transition
768
+ this._state = newState
769
+ this.logger.log(`Registration transitioned to state ${this._state}`)
770
+ this._stateEventEmitter.emit(this._state)
771
+
772
+ // Dispose
773
+ if (newState === RegistererState.Terminated) {
774
+ this.dispose()
775
+ }
776
+ }
777
+
778
+ /** True if the registerer is currently waiting for final response to a REGISTER request. */
779
+ private get waiting(): boolean {
780
+ return this._waiting
781
+ }
782
+
783
+ /** Emits when the registerer waiting state changes. */
784
+ private get waitingChange(): Emitter<boolean> {
785
+ return this._waitingEventEmitter
786
+ }
787
+
788
+ /**
789
+ * Toggle waiting.
790
+ */
791
+ private waitingToggle(waiting: boolean): void {
792
+ if (this._waiting === waiting) {
793
+ throw new Error(`Invalid waiting transition from ${this._waiting} to ${waiting}`)
794
+ }
795
+ this._waiting = waiting
796
+ this.logger.log(`Waiting toggled to ${this._waiting}`)
797
+ this._waitingEventEmitter.emit(this._waiting)
798
+ }
799
+
800
+ /** Hopefully helpful as the standard behavior has been found to be unexpected. */
801
+ private waitingWarning(): void {
802
+ let message = 'An attempt was made to send a REGISTER request while a prior one was still in progress.'
803
+ message += ' RFC 3261 requires UAs MUST NOT send a new registration until they have received a final response'
804
+ message += ' from the registrar for the previous one or the previous REGISTER request has timed out.'
805
+ message += ' Note that if the transport disconnects, you still must wait for the prior request to time out before'
806
+ message +=
807
+ ' sending a new REGISTER request or alternatively dispose of the current Registerer and create a new Registerer.'
808
+ this.logger.warn(message)
809
+ }
810
+
811
+ /** Hopefully helpful as the standard behavior has been found to be unexpected. */
812
+ private stateError(): void {
813
+ const reason = this.state === RegistererState.Terminated ? "is in 'Terminated' state" : 'has been disposed'
814
+ let message = `An attempt was made to send a REGISTER request when the Registerer ${reason}.`
815
+ message += " The Registerer transitions to 'Terminated' when Registerer.dispose() is called."
816
+ message += ' Perhaps you called UserAgent.stop() which dipsoses of all Registerers?'
817
+ this.logger.error(message)
818
+ }
819
+ }