ue-softphone-sdk-beta 3.0.23 → 3.0.24

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 (572) hide show
  1. package/Dockerfile +1 -6
  2. package/dist/lib/types/lib/sip.js/api/ack.d.ts +12 -0
  3. package/dist/lib/types/lib/sip.js/api/bye.d.ts +16 -0
  4. package/dist/lib/types/lib/sip.js/api/dtmf.d.ts +15 -0
  5. package/dist/lib/types/lib/sip.js/api/emitter.d.ts +88 -0
  6. package/dist/lib/types/lib/sip.js/api/exceptions/content-type-unsupported.d.ts +8 -0
  7. package/dist/lib/types/lib/sip.js/api/exceptions/index.d.ts +5 -0
  8. package/dist/lib/types/lib/sip.js/api/exceptions/request-pending.d.ts +9 -0
  9. package/dist/lib/types/lib/sip.js/api/exceptions/session-description-handler.d.ts +8 -0
  10. package/dist/lib/types/lib/sip.js/api/exceptions/session-terminated.d.ts +8 -0
  11. package/dist/lib/types/lib/sip.js/api/exceptions/state-transition.d.ts +8 -0
  12. package/dist/lib/types/lib/sip.js/api/index.d.ts +59 -0
  13. package/dist/lib/types/lib/sip.js/api/info.d.ts +16 -0
  14. package/dist/lib/types/lib/sip.js/api/invitation-accept-options.d.ts +19 -0
  15. package/dist/lib/types/lib/sip.js/api/invitation-progress-options.d.ts +38 -0
  16. package/dist/lib/types/lib/sip.js/api/invitation-reject-options.d.ts +25 -0
  17. package/dist/lib/types/lib/sip.js/api/invitation.d.ts +179 -0
  18. package/dist/lib/types/lib/sip.js/api/inviter-cancel-options.d.ts +9 -0
  19. package/dist/lib/types/lib/sip.js/api/inviter-invite-options.d.ts +28 -0
  20. package/dist/lib/types/lib/sip.js/api/inviter-options.d.ts +43 -0
  21. package/dist/lib/types/lib/sip.js/api/inviter.d.ts +236 -0
  22. package/dist/lib/types/lib/sip.js/api/message.d.ts +16 -0
  23. package/dist/lib/types/lib/sip.js/api/messager-message-options.d.ts +11 -0
  24. package/dist/lib/types/lib/sip.js/api/messager-options.d.ts +17 -0
  25. package/dist/lib/types/lib/sip.js/api/messager.d.ts +26 -0
  26. package/dist/lib/types/lib/sip.js/api/notification.d.ts +16 -0
  27. package/dist/lib/types/lib/sip.js/api/notifier.d.ts +8 -0
  28. package/dist/lib/types/lib/sip.js/api/publisher-options.d.ts +33 -0
  29. package/dist/lib/types/lib/sip.js/api/publisher-publish-options.d.ts +6 -0
  30. package/dist/lib/types/lib/sip.js/api/publisher-state.d.ts +21 -0
  31. package/dist/lib/types/lib/sip.js/api/publisher-unpublish-options.d.ts +6 -0
  32. package/dist/lib/types/lib/sip.js/api/publisher.d.ts +65 -0
  33. package/dist/lib/types/lib/sip.js/api/referral.d.ts +38 -0
  34. package/dist/lib/types/lib/sip.js/api/registerer-options.d.ts +46 -0
  35. package/dist/lib/types/lib/sip.js/api/registerer-register-options.d.ts +11 -0
  36. package/dist/lib/types/lib/sip.js/api/registerer-state.d.ts +21 -0
  37. package/dist/lib/types/lib/sip.js/api/registerer-unregister-options.d.ts +16 -0
  38. package/dist/lib/types/lib/sip.js/api/registerer.d.ts +144 -0
  39. package/dist/lib/types/lib/sip.js/api/session-bye-options.d.ts +11 -0
  40. package/dist/lib/types/lib/sip.js/api/session-delegate.d.ts +79 -0
  41. package/dist/lib/types/lib/sip.js/api/session-description-handler-factory.d.ts +15 -0
  42. package/dist/lib/types/lib/sip.js/api/session-description-handler.d.ts +74 -0
  43. package/dist/lib/types/lib/sip.js/api/session-info-options.d.ts +11 -0
  44. package/dist/lib/types/lib/sip.js/api/session-invite-options.d.ts +28 -0
  45. package/dist/lib/types/lib/sip.js/api/session-message-options.d.ts +11 -0
  46. package/dist/lib/types/lib/sip.js/api/session-options.d.ts +8 -0
  47. package/dist/lib/types/lib/sip.js/api/session-refer-options.d.ts +14 -0
  48. package/dist/lib/types/lib/sip.js/api/session-state.d.ts +45 -0
  49. package/dist/lib/types/lib/sip.js/api/session.d.ts +359 -0
  50. package/dist/lib/types/lib/sip.js/api/subscriber-options.d.ts +11 -0
  51. package/dist/lib/types/lib/sip.js/api/subscriber-subscribe-options.d.ts +6 -0
  52. package/dist/lib/types/lib/sip.js/api/subscriber.d.ts +94 -0
  53. package/dist/lib/types/lib/sip.js/api/subscription-delegate.d.ts +12 -0
  54. package/dist/lib/types/lib/sip.js/api/subscription-options.d.ts +8 -0
  55. package/dist/lib/types/lib/sip.js/api/subscription-state.d.ts +19 -0
  56. package/dist/lib/types/lib/sip.js/api/subscription-subscribe-options.d.ts +6 -0
  57. package/dist/lib/types/lib/sip.js/api/subscription-unsubscribe-options.d.ts +6 -0
  58. package/dist/lib/types/lib/sip.js/api/subscription.d.ts +84 -0
  59. package/dist/lib/types/lib/sip.js/api/transport-state.d.ts +37 -0
  60. package/dist/lib/types/lib/sip.js/api/transport.d.ts +159 -0
  61. package/dist/lib/types/lib/sip.js/api/user-agent-delegate.d.ts +84 -0
  62. package/dist/lib/types/lib/sip.js/api/user-agent-options.d.ts +253 -0
  63. package/dist/lib/types/lib/sip.js/api/user-agent-state.d.ts +14 -0
  64. package/dist/lib/types/lib/sip.js/api/user-agent.d.ts +200 -0
  65. package/dist/lib/types/lib/sip.js/core/dialogs/dialog-state.d.ts +34 -0
  66. package/dist/lib/types/lib/sip.js/core/dialogs/dialog.d.ts +161 -0
  67. package/dist/lib/types/lib/sip.js/core/dialogs/index.d.ts +4 -0
  68. package/dist/lib/types/lib/sip.js/core/dialogs/session-dialog.d.ts +196 -0
  69. package/dist/lib/types/lib/sip.js/core/dialogs/subscription-dialog.d.ts +120 -0
  70. package/dist/lib/types/lib/sip.js/core/exceptions/exception.d.ts +8 -0
  71. package/dist/lib/types/lib/sip.js/core/exceptions/index.d.ts +3 -0
  72. package/dist/lib/types/lib/sip.js/core/exceptions/transaction-state-error.d.ts +8 -0
  73. package/dist/lib/types/lib/sip.js/core/exceptions/transport-error.d.ts +8 -0
  74. package/dist/lib/types/lib/sip.js/core/index.d.ts +15 -0
  75. package/dist/lib/types/lib/sip.js/core/log/index.d.ts +3 -0
  76. package/dist/lib/types/lib/sip.js/core/log/levels.d.ts +10 -0
  77. package/dist/lib/types/lib/sip.js/core/log/logger-factory.d.ts +21 -0
  78. package/dist/lib/types/lib/sip.js/core/log/logger.d.ts +19 -0
  79. package/dist/lib/types/lib/sip.js/core/messages/body.d.ts +64 -0
  80. package/dist/lib/types/lib/sip.js/core/messages/digest-authentication.d.ts +51 -0
  81. package/dist/lib/types/lib/sip.js/core/messages/incoming-message.d.ts +79 -0
  82. package/dist/lib/types/lib/sip.js/core/messages/incoming-request-message.d.ts +10 -0
  83. package/dist/lib/types/lib/sip.js/core/messages/incoming-request.d.ts +67 -0
  84. package/dist/lib/types/lib/sip.js/core/messages/incoming-response-message.d.ts +10 -0
  85. package/dist/lib/types/lib/sip.js/core/messages/incoming-response.d.ts +12 -0
  86. package/dist/lib/types/lib/sip.js/core/messages/index.d.ts +13 -0
  87. package/dist/lib/types/lib/sip.js/core/messages/md5.d.ts +32 -0
  88. package/dist/lib/types/lib/sip.js/core/messages/methods/ack.d.ts +18 -0
  89. package/dist/lib/types/lib/sip.js/core/messages/methods/bye.d.ts +21 -0
  90. package/dist/lib/types/lib/sip.js/core/messages/methods/cancel.d.ts +21 -0
  91. package/dist/lib/types/lib/sip.js/core/messages/methods/constants.d.ts +20 -0
  92. package/dist/lib/types/lib/sip.js/core/messages/methods/index.d.ts +13 -0
  93. package/dist/lib/types/lib/sip.js/core/messages/methods/info.d.ts +21 -0
  94. package/dist/lib/types/lib/sip.js/core/messages/methods/invite.d.ts +86 -0
  95. package/dist/lib/types/lib/sip.js/core/messages/methods/message.d.ts +21 -0
  96. package/dist/lib/types/lib/sip.js/core/messages/methods/notify.d.ts +21 -0
  97. package/dist/lib/types/lib/sip.js/core/messages/methods/prack.d.ts +21 -0
  98. package/dist/lib/types/lib/sip.js/core/messages/methods/publish.d.ts +21 -0
  99. package/dist/lib/types/lib/sip.js/core/messages/methods/refer.d.ts +21 -0
  100. package/dist/lib/types/lib/sip.js/core/messages/methods/register.d.ts +21 -0
  101. package/dist/lib/types/lib/sip.js/core/messages/methods/subscribe.d.ts +54 -0
  102. package/dist/lib/types/lib/sip.js/core/messages/outgoing-request-message.d.ts +94 -0
  103. package/dist/lib/types/lib/sip.js/core/messages/outgoing-request.d.ts +67 -0
  104. package/dist/lib/types/lib/sip.js/core/messages/outgoing-response.d.ts +42 -0
  105. package/dist/lib/types/lib/sip.js/core/messages/parser.d.ts +14 -0
  106. package/dist/lib/types/lib/sip.js/core/messages/utils.d.ts +24 -0
  107. package/dist/lib/types/lib/sip.js/core/session/index.d.ts +2 -0
  108. package/dist/lib/types/lib/sip.js/core/session/session-delegate.d.ts +70 -0
  109. package/dist/lib/types/lib/sip.js/core/session/session.d.ts +134 -0
  110. package/dist/lib/types/lib/sip.js/core/subscription/index.d.ts +2 -0
  111. package/dist/lib/types/lib/sip.js/core/subscription/subscription-delegate.d.ts +27 -0
  112. package/dist/lib/types/lib/sip.js/core/subscription/subscription.d.ts +55 -0
  113. package/dist/lib/types/lib/sip.js/core/timers.d.ts +20 -0
  114. package/dist/lib/types/lib/sip.js/core/transactions/client-transaction.d.ts +45 -0
  115. package/dist/lib/types/lib/sip.js/core/transactions/index.d.ts +10 -0
  116. package/dist/lib/types/lib/sip.js/core/transactions/invite-client-transaction.d.ts +116 -0
  117. package/dist/lib/types/lib/sip.js/core/transactions/invite-server-transaction.d.ts +127 -0
  118. package/dist/lib/types/lib/sip.js/core/transactions/non-invite-client-transaction.d.ts +69 -0
  119. package/dist/lib/types/lib/sip.js/core/transactions/non-invite-server-transaction.d.ts +57 -0
  120. package/dist/lib/types/lib/sip.js/core/transactions/server-transaction.d.ts +35 -0
  121. package/dist/lib/types/lib/sip.js/core/transactions/transaction-state.d.ts +13 -0
  122. package/dist/lib/types/lib/sip.js/core/transactions/transaction-user.d.ts +72 -0
  123. package/dist/lib/types/lib/sip.js/core/transactions/transaction.d.ts +79 -0
  124. package/dist/lib/types/lib/sip.js/core/transport.d.ts +31 -0
  125. package/dist/lib/types/lib/sip.js/core/user-agent-core/allowed-methods.d.ts +4 -0
  126. package/dist/lib/types/lib/sip.js/core/user-agent-core/index.d.ts +3 -0
  127. package/dist/lib/types/lib/sip.js/core/user-agent-core/user-agent-core-configuration.d.ts +99 -0
  128. package/dist/lib/types/lib/sip.js/core/user-agent-core/user-agent-core-delegate.d.ts +37 -0
  129. package/dist/lib/types/lib/sip.js/core/user-agent-core/user-agent-core.d.ts +179 -0
  130. package/dist/lib/types/lib/sip.js/core/user-agents/bye-user-agent-client.d.ts +10 -0
  131. package/dist/lib/types/lib/sip.js/core/user-agents/bye-user-agent-server.d.ts +10 -0
  132. package/dist/lib/types/lib/sip.js/core/user-agents/cancel-user-agent-client.d.ts +10 -0
  133. package/dist/lib/types/lib/sip.js/core/user-agents/index.d.ts +26 -0
  134. package/dist/lib/types/lib/sip.js/core/user-agents/info-user-agent-client.d.ts +10 -0
  135. package/dist/lib/types/lib/sip.js/core/user-agents/info-user-agent-server.d.ts +10 -0
  136. package/dist/lib/types/lib/sip.js/core/user-agents/invite-user-agent-client.d.ts +35 -0
  137. package/dist/lib/types/lib/sip.js/core/user-agents/invite-user-agent-server.d.ts +77 -0
  138. package/dist/lib/types/lib/sip.js/core/user-agents/message-user-agent-client.d.ts +10 -0
  139. package/dist/lib/types/lib/sip.js/core/user-agents/message-user-agent-server.d.ts +10 -0
  140. package/dist/lib/types/lib/sip.js/core/user-agents/notify-user-agent-client.d.ts +10 -0
  141. package/dist/lib/types/lib/sip.js/core/user-agents/notify-user-agent-server.d.ts +16 -0
  142. package/dist/lib/types/lib/sip.js/core/user-agents/prack-user-agent-client.d.ts +10 -0
  143. package/dist/lib/types/lib/sip.js/core/user-agents/prack-user-agent-server.d.ts +16 -0
  144. package/dist/lib/types/lib/sip.js/core/user-agents/publish-user-agent-client.d.ts +10 -0
  145. package/dist/lib/types/lib/sip.js/core/user-agents/re-invite-user-agent-client.d.ts +18 -0
  146. package/dist/lib/types/lib/sip.js/core/user-agents/re-invite-user-agent-server.d.ts +41 -0
  147. package/dist/lib/types/lib/sip.js/core/user-agents/re-subscribe-user-agent-client.d.ts +17 -0
  148. package/dist/lib/types/lib/sip.js/core/user-agents/re-subscribe-user-agent-server.d.ts +10 -0
  149. package/dist/lib/types/lib/sip.js/core/user-agents/refer-user-agent-client.d.ts +10 -0
  150. package/dist/lib/types/lib/sip.js/core/user-agents/refer-user-agent-server.d.ts +16 -0
  151. package/dist/lib/types/lib/sip.js/core/user-agents/register-user-agent-client.d.ts +10 -0
  152. package/dist/lib/types/lib/sip.js/core/user-agents/register-user-agent-server.d.ts +11 -0
  153. package/dist/lib/types/lib/sip.js/core/user-agents/subscribe-user-agent-client.d.ts +65 -0
  154. package/dist/lib/types/lib/sip.js/core/user-agents/subscribe-user-agent-server.d.ts +11 -0
  155. package/dist/lib/types/lib/sip.js/core/user-agents/user-agent-client.d.ts +103 -0
  156. package/dist/lib/types/lib/sip.js/core/user-agents/user-agent-server.d.ts +79 -0
  157. package/dist/lib/types/lib/sip.js/grammar/grammar.d.ts +26 -0
  158. package/dist/lib/types/lib/sip.js/grammar/index.d.ts +4 -0
  159. package/dist/lib/types/lib/sip.js/grammar/name-addr-header.d.ts +24 -0
  160. package/dist/lib/types/lib/sip.js/grammar/parameters.d.ts +16 -0
  161. package/dist/lib/types/lib/sip.js/grammar/pegjs/dist/grammar.d.ts +50 -0
  162. package/dist/lib/types/lib/sip.js/grammar/uri.d.ts +62 -0
  163. package/dist/lib/types/lib/sip.js/index.d.ts +9 -0
  164. package/dist/lib/types/lib/sip.js/platform/web/index.d.ts +4 -0
  165. package/dist/lib/types/lib/sip.js/platform/web/modifiers/index.d.ts +5 -0
  166. package/dist/lib/types/lib/sip.js/platform/web/modifiers/modifiers.d.ts +41 -0
  167. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/index.d.ts +14 -0
  168. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/media-stream-factory-default.d.ts +6 -0
  169. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/media-stream-factory.d.ts +6 -0
  170. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/peer-connection-configuration-default.d.ts +5 -0
  171. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/peer-connection-delegate.d.ts +63 -0
  172. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-configuration.d.ts +16 -0
  173. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory-default.d.ts +11 -0
  174. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory-options.d.ts +9 -0
  175. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory.d.ts +16 -0
  176. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-options.d.ts +47 -0
  177. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/session-description-handler.d.ts +212 -0
  178. package/dist/lib/types/lib/sip.js/platform/web/simple-user/index.d.ts +7 -0
  179. package/dist/lib/types/lib/sip.js/platform/web/simple-user/simple-user-delegate.d.ts +72 -0
  180. package/dist/lib/types/lib/sip.js/platform/web/simple-user/simple-user-options.d.ts +90 -0
  181. package/dist/lib/types/lib/sip.js/platform/web/simple-user/simple-user.d.ts +226 -0
  182. package/dist/lib/types/lib/sip.js/platform/web/transport/index.d.ts +6 -0
  183. package/dist/lib/types/lib/sip.js/platform/web/transport/transport-options.d.ts +30 -0
  184. package/dist/lib/types/lib/sip.js/platform/web/transport/transport.d.ts +125 -0
  185. package/dist/lib/types/lib/sip.js/version.d.ts +1 -0
  186. package/dist/lib/types/webrtc/webrtc-method.d.ts +2 -0
  187. package/dist/lib/types/webrtc/webrtc.d.ts +38 -0
  188. package/dist/lib/ue-soft-phone.min.js +3 -3
  189. package/dist/types/lib/sip.js/api/ack.d.ts +12 -0
  190. package/dist/types/lib/sip.js/api/bye.d.ts +16 -0
  191. package/dist/types/lib/sip.js/api/dtmf.d.ts +15 -0
  192. package/dist/types/lib/sip.js/api/emitter.d.ts +88 -0
  193. package/dist/types/lib/sip.js/api/exceptions/content-type-unsupported.d.ts +8 -0
  194. package/dist/types/lib/sip.js/api/exceptions/index.d.ts +5 -0
  195. package/dist/types/lib/sip.js/api/exceptions/request-pending.d.ts +9 -0
  196. package/dist/types/lib/sip.js/api/exceptions/session-description-handler.d.ts +8 -0
  197. package/dist/types/lib/sip.js/api/exceptions/session-terminated.d.ts +8 -0
  198. package/dist/types/lib/sip.js/api/exceptions/state-transition.d.ts +8 -0
  199. package/dist/types/lib/sip.js/api/index.d.ts +59 -0
  200. package/dist/types/lib/sip.js/api/info.d.ts +16 -0
  201. package/dist/types/lib/sip.js/api/invitation-accept-options.d.ts +19 -0
  202. package/dist/types/lib/sip.js/api/invitation-progress-options.d.ts +38 -0
  203. package/dist/types/lib/sip.js/api/invitation-reject-options.d.ts +25 -0
  204. package/dist/types/lib/sip.js/api/invitation.d.ts +179 -0
  205. package/dist/types/lib/sip.js/api/inviter-cancel-options.d.ts +9 -0
  206. package/dist/types/lib/sip.js/api/inviter-invite-options.d.ts +28 -0
  207. package/dist/types/lib/sip.js/api/inviter-options.d.ts +43 -0
  208. package/dist/types/lib/sip.js/api/inviter.d.ts +236 -0
  209. package/dist/types/lib/sip.js/api/message.d.ts +16 -0
  210. package/dist/types/lib/sip.js/api/messager-message-options.d.ts +11 -0
  211. package/dist/types/lib/sip.js/api/messager-options.d.ts +17 -0
  212. package/dist/types/lib/sip.js/api/messager.d.ts +26 -0
  213. package/dist/types/lib/sip.js/api/notification.d.ts +16 -0
  214. package/dist/types/lib/sip.js/api/notifier.d.ts +8 -0
  215. package/dist/types/lib/sip.js/api/publisher-options.d.ts +33 -0
  216. package/dist/types/lib/sip.js/api/publisher-publish-options.d.ts +6 -0
  217. package/dist/types/lib/sip.js/api/publisher-state.d.ts +21 -0
  218. package/dist/types/lib/sip.js/api/publisher-unpublish-options.d.ts +6 -0
  219. package/dist/types/lib/sip.js/api/publisher.d.ts +65 -0
  220. package/dist/types/lib/sip.js/api/referral.d.ts +38 -0
  221. package/dist/types/lib/sip.js/api/registerer-options.d.ts +46 -0
  222. package/dist/types/lib/sip.js/api/registerer-register-options.d.ts +11 -0
  223. package/dist/types/lib/sip.js/api/registerer-state.d.ts +21 -0
  224. package/dist/types/lib/sip.js/api/registerer-unregister-options.d.ts +16 -0
  225. package/dist/types/lib/sip.js/api/registerer.d.ts +144 -0
  226. package/dist/types/lib/sip.js/api/session-bye-options.d.ts +11 -0
  227. package/dist/types/lib/sip.js/api/session-delegate.d.ts +79 -0
  228. package/dist/types/lib/sip.js/api/session-description-handler-factory.d.ts +15 -0
  229. package/dist/types/lib/sip.js/api/session-description-handler.d.ts +74 -0
  230. package/dist/types/lib/sip.js/api/session-info-options.d.ts +11 -0
  231. package/dist/types/lib/sip.js/api/session-invite-options.d.ts +28 -0
  232. package/dist/types/lib/sip.js/api/session-message-options.d.ts +11 -0
  233. package/dist/types/lib/sip.js/api/session-options.d.ts +8 -0
  234. package/dist/types/lib/sip.js/api/session-refer-options.d.ts +14 -0
  235. package/dist/types/lib/sip.js/api/session-state.d.ts +45 -0
  236. package/dist/types/lib/sip.js/api/session.d.ts +359 -0
  237. package/dist/types/lib/sip.js/api/subscriber-options.d.ts +11 -0
  238. package/dist/types/lib/sip.js/api/subscriber-subscribe-options.d.ts +6 -0
  239. package/dist/types/lib/sip.js/api/subscriber.d.ts +94 -0
  240. package/dist/types/lib/sip.js/api/subscription-delegate.d.ts +12 -0
  241. package/dist/types/lib/sip.js/api/subscription-options.d.ts +8 -0
  242. package/dist/types/lib/sip.js/api/subscription-state.d.ts +19 -0
  243. package/dist/types/lib/sip.js/api/subscription-subscribe-options.d.ts +6 -0
  244. package/dist/types/lib/sip.js/api/subscription-unsubscribe-options.d.ts +6 -0
  245. package/dist/types/lib/sip.js/api/subscription.d.ts +84 -0
  246. package/dist/types/lib/sip.js/api/transport-state.d.ts +37 -0
  247. package/dist/types/lib/sip.js/api/transport.d.ts +159 -0
  248. package/dist/types/lib/sip.js/api/user-agent-delegate.d.ts +84 -0
  249. package/dist/types/lib/sip.js/api/user-agent-options.d.ts +253 -0
  250. package/dist/types/lib/sip.js/api/user-agent-state.d.ts +14 -0
  251. package/dist/types/lib/sip.js/api/user-agent.d.ts +200 -0
  252. package/dist/types/lib/sip.js/core/dialogs/dialog-state.d.ts +34 -0
  253. package/dist/types/lib/sip.js/core/dialogs/dialog.d.ts +161 -0
  254. package/dist/types/lib/sip.js/core/dialogs/index.d.ts +4 -0
  255. package/dist/types/lib/sip.js/core/dialogs/session-dialog.d.ts +196 -0
  256. package/dist/types/lib/sip.js/core/dialogs/subscription-dialog.d.ts +120 -0
  257. package/dist/types/lib/sip.js/core/exceptions/exception.d.ts +8 -0
  258. package/dist/types/lib/sip.js/core/exceptions/index.d.ts +3 -0
  259. package/dist/types/lib/sip.js/core/exceptions/transaction-state-error.d.ts +8 -0
  260. package/dist/types/lib/sip.js/core/exceptions/transport-error.d.ts +8 -0
  261. package/dist/types/lib/sip.js/core/index.d.ts +15 -0
  262. package/dist/types/lib/sip.js/core/log/index.d.ts +3 -0
  263. package/dist/types/lib/sip.js/core/log/levels.d.ts +10 -0
  264. package/dist/types/lib/sip.js/core/log/logger-factory.d.ts +21 -0
  265. package/dist/types/lib/sip.js/core/log/logger.d.ts +19 -0
  266. package/dist/types/lib/sip.js/core/messages/body.d.ts +64 -0
  267. package/dist/types/lib/sip.js/core/messages/digest-authentication.d.ts +51 -0
  268. package/dist/types/lib/sip.js/core/messages/incoming-message.d.ts +79 -0
  269. package/dist/types/lib/sip.js/core/messages/incoming-request-message.d.ts +10 -0
  270. package/dist/types/lib/sip.js/core/messages/incoming-request.d.ts +67 -0
  271. package/dist/types/lib/sip.js/core/messages/incoming-response-message.d.ts +10 -0
  272. package/dist/types/lib/sip.js/core/messages/incoming-response.d.ts +12 -0
  273. package/dist/types/lib/sip.js/core/messages/index.d.ts +13 -0
  274. package/dist/types/lib/sip.js/core/messages/md5.d.ts +32 -0
  275. package/dist/types/lib/sip.js/core/messages/methods/ack.d.ts +18 -0
  276. package/dist/types/lib/sip.js/core/messages/methods/bye.d.ts +21 -0
  277. package/dist/types/lib/sip.js/core/messages/methods/cancel.d.ts +21 -0
  278. package/dist/types/lib/sip.js/core/messages/methods/constants.d.ts +20 -0
  279. package/dist/types/lib/sip.js/core/messages/methods/index.d.ts +13 -0
  280. package/dist/types/lib/sip.js/core/messages/methods/info.d.ts +21 -0
  281. package/dist/types/lib/sip.js/core/messages/methods/invite.d.ts +86 -0
  282. package/dist/types/lib/sip.js/core/messages/methods/message.d.ts +21 -0
  283. package/dist/types/lib/sip.js/core/messages/methods/notify.d.ts +21 -0
  284. package/dist/types/lib/sip.js/core/messages/methods/prack.d.ts +21 -0
  285. package/dist/types/lib/sip.js/core/messages/methods/publish.d.ts +21 -0
  286. package/dist/types/lib/sip.js/core/messages/methods/refer.d.ts +21 -0
  287. package/dist/types/lib/sip.js/core/messages/methods/register.d.ts +21 -0
  288. package/dist/types/lib/sip.js/core/messages/methods/subscribe.d.ts +54 -0
  289. package/dist/types/lib/sip.js/core/messages/outgoing-request-message.d.ts +94 -0
  290. package/dist/types/lib/sip.js/core/messages/outgoing-request.d.ts +67 -0
  291. package/dist/types/lib/sip.js/core/messages/outgoing-response.d.ts +42 -0
  292. package/dist/types/lib/sip.js/core/messages/parser.d.ts +14 -0
  293. package/dist/types/lib/sip.js/core/messages/utils.d.ts +24 -0
  294. package/dist/types/lib/sip.js/core/session/index.d.ts +2 -0
  295. package/dist/types/lib/sip.js/core/session/session-delegate.d.ts +70 -0
  296. package/dist/types/lib/sip.js/core/session/session.d.ts +134 -0
  297. package/dist/types/lib/sip.js/core/subscription/index.d.ts +2 -0
  298. package/dist/types/lib/sip.js/core/subscription/subscription-delegate.d.ts +27 -0
  299. package/dist/types/lib/sip.js/core/subscription/subscription.d.ts +55 -0
  300. package/dist/types/lib/sip.js/core/timers.d.ts +20 -0
  301. package/dist/types/lib/sip.js/core/transactions/client-transaction.d.ts +45 -0
  302. package/dist/types/lib/sip.js/core/transactions/index.d.ts +10 -0
  303. package/dist/types/lib/sip.js/core/transactions/invite-client-transaction.d.ts +116 -0
  304. package/dist/types/lib/sip.js/core/transactions/invite-server-transaction.d.ts +127 -0
  305. package/dist/types/lib/sip.js/core/transactions/non-invite-client-transaction.d.ts +69 -0
  306. package/dist/types/lib/sip.js/core/transactions/non-invite-server-transaction.d.ts +57 -0
  307. package/dist/types/lib/sip.js/core/transactions/server-transaction.d.ts +35 -0
  308. package/dist/types/lib/sip.js/core/transactions/transaction-state.d.ts +13 -0
  309. package/dist/types/lib/sip.js/core/transactions/transaction-user.d.ts +72 -0
  310. package/dist/types/lib/sip.js/core/transactions/transaction.d.ts +79 -0
  311. package/dist/types/lib/sip.js/core/transport.d.ts +31 -0
  312. package/dist/types/lib/sip.js/core/user-agent-core/allowed-methods.d.ts +4 -0
  313. package/dist/types/lib/sip.js/core/user-agent-core/index.d.ts +3 -0
  314. package/dist/types/lib/sip.js/core/user-agent-core/user-agent-core-configuration.d.ts +99 -0
  315. package/dist/types/lib/sip.js/core/user-agent-core/user-agent-core-delegate.d.ts +37 -0
  316. package/dist/types/lib/sip.js/core/user-agent-core/user-agent-core.d.ts +179 -0
  317. package/dist/types/lib/sip.js/core/user-agents/bye-user-agent-client.d.ts +10 -0
  318. package/dist/types/lib/sip.js/core/user-agents/bye-user-agent-server.d.ts +10 -0
  319. package/dist/types/lib/sip.js/core/user-agents/cancel-user-agent-client.d.ts +10 -0
  320. package/dist/types/lib/sip.js/core/user-agents/index.d.ts +26 -0
  321. package/dist/types/lib/sip.js/core/user-agents/info-user-agent-client.d.ts +10 -0
  322. package/dist/types/lib/sip.js/core/user-agents/info-user-agent-server.d.ts +10 -0
  323. package/dist/types/lib/sip.js/core/user-agents/invite-user-agent-client.d.ts +35 -0
  324. package/dist/types/lib/sip.js/core/user-agents/invite-user-agent-server.d.ts +77 -0
  325. package/dist/types/lib/sip.js/core/user-agents/message-user-agent-client.d.ts +10 -0
  326. package/dist/types/lib/sip.js/core/user-agents/message-user-agent-server.d.ts +10 -0
  327. package/dist/types/lib/sip.js/core/user-agents/notify-user-agent-client.d.ts +10 -0
  328. package/dist/types/lib/sip.js/core/user-agents/notify-user-agent-server.d.ts +16 -0
  329. package/dist/types/lib/sip.js/core/user-agents/prack-user-agent-client.d.ts +10 -0
  330. package/dist/types/lib/sip.js/core/user-agents/prack-user-agent-server.d.ts +16 -0
  331. package/dist/types/lib/sip.js/core/user-agents/publish-user-agent-client.d.ts +10 -0
  332. package/dist/types/lib/sip.js/core/user-agents/re-invite-user-agent-client.d.ts +18 -0
  333. package/dist/types/lib/sip.js/core/user-agents/re-invite-user-agent-server.d.ts +41 -0
  334. package/dist/types/lib/sip.js/core/user-agents/re-subscribe-user-agent-client.d.ts +17 -0
  335. package/dist/types/lib/sip.js/core/user-agents/re-subscribe-user-agent-server.d.ts +10 -0
  336. package/dist/types/lib/sip.js/core/user-agents/refer-user-agent-client.d.ts +10 -0
  337. package/dist/types/lib/sip.js/core/user-agents/refer-user-agent-server.d.ts +16 -0
  338. package/dist/types/lib/sip.js/core/user-agents/register-user-agent-client.d.ts +10 -0
  339. package/dist/types/lib/sip.js/core/user-agents/register-user-agent-server.d.ts +11 -0
  340. package/dist/types/lib/sip.js/core/user-agents/subscribe-user-agent-client.d.ts +65 -0
  341. package/dist/types/lib/sip.js/core/user-agents/subscribe-user-agent-server.d.ts +11 -0
  342. package/dist/types/lib/sip.js/core/user-agents/user-agent-client.d.ts +103 -0
  343. package/dist/types/lib/sip.js/core/user-agents/user-agent-server.d.ts +79 -0
  344. package/dist/types/lib/sip.js/grammar/grammar.d.ts +26 -0
  345. package/dist/types/lib/sip.js/grammar/index.d.ts +4 -0
  346. package/dist/types/lib/sip.js/grammar/name-addr-header.d.ts +24 -0
  347. package/dist/types/lib/sip.js/grammar/parameters.d.ts +16 -0
  348. package/dist/types/lib/sip.js/grammar/pegjs/dist/grammar.d.ts +50 -0
  349. package/dist/types/lib/sip.js/grammar/uri.d.ts +62 -0
  350. package/dist/types/lib/sip.js/index.d.ts +9 -0
  351. package/dist/types/lib/sip.js/platform/web/index.d.ts +4 -0
  352. package/dist/types/lib/sip.js/platform/web/modifiers/index.d.ts +5 -0
  353. package/dist/types/lib/sip.js/platform/web/modifiers/modifiers.d.ts +41 -0
  354. package/dist/types/lib/sip.js/platform/web/session-description-handler/index.d.ts +14 -0
  355. package/dist/types/lib/sip.js/platform/web/session-description-handler/media-stream-factory-default.d.ts +6 -0
  356. package/dist/types/lib/sip.js/platform/web/session-description-handler/media-stream-factory.d.ts +6 -0
  357. package/dist/types/lib/sip.js/platform/web/session-description-handler/peer-connection-configuration-default.d.ts +5 -0
  358. package/dist/types/lib/sip.js/platform/web/session-description-handler/peer-connection-delegate.d.ts +63 -0
  359. package/dist/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-configuration.d.ts +16 -0
  360. package/dist/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory-default.d.ts +11 -0
  361. package/dist/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory-options.d.ts +9 -0
  362. package/dist/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory.d.ts +16 -0
  363. package/dist/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-options.d.ts +47 -0
  364. package/dist/types/lib/sip.js/platform/web/session-description-handler/session-description-handler.d.ts +212 -0
  365. package/dist/types/lib/sip.js/platform/web/simple-user/index.d.ts +7 -0
  366. package/dist/types/lib/sip.js/platform/web/simple-user/simple-user-delegate.d.ts +72 -0
  367. package/dist/types/lib/sip.js/platform/web/simple-user/simple-user-options.d.ts +90 -0
  368. package/dist/types/lib/sip.js/platform/web/simple-user/simple-user.d.ts +226 -0
  369. package/dist/types/lib/sip.js/platform/web/transport/index.d.ts +6 -0
  370. package/dist/types/lib/sip.js/platform/web/transport/transport-options.d.ts +30 -0
  371. package/dist/types/lib/sip.js/platform/web/transport/transport.d.ts +125 -0
  372. package/dist/types/lib/sip.js/version.d.ts +1 -0
  373. package/dist/types/webrtc/webrtc-method.d.ts +2 -0
  374. package/dist/types/webrtc/webrtc.d.ts +38 -0
  375. package/dist/ue-softphone-sdk.js +2 -2
  376. package/index.html/index.html +5 -5
  377. package/package.json +1 -1
  378. package/src/index.ts +10 -2
  379. package/src/lib/sip.js/api/ack.ts +15 -0
  380. package/src/lib/sip.js/api/api-extractor.json +350 -0
  381. package/src/lib/sip.js/api/bye.ts +27 -0
  382. package/src/lib/sip.js/api/dtmf.ts +27 -0
  383. package/src/lib/sip.js/api/emitter.ts +110 -0
  384. package/src/lib/sip.js/api/exceptions/content-type-unsupported.ts +11 -0
  385. package/src/lib/sip.js/api/exceptions/index.ts +5 -0
  386. package/src/lib/sip.js/api/exceptions/request-pending.ts +12 -0
  387. package/src/lib/sip.js/api/exceptions/session-description-handler.ts +11 -0
  388. package/src/lib/sip.js/api/exceptions/session-terminated.ts +11 -0
  389. package/src/lib/sip.js/api/exceptions/state-transition.ts +11 -0
  390. package/src/lib/sip.js/api/index.ts +59 -0
  391. package/src/lib/sip.js/api/info.ts +27 -0
  392. package/src/lib/sip.js/api/invitation-accept-options.ts +20 -0
  393. package/src/lib/sip.js/api/invitation-progress-options.ts +36 -0
  394. package/src/lib/sip.js/api/invitation-reject-options.ts +22 -0
  395. package/src/lib/sip.js/api/invitation.ts +815 -0
  396. package/src/lib/sip.js/api/inviter-cancel-options.ts +9 -0
  397. package/src/lib/sip.js/api/inviter-invite-options.ts +29 -0
  398. package/src/lib/sip.js/api/inviter-options.ts +44 -0
  399. package/src/lib/sip.js/api/inviter.ts +1126 -0
  400. package/src/lib/sip.js/api/message.ts +27 -0
  401. package/src/lib/sip.js/api/messager-message-options.ts +12 -0
  402. package/src/lib/sip.js/api/messager-options.ts +18 -0
  403. package/src/lib/sip.js/api/messager.ts +89 -0
  404. package/src/lib/sip.js/api/notification.ts +27 -0
  405. package/src/lib/sip.js/api/notifier.ts +7 -0
  406. package/src/lib/sip.js/api/publisher-options.ts +34 -0
  407. package/src/lib/sip.js/api/publisher-publish-options.ts +6 -0
  408. package/src/lib/sip.js/api/publisher-state.ts +21 -0
  409. package/src/lib/sip.js/api/publisher-unpublish-options.ts +6 -0
  410. package/src/lib/sip.js/api/publisher.ts +421 -0
  411. package/src/lib/sip.js/api/referral.ts +89 -0
  412. package/src/lib/sip.js/api/registerer-options.ts +55 -0
  413. package/src/lib/sip.js/api/registerer-register-options.ts +12 -0
  414. package/src/lib/sip.js/api/registerer-state.ts +21 -0
  415. package/src/lib/sip.js/api/registerer-unregister-options.ts +17 -0
  416. package/src/lib/sip.js/api/registerer.ts +819 -0
  417. package/src/lib/sip.js/api/session-bye-options.ts +12 -0
  418. package/src/lib/sip.js/api/session-delegate.ts +87 -0
  419. package/src/lib/sip.js/api/session-description-handler-factory.ts +16 -0
  420. package/src/lib/sip.js/api/session-description-handler.ts +89 -0
  421. package/src/lib/sip.js/api/session-info-options.ts +12 -0
  422. package/src/lib/sip.js/api/session-invite-options.ts +29 -0
  423. package/src/lib/sip.js/api/session-message-options.ts +12 -0
  424. package/src/lib/sip.js/api/session-options.ts +8 -0
  425. package/src/lib/sip.js/api/session-refer-options.ts +15 -0
  426. package/src/lib/sip.js/api/session-state.ts +45 -0
  427. package/src/lib/sip.js/api/session.ts +1454 -0
  428. package/src/lib/sip.js/api/subscriber-options.ts +12 -0
  429. package/src/lib/sip.js/api/subscriber-subscribe-options.ts +6 -0
  430. package/src/lib/sip.js/api/subscriber.ts +537 -0
  431. package/src/lib/sip.js/api/subscription-delegate.ts +13 -0
  432. package/src/lib/sip.js/api/subscription-options.ts +8 -0
  433. package/src/lib/sip.js/api/subscription-state.ts +19 -0
  434. package/src/lib/sip.js/api/subscription-subscribe-options.ts +6 -0
  435. package/src/lib/sip.js/api/subscription-unsubscribe-options.ts +6 -0
  436. package/src/lib/sip.js/api/subscription.ts +161 -0
  437. package/src/lib/sip.js/api/transport-state.ts +37 -0
  438. package/src/lib/sip.js/api/transport.ts +169 -0
  439. package/src/lib/sip.js/api/user-agent-delegate.ts +95 -0
  440. package/src/lib/sip.js/api/user-agent-options.ts +322 -0
  441. package/src/lib/sip.js/api/user-agent-state.ts +14 -0
  442. package/src/lib/sip.js/api/user-agent.ts +1013 -0
  443. package/src/lib/sip.js/core/api-extractor.json +350 -0
  444. package/src/lib/sip.js/core/dialogs/dialog-state.ts +35 -0
  445. package/src/lib/sip.js/core/dialogs/dialog.ts +605 -0
  446. package/src/lib/sip.js/core/dialogs/index.ts +4 -0
  447. package/src/lib/sip.js/core/dialogs/session-dialog.ts +997 -0
  448. package/src/lib/sip.js/core/dialogs/subscription-dialog.ts +558 -0
  449. package/src/lib/sip.js/core/exceptions/exception.ts +11 -0
  450. package/src/lib/sip.js/core/exceptions/index.ts +3 -0
  451. package/src/lib/sip.js/core/exceptions/transaction-state-error.ts +11 -0
  452. package/src/lib/sip.js/core/exceptions/transport-error.ts +11 -0
  453. package/src/lib/sip.js/core/index.ts +19 -0
  454. package/src/lib/sip.js/core/log/index.ts +3 -0
  455. package/src/lib/sip.js/core/log/levels.ts +10 -0
  456. package/src/lib/sip.js/core/log/logger-factory.ts +119 -0
  457. package/src/lib/sip.js/core/log/logger.ts +42 -0
  458. package/src/lib/sip.js/core/messages/body.ts +171 -0
  459. package/src/lib/sip.js/core/messages/digest-authentication.ts +190 -0
  460. package/src/lib/sip.js/core/messages/incoming-message.ts +152 -0
  461. package/src/lib/sip.js/core/messages/incoming-request-message.ts +14 -0
  462. package/src/lib/sip.js/core/messages/incoming-request.ts +75 -0
  463. package/src/lib/sip.js/core/messages/incoming-response-message.ts +14 -0
  464. package/src/lib/sip.js/core/messages/incoming-response.ts +13 -0
  465. package/src/lib/sip.js/core/messages/index.ts +18 -0
  466. package/src/lib/sip.js/core/messages/md5.ts +437 -0
  467. package/src/lib/sip.js/core/messages/methods/ack.ts +22 -0
  468. package/src/lib/sip.js/core/messages/methods/bye.ts +22 -0
  469. package/src/lib/sip.js/core/messages/methods/cancel.ts +22 -0
  470. package/src/lib/sip.js/core/messages/methods/constants.ts +21 -0
  471. package/src/lib/sip.js/core/messages/methods/index.ts +13 -0
  472. package/src/lib/sip.js/core/messages/methods/info.ts +22 -0
  473. package/src/lib/sip.js/core/messages/methods/invite.ts +104 -0
  474. package/src/lib/sip.js/core/messages/methods/message.ts +22 -0
  475. package/src/lib/sip.js/core/messages/methods/notify.ts +22 -0
  476. package/src/lib/sip.js/core/messages/methods/prack.ts +22 -0
  477. package/src/lib/sip.js/core/messages/methods/publish.ts +22 -0
  478. package/src/lib/sip.js/core/messages/methods/refer.ts +22 -0
  479. package/src/lib/sip.js/core/messages/methods/register.ts +22 -0
  480. package/src/lib/sip.js/core/messages/methods/subscribe.ts +59 -0
  481. package/src/lib/sip.js/core/messages/outgoing-request-message.ts +299 -0
  482. package/src/lib/sip.js/core/messages/outgoing-request.ts +77 -0
  483. package/src/lib/sip.js/core/messages/outgoing-response.ts +174 -0
  484. package/src/lib/sip.js/core/messages/parser.ts +265 -0
  485. package/src/lib/sip.js/core/messages/utils.ts +144 -0
  486. package/src/lib/sip.js/core/session/index.ts +2 -0
  487. package/src/lib/sip.js/core/session/session-delegate.ts +88 -0
  488. package/src/lib/sip.js/core/session/session.ts +158 -0
  489. package/src/lib/sip.js/core/subscription/index.ts +2 -0
  490. package/src/lib/sip.js/core/subscription/subscription-delegate.ts +30 -0
  491. package/src/lib/sip.js/core/subscription/subscription.ts +61 -0
  492. package/src/lib/sip.js/core/timers.ts +24 -0
  493. package/src/lib/sip.js/core/transactions/client-transaction.ts +78 -0
  494. package/src/lib/sip.js/core/transactions/index.ts +10 -0
  495. package/src/lib/sip.js/core/transactions/invite-client-transaction.ts +505 -0
  496. package/src/lib/sip.js/core/transactions/invite-server-transaction.ts +433 -0
  497. package/src/lib/sip.js/core/transactions/non-invite-client-transaction.ts +258 -0
  498. package/src/lib/sip.js/core/transactions/non-invite-server-transaction.ts +242 -0
  499. package/src/lib/sip.js/core/transactions/server-transaction.ts +47 -0
  500. package/src/lib/sip.js/core/transactions/transaction-state.ts +13 -0
  501. package/src/lib/sip.js/core/transactions/transaction-user.ts +82 -0
  502. package/src/lib/sip.js/core/transactions/transaction.ts +149 -0
  503. package/src/lib/sip.js/core/transport.ts +32 -0
  504. package/src/lib/sip.js/core/user-agent-core/allowed-methods.ts +19 -0
  505. package/src/lib/sip.js/core/user-agent-core/index.ts +3 -0
  506. package/src/lib/sip.js/core/user-agent-core/user-agent-core-configuration.ts +111 -0
  507. package/src/lib/sip.js/core/user-agent-core/user-agent-core-delegate.ts +50 -0
  508. package/src/lib/sip.js/core/user-agent-core/user-agent-core.ts +905 -0
  509. package/src/lib/sip.js/core/user-agents/bye-user-agent-client.ts +16 -0
  510. package/src/lib/sip.js/core/user-agents/bye-user-agent-server.ts +14 -0
  511. package/src/lib/sip.js/core/user-agents/cancel-user-agent-client.ts +14 -0
  512. package/src/lib/sip.js/core/user-agents/index.ts +26 -0
  513. package/src/lib/sip.js/core/user-agents/info-user-agent-client.ts +15 -0
  514. package/src/lib/sip.js/core/user-agents/info-user-agent-server.ts +14 -0
  515. package/src/lib/sip.js/core/user-agents/invite-user-agent-client.ts +406 -0
  516. package/src/lib/sip.js/core/user-agents/invite-user-agent-server.ts +269 -0
  517. package/src/lib/sip.js/core/user-agents/message-user-agent-client.ts +14 -0
  518. package/src/lib/sip.js/core/user-agents/message-user-agent-server.ts +14 -0
  519. package/src/lib/sip.js/core/user-agents/notify-user-agent-client.ts +15 -0
  520. package/src/lib/sip.js/core/user-agents/notify-user-agent-server.ts +30 -0
  521. package/src/lib/sip.js/core/user-agents/prack-user-agent-client.ts +16 -0
  522. package/src/lib/sip.js/core/user-agents/prack-user-agent-server.ts +37 -0
  523. package/src/lib/sip.js/core/user-agents/publish-user-agent-client.ts +14 -0
  524. package/src/lib/sip.js/core/user-agents/re-invite-user-agent-client.ts +128 -0
  525. package/src/lib/sip.js/core/user-agents/re-invite-user-agent-server.ts +109 -0
  526. package/src/lib/sip.js/core/user-agents/re-subscribe-user-agent-client.ts +78 -0
  527. package/src/lib/sip.js/core/user-agents/re-subscribe-user-agent-server.ts +14 -0
  528. package/src/lib/sip.js/core/user-agents/refer-user-agent-client.ts +15 -0
  529. package/src/lib/sip.js/core/user-agents/refer-user-agent-server.ts +30 -0
  530. package/src/lib/sip.js/core/user-agents/register-user-agent-client.ts +14 -0
  531. package/src/lib/sip.js/core/user-agents/register-user-agent-server.ts +14 -0
  532. package/src/lib/sip.js/core/user-agents/subscribe-user-agent-client.ts +342 -0
  533. package/src/lib/sip.js/core/user-agents/subscribe-user-agent-server.ts +14 -0
  534. package/src/lib/sip.js/core/user-agents/user-agent-client.ts +378 -0
  535. package/src/lib/sip.js/core/user-agents/user-agent-server.ts +276 -0
  536. package/src/lib/sip.js/grammar/grammar.ts +55 -0
  537. package/src/lib/sip.js/grammar/index.ts +4 -0
  538. package/src/lib/sip.js/grammar/name-addr-header.ts +58 -0
  539. package/src/lib/sip.js/grammar/parameters.ts +45 -0
  540. package/src/lib/sip.js/grammar/pegjs/README.md +9 -0
  541. package/src/lib/sip.js/grammar/pegjs/dist/grammar.ts +1557 -0
  542. package/src/lib/sip.js/grammar/pegjs/src/grammar.pegjs +1009 -0
  543. package/src/lib/sip.js/grammar/uri.ts +370 -0
  544. package/src/lib/sip.js/index.ts +20 -0
  545. package/src/lib/sip.js/platform/react/README.md +1 -0
  546. package/src/lib/sip.js/platform/web/index.ts +4 -0
  547. package/src/lib/sip.js/platform/web/modifiers/index.ts +5 -0
  548. package/src/lib/sip.js/platform/web/modifiers/modifiers.ts +180 -0
  549. package/src/lib/sip.js/platform/web/session-description-handler/api-extractor.json +350 -0
  550. package/src/lib/sip.js/platform/web/session-description-handler/index.ts +14 -0
  551. package/src/lib/sip.js/platform/web/session-description-handler/media-stream-factory-default.ts +22 -0
  552. package/src/lib/sip.js/platform/web/session-description-handler/media-stream-factory.ts +10 -0
  553. package/src/lib/sip.js/platform/web/session-description-handler/peer-connection-configuration-default.ts +17 -0
  554. package/src/lib/sip.js/platform/web/session-description-handler/peer-connection-delegate.ts +72 -0
  555. package/src/lib/sip.js/platform/web/session-description-handler/session-description-handler-configuration.ts +17 -0
  556. package/src/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory-default.ts +45 -0
  557. package/src/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory-options.ts +10 -0
  558. package/src/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory.ts +17 -0
  559. package/src/lib/sip.js/platform/web/session-description-handler/session-description-handler-options.ts +56 -0
  560. package/src/lib/sip.js/platform/web/session-description-handler/session-description-handler.ts +938 -0
  561. package/src/lib/sip.js/platform/web/simple-user/api-extractor.json +350 -0
  562. package/src/lib/sip.js/platform/web/simple-user/index.ts +7 -0
  563. package/src/lib/sip.js/platform/web/simple-user/simple-user-delegate.ts +82 -0
  564. package/src/lib/sip.js/platform/web/simple-user/simple-user-options.ts +102 -0
  565. package/src/lib/sip.js/platform/web/simple-user/simple-user.ts +1099 -0
  566. package/src/lib/sip.js/platform/web/transport/api-extractor.json +350 -0
  567. package/src/lib/sip.js/platform/web/transport/index.ts +6 -0
  568. package/src/lib/sip.js/platform/web/transport/transport-options.ts +34 -0
  569. package/src/lib/sip.js/platform/web/transport/transport.ts +743 -0
  570. package/src/lib/sip.js/version.ts +1 -0
  571. package/src/webrtc/webrtc-method.ts +49 -0
  572. package/src/webrtc/webrtc.ts +350 -0
@@ -0,0 +1,1013 @@
1
+ // @ts-nocheck
2
+ import {
3
+ Contact,
4
+ DigestAuthentication,
5
+ Grammar,
6
+ IncomingInviteRequest,
7
+ IncomingMessageRequest,
8
+ IncomingNotifyRequest,
9
+ IncomingReferRequest,
10
+ IncomingRegisterRequest,
11
+ IncomingRequestMessage,
12
+ IncomingResponseMessage,
13
+ IncomingSubscribeRequest,
14
+ Levels,
15
+ Logger,
16
+ LoggerFactory,
17
+ Parser,
18
+ TransportError,
19
+ URI,
20
+ UserAgentCore,
21
+ UserAgentCoreConfiguration,
22
+ UserAgentCoreDelegate
23
+ } from '../core'
24
+ import { createRandomToken, utf8Length } from '../core/messages/utils'
25
+ import { defaultSessionDescriptionHandlerFactory } from '../platform/web/session-description-handler'
26
+ import { Transport as WebTransport } from '../platform/web/transport'
27
+ import { LIBRARY_VERSION } from '../version'
28
+ import { Emitter, EmitterImpl } from './emitter'
29
+ import { Invitation } from './invitation'
30
+ import { Inviter } from './inviter'
31
+ import { InviterOptions } from './inviter-options'
32
+ import { Message } from './message'
33
+ import { Notification } from './notification'
34
+ import { Publisher } from './publisher'
35
+ import { Registerer } from './registerer'
36
+ import { Session } from './session'
37
+ import { Subscription } from './subscription'
38
+ import { Transport } from './transport'
39
+ import { UserAgentDelegate } from './user-agent-delegate'
40
+ import { SIPExtension, UserAgentOptions, UserAgentRegisteredOptionTags } from './user-agent-options'
41
+ import { UserAgentState } from './user-agent-state'
42
+
43
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
+ declare const chrome: any
45
+
46
+ /**
47
+ * A user agent sends and receives requests using a `Transport`.
48
+ *
49
+ * @remarks
50
+ * A user agent (UA) is associated with a user via the user's SIP address of record (AOR)
51
+ * and acts on behalf of that user to send and receive SIP requests. The user agent can
52
+ * register to receive incoming requests, as well as create and send outbound messages.
53
+ * The user agent also maintains the Transport over which its signaling travels.
54
+ *
55
+ * @public
56
+ */
57
+ export class UserAgent {
58
+ /**
59
+ * Property reserved for use by instance owner.
60
+ * @defaultValue `undefined`
61
+ */
62
+ public data: unknown
63
+
64
+ /**
65
+ * Delegate.
66
+ */
67
+ public delegate: UserAgentDelegate | undefined
68
+
69
+ /** @internal */
70
+ public _publishers: { [id: string]: Publisher } = {}
71
+ /** @internal */
72
+ public _registerers: { [id: string]: Registerer } = {}
73
+ /** @internal */
74
+ public _sessions: { [id: string]: Session } = {}
75
+ /** @internal */
76
+ public _subscriptions: { [id: string]: Subscription } = {}
77
+
78
+ private _contact: Contact
79
+ private _state: UserAgentState = UserAgentState.Stopped
80
+ private _stateEventEmitter: EmitterImpl<UserAgentState>
81
+ private _transport: Transport
82
+ private _userAgentCore: UserAgentCore
83
+
84
+ /** Logger. */
85
+ private logger: Logger
86
+ /** LoggerFactory. */
87
+ private loggerFactory: LoggerFactory
88
+ /** Options. */
89
+ private options: Required<UserAgentOptions>
90
+
91
+ /**
92
+ * Constructs a new instance of the `UserAgent` class.
93
+ * @param options - Options bucket. See {@link UserAgentOptions} for details.
94
+ */
95
+ public constructor(options: Partial<UserAgentOptions> = {}) {
96
+ // state emitter
97
+ this._stateEventEmitter = new EmitterImpl<UserAgentState>()
98
+
99
+ // initialize delegate
100
+ this.delegate = options.delegate
101
+
102
+ // initialize configuration
103
+ this.options = {
104
+ // start with the default option values
105
+ ...UserAgent.defaultOptions(),
106
+ // add a unique sipjs id for each instance
107
+ ...{ sipjsId: createRandomToken(5) },
108
+ // add a unique anonymous uri for each instance
109
+ ...{ uri: new URI('sip', 'anonymous.' + createRandomToken(6), 'anonymous.invalid') },
110
+ // add a unique via host for each instance
111
+ ...{ viaHost: createRandomToken(12) + '.invalid' },
112
+ // apply any options passed in via the constructor
113
+ ...UserAgent.stripUndefinedProperties(options)
114
+ }
115
+
116
+ // viaHost is hack
117
+ if (this.options.hackIpInContact) {
118
+ if (typeof this.options.hackIpInContact === 'boolean' && this.options.hackIpInContact) {
119
+ const from = 1
120
+ const to = 254
121
+ const octet: number = Math.floor(Math.random() * (to - from + 1) + from)
122
+ // random Test-Net IP (http://tools.ietf.org/html/rfc5735)
123
+ this.options.viaHost = '192.0.2.' + octet
124
+ } else if (this.options.hackIpInContact) {
125
+ this.options.viaHost = this.options.hackIpInContact
126
+ }
127
+ }
128
+
129
+ // initialize logger & logger factory
130
+ this.loggerFactory = new LoggerFactory()
131
+ this.logger = this.loggerFactory.getLogger('sip.UserAgent')
132
+ this.loggerFactory.builtinEnabled = this.options.logBuiltinEnabled
133
+ this.loggerFactory.connector = this.options.logConnector as (
134
+ level: string,
135
+ category: string,
136
+ label: string | undefined,
137
+ content: string
138
+ ) => void
139
+ switch (this.options.logLevel) {
140
+ case 'error':
141
+ this.loggerFactory.level = Levels.error
142
+ break
143
+ case 'warn':
144
+ this.loggerFactory.level = Levels.warn
145
+ break
146
+ case 'log':
147
+ this.loggerFactory.level = Levels.log
148
+ break
149
+ case 'debug':
150
+ this.loggerFactory.level = Levels.debug
151
+ break
152
+ default:
153
+ break
154
+ }
155
+
156
+ if (this.options.logConfiguration) {
157
+ this.logger.log('Configuration:')
158
+ Object.keys(this.options).forEach((key) => {
159
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
160
+ const value = (this.options as any)[key]
161
+ switch (key) {
162
+ case 'uri':
163
+ case 'sessionDescriptionHandlerFactory':
164
+ this.logger.log('· ' + key + ': ' + value)
165
+ break
166
+ case 'authorizationPassword':
167
+ this.logger.log('· ' + key + ': ' + 'NOT SHOWN')
168
+ break
169
+ case 'transportConstructor':
170
+ this.logger.log('· ' + key + ': ' + value.name)
171
+ break
172
+ default:
173
+ this.logger.log('· ' + key + ': ' + JSON.stringify(value))
174
+ }
175
+ })
176
+ }
177
+
178
+ // guard deprecated transport options (remove this in version 16.x)
179
+ if (this.options.transportOptions) {
180
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
181
+ const optionsDeprecated: any = this.options.transportOptions
182
+ const maxReconnectionAttemptsDeprecated: number | undefined = optionsDeprecated.maxReconnectionAttempts
183
+ const reconnectionTimeoutDeprecated: number | undefined = optionsDeprecated.reconnectionTimeout
184
+ if (maxReconnectionAttemptsDeprecated !== undefined) {
185
+ const deprecatedMessage =
186
+ `The transport option "maxReconnectionAttempts" as has apparently been specified and has been deprecated. ` +
187
+ 'It will no longer be available starting with SIP.js release 0.16.0. Please update accordingly.'
188
+ this.logger.warn(deprecatedMessage)
189
+ }
190
+ if (reconnectionTimeoutDeprecated !== undefined) {
191
+ const deprecatedMessage =
192
+ `The transport option "reconnectionTimeout" as has apparently been specified and has been deprecated. ` +
193
+ 'It will no longer be available starting with SIP.js release 0.16.0. Please update accordingly.'
194
+ this.logger.warn(deprecatedMessage)
195
+ }
196
+
197
+ // hack
198
+ if (options.reconnectionDelay === undefined && reconnectionTimeoutDeprecated !== undefined) {
199
+ this.options.reconnectionDelay = reconnectionTimeoutDeprecated
200
+ }
201
+ if (options.reconnectionAttempts === undefined && maxReconnectionAttemptsDeprecated !== undefined) {
202
+ this.options.reconnectionAttempts = maxReconnectionAttemptsDeprecated
203
+ }
204
+ }
205
+
206
+ // guard deprecated user agent options (remove this in version 16.x)
207
+ if (options.reconnectionDelay !== undefined) {
208
+ const deprecatedMessage =
209
+ `The user agent option "reconnectionDelay" as has apparently been specified and has been deprecated. ` +
210
+ 'It will no longer be available starting with SIP.js release 0.16.0. Please update accordingly.'
211
+ this.logger.warn(deprecatedMessage)
212
+ }
213
+ if (options.reconnectionAttempts !== undefined) {
214
+ const deprecatedMessage =
215
+ `The user agent option "reconnectionAttempts" as has apparently been specified and has been deprecated. ` +
216
+ 'It will no longer be available starting with SIP.js release 0.16.0. Please update accordingly.'
217
+ this.logger.warn(deprecatedMessage)
218
+ }
219
+
220
+ // Initialize Transport
221
+ this._transport = new this.options.transportConstructor(
222
+ this.getLogger('sip.Transport'),
223
+ this.options.transportOptions
224
+ )
225
+ this.initTransportCallbacks()
226
+
227
+ // Initialize Contact
228
+ this._contact = this.initContact()
229
+
230
+ // Initialize UserAgentCore
231
+ this._userAgentCore = this.initCore()
232
+
233
+ if (this.options.autoStart) {
234
+ this.start()
235
+ }
236
+ }
237
+
238
+ /**
239
+ * Create a URI instance from a string.
240
+ * @param uri - The string to parse.
241
+ *
242
+ * @example
243
+ * ```ts
244
+ * const uri = UserAgent.makeURI("sip:edgar@example.com");
245
+ * ```
246
+ */
247
+ public static makeURI(uri: string): URI | undefined {
248
+ return Grammar.URIParse(uri)
249
+ }
250
+
251
+ /** Default user agent options. */
252
+ private static defaultOptions(): Required<UserAgentOptions> {
253
+ return {
254
+ allowLegacyNotifications: false,
255
+ authorizationHa1: '',
256
+ authorizationPassword: '',
257
+ authorizationUsername: '',
258
+ autoStart: false,
259
+ autoStop: true,
260
+ delegate: {},
261
+ contactName: '',
262
+ contactParams: { transport: 'ws' },
263
+ displayName: '',
264
+ forceRport: false,
265
+ hackAllowUnregisteredOptionTags: false,
266
+ hackIpInContact: false,
267
+ hackViaTcp: false,
268
+ logBuiltinEnabled: true,
269
+ logConfiguration: true,
270
+ logConnector: (): void => {
271
+ /* noop */
272
+ },
273
+ logLevel: 'log',
274
+ noAnswerTimeout: 60,
275
+ preloadedRouteSet: [],
276
+ reconnectionAttempts: 0,
277
+ reconnectionDelay: 4,
278
+ sendInitialProvisionalResponse: true,
279
+ sessionDescriptionHandlerFactory: defaultSessionDescriptionHandlerFactory(),
280
+ sessionDescriptionHandlerFactoryOptions: {},
281
+ sipExtension100rel: SIPExtension.Unsupported,
282
+ sipExtensionReplaces: SIPExtension.Unsupported,
283
+ sipExtensionExtraSupported: [],
284
+ sipjsId: '',
285
+ transportConstructor: WebTransport,
286
+ transportOptions: {},
287
+ uri: new URI('sip', 'anonymous', 'anonymous.invalid'),
288
+ userAgentString: 'SIP.js/' + LIBRARY_VERSION,
289
+ viaHost: ''
290
+ }
291
+ }
292
+
293
+ /**
294
+ * Strip properties with undefined values from options.
295
+ * This is a work around while waiting for missing vs undefined to be addressed (or not)...
296
+ * https://github.com/Microsoft/TypeScript/issues/13195
297
+ * @param options - Options to reduce
298
+ */
299
+ private static stripUndefinedProperties(options: Partial<UserAgentOptions>): Partial<UserAgentOptions> {
300
+ return Object.keys(options).reduce((object, key) => {
301
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
302
+ if ((options as any)[key] !== undefined) {
303
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
304
+ ;(object as any)[key] = (options as any)[key]
305
+ }
306
+ return object
307
+ }, {})
308
+ }
309
+
310
+ /**
311
+ * User agent configuration.
312
+ */
313
+ public get configuration(): Required<UserAgentOptions> {
314
+ return this.options
315
+ }
316
+
317
+ /**
318
+ * User agent contact.
319
+ */
320
+ public get contact(): Contact {
321
+ return this._contact
322
+ }
323
+
324
+ /**
325
+ * User agent state.
326
+ */
327
+ public get state(): UserAgentState {
328
+ return this._state
329
+ }
330
+
331
+ /**
332
+ * User agent state change emitter.
333
+ */
334
+ public get stateChange(): Emitter<UserAgentState> {
335
+ return this._stateEventEmitter
336
+ }
337
+
338
+ /**
339
+ * User agent transport.
340
+ */
341
+ public get transport(): Transport {
342
+ return this._transport
343
+ }
344
+
345
+ /**
346
+ * User agent core.
347
+ */
348
+ public get userAgentCore(): UserAgentCore {
349
+ return this._userAgentCore
350
+ }
351
+
352
+ /**
353
+ * The logger.
354
+ */
355
+ public getLogger(category: string, label?: string): Logger {
356
+ return this.loggerFactory.getLogger(category, label)
357
+ }
358
+
359
+ /**
360
+ * The logger factory.
361
+ */
362
+ public getLoggerFactory(): LoggerFactory {
363
+ return this.loggerFactory
364
+ }
365
+
366
+ /**
367
+ * True if transport is connected.
368
+ */
369
+ public isConnected(): boolean {
370
+ return this.transport.isConnected()
371
+ }
372
+
373
+ /**
374
+ * Reconnect the transport.
375
+ */
376
+ public reconnect(): Promise<void> {
377
+ if (this.state === UserAgentState.Stopped) {
378
+ return Promise.reject(new Error('User agent stopped.'))
379
+ }
380
+ // Make sure we don't call synchronously
381
+ return Promise.resolve().then(() => this.transport.connect())
382
+ }
383
+
384
+ /**
385
+ * Start the user agent.
386
+ *
387
+ * @remarks
388
+ * Resolves if transport connects, otherwise rejects.
389
+ *
390
+ * @example
391
+ * ```ts
392
+ * userAgent.start()
393
+ * .then(() => {
394
+ * // userAgent.isConnected() === true
395
+ * })
396
+ * .catch((error: Error) => {
397
+ * // userAgent.isConnected() === false
398
+ * });
399
+ * ```
400
+ */
401
+ public start(): Promise<void> {
402
+ if (this.state === UserAgentState.Started) {
403
+ this.logger.warn(`User agent already started`)
404
+ return Promise.resolve()
405
+ }
406
+ this.logger.log(`Starting ${this.configuration.uri}`)
407
+
408
+ // Transition state
409
+ this.transitionState(UserAgentState.Started)
410
+
411
+ // TODO: Review this as it is not clear it has any benefit and at worst causes additional load the server.
412
+ // On unload it may be best to simply in most scenarios to do nothing. Furthermore and regardless, this
413
+ // kind of behavior seems more appropriate to be managed by the consumer of the API than the API itself.
414
+ // Should this perhaps be deprecated?
415
+ //
416
+ // Add window unload event listener
417
+ if (this.options.autoStop) {
418
+ // Google Chrome Packaged Apps don't allow 'unload' listeners: unload is not available in packaged apps
419
+ const googleChromePackagedApp = typeof chrome !== 'undefined' && chrome.app && chrome.app.runtime ? true : false
420
+ if (typeof window !== 'undefined' && typeof window.addEventListener === 'function' && !googleChromePackagedApp) {
421
+ window.addEventListener('unload', this.unloadListener)
422
+ }
423
+ }
424
+
425
+ return this.transport.connect()
426
+ }
427
+
428
+ /**
429
+ * Stop the user agent.
430
+ *
431
+ * @remarks
432
+ * Resolves when the user agent has completed a graceful shutdown.
433
+ * ```txt
434
+ * 1) Sessions terminate.
435
+ * 2) Registerers unregister.
436
+ * 3) Subscribers unsubscribe.
437
+ * 4) Publishers unpublish.
438
+ * 5) Transport disconnects.
439
+ * 6) User Agent Core resets.
440
+ * ```
441
+ * NOTE: While this is a "graceful shutdown", it can also be very slow one if you
442
+ * are waiting for the returned Promise to resolve. The disposal of the clients and
443
+ * dialogs is done serially - waiting on one to finish before moving on to the next.
444
+ * This can be slow if there are lot of subscriptions to unsubscribe for example.
445
+ *
446
+ * THE SLOW PACE IS INTENTIONAL!
447
+ * While one could spin them all down in parallel, this could slam the remote server.
448
+ * It is bad practice to denial of service attack (DoS attack) servers!!!
449
+ * Moreover, production servers will automatically blacklist clients which send too
450
+ * many requests in too short a period of time - dropping any additional requests.
451
+ *
452
+ * If a different approach to disposing is needed, one can implement whatever is
453
+ * needed and execute that prior to calling `stop()`. Alternatively one may simply
454
+ * not wait for the Promise returned by `stop()` to complete.
455
+ */
456
+ public async stop(): Promise<void> {
457
+ if (this.state === UserAgentState.Stopped) {
458
+ this.logger.warn(`User agent already stopped`)
459
+ return Promise.resolve()
460
+ }
461
+ this.logger.log(`Stopping ${this.configuration.uri}`)
462
+
463
+ // Transition state
464
+ this.transitionState(UserAgentState.Stopped)
465
+
466
+ // TODO: See comments with associated complimentary code in start(). Should this perhaps be deprecated?
467
+ // Remove window unload event listener
468
+ if (this.options.autoStop) {
469
+ // Google Chrome Packaged Apps don't allow 'unload' listeners: unload is not available in packaged apps
470
+ const googleChromePackagedApp = typeof chrome !== 'undefined' && chrome.app && chrome.app.runtime ? true : false
471
+ if (typeof window !== 'undefined' && window.removeEventListener && !googleChromePackagedApp) {
472
+ window.removeEventListener('unload', this.unloadListener)
473
+ }
474
+ }
475
+
476
+ // Be careful here to use a local references as start() can be called
477
+ // again before we complete and we don't want to touch new clients
478
+ // and we don't want to step on the new instances (or vice versa).
479
+ const publishers = { ...this._publishers }
480
+ const registerers = { ...this._registerers }
481
+ const sessions = { ...this._sessions }
482
+ const subscriptions = { ...this._subscriptions }
483
+ const transport = this.transport
484
+ const userAgentCore = this.userAgentCore
485
+
486
+ //
487
+ // At this point we have completed the state transition and everything
488
+ // following will effectively run async and MUST NOT cause any issues
489
+ // if UserAgent.start() is called while the following code continues.
490
+ //
491
+ // TODO: Minor optimization.
492
+ // The disposal in all cases involves, in part, sending messages which
493
+ // is not worth doing if the transport is not connected as we know attempting
494
+ // to send messages will be futile. But none of these disposal methods check
495
+ // if that's is the case and it would be easy for them to do so at this point.
496
+
497
+ // Dispose of Registerers
498
+ this.logger.log(`Dispose of registerers`)
499
+ for (const id in registerers) {
500
+ if (registerers[id]) {
501
+ await registerers[id].dispose().catch((error: Error) => {
502
+ this.logger.error(error.message)
503
+ delete this._registerers[id]
504
+ throw error
505
+ })
506
+ }
507
+ }
508
+
509
+ // Dispose of Sessions
510
+ this.logger.log(`Dispose of sessions`)
511
+ for (const id in sessions) {
512
+ if (sessions[id]) {
513
+ await sessions[id].dispose().catch((error: Error) => {
514
+ this.logger.error(error.message)
515
+ delete this._sessions[id]
516
+ throw error
517
+ })
518
+ }
519
+ }
520
+
521
+ // Dispose of Subscriptions
522
+ this.logger.log(`Dispose of subscriptions`)
523
+ for (const id in subscriptions) {
524
+ if (subscriptions[id]) {
525
+ await subscriptions[id].dispose().catch((error: Error) => {
526
+ this.logger.error(error.message)
527
+ delete this._subscriptions[id]
528
+ throw error
529
+ })
530
+ }
531
+ }
532
+
533
+ // Dispose of Publishers
534
+ this.logger.log(`Dispose of publishers`)
535
+ for (const id in publishers) {
536
+ if (publishers[id]) {
537
+ await publishers[id].dispose().catch((error: Error) => {
538
+ this.logger.error(error.message)
539
+ delete this._publishers[id]
540
+ throw error
541
+ })
542
+ }
543
+ }
544
+
545
+ // Dispose of the transport (disconnecting)
546
+ this.logger.log(`Dispose of transport`)
547
+ await transport.dispose().catch((error: Error) => {
548
+ this.logger.error(error.message)
549
+ throw error
550
+ })
551
+
552
+ // Dispose of the user agent core (resetting)
553
+ this.logger.log(`Dispose of core`)
554
+ userAgentCore.dispose()
555
+ }
556
+
557
+ /**
558
+ * Used to avoid circular references.
559
+ * @internal
560
+ */
561
+ public _makeInviter(targetURI: URI, options?: InviterOptions): Inviter {
562
+ return new Inviter(this, targetURI, options)
563
+ }
564
+
565
+ /**
566
+ * Attempt reconnection up to `maxReconnectionAttempts` times.
567
+ * @param reconnectionAttempt - Current attempt number.
568
+ */
569
+ private attemptReconnection(reconnectionAttempt = 1): void {
570
+ const reconnectionAttempts = this.options.reconnectionAttempts
571
+ const reconnectionDelay = this.options.reconnectionDelay
572
+
573
+ if (reconnectionAttempt > reconnectionAttempts) {
574
+ this.logger.log(`Maximum reconnection attempts reached`)
575
+ return
576
+ }
577
+
578
+ this.logger.log(`Reconnection attempt ${reconnectionAttempt} of ${reconnectionAttempts} - trying`)
579
+ setTimeout(
580
+ () => {
581
+ this.reconnect()
582
+ .then(() => {
583
+ this.logger.log(`Reconnection attempt ${reconnectionAttempt} of ${reconnectionAttempts} - succeeded`)
584
+ })
585
+ .catch((error: Error) => {
586
+ this.logger.error(error.message)
587
+ this.logger.log(`Reconnection attempt ${reconnectionAttempt} of ${reconnectionAttempts} - failed`)
588
+ this.attemptReconnection(++reconnectionAttempt)
589
+ })
590
+ },
591
+ reconnectionAttempt === 1 ? 0 : reconnectionDelay * 1000
592
+ )
593
+ }
594
+
595
+ /**
596
+ * Initialize contact.
597
+ */
598
+ private initContact(): Contact {
599
+ const contactName = this.options.contactName !== '' ? this.options.contactName : createRandomToken(8)
600
+ const contactParams = this.options.contactParams
601
+ const contact = {
602
+ pubGruu: undefined,
603
+ tempGruu: undefined,
604
+ uri: new URI('sip', contactName, this.options.viaHost, undefined, contactParams),
605
+ toString: (contactToStringOptions: { anonymous?: boolean; outbound?: boolean } = {}): string => {
606
+ const anonymous = contactToStringOptions.anonymous || false
607
+ const outbound = contactToStringOptions.outbound || false
608
+ let contactString = '<'
609
+ if (anonymous) {
610
+ contactString +=
611
+ this.contact.tempGruu ||
612
+ `sip:anonymous@anonymous.invalid;transport=${contactParams.transport ? contactParams.transport : 'ws'}`
613
+ } else {
614
+ contactString += this.contact.pubGruu || this.contact.uri
615
+ }
616
+ if (outbound) {
617
+ contactString += ';ob'
618
+ }
619
+ contactString += '>'
620
+ return contactString
621
+ }
622
+ }
623
+ return contact
624
+ }
625
+
626
+ /**
627
+ * Initialize user agent core.
628
+ */
629
+ private initCore(): UserAgentCore {
630
+ // supported options
631
+ let supportedOptionTags: Array<string> = []
632
+ supportedOptionTags.push('outbound') // TODO: is this really supported?
633
+ if (this.options.sipExtension100rel === SIPExtension.Supported) {
634
+ supportedOptionTags.push('100rel')
635
+ }
636
+ if (this.options.sipExtensionReplaces === SIPExtension.Supported) {
637
+ supportedOptionTags.push('replaces')
638
+ }
639
+ if (this.options.sipExtensionExtraSupported) {
640
+ supportedOptionTags.push(...this.options.sipExtensionExtraSupported)
641
+ }
642
+ if (!this.options.hackAllowUnregisteredOptionTags) {
643
+ supportedOptionTags = supportedOptionTags.filter((optionTag) => UserAgentRegisteredOptionTags[optionTag])
644
+ }
645
+ supportedOptionTags = Array.from(new Set(supportedOptionTags)) // array of unique values
646
+
647
+ // FIXME: TODO: This was ported, but this is and was just plain broken.
648
+ const supportedOptionTagsResponse = supportedOptionTags.slice()
649
+ if (this.contact.pubGruu || this.contact.tempGruu) {
650
+ supportedOptionTagsResponse.push('gruu')
651
+ }
652
+
653
+ // core configuration
654
+ const userAgentCoreConfiguration: UserAgentCoreConfiguration = {
655
+ aor: this.options.uri,
656
+ contact: this.contact,
657
+ displayName: this.options.displayName,
658
+ loggerFactory: this.loggerFactory,
659
+ hackViaTcp: this.options.hackViaTcp,
660
+ routeSet: this.options.preloadedRouteSet,
661
+ supportedOptionTags,
662
+ supportedOptionTagsResponse,
663
+ sipjsId: this.options.sipjsId,
664
+ userAgentHeaderFieldValue: this.options.userAgentString,
665
+ viaForceRport: this.options.forceRport,
666
+ viaHost: this.options.viaHost,
667
+ authenticationFactory: () => {
668
+ const username = this.options.authorizationUsername ? this.options.authorizationUsername : this.options.uri.user // if authorization username not provided, use uri user as username
669
+ const password = this.options.authorizationPassword ? this.options.authorizationPassword : undefined
670
+ const ha1 = this.options.authorizationHa1 ? this.options.authorizationHa1 : undefined
671
+ return new DigestAuthentication(this.getLoggerFactory(), ha1, username, password)
672
+ },
673
+ transportAccessor: () => this.transport
674
+ }
675
+
676
+ const userAgentCoreDelegate: UserAgentCoreDelegate = {
677
+ onInvite: (incomingInviteRequest: IncomingInviteRequest): void => {
678
+ const invitation = new Invitation(this, incomingInviteRequest)
679
+
680
+ incomingInviteRequest.delegate = {
681
+ onCancel: (cancel: IncomingRequestMessage): void => {
682
+ invitation._onCancel(cancel)
683
+ },
684
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
685
+ onTransportError: (error: TransportError): void => {
686
+ // A server transaction MUST NOT discard transaction state based only on
687
+ // encountering a non-recoverable transport error when sending a
688
+ // response. Instead, the associated INVITE server transaction state
689
+ // machine MUST remain in its current state. (Timers will eventually
690
+ // cause it to transition to the "Terminated" state).
691
+ // https://tools.ietf.org/html/rfc6026#section-7.1
692
+
693
+ // As noted in the comment above, we are to leaving it to the transaction
694
+ // timers to eventually cause the transaction to sort itself out in the case
695
+ // of a transport failure in an invite server transaction. This delegate method
696
+ // is here simply here for completeness and to make it clear that it provides
697
+ // nothing more than informational hook into the core. That is, if you think
698
+ // you should be trying to deal with a transport error here, you are likely wrong.
699
+ this.logger.error('A transport error has occurred while handling an incoming INVITE request.')
700
+ }
701
+ }
702
+
703
+ // FIXME: Ported - 100 Trying send should be configurable.
704
+ // Only required if TU will not respond in 200ms.
705
+ // https://tools.ietf.org/html/rfc3261#section-17.2.1
706
+ incomingInviteRequest.trying()
707
+
708
+ // The Replaces header contains information used to match an existing
709
+ // SIP dialog (call-id, to-tag, and from-tag). Upon receiving an INVITE
710
+ // with a Replaces header, the User Agent (UA) attempts to match this
711
+ // information with a confirmed or early dialog.
712
+ // https://tools.ietf.org/html/rfc3891#section-3
713
+ if (this.options.sipExtensionReplaces !== SIPExtension.Unsupported) {
714
+ const message = incomingInviteRequest.message
715
+ const replaces = message.parseHeader('replaces')
716
+ if (replaces) {
717
+ const callId = replaces.call_id
718
+ if (typeof callId !== 'string') {
719
+ throw new Error('Type of call id is not string')
720
+ }
721
+ const toTag = replaces.replaces_to_tag
722
+ if (typeof toTag !== 'string') {
723
+ throw new Error('Type of to tag is not string')
724
+ }
725
+ const fromTag = replaces.replaces_from_tag
726
+ if (typeof fromTag !== 'string') {
727
+ throw new Error('type of from tag is not string')
728
+ }
729
+ const targetDialogId = callId + toTag + fromTag
730
+ const targetDialog = this.userAgentCore.dialogs.get(targetDialogId)
731
+
732
+ // If no match is found, the UAS rejects the INVITE and returns a 481
733
+ // Call/Transaction Does Not Exist response. Likewise, if the Replaces
734
+ // header field matches a dialog which was not created with an INVITE,
735
+ // the UAS MUST reject the request with a 481 response.
736
+ // https://tools.ietf.org/html/rfc3891#section-3
737
+ if (!targetDialog) {
738
+ invitation.reject({ statusCode: 481 })
739
+ return
740
+ }
741
+
742
+ // If the Replaces header field matches a confirmed dialog, it checks
743
+ // for the presence of the "early-only" flag in the Replaces header
744
+ // field. (This flag allows the UAC to prevent a potentially
745
+ // undesirable race condition described in Section 7.1.) If the flag is
746
+ // present, the UA rejects the request with a 486 Busy response.
747
+ // https://tools.ietf.org/html/rfc3891#section-3
748
+ if (!targetDialog.early && replaces.early_only === true) {
749
+ invitation.reject({ statusCode: 486 })
750
+ return
751
+ }
752
+
753
+ // Provide a handle on the session being replaced.
754
+ const targetSession = this._sessions[callId + fromTag] || this._sessions[callId + toTag] || undefined
755
+ if (!targetSession) {
756
+ throw new Error('Session does not exist.')
757
+ }
758
+ invitation._replacee = targetSession
759
+ }
760
+ }
761
+
762
+ // Delegate invitation handling.
763
+ if (this.delegate?.onInvite) {
764
+ if (invitation.autoSendAnInitialProvisionalResponse) {
765
+ invitation.progress().then(() => {
766
+ if (this.delegate?.onInvite === undefined) {
767
+ throw new Error('onInvite undefined.')
768
+ }
769
+ this.delegate.onInvite(invitation)
770
+ })
771
+ return
772
+ }
773
+ this.delegate.onInvite(invitation)
774
+ return
775
+ }
776
+
777
+ // A common scenario occurs when the callee is currently not willing or
778
+ // able to take additional calls at this end system. A 486 (Busy Here)
779
+ // SHOULD be returned in such a scenario.
780
+ // https://tools.ietf.org/html/rfc3261#section-13.3.1.3
781
+ invitation.reject({ statusCode: 486 })
782
+ },
783
+ onMessage: (incomingMessageRequest: IncomingMessageRequest): void => {
784
+ if (this.delegate && this.delegate.onMessage) {
785
+ const message = new Message(incomingMessageRequest)
786
+ this.delegate.onMessage(message)
787
+ } else {
788
+ // Accept the MESSAGE request, but do nothing with it.
789
+ incomingMessageRequest.accept()
790
+ }
791
+ },
792
+ onNotify: (incomingNotifyRequest: IncomingNotifyRequest): void => {
793
+ // NOTIFY requests are sent to inform subscribers of changes in state to
794
+ // which the subscriber has a subscription. Subscriptions are created
795
+ // using the SUBSCRIBE method. In legacy implementations, it is
796
+ // possible that other means of subscription creation have been used.
797
+ // However, this specification does not allow the creation of
798
+ // subscriptions except through SUBSCRIBE requests and (for backwards-
799
+ // compatibility) REFER requests [RFC3515].
800
+ // https://tools.ietf.org/html/rfc6665#section-3.2
801
+ if (this.delegate && this.delegate.onNotify) {
802
+ const notification = new Notification(incomingNotifyRequest)
803
+ this.delegate.onNotify(notification)
804
+ } else {
805
+ // Per the above which obsoletes https://tools.ietf.org/html/rfc3265,
806
+ // the use of out of dialog NOTIFY is obsolete, but...
807
+ if (this.options.allowLegacyNotifications) {
808
+ incomingNotifyRequest.accept() // Accept the NOTIFY request, but do nothing with it.
809
+ } else {
810
+ incomingNotifyRequest.reject({ statusCode: 481 })
811
+ }
812
+ }
813
+ },
814
+ onRefer: (incomingReferRequest: IncomingReferRequest): void => {
815
+ this.logger.warn('Received an out of dialog REFER request')
816
+ // TOOD: this.delegate.onRefer(...)
817
+ if (this.delegate && this.delegate.onReferRequest) {
818
+ this.delegate.onReferRequest(incomingReferRequest)
819
+ } else {
820
+ incomingReferRequest.reject({ statusCode: 405 })
821
+ }
822
+ },
823
+ onRegister: (incomingRegisterRequest: IncomingRegisterRequest): void => {
824
+ this.logger.warn('Received an out of dialog REGISTER request')
825
+ // TOOD: this.delegate.onRegister(...)
826
+ if (this.delegate && this.delegate.onRegisterRequest) {
827
+ this.delegate.onRegisterRequest(incomingRegisterRequest)
828
+ } else {
829
+ incomingRegisterRequest.reject({ statusCode: 405 })
830
+ }
831
+ },
832
+ onSubscribe: (incomingSubscribeRequest: IncomingSubscribeRequest): void => {
833
+ this.logger.warn('Received an out of dialog SUBSCRIBE request')
834
+ // TOOD: this.delegate.onSubscribe(...)
835
+ if (this.delegate && this.delegate.onSubscribeRequest) {
836
+ this.delegate.onSubscribeRequest(incomingSubscribeRequest)
837
+ } else {
838
+ incomingSubscribeRequest.reject({ statusCode: 405 })
839
+ }
840
+ }
841
+ }
842
+
843
+ return new UserAgentCore(userAgentCoreConfiguration, userAgentCoreDelegate)
844
+ }
845
+
846
+ private initTransportCallbacks(): void {
847
+ this.transport.onConnect = (): void => this.onTransportConnect()
848
+ this.transport.onDisconnect = (error?: Error): void => this.onTransportDisconnect(error)
849
+ this.transport.onMessage = (message: string): void => this.onTransportMessage(message)
850
+ }
851
+
852
+ private onTransportConnect(): void {
853
+ if (this.state === UserAgentState.Stopped) {
854
+ return
855
+ }
856
+ if (this.delegate && this.delegate.onConnect) {
857
+ this.delegate.onConnect()
858
+ }
859
+ }
860
+
861
+ private onTransportDisconnect(error?: Error): void {
862
+ if (this.state === UserAgentState.Stopped) {
863
+ return
864
+ }
865
+ if (this.delegate && this.delegate.onDisconnect) {
866
+ this.delegate.onDisconnect(error)
867
+ }
868
+ // Only attempt to reconnect if network/server dropped the connection.
869
+ if (error && this.options.reconnectionAttempts > 0) {
870
+ this.attemptReconnection()
871
+ }
872
+ }
873
+
874
+ private onTransportMessage(messageString: string): void {
875
+ const message = Parser.parseMessage(messageString, this.getLogger('sip.Parser'))
876
+ if (!message) {
877
+ this.logger.warn('Failed to parse incoming message. Dropping.')
878
+ return
879
+ }
880
+
881
+ if (this.state === UserAgentState.Stopped && message instanceof IncomingRequestMessage) {
882
+ this.logger.warn(`Received ${message.method} request while stopped. Dropping.`)
883
+ return
884
+ }
885
+
886
+ // A valid SIP request formulated by a UAC MUST, at a minimum, contain
887
+ // the following header fields: To, From, CSeq, Call-ID, Max-Forwards,
888
+ // and Via; all of these header fields are mandatory in all SIP
889
+ // requests.
890
+ // https://tools.ietf.org/html/rfc3261#section-8.1.1
891
+ const hasMinimumHeaders = (): boolean => {
892
+ const mandatoryHeaders: Array<string> = ['from', 'to', 'call_id', 'cseq', 'via']
893
+ for (const header of mandatoryHeaders) {
894
+ if (!message.hasHeader(header)) {
895
+ this.logger.warn(`Missing mandatory header field : ${header}.`)
896
+ return false
897
+ }
898
+ }
899
+ return true
900
+ }
901
+
902
+ // Request Checks
903
+ if (message instanceof IncomingRequestMessage) {
904
+ // This is port of SanityCheck.minimumHeaders().
905
+ if (!hasMinimumHeaders()) {
906
+ this.logger.warn(`Request missing mandatory header field. Dropping.`)
907
+ return
908
+ }
909
+
910
+ // FIXME: This is non-standard and should be a configurable behavior (desirable regardless).
911
+ // Custom SIP.js check to reject request from ourself (this instance of SIP.js).
912
+ // This is port of SanityCheck.rfc3261_16_3_4().
913
+ if (!message.toTag && message.callId.substr(0, 5) === this.options.sipjsId) {
914
+ this.userAgentCore.replyStateless(message, { statusCode: 482 })
915
+ return
916
+ }
917
+
918
+ // FIXME: This should be Transport check before we get here (Section 18).
919
+ // Custom SIP.js check to reject requests if body length wrong.
920
+ // This is port of SanityCheck.rfc3261_18_3_request().
921
+ const len: number = utf8Length(message.body)
922
+ const contentLength: string | undefined = message.getHeader('content-length')
923
+ if (contentLength && len < Number(contentLength)) {
924
+ this.userAgentCore.replyStateless(message, { statusCode: 400 })
925
+ return
926
+ }
927
+ }
928
+
929
+ // Response Checks
930
+ if (message instanceof IncomingResponseMessage) {
931
+ // This is port of SanityCheck.minimumHeaders().
932
+ if (!hasMinimumHeaders()) {
933
+ this.logger.warn(`Response missing mandatory header field. Dropping.`)
934
+ return
935
+ }
936
+
937
+ // Custom SIP.js check to drop responses if multiple Via headers.
938
+ // This is port of SanityCheck.rfc3261_8_1_3_3().
939
+ if (message.getHeaders('via').length > 1) {
940
+ this.logger.warn('More than one Via header field present in the response. Dropping.')
941
+ return
942
+ }
943
+
944
+ // FIXME: This should be Transport check before we get here (Section 18).
945
+ // Custom SIP.js check to drop responses if bad Via header.
946
+ // This is port of SanityCheck.rfc3261_18_1_2().
947
+ if (message.via.host !== this.options.viaHost || message.via.port !== undefined) {
948
+ this.logger.warn('Via sent-by in the response does not match UA Via host value. Dropping.')
949
+ return
950
+ }
951
+
952
+ // FIXME: This should be Transport check before we get here (Section 18).
953
+ // Custom SIP.js check to reject requests if body length wrong.
954
+ // This is port of SanityCheck.rfc3261_18_3_response().
955
+ const len: number = utf8Length(message.body)
956
+ const contentLength: string | undefined = message.getHeader('content-length')
957
+ if (contentLength && len < Number(contentLength)) {
958
+ this.logger.warn('Message body length is lower than the value in Content-Length header field. Dropping.')
959
+ return
960
+ }
961
+ }
962
+
963
+ // Handle Request
964
+ if (message instanceof IncomingRequestMessage) {
965
+ this.userAgentCore.receiveIncomingRequestFromTransport(message)
966
+ return
967
+ }
968
+
969
+ // Handle Response
970
+ if (message instanceof IncomingResponseMessage) {
971
+ this.userAgentCore.receiveIncomingResponseFromTransport(message)
972
+ return
973
+ }
974
+
975
+ throw new Error('Invalid message type.')
976
+ }
977
+
978
+ /**
979
+ * Transition state.
980
+ */
981
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
982
+ private transitionState(newState: UserAgentState, error?: Error): void {
983
+ const invalidTransition = (): void => {
984
+ throw new Error(`Invalid state transition from ${this._state} to ${newState}`)
985
+ }
986
+
987
+ // Validate state transition
988
+ switch (this._state) {
989
+ case UserAgentState.Started:
990
+ if (newState !== UserAgentState.Stopped) {
991
+ invalidTransition()
992
+ }
993
+ break
994
+ case UserAgentState.Stopped:
995
+ if (newState !== UserAgentState.Started) {
996
+ invalidTransition()
997
+ }
998
+ break
999
+ default:
1000
+ throw new Error('Unknown state.')
1001
+ }
1002
+
1003
+ // Update state
1004
+ this.logger.log(`Transitioned from ${this._state} to ${newState}`)
1005
+ this._state = newState
1006
+ this._stateEventEmitter.emit(this._state)
1007
+ }
1008
+
1009
+ /** Unload listener. */
1010
+ private unloadListener = (): void => {
1011
+ this.stop()
1012
+ }
1013
+ }