ue-softphone-sdk-beta 3.0.23 → 3.0.25

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 +1 -6
  2. package/dist/lib/types/index.d.ts +1 -0
  3. package/dist/lib/types/lib/sip.js/api/ack.d.ts +12 -0
  4. package/dist/lib/types/lib/sip.js/api/bye.d.ts +16 -0
  5. package/dist/lib/types/lib/sip.js/api/dtmf.d.ts +15 -0
  6. package/dist/lib/types/lib/sip.js/api/emitter.d.ts +88 -0
  7. package/dist/lib/types/lib/sip.js/api/exceptions/content-type-unsupported.d.ts +8 -0
  8. package/dist/lib/types/lib/sip.js/api/exceptions/index.d.ts +5 -0
  9. package/dist/lib/types/lib/sip.js/api/exceptions/request-pending.d.ts +9 -0
  10. package/dist/lib/types/lib/sip.js/api/exceptions/session-description-handler.d.ts +8 -0
  11. package/dist/lib/types/lib/sip.js/api/exceptions/session-terminated.d.ts +8 -0
  12. package/dist/lib/types/lib/sip.js/api/exceptions/state-transition.d.ts +8 -0
  13. package/dist/lib/types/lib/sip.js/api/index.d.ts +59 -0
  14. package/dist/lib/types/lib/sip.js/api/info.d.ts +16 -0
  15. package/dist/lib/types/lib/sip.js/api/invitation-accept-options.d.ts +19 -0
  16. package/dist/lib/types/lib/sip.js/api/invitation-progress-options.d.ts +38 -0
  17. package/dist/lib/types/lib/sip.js/api/invitation-reject-options.d.ts +25 -0
  18. package/dist/lib/types/lib/sip.js/api/invitation.d.ts +179 -0
  19. package/dist/lib/types/lib/sip.js/api/inviter-cancel-options.d.ts +9 -0
  20. package/dist/lib/types/lib/sip.js/api/inviter-invite-options.d.ts +28 -0
  21. package/dist/lib/types/lib/sip.js/api/inviter-options.d.ts +43 -0
  22. package/dist/lib/types/lib/sip.js/api/inviter.d.ts +236 -0
  23. package/dist/lib/types/lib/sip.js/api/message.d.ts +16 -0
  24. package/dist/lib/types/lib/sip.js/api/messager-message-options.d.ts +11 -0
  25. package/dist/lib/types/lib/sip.js/api/messager-options.d.ts +17 -0
  26. package/dist/lib/types/lib/sip.js/api/messager.d.ts +26 -0
  27. package/dist/lib/types/lib/sip.js/api/notification.d.ts +16 -0
  28. package/dist/lib/types/lib/sip.js/api/notifier.d.ts +8 -0
  29. package/dist/lib/types/lib/sip.js/api/publisher-options.d.ts +33 -0
  30. package/dist/lib/types/lib/sip.js/api/publisher-publish-options.d.ts +6 -0
  31. package/dist/lib/types/lib/sip.js/api/publisher-state.d.ts +21 -0
  32. package/dist/lib/types/lib/sip.js/api/publisher-unpublish-options.d.ts +6 -0
  33. package/dist/lib/types/lib/sip.js/api/publisher.d.ts +65 -0
  34. package/dist/lib/types/lib/sip.js/api/referral.d.ts +38 -0
  35. package/dist/lib/types/lib/sip.js/api/registerer-options.d.ts +46 -0
  36. package/dist/lib/types/lib/sip.js/api/registerer-register-options.d.ts +11 -0
  37. package/dist/lib/types/lib/sip.js/api/registerer-state.d.ts +21 -0
  38. package/dist/lib/types/lib/sip.js/api/registerer-unregister-options.d.ts +16 -0
  39. package/dist/lib/types/lib/sip.js/api/registerer.d.ts +144 -0
  40. package/dist/lib/types/lib/sip.js/api/session-bye-options.d.ts +11 -0
  41. package/dist/lib/types/lib/sip.js/api/session-delegate.d.ts +79 -0
  42. package/dist/lib/types/lib/sip.js/api/session-description-handler-factory.d.ts +15 -0
  43. package/dist/lib/types/lib/sip.js/api/session-description-handler.d.ts +74 -0
  44. package/dist/lib/types/lib/sip.js/api/session-info-options.d.ts +11 -0
  45. package/dist/lib/types/lib/sip.js/api/session-invite-options.d.ts +28 -0
  46. package/dist/lib/types/lib/sip.js/api/session-message-options.d.ts +11 -0
  47. package/dist/lib/types/lib/sip.js/api/session-options.d.ts +8 -0
  48. package/dist/lib/types/lib/sip.js/api/session-refer-options.d.ts +14 -0
  49. package/dist/lib/types/lib/sip.js/api/session-state.d.ts +45 -0
  50. package/dist/lib/types/lib/sip.js/api/session.d.ts +359 -0
  51. package/dist/lib/types/lib/sip.js/api/subscriber-options.d.ts +11 -0
  52. package/dist/lib/types/lib/sip.js/api/subscriber-subscribe-options.d.ts +6 -0
  53. package/dist/lib/types/lib/sip.js/api/subscriber.d.ts +94 -0
  54. package/dist/lib/types/lib/sip.js/api/subscription-delegate.d.ts +12 -0
  55. package/dist/lib/types/lib/sip.js/api/subscription-options.d.ts +8 -0
  56. package/dist/lib/types/lib/sip.js/api/subscription-state.d.ts +19 -0
  57. package/dist/lib/types/lib/sip.js/api/subscription-subscribe-options.d.ts +6 -0
  58. package/dist/lib/types/lib/sip.js/api/subscription-unsubscribe-options.d.ts +6 -0
  59. package/dist/lib/types/lib/sip.js/api/subscription.d.ts +84 -0
  60. package/dist/lib/types/lib/sip.js/api/transport-state.d.ts +37 -0
  61. package/dist/lib/types/lib/sip.js/api/transport.d.ts +159 -0
  62. package/dist/lib/types/lib/sip.js/api/user-agent-delegate.d.ts +84 -0
  63. package/dist/lib/types/lib/sip.js/api/user-agent-options.d.ts +253 -0
  64. package/dist/lib/types/lib/sip.js/api/user-agent-state.d.ts +14 -0
  65. package/dist/lib/types/lib/sip.js/api/user-agent.d.ts +200 -0
  66. package/dist/lib/types/lib/sip.js/core/dialogs/dialog-state.d.ts +34 -0
  67. package/dist/lib/types/lib/sip.js/core/dialogs/dialog.d.ts +161 -0
  68. package/dist/lib/types/lib/sip.js/core/dialogs/index.d.ts +4 -0
  69. package/dist/lib/types/lib/sip.js/core/dialogs/session-dialog.d.ts +196 -0
  70. package/dist/lib/types/lib/sip.js/core/dialogs/subscription-dialog.d.ts +120 -0
  71. package/dist/lib/types/lib/sip.js/core/exceptions/exception.d.ts +8 -0
  72. package/dist/lib/types/lib/sip.js/core/exceptions/index.d.ts +3 -0
  73. package/dist/lib/types/lib/sip.js/core/exceptions/transaction-state-error.d.ts +8 -0
  74. package/dist/lib/types/lib/sip.js/core/exceptions/transport-error.d.ts +8 -0
  75. package/dist/lib/types/lib/sip.js/core/index.d.ts +15 -0
  76. package/dist/lib/types/lib/sip.js/core/log/index.d.ts +3 -0
  77. package/dist/lib/types/lib/sip.js/core/log/levels.d.ts +10 -0
  78. package/dist/lib/types/lib/sip.js/core/log/logger-factory.d.ts +21 -0
  79. package/dist/lib/types/lib/sip.js/core/log/logger.d.ts +19 -0
  80. package/dist/lib/types/lib/sip.js/core/messages/body.d.ts +64 -0
  81. package/dist/lib/types/lib/sip.js/core/messages/digest-authentication.d.ts +51 -0
  82. package/dist/lib/types/lib/sip.js/core/messages/incoming-message.d.ts +79 -0
  83. package/dist/lib/types/lib/sip.js/core/messages/incoming-request-message.d.ts +10 -0
  84. package/dist/lib/types/lib/sip.js/core/messages/incoming-request.d.ts +67 -0
  85. package/dist/lib/types/lib/sip.js/core/messages/incoming-response-message.d.ts +10 -0
  86. package/dist/lib/types/lib/sip.js/core/messages/incoming-response.d.ts +12 -0
  87. package/dist/lib/types/lib/sip.js/core/messages/index.d.ts +13 -0
  88. package/dist/lib/types/lib/sip.js/core/messages/md5.d.ts +32 -0
  89. package/dist/lib/types/lib/sip.js/core/messages/methods/ack.d.ts +18 -0
  90. package/dist/lib/types/lib/sip.js/core/messages/methods/bye.d.ts +21 -0
  91. package/dist/lib/types/lib/sip.js/core/messages/methods/cancel.d.ts +21 -0
  92. package/dist/lib/types/lib/sip.js/core/messages/methods/constants.d.ts +20 -0
  93. package/dist/lib/types/lib/sip.js/core/messages/methods/index.d.ts +13 -0
  94. package/dist/lib/types/lib/sip.js/core/messages/methods/info.d.ts +21 -0
  95. package/dist/lib/types/lib/sip.js/core/messages/methods/invite.d.ts +86 -0
  96. package/dist/lib/types/lib/sip.js/core/messages/methods/message.d.ts +21 -0
  97. package/dist/lib/types/lib/sip.js/core/messages/methods/notify.d.ts +21 -0
  98. package/dist/lib/types/lib/sip.js/core/messages/methods/prack.d.ts +21 -0
  99. package/dist/lib/types/lib/sip.js/core/messages/methods/publish.d.ts +21 -0
  100. package/dist/lib/types/lib/sip.js/core/messages/methods/refer.d.ts +21 -0
  101. package/dist/lib/types/lib/sip.js/core/messages/methods/register.d.ts +21 -0
  102. package/dist/lib/types/lib/sip.js/core/messages/methods/subscribe.d.ts +54 -0
  103. package/dist/lib/types/lib/sip.js/core/messages/outgoing-request-message.d.ts +94 -0
  104. package/dist/lib/types/lib/sip.js/core/messages/outgoing-request.d.ts +67 -0
  105. package/dist/lib/types/lib/sip.js/core/messages/outgoing-response.d.ts +42 -0
  106. package/dist/lib/types/lib/sip.js/core/messages/parser.d.ts +14 -0
  107. package/dist/lib/types/lib/sip.js/core/messages/utils.d.ts +24 -0
  108. package/dist/lib/types/lib/sip.js/core/session/index.d.ts +2 -0
  109. package/dist/lib/types/lib/sip.js/core/session/session-delegate.d.ts +70 -0
  110. package/dist/lib/types/lib/sip.js/core/session/session.d.ts +134 -0
  111. package/dist/lib/types/lib/sip.js/core/subscription/index.d.ts +2 -0
  112. package/dist/lib/types/lib/sip.js/core/subscription/subscription-delegate.d.ts +27 -0
  113. package/dist/lib/types/lib/sip.js/core/subscription/subscription.d.ts +55 -0
  114. package/dist/lib/types/lib/sip.js/core/timers.d.ts +20 -0
  115. package/dist/lib/types/lib/sip.js/core/transactions/client-transaction.d.ts +45 -0
  116. package/dist/lib/types/lib/sip.js/core/transactions/index.d.ts +10 -0
  117. package/dist/lib/types/lib/sip.js/core/transactions/invite-client-transaction.d.ts +116 -0
  118. package/dist/lib/types/lib/sip.js/core/transactions/invite-server-transaction.d.ts +127 -0
  119. package/dist/lib/types/lib/sip.js/core/transactions/non-invite-client-transaction.d.ts +69 -0
  120. package/dist/lib/types/lib/sip.js/core/transactions/non-invite-server-transaction.d.ts +57 -0
  121. package/dist/lib/types/lib/sip.js/core/transactions/server-transaction.d.ts +35 -0
  122. package/dist/lib/types/lib/sip.js/core/transactions/transaction-state.d.ts +13 -0
  123. package/dist/lib/types/lib/sip.js/core/transactions/transaction-user.d.ts +72 -0
  124. package/dist/lib/types/lib/sip.js/core/transactions/transaction.d.ts +79 -0
  125. package/dist/lib/types/lib/sip.js/core/transport.d.ts +31 -0
  126. package/dist/lib/types/lib/sip.js/core/user-agent-core/allowed-methods.d.ts +4 -0
  127. package/dist/lib/types/lib/sip.js/core/user-agent-core/index.d.ts +3 -0
  128. package/dist/lib/types/lib/sip.js/core/user-agent-core/user-agent-core-configuration.d.ts +99 -0
  129. package/dist/lib/types/lib/sip.js/core/user-agent-core/user-agent-core-delegate.d.ts +37 -0
  130. package/dist/lib/types/lib/sip.js/core/user-agent-core/user-agent-core.d.ts +179 -0
  131. package/dist/lib/types/lib/sip.js/core/user-agents/bye-user-agent-client.d.ts +10 -0
  132. package/dist/lib/types/lib/sip.js/core/user-agents/bye-user-agent-server.d.ts +10 -0
  133. package/dist/lib/types/lib/sip.js/core/user-agents/cancel-user-agent-client.d.ts +10 -0
  134. package/dist/lib/types/lib/sip.js/core/user-agents/index.d.ts +26 -0
  135. package/dist/lib/types/lib/sip.js/core/user-agents/info-user-agent-client.d.ts +10 -0
  136. package/dist/lib/types/lib/sip.js/core/user-agents/info-user-agent-server.d.ts +10 -0
  137. package/dist/lib/types/lib/sip.js/core/user-agents/invite-user-agent-client.d.ts +35 -0
  138. package/dist/lib/types/lib/sip.js/core/user-agents/invite-user-agent-server.d.ts +77 -0
  139. package/dist/lib/types/lib/sip.js/core/user-agents/message-user-agent-client.d.ts +10 -0
  140. package/dist/lib/types/lib/sip.js/core/user-agents/message-user-agent-server.d.ts +10 -0
  141. package/dist/lib/types/lib/sip.js/core/user-agents/notify-user-agent-client.d.ts +10 -0
  142. package/dist/lib/types/lib/sip.js/core/user-agents/notify-user-agent-server.d.ts +16 -0
  143. package/dist/lib/types/lib/sip.js/core/user-agents/prack-user-agent-client.d.ts +10 -0
  144. package/dist/lib/types/lib/sip.js/core/user-agents/prack-user-agent-server.d.ts +16 -0
  145. package/dist/lib/types/lib/sip.js/core/user-agents/publish-user-agent-client.d.ts +10 -0
  146. package/dist/lib/types/lib/sip.js/core/user-agents/re-invite-user-agent-client.d.ts +18 -0
  147. package/dist/lib/types/lib/sip.js/core/user-agents/re-invite-user-agent-server.d.ts +41 -0
  148. package/dist/lib/types/lib/sip.js/core/user-agents/re-subscribe-user-agent-client.d.ts +17 -0
  149. package/dist/lib/types/lib/sip.js/core/user-agents/re-subscribe-user-agent-server.d.ts +10 -0
  150. package/dist/lib/types/lib/sip.js/core/user-agents/refer-user-agent-client.d.ts +10 -0
  151. package/dist/lib/types/lib/sip.js/core/user-agents/refer-user-agent-server.d.ts +16 -0
  152. package/dist/lib/types/lib/sip.js/core/user-agents/register-user-agent-client.d.ts +10 -0
  153. package/dist/lib/types/lib/sip.js/core/user-agents/register-user-agent-server.d.ts +11 -0
  154. package/dist/lib/types/lib/sip.js/core/user-agents/subscribe-user-agent-client.d.ts +65 -0
  155. package/dist/lib/types/lib/sip.js/core/user-agents/subscribe-user-agent-server.d.ts +11 -0
  156. package/dist/lib/types/lib/sip.js/core/user-agents/user-agent-client.d.ts +103 -0
  157. package/dist/lib/types/lib/sip.js/core/user-agents/user-agent-server.d.ts +79 -0
  158. package/dist/lib/types/lib/sip.js/grammar/grammar.d.ts +26 -0
  159. package/dist/lib/types/lib/sip.js/grammar/index.d.ts +4 -0
  160. package/dist/lib/types/lib/sip.js/grammar/name-addr-header.d.ts +24 -0
  161. package/dist/lib/types/lib/sip.js/grammar/parameters.d.ts +16 -0
  162. package/dist/lib/types/lib/sip.js/grammar/pegjs/dist/grammar.d.ts +50 -0
  163. package/dist/lib/types/lib/sip.js/grammar/uri.d.ts +62 -0
  164. package/dist/lib/types/lib/sip.js/index.d.ts +9 -0
  165. package/dist/lib/types/lib/sip.js/platform/web/index.d.ts +4 -0
  166. package/dist/lib/types/lib/sip.js/platform/web/modifiers/index.d.ts +5 -0
  167. package/dist/lib/types/lib/sip.js/platform/web/modifiers/modifiers.d.ts +41 -0
  168. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/index.d.ts +14 -0
  169. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/media-stream-factory-default.d.ts +6 -0
  170. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/media-stream-factory.d.ts +6 -0
  171. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/peer-connection-configuration-default.d.ts +5 -0
  172. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/peer-connection-delegate.d.ts +63 -0
  173. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-configuration.d.ts +16 -0
  174. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory-default.d.ts +11 -0
  175. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory-options.d.ts +9 -0
  176. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory.d.ts +16 -0
  177. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-options.d.ts +47 -0
  178. package/dist/lib/types/lib/sip.js/platform/web/session-description-handler/session-description-handler.d.ts +212 -0
  179. package/dist/lib/types/lib/sip.js/platform/web/simple-user/index.d.ts +7 -0
  180. package/dist/lib/types/lib/sip.js/platform/web/simple-user/simple-user-delegate.d.ts +72 -0
  181. package/dist/lib/types/lib/sip.js/platform/web/simple-user/simple-user-options.d.ts +90 -0
  182. package/dist/lib/types/lib/sip.js/platform/web/simple-user/simple-user.d.ts +226 -0
  183. package/dist/lib/types/lib/sip.js/platform/web/transport/index.d.ts +6 -0
  184. package/dist/lib/types/lib/sip.js/platform/web/transport/transport-options.d.ts +30 -0
  185. package/dist/lib/types/lib/sip.js/platform/web/transport/transport.d.ts +125 -0
  186. package/dist/lib/types/lib/sip.js/version.d.ts +1 -0
  187. package/dist/lib/types/webrtc/webrtc-method.d.ts +2 -0
  188. package/dist/lib/types/webrtc/webrtc.d.ts +38 -0
  189. package/dist/lib/ue-soft-phone.min.js +3 -3
  190. package/dist/types/index.d.ts +1 -0
  191. package/dist/types/lib/sip.js/api/ack.d.ts +12 -0
  192. package/dist/types/lib/sip.js/api/bye.d.ts +16 -0
  193. package/dist/types/lib/sip.js/api/dtmf.d.ts +15 -0
  194. package/dist/types/lib/sip.js/api/emitter.d.ts +88 -0
  195. package/dist/types/lib/sip.js/api/exceptions/content-type-unsupported.d.ts +8 -0
  196. package/dist/types/lib/sip.js/api/exceptions/index.d.ts +5 -0
  197. package/dist/types/lib/sip.js/api/exceptions/request-pending.d.ts +9 -0
  198. package/dist/types/lib/sip.js/api/exceptions/session-description-handler.d.ts +8 -0
  199. package/dist/types/lib/sip.js/api/exceptions/session-terminated.d.ts +8 -0
  200. package/dist/types/lib/sip.js/api/exceptions/state-transition.d.ts +8 -0
  201. package/dist/types/lib/sip.js/api/index.d.ts +59 -0
  202. package/dist/types/lib/sip.js/api/info.d.ts +16 -0
  203. package/dist/types/lib/sip.js/api/invitation-accept-options.d.ts +19 -0
  204. package/dist/types/lib/sip.js/api/invitation-progress-options.d.ts +38 -0
  205. package/dist/types/lib/sip.js/api/invitation-reject-options.d.ts +25 -0
  206. package/dist/types/lib/sip.js/api/invitation.d.ts +179 -0
  207. package/dist/types/lib/sip.js/api/inviter-cancel-options.d.ts +9 -0
  208. package/dist/types/lib/sip.js/api/inviter-invite-options.d.ts +28 -0
  209. package/dist/types/lib/sip.js/api/inviter-options.d.ts +43 -0
  210. package/dist/types/lib/sip.js/api/inviter.d.ts +236 -0
  211. package/dist/types/lib/sip.js/api/message.d.ts +16 -0
  212. package/dist/types/lib/sip.js/api/messager-message-options.d.ts +11 -0
  213. package/dist/types/lib/sip.js/api/messager-options.d.ts +17 -0
  214. package/dist/types/lib/sip.js/api/messager.d.ts +26 -0
  215. package/dist/types/lib/sip.js/api/notification.d.ts +16 -0
  216. package/dist/types/lib/sip.js/api/notifier.d.ts +8 -0
  217. package/dist/types/lib/sip.js/api/publisher-options.d.ts +33 -0
  218. package/dist/types/lib/sip.js/api/publisher-publish-options.d.ts +6 -0
  219. package/dist/types/lib/sip.js/api/publisher-state.d.ts +21 -0
  220. package/dist/types/lib/sip.js/api/publisher-unpublish-options.d.ts +6 -0
  221. package/dist/types/lib/sip.js/api/publisher.d.ts +65 -0
  222. package/dist/types/lib/sip.js/api/referral.d.ts +38 -0
  223. package/dist/types/lib/sip.js/api/registerer-options.d.ts +46 -0
  224. package/dist/types/lib/sip.js/api/registerer-register-options.d.ts +11 -0
  225. package/dist/types/lib/sip.js/api/registerer-state.d.ts +21 -0
  226. package/dist/types/lib/sip.js/api/registerer-unregister-options.d.ts +16 -0
  227. package/dist/types/lib/sip.js/api/registerer.d.ts +144 -0
  228. package/dist/types/lib/sip.js/api/session-bye-options.d.ts +11 -0
  229. package/dist/types/lib/sip.js/api/session-delegate.d.ts +79 -0
  230. package/dist/types/lib/sip.js/api/session-description-handler-factory.d.ts +15 -0
  231. package/dist/types/lib/sip.js/api/session-description-handler.d.ts +74 -0
  232. package/dist/types/lib/sip.js/api/session-info-options.d.ts +11 -0
  233. package/dist/types/lib/sip.js/api/session-invite-options.d.ts +28 -0
  234. package/dist/types/lib/sip.js/api/session-message-options.d.ts +11 -0
  235. package/dist/types/lib/sip.js/api/session-options.d.ts +8 -0
  236. package/dist/types/lib/sip.js/api/session-refer-options.d.ts +14 -0
  237. package/dist/types/lib/sip.js/api/session-state.d.ts +45 -0
  238. package/dist/types/lib/sip.js/api/session.d.ts +359 -0
  239. package/dist/types/lib/sip.js/api/subscriber-options.d.ts +11 -0
  240. package/dist/types/lib/sip.js/api/subscriber-subscribe-options.d.ts +6 -0
  241. package/dist/types/lib/sip.js/api/subscriber.d.ts +94 -0
  242. package/dist/types/lib/sip.js/api/subscription-delegate.d.ts +12 -0
  243. package/dist/types/lib/sip.js/api/subscription-options.d.ts +8 -0
  244. package/dist/types/lib/sip.js/api/subscription-state.d.ts +19 -0
  245. package/dist/types/lib/sip.js/api/subscription-subscribe-options.d.ts +6 -0
  246. package/dist/types/lib/sip.js/api/subscription-unsubscribe-options.d.ts +6 -0
  247. package/dist/types/lib/sip.js/api/subscription.d.ts +84 -0
  248. package/dist/types/lib/sip.js/api/transport-state.d.ts +37 -0
  249. package/dist/types/lib/sip.js/api/transport.d.ts +159 -0
  250. package/dist/types/lib/sip.js/api/user-agent-delegate.d.ts +84 -0
  251. package/dist/types/lib/sip.js/api/user-agent-options.d.ts +253 -0
  252. package/dist/types/lib/sip.js/api/user-agent-state.d.ts +14 -0
  253. package/dist/types/lib/sip.js/api/user-agent.d.ts +200 -0
  254. package/dist/types/lib/sip.js/core/dialogs/dialog-state.d.ts +34 -0
  255. package/dist/types/lib/sip.js/core/dialogs/dialog.d.ts +161 -0
  256. package/dist/types/lib/sip.js/core/dialogs/index.d.ts +4 -0
  257. package/dist/types/lib/sip.js/core/dialogs/session-dialog.d.ts +196 -0
  258. package/dist/types/lib/sip.js/core/dialogs/subscription-dialog.d.ts +120 -0
  259. package/dist/types/lib/sip.js/core/exceptions/exception.d.ts +8 -0
  260. package/dist/types/lib/sip.js/core/exceptions/index.d.ts +3 -0
  261. package/dist/types/lib/sip.js/core/exceptions/transaction-state-error.d.ts +8 -0
  262. package/dist/types/lib/sip.js/core/exceptions/transport-error.d.ts +8 -0
  263. package/dist/types/lib/sip.js/core/index.d.ts +15 -0
  264. package/dist/types/lib/sip.js/core/log/index.d.ts +3 -0
  265. package/dist/types/lib/sip.js/core/log/levels.d.ts +10 -0
  266. package/dist/types/lib/sip.js/core/log/logger-factory.d.ts +21 -0
  267. package/dist/types/lib/sip.js/core/log/logger.d.ts +19 -0
  268. package/dist/types/lib/sip.js/core/messages/body.d.ts +64 -0
  269. package/dist/types/lib/sip.js/core/messages/digest-authentication.d.ts +51 -0
  270. package/dist/types/lib/sip.js/core/messages/incoming-message.d.ts +79 -0
  271. package/dist/types/lib/sip.js/core/messages/incoming-request-message.d.ts +10 -0
  272. package/dist/types/lib/sip.js/core/messages/incoming-request.d.ts +67 -0
  273. package/dist/types/lib/sip.js/core/messages/incoming-response-message.d.ts +10 -0
  274. package/dist/types/lib/sip.js/core/messages/incoming-response.d.ts +12 -0
  275. package/dist/types/lib/sip.js/core/messages/index.d.ts +13 -0
  276. package/dist/types/lib/sip.js/core/messages/md5.d.ts +32 -0
  277. package/dist/types/lib/sip.js/core/messages/methods/ack.d.ts +18 -0
  278. package/dist/types/lib/sip.js/core/messages/methods/bye.d.ts +21 -0
  279. package/dist/types/lib/sip.js/core/messages/methods/cancel.d.ts +21 -0
  280. package/dist/types/lib/sip.js/core/messages/methods/constants.d.ts +20 -0
  281. package/dist/types/lib/sip.js/core/messages/methods/index.d.ts +13 -0
  282. package/dist/types/lib/sip.js/core/messages/methods/info.d.ts +21 -0
  283. package/dist/types/lib/sip.js/core/messages/methods/invite.d.ts +86 -0
  284. package/dist/types/lib/sip.js/core/messages/methods/message.d.ts +21 -0
  285. package/dist/types/lib/sip.js/core/messages/methods/notify.d.ts +21 -0
  286. package/dist/types/lib/sip.js/core/messages/methods/prack.d.ts +21 -0
  287. package/dist/types/lib/sip.js/core/messages/methods/publish.d.ts +21 -0
  288. package/dist/types/lib/sip.js/core/messages/methods/refer.d.ts +21 -0
  289. package/dist/types/lib/sip.js/core/messages/methods/register.d.ts +21 -0
  290. package/dist/types/lib/sip.js/core/messages/methods/subscribe.d.ts +54 -0
  291. package/dist/types/lib/sip.js/core/messages/outgoing-request-message.d.ts +94 -0
  292. package/dist/types/lib/sip.js/core/messages/outgoing-request.d.ts +67 -0
  293. package/dist/types/lib/sip.js/core/messages/outgoing-response.d.ts +42 -0
  294. package/dist/types/lib/sip.js/core/messages/parser.d.ts +14 -0
  295. package/dist/types/lib/sip.js/core/messages/utils.d.ts +24 -0
  296. package/dist/types/lib/sip.js/core/session/index.d.ts +2 -0
  297. package/dist/types/lib/sip.js/core/session/session-delegate.d.ts +70 -0
  298. package/dist/types/lib/sip.js/core/session/session.d.ts +134 -0
  299. package/dist/types/lib/sip.js/core/subscription/index.d.ts +2 -0
  300. package/dist/types/lib/sip.js/core/subscription/subscription-delegate.d.ts +27 -0
  301. package/dist/types/lib/sip.js/core/subscription/subscription.d.ts +55 -0
  302. package/dist/types/lib/sip.js/core/timers.d.ts +20 -0
  303. package/dist/types/lib/sip.js/core/transactions/client-transaction.d.ts +45 -0
  304. package/dist/types/lib/sip.js/core/transactions/index.d.ts +10 -0
  305. package/dist/types/lib/sip.js/core/transactions/invite-client-transaction.d.ts +116 -0
  306. package/dist/types/lib/sip.js/core/transactions/invite-server-transaction.d.ts +127 -0
  307. package/dist/types/lib/sip.js/core/transactions/non-invite-client-transaction.d.ts +69 -0
  308. package/dist/types/lib/sip.js/core/transactions/non-invite-server-transaction.d.ts +57 -0
  309. package/dist/types/lib/sip.js/core/transactions/server-transaction.d.ts +35 -0
  310. package/dist/types/lib/sip.js/core/transactions/transaction-state.d.ts +13 -0
  311. package/dist/types/lib/sip.js/core/transactions/transaction-user.d.ts +72 -0
  312. package/dist/types/lib/sip.js/core/transactions/transaction.d.ts +79 -0
  313. package/dist/types/lib/sip.js/core/transport.d.ts +31 -0
  314. package/dist/types/lib/sip.js/core/user-agent-core/allowed-methods.d.ts +4 -0
  315. package/dist/types/lib/sip.js/core/user-agent-core/index.d.ts +3 -0
  316. package/dist/types/lib/sip.js/core/user-agent-core/user-agent-core-configuration.d.ts +99 -0
  317. package/dist/types/lib/sip.js/core/user-agent-core/user-agent-core-delegate.d.ts +37 -0
  318. package/dist/types/lib/sip.js/core/user-agent-core/user-agent-core.d.ts +179 -0
  319. package/dist/types/lib/sip.js/core/user-agents/bye-user-agent-client.d.ts +10 -0
  320. package/dist/types/lib/sip.js/core/user-agents/bye-user-agent-server.d.ts +10 -0
  321. package/dist/types/lib/sip.js/core/user-agents/cancel-user-agent-client.d.ts +10 -0
  322. package/dist/types/lib/sip.js/core/user-agents/index.d.ts +26 -0
  323. package/dist/types/lib/sip.js/core/user-agents/info-user-agent-client.d.ts +10 -0
  324. package/dist/types/lib/sip.js/core/user-agents/info-user-agent-server.d.ts +10 -0
  325. package/dist/types/lib/sip.js/core/user-agents/invite-user-agent-client.d.ts +35 -0
  326. package/dist/types/lib/sip.js/core/user-agents/invite-user-agent-server.d.ts +77 -0
  327. package/dist/types/lib/sip.js/core/user-agents/message-user-agent-client.d.ts +10 -0
  328. package/dist/types/lib/sip.js/core/user-agents/message-user-agent-server.d.ts +10 -0
  329. package/dist/types/lib/sip.js/core/user-agents/notify-user-agent-client.d.ts +10 -0
  330. package/dist/types/lib/sip.js/core/user-agents/notify-user-agent-server.d.ts +16 -0
  331. package/dist/types/lib/sip.js/core/user-agents/prack-user-agent-client.d.ts +10 -0
  332. package/dist/types/lib/sip.js/core/user-agents/prack-user-agent-server.d.ts +16 -0
  333. package/dist/types/lib/sip.js/core/user-agents/publish-user-agent-client.d.ts +10 -0
  334. package/dist/types/lib/sip.js/core/user-agents/re-invite-user-agent-client.d.ts +18 -0
  335. package/dist/types/lib/sip.js/core/user-agents/re-invite-user-agent-server.d.ts +41 -0
  336. package/dist/types/lib/sip.js/core/user-agents/re-subscribe-user-agent-client.d.ts +17 -0
  337. package/dist/types/lib/sip.js/core/user-agents/re-subscribe-user-agent-server.d.ts +10 -0
  338. package/dist/types/lib/sip.js/core/user-agents/refer-user-agent-client.d.ts +10 -0
  339. package/dist/types/lib/sip.js/core/user-agents/refer-user-agent-server.d.ts +16 -0
  340. package/dist/types/lib/sip.js/core/user-agents/register-user-agent-client.d.ts +10 -0
  341. package/dist/types/lib/sip.js/core/user-agents/register-user-agent-server.d.ts +11 -0
  342. package/dist/types/lib/sip.js/core/user-agents/subscribe-user-agent-client.d.ts +65 -0
  343. package/dist/types/lib/sip.js/core/user-agents/subscribe-user-agent-server.d.ts +11 -0
  344. package/dist/types/lib/sip.js/core/user-agents/user-agent-client.d.ts +103 -0
  345. package/dist/types/lib/sip.js/core/user-agents/user-agent-server.d.ts +79 -0
  346. package/dist/types/lib/sip.js/grammar/grammar.d.ts +26 -0
  347. package/dist/types/lib/sip.js/grammar/index.d.ts +4 -0
  348. package/dist/types/lib/sip.js/grammar/name-addr-header.d.ts +24 -0
  349. package/dist/types/lib/sip.js/grammar/parameters.d.ts +16 -0
  350. package/dist/types/lib/sip.js/grammar/pegjs/dist/grammar.d.ts +50 -0
  351. package/dist/types/lib/sip.js/grammar/uri.d.ts +62 -0
  352. package/dist/types/lib/sip.js/index.d.ts +9 -0
  353. package/dist/types/lib/sip.js/platform/web/index.d.ts +4 -0
  354. package/dist/types/lib/sip.js/platform/web/modifiers/index.d.ts +5 -0
  355. package/dist/types/lib/sip.js/platform/web/modifiers/modifiers.d.ts +41 -0
  356. package/dist/types/lib/sip.js/platform/web/session-description-handler/index.d.ts +14 -0
  357. package/dist/types/lib/sip.js/platform/web/session-description-handler/media-stream-factory-default.d.ts +6 -0
  358. package/dist/types/lib/sip.js/platform/web/session-description-handler/media-stream-factory.d.ts +6 -0
  359. package/dist/types/lib/sip.js/platform/web/session-description-handler/peer-connection-configuration-default.d.ts +5 -0
  360. package/dist/types/lib/sip.js/platform/web/session-description-handler/peer-connection-delegate.d.ts +63 -0
  361. package/dist/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-configuration.d.ts +16 -0
  362. package/dist/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory-default.d.ts +11 -0
  363. package/dist/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory-options.d.ts +9 -0
  364. package/dist/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-factory.d.ts +16 -0
  365. package/dist/types/lib/sip.js/platform/web/session-description-handler/session-description-handler-options.d.ts +47 -0
  366. package/dist/types/lib/sip.js/platform/web/session-description-handler/session-description-handler.d.ts +212 -0
  367. package/dist/types/lib/sip.js/platform/web/simple-user/index.d.ts +7 -0
  368. package/dist/types/lib/sip.js/platform/web/simple-user/simple-user-delegate.d.ts +72 -0
  369. package/dist/types/lib/sip.js/platform/web/simple-user/simple-user-options.d.ts +90 -0
  370. package/dist/types/lib/sip.js/platform/web/simple-user/simple-user.d.ts +226 -0
  371. package/dist/types/lib/sip.js/platform/web/transport/index.d.ts +6 -0
  372. package/dist/types/lib/sip.js/platform/web/transport/transport-options.d.ts +30 -0
  373. package/dist/types/lib/sip.js/platform/web/transport/transport.d.ts +125 -0
  374. package/dist/types/lib/sip.js/version.d.ts +1 -0
  375. package/dist/types/webrtc/webrtc-method.d.ts +2 -0
  376. package/dist/types/webrtc/webrtc.d.ts +38 -0
  377. package/dist/ue-softphone-sdk.js +2 -2
  378. package/index.html/index.html +25 -11
  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,815 @@
1
+ // @ts-nocheck
2
+ import {
3
+ Body,
4
+ fromBodyLegacy,
5
+ getBody,
6
+ Grammar,
7
+ IncomingInviteRequest,
8
+ IncomingPrackRequest,
9
+ IncomingRequestMessage,
10
+ InviteUserAgentServer,
11
+ Logger,
12
+ NameAddrHeader,
13
+ OutgoingResponse,
14
+ OutgoingResponseWithSession,
15
+ SignalingState,
16
+ Timers,
17
+ TransactionStateError
18
+ } from '../core'
19
+ import { getReasonPhrase } from '../core/messages/utils'
20
+ import { ContentTypeUnsupportedError, SessionDescriptionHandlerError, SessionTerminatedError } from './exceptions'
21
+ import { InvitationAcceptOptions } from './invitation-accept-options'
22
+ import { InvitationProgressOptions } from './invitation-progress-options'
23
+ import { InvitationRejectOptions } from './invitation-reject-options'
24
+ import { Session } from './session'
25
+ import { SessionState } from './session-state'
26
+ import { UserAgent } from './user-agent'
27
+ import { SIPExtension } from './user-agent-options'
28
+
29
+ type ResolveFunction = () => void
30
+ type RejectFunction = (reason: Error) => void
31
+
32
+ /**
33
+ * An invitation is an offer to establish a {@link Session} (incoming INVITE).
34
+ * @public
35
+ */
36
+ export class Invitation extends Session {
37
+ /**
38
+ * Logger.
39
+ */
40
+ protected logger: Logger
41
+
42
+ /** @internal */
43
+ protected _id: string
44
+
45
+ /** True if dispose() has been called. */
46
+ private disposed = false
47
+ /** INVITE will be rejected if not accepted within a certain period time. */
48
+ private expiresTimer: number | undefined = undefined
49
+ /** True if this Session has been Terminated due to a CANCEL request. */
50
+ private isCanceled = false
51
+ /** Are reliable provisional responses required or supported. */
52
+ private rel100: 'none' | 'required' | 'supported' = 'none'
53
+ /** The current RSeq header value. */
54
+ private rseq = Math.floor(Math.random() * 10000)
55
+ /** INVITE will be rejected if final response not sent in a certain period time. */
56
+ private userNoAnswerTimer: number | undefined = undefined
57
+ /** True if waiting for a PRACK before sending a 200 Ok. */
58
+ private waitingForPrack = false
59
+ /** A Promise providing a defer when waiting for a PRACK. */
60
+ private waitingForPrackPromise: Promise<void> | undefined
61
+ /** Function to resolve when PRACK arrives. */
62
+ private waitingForPrackResolve: ResolveFunction | undefined
63
+ /** Function to reject when PRACK never arrives. */
64
+ private waitingForPrackReject: RejectFunction | undefined
65
+
66
+ /** @internal */
67
+ public constructor(userAgent: UserAgent, private incomingInviteRequest: IncomingInviteRequest) {
68
+ super(userAgent)
69
+
70
+ this.logger = userAgent.getLogger('sip.Invitation')
71
+
72
+ const incomingRequestMessage = this.incomingInviteRequest.message
73
+
74
+ // Set 100rel if necessary
75
+ const requireHeader = incomingRequestMessage.getHeader('require')
76
+ if (requireHeader && requireHeader.toLowerCase().includes('100rel')) {
77
+ this.rel100 = 'required'
78
+ }
79
+ const supportedHeader = incomingRequestMessage.getHeader('supported')
80
+ if (supportedHeader && supportedHeader.toLowerCase().includes('100rel')) {
81
+ this.rel100 = 'supported'
82
+ }
83
+
84
+ // FIXME: HACK: This is a hack to port an existing behavior.
85
+ // Set the toTag on the incoming request message to the toTag which
86
+ // will be used in the response to the incoming request!!!
87
+ // The behavior being ported appears to be a hack itself,
88
+ // so this is a hack to port a hack. At least one test spec
89
+ // relies on it (which is yet another hack).
90
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
91
+ incomingRequestMessage.toTag = (incomingInviteRequest as InviteUserAgentServer as any).toTag
92
+ if (typeof incomingRequestMessage.toTag !== 'string') {
93
+ throw new TypeError('toTag should have been a string.')
94
+ }
95
+
96
+ // The following mapping values are RECOMMENDED:
97
+ // ...
98
+ // 19 no answer from the user 480 Temporarily unavailable
99
+ // https://tools.ietf.org/html/rfc3398#section-7.2.4.1
100
+ this.userNoAnswerTimer = setTimeout(
101
+ () => {
102
+ incomingInviteRequest.reject({ statusCode: 480 })
103
+ this.stateTransition(SessionState.Terminated)
104
+ },
105
+ this.userAgent.configuration.noAnswerTimeout ? this.userAgent.configuration.noAnswerTimeout * 1000 : 60000
106
+ )
107
+
108
+ // 1. If the request is an INVITE that contains an Expires header
109
+ // field, the UAS core sets a timer for the number of seconds
110
+ // indicated in the header field value. When the timer fires, the
111
+ // invitation is considered to be expired. If the invitation
112
+ // expires before the UAS has generated a final response, a 487
113
+ // (Request Terminated) response SHOULD be generated.
114
+ // https://tools.ietf.org/html/rfc3261#section-13.3.1
115
+ if (incomingRequestMessage.hasHeader('expires')) {
116
+ const expires: number = Number(incomingRequestMessage.getHeader('expires') || 0) * 1000
117
+ this.expiresTimer = setTimeout(() => {
118
+ if (this.state === SessionState.Initial) {
119
+ incomingInviteRequest.reject({ statusCode: 487 })
120
+ this.stateTransition(SessionState.Terminated)
121
+ }
122
+ }, expires)
123
+ }
124
+
125
+ // Session parent properties
126
+ const assertedIdentity = this.request.getHeader('P-Asserted-Identity')
127
+ if (assertedIdentity) {
128
+ this._assertedIdentity = Grammar.nameAddrHeaderParse(assertedIdentity)
129
+ }
130
+ this._contact = this.userAgent.contact.toString()
131
+ const contentDisposition = incomingRequestMessage.parseHeader('Content-Disposition')
132
+ if (contentDisposition && contentDisposition.type === 'render') {
133
+ this._renderbody = incomingRequestMessage.body
134
+ this._rendertype = incomingRequestMessage.getHeader('Content-Type')
135
+ }
136
+
137
+ // Identifier
138
+ this._id = incomingRequestMessage.callId + incomingRequestMessage.fromTag
139
+
140
+ // Add to the user agent's session collection.
141
+ this.userAgent._sessions[this._id] = this
142
+ }
143
+
144
+ /**
145
+ * Destructor.
146
+ */
147
+ public dispose(): Promise<void> {
148
+ // Only run through this once. It can and does get called multiple times
149
+ // depending on the what the sessions state is when first called.
150
+ // For example, if called when "establishing" it will be called again
151
+ // at least once when the session transitions to "terminated".
152
+ // Regardless, running through this more than once is pointless.
153
+ if (this.disposed) {
154
+ return Promise.resolve()
155
+ }
156
+ this.disposed = true
157
+
158
+ // Clear timers
159
+ if (this.expiresTimer) {
160
+ clearTimeout(this.expiresTimer)
161
+ this.expiresTimer = undefined
162
+ }
163
+ if (this.userNoAnswerTimer) {
164
+ clearTimeout(this.userNoAnswerTimer)
165
+ this.userNoAnswerTimer = undefined
166
+ }
167
+
168
+ // If accept() is still waiting for a PRACK, make sure it rejects
169
+ this.prackNeverArrived()
170
+
171
+ // If the final response for the initial INVITE not yet been sent, reject it
172
+ switch (this.state) {
173
+ case SessionState.Initial:
174
+ return this.reject().then(() => super.dispose())
175
+ case SessionState.Establishing:
176
+ return this.reject().then(() => super.dispose())
177
+ case SessionState.Established:
178
+ return super.dispose()
179
+ case SessionState.Terminating:
180
+ return super.dispose()
181
+ case SessionState.Terminated:
182
+ return super.dispose()
183
+ default:
184
+ throw new Error('Unknown state.')
185
+ }
186
+ }
187
+
188
+ /**
189
+ * If true, a first provisional response after the 100 Trying
190
+ * will be sent automatically. This is false it the UAC required
191
+ * reliable provisional responses (100rel in Require header) or
192
+ * the user agent configuration has specified to not send an
193
+ * initial response, otherwise it is true. The provisional is sent by
194
+ * calling `progress()` without any options.
195
+ */
196
+ public get autoSendAnInitialProvisionalResponse(): boolean {
197
+ return this.rel100 !== 'required' && this.userAgent.configuration.sendInitialProvisionalResponse
198
+ }
199
+
200
+ /**
201
+ * Initial incoming INVITE request message body.
202
+ */
203
+ public get body(): string | undefined {
204
+ return this.incomingInviteRequest.message.body
205
+ }
206
+
207
+ /**
208
+ * The identity of the local user.
209
+ */
210
+ public get localIdentity(): NameAddrHeader {
211
+ return this.request.to
212
+ }
213
+
214
+ /**
215
+ * The identity of the remote user.
216
+ */
217
+ public get remoteIdentity(): NameAddrHeader {
218
+ return this.request.from
219
+ }
220
+
221
+ /**
222
+ * Initial incoming INVITE request message.
223
+ */
224
+ public get request(): IncomingRequestMessage {
225
+ return this.incomingInviteRequest.message
226
+ }
227
+
228
+ /**
229
+ * Accept the invitation.
230
+ *
231
+ * @remarks
232
+ * Accept the incoming INVITE request to start a Session.
233
+ * Replies to the INVITE request with a 200 Ok response.
234
+ * Resolves once the response sent, otherwise rejects.
235
+ *
236
+ * This method may reject for a variety of reasons including
237
+ * the receipt of a CANCEL request before `accept` is able
238
+ * to construct a response.
239
+ * @param options - Options bucket.
240
+ */
241
+ public accept(options: InvitationAcceptOptions = {}): Promise<void> {
242
+ this.logger.log('Invitation.accept')
243
+
244
+ // validate state
245
+ if (this.state !== SessionState.Initial) {
246
+ const error = new Error(`Invalid session state ${this.state}`)
247
+ this.logger.error(error.message)
248
+ return Promise.reject(error)
249
+ }
250
+
251
+ // Modifiers and options for initial INVITE transaction
252
+ if (options.sessionDescriptionHandlerModifiers) {
253
+ this.sessionDescriptionHandlerModifiers = options.sessionDescriptionHandlerModifiers
254
+ }
255
+ if (options.sessionDescriptionHandlerOptions) {
256
+ this.sessionDescriptionHandlerOptions = options.sessionDescriptionHandlerOptions
257
+ }
258
+
259
+ // transition state
260
+ this.stateTransition(SessionState.Establishing)
261
+
262
+ return (
263
+ this.sendAccept(options)
264
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
265
+ .then(({ message, session }) => {
266
+ session.delegate = {
267
+ onAck: (ackRequest): Promise<void> => this.onAckRequest(ackRequest),
268
+ onAckTimeout: (): void => this.onAckTimeout(),
269
+ onBye: (byeRequest): void => this.onByeRequest(byeRequest),
270
+ onInfo: (infoRequest): void => this.onInfoRequest(infoRequest),
271
+ onInvite: (inviteRequest): void => this.onInviteRequest(inviteRequest),
272
+ onMessage: (messageRequest): void => this.onMessageRequest(messageRequest),
273
+ onNotify: (notifyRequest): void => this.onNotifyRequest(notifyRequest),
274
+ onPrack: (prackRequest): void => this.onPrackRequest(prackRequest),
275
+ onRefer: (referRequest): void => this.onReferRequest(referRequest)
276
+ }
277
+ this._dialog = session
278
+ this.stateTransition(SessionState.Established)
279
+
280
+ // TODO: Reconsider this "automagic" send of a BYE to replacee behavior.
281
+ // This behavior has been ported forward from legacy versions.
282
+ if (this._replacee) {
283
+ this._replacee._bye()
284
+ }
285
+ })
286
+ .catch((error) => this.handleResponseError(error))
287
+ )
288
+ }
289
+
290
+ /**
291
+ * Indicate progress processing the invitation.
292
+ *
293
+ * @remarks
294
+ * Report progress to the the caller.
295
+ * Replies to the INVITE request with a 1xx provisional response.
296
+ * Resolves once the response sent, otherwise rejects.
297
+ * @param options - Options bucket.
298
+ */
299
+ public progress(options: InvitationProgressOptions = {}): Promise<void> {
300
+ this.logger.log('Invitation.progress')
301
+
302
+ // validate state
303
+ if (this.state !== SessionState.Initial) {
304
+ const error = new Error(`Invalid session state ${this.state}`)
305
+ this.logger.error(error.message)
306
+ return Promise.reject(error)
307
+ }
308
+
309
+ // Ported
310
+ const statusCode = options.statusCode || 180
311
+ if (statusCode < 100 || statusCode > 199) {
312
+ throw new TypeError('Invalid statusCode: ' + statusCode)
313
+ }
314
+
315
+ // Modifiers and options for initial INVITE transaction
316
+ if (options.sessionDescriptionHandlerModifiers) {
317
+ this.sessionDescriptionHandlerModifiers = options.sessionDescriptionHandlerModifiers
318
+ }
319
+ if (options.sessionDescriptionHandlerOptions) {
320
+ this.sessionDescriptionHandlerOptions = options.sessionDescriptionHandlerOptions
321
+ }
322
+
323
+ // After the first reliable provisional response for a request has been
324
+ // acknowledged, the UAS MAY send additional reliable provisional
325
+ // responses. The UAS MUST NOT send a second reliable provisional
326
+ // response until the first is acknowledged. After the first, it is
327
+ // RECOMMENDED that the UAS not send an additional reliable provisional
328
+ // response until the previous is acknowledged. The first reliable
329
+ // provisional response receives special treatment because it conveys
330
+ // the initial sequence number. If additional reliable provisional
331
+ // responses were sent before the first was acknowledged, the UAS could
332
+ // not be certain these were received in order.
333
+ // https://tools.ietf.org/html/rfc3262#section-3
334
+ if (this.waitingForPrack) {
335
+ this.logger.warn('Unexpected call for progress while waiting for prack, ignoring')
336
+ return Promise.resolve()
337
+ }
338
+
339
+ // Trying provisional response
340
+ if (options.statusCode === 100) {
341
+ return this.sendProgressTrying()
342
+ .then(() => {
343
+ return
344
+ })
345
+ .catch((error) => this.handleResponseError(error))
346
+ }
347
+
348
+ // Standard provisional response
349
+ if (
350
+ !(this.rel100 === 'required') &&
351
+ !(this.rel100 === 'supported' && options.rel100) &&
352
+ !(this.rel100 === 'supported' && this.userAgent.configuration.sipExtension100rel === SIPExtension.Required)
353
+ ) {
354
+ return this.sendProgress(options)
355
+ .then(() => {
356
+ return
357
+ })
358
+ .catch((error) => this.handleResponseError(error))
359
+ }
360
+
361
+ // Reliable provisional response
362
+ return this.sendProgressReliableWaitForPrack(options)
363
+ .then(() => {
364
+ return
365
+ })
366
+ .catch((error) => this.handleResponseError(error))
367
+ }
368
+
369
+ /**
370
+ * Reject the invitation.
371
+ *
372
+ * @remarks
373
+ * Replies to the INVITE request with a 4xx, 5xx, or 6xx final response.
374
+ * Resolves once the response sent, otherwise rejects.
375
+ *
376
+ * The expectation is that this method is used to reject an INVITE request.
377
+ * That is indeed the case - a call to `progress` followed by `reject` is
378
+ * a typical way to "decline" an incoming INVITE request. However it may
379
+ * also be called after calling `accept` (but only before it completes)
380
+ * which will reject the call and cause `accept` to reject.
381
+ * @param options - Options bucket.
382
+ */
383
+ public reject(options: InvitationRejectOptions = {}): Promise<void> {
384
+ this.logger.log('Invitation.reject')
385
+
386
+ // validate state
387
+ if (this.state !== SessionState.Initial && this.state !== SessionState.Establishing) {
388
+ const error = new Error(`Invalid session state ${this.state}`)
389
+ this.logger.error(error.message)
390
+ return Promise.reject(error)
391
+ }
392
+
393
+ const statusCode = options.statusCode || 480
394
+
395
+ const reasonPhrase = options.reasonPhrase ? options.reasonPhrase : getReasonPhrase(statusCode)
396
+ const extraHeaders = options.extraHeaders || []
397
+
398
+ if (statusCode < 300 || statusCode > 699) {
399
+ throw new TypeError('Invalid statusCode: ' + statusCode)
400
+ }
401
+
402
+ const body = options.body ? fromBodyLegacy(options.body) : undefined
403
+
404
+ // FIXME: Need to redirect to someplace
405
+ statusCode < 400
406
+ ? this.incomingInviteRequest.redirect([], { statusCode, reasonPhrase, extraHeaders, body })
407
+ : this.incomingInviteRequest.reject({ statusCode, reasonPhrase, extraHeaders, body })
408
+
409
+ this.stateTransition(SessionState.Terminated)
410
+
411
+ return Promise.resolve()
412
+ }
413
+
414
+ /**
415
+ * Handle CANCEL request.
416
+ *
417
+ * @param message - CANCEL message.
418
+ * @internal
419
+ */
420
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
421
+ public _onCancel(message: IncomingRequestMessage): void {
422
+ this.logger.log('Invitation._onCancel')
423
+
424
+ // validate state
425
+ if (this.state !== SessionState.Initial && this.state !== SessionState.Establishing) {
426
+ this.logger.error(`CANCEL received while in state ${this.state}, dropping request`)
427
+ return
428
+ }
429
+
430
+ // flag canceled
431
+ this.isCanceled = true
432
+
433
+ // reject INVITE with 487 status code
434
+ this.incomingInviteRequest.reject({ statusCode: 487 })
435
+
436
+ this.stateTransition(SessionState.Terminated)
437
+ }
438
+
439
+ /**
440
+ * Helper function to handle offer/answer in a PRACK.
441
+ */
442
+ private handlePrackOfferAnswer(request: IncomingPrackRequest): Promise<Body | undefined> {
443
+ if (!this.dialog) {
444
+ throw new Error('Dialog undefined.')
445
+ }
446
+
447
+ // If the PRACK doesn't have an offer/answer, nothing to be done.
448
+ const body = getBody(request.message)
449
+ if (!body || body.contentDisposition !== 'session') {
450
+ return Promise.resolve(undefined)
451
+ }
452
+
453
+ const options = {
454
+ sessionDescriptionHandlerOptions: this.sessionDescriptionHandlerOptions,
455
+ sessionDescriptionHandlerModifiers: this.sessionDescriptionHandlerModifiers
456
+ }
457
+
458
+ // If the UAC receives a reliable provisional response with an offer
459
+ // (this would occur if the UAC sent an INVITE without an offer, in
460
+ // which case the first reliable provisional response will contain the
461
+ // offer), it MUST generate an answer in the PRACK. If the UAC receives
462
+ // a reliable provisional response with an answer, it MAY generate an
463
+ // additional offer in the PRACK. If the UAS receives a PRACK with an
464
+ // offer, it MUST place the answer in the 2xx to the PRACK.
465
+ // https://tools.ietf.org/html/rfc3262#section-5
466
+ switch (this.dialog.signalingState) {
467
+ case SignalingState.Initial:
468
+ // State should never be reached as first reliable provisional response must have answer/offer.
469
+ throw new Error(`Invalid signaling state ${this.dialog.signalingState}.`)
470
+ case SignalingState.Stable:
471
+ // Receved answer.
472
+ return this.setAnswer(body, options).then(() => undefined)
473
+ case SignalingState.HaveLocalOffer:
474
+ // State should never be reached as local offer would be answered by this PRACK
475
+ throw new Error(`Invalid signaling state ${this.dialog.signalingState}.`)
476
+ case SignalingState.HaveRemoteOffer:
477
+ // Received offer, generate answer.
478
+ return this.setOfferAndGetAnswer(body, options)
479
+ case SignalingState.Closed:
480
+ throw new Error(`Invalid signaling state ${this.dialog.signalingState}.`)
481
+ default:
482
+ throw new Error(`Invalid signaling state ${this.dialog.signalingState}.`)
483
+ }
484
+ }
485
+
486
+ /**
487
+ * A handler for errors which occur while attempting to send 1xx and 2xx responses.
488
+ * In all cases, an attempt is made to reject the request if it is still outstanding.
489
+ * And while there are a variety of things which can go wrong and we log something here
490
+ * for all errors, there are a handful of common exceptions we pay some extra attention to.
491
+ * @param error - The error which occurred.
492
+ */
493
+ private handleResponseError(error: Error): void {
494
+ let statusCode = 480 // "Temporarily Unavailable"
495
+
496
+ // Log Error message
497
+ if (error instanceof Error) {
498
+ this.logger.error(error.message)
499
+ } else {
500
+ // We don't actually know what a session description handler implementation might throw our way,
501
+ // and more generally as a last resort catch all, just assume we are getting an "unknown" and log it.
502
+ this.logger.error(error as unknown as string)
503
+ }
504
+
505
+ // Log Exception message
506
+ if (error instanceof ContentTypeUnsupportedError) {
507
+ this.logger.error('A session description handler occurred while sending response (content type unsupported')
508
+ statusCode = 415 // "Unsupported Media Type"
509
+ } else if (error instanceof SessionDescriptionHandlerError) {
510
+ this.logger.error('A session description handler occurred while sending response')
511
+ } else if (error instanceof SessionTerminatedError) {
512
+ this.logger.error('Session ended before response could be formulated and sent (while waiting for PRACK)')
513
+ } else if (error instanceof TransactionStateError) {
514
+ this.logger.error('Session changed state before response could be formulated and sent')
515
+ }
516
+
517
+ // Reject if still in "initial" or "establishing" state.
518
+ if (this.state === SessionState.Initial || this.state === SessionState.Establishing) {
519
+ try {
520
+ this.incomingInviteRequest.reject({ statusCode })
521
+ this.stateTransition(SessionState.Terminated)
522
+ } catch (e) {
523
+ this.logger.error('An error occurred attempting to reject the request while handling another error')
524
+ throw e // This is not a good place to be...
525
+ }
526
+ }
527
+
528
+ // FIXME: TODO:
529
+ // Here we are squelching the throwing of errors due to an race condition.
530
+ // We have an internal race between calling `accept()` and handling an incoming
531
+ // CANCEL request. As there is no good way currently to delegate the handling of
532
+ // these race errors to the caller of `accept()`, we are squelching the throwing
533
+ // of ALL errors when/if they occur after receiving a CANCEL to catch the ONE we know
534
+ // is a "normal" exceptional condition. While this is a completely reasonable approach,
535
+ // the decision should be left up to the library user. Furthermore, as we are eating
536
+ // ALL errors in this case, we are potentially (likely) hiding "real" errors which occur.
537
+ //
538
+ // Only rethrow error if the session has not been canceled.
539
+ if (this.isCanceled) {
540
+ this.logger.warn(
541
+ 'An error occurred while attempting to formulate and send a response to an incoming INVITE.' +
542
+ ' However a CANCEL was received and processed while doing so which can (and often does) result' +
543
+ ' in errors occurring as the session terminates in the meantime. Said error is being ignored.'
544
+ )
545
+ return
546
+ }
547
+
548
+ throw error
549
+ }
550
+
551
+ /**
552
+ * Callback for when ACK for a 2xx response is never received.
553
+ * @param session - Session the ACK never arrived for.
554
+ */
555
+ private onAckTimeout(): void {
556
+ this.logger.log('Invitation.onAckTimeout')
557
+ if (!this.dialog) {
558
+ throw new Error('Dialog undefined.')
559
+ }
560
+ this.logger.log('No ACK received for an extended period of time, terminating session')
561
+ this.dialog.bye()
562
+ this.stateTransition(SessionState.Terminated)
563
+ }
564
+
565
+ /**
566
+ * A version of `accept` which resolves a session when the 200 Ok response is sent.
567
+ * @param options - Options bucket.
568
+ */
569
+ private sendAccept(options: InvitationAcceptOptions = {}): Promise<OutgoingResponseWithSession> {
570
+ const responseOptions = {
571
+ sessionDescriptionHandlerOptions: this.sessionDescriptionHandlerOptions,
572
+ sessionDescriptionHandlerModifiers: this.sessionDescriptionHandlerModifiers
573
+ }
574
+
575
+ const extraHeaders = options.extraHeaders || []
576
+
577
+ // The UAS MAY send a final response to the initial request before
578
+ // having received PRACKs for all unacknowledged reliable provisional
579
+ // responses, unless the final response is 2xx and any of the
580
+ // unacknowledged reliable provisional responses contained a session
581
+ // description. In that case, it MUST NOT send a final response until
582
+ // those provisional responses are acknowledged. If the UAS does send a
583
+ // final response when reliable responses are still unacknowledged, it
584
+ // SHOULD NOT continue to retransmit the unacknowledged reliable
585
+ // provisional responses, but it MUST be prepared to process PRACK
586
+ // requests for those outstanding responses. A UAS MUST NOT send new
587
+ // reliable provisional responses (as opposed to retransmissions of
588
+ // unacknowledged ones) after sending a final response to a request.
589
+ // https://tools.ietf.org/html/rfc3262#section-3
590
+ if (this.waitingForPrack) {
591
+ return this.waitForArrivalOfPrack()
592
+ .then(() => clearTimeout(this.userNoAnswerTimer)) // Ported
593
+ .then(() => this.generateResponseOfferAnswer(this.incomingInviteRequest, responseOptions))
594
+ .then((body) => this.incomingInviteRequest.accept({ statusCode: 200, body, extraHeaders }))
595
+ }
596
+
597
+ clearTimeout(this.userNoAnswerTimer) // Ported
598
+ return this.generateResponseOfferAnswer(this.incomingInviteRequest, responseOptions).then((body) =>
599
+ this.incomingInviteRequest.accept({ statusCode: 200, body, extraHeaders })
600
+ )
601
+ }
602
+
603
+ /**
604
+ * A version of `progress` which resolves when the provisional response is sent.
605
+ * @param options - Options bucket.
606
+ */
607
+ private sendProgress(options: InvitationProgressOptions = {}): Promise<OutgoingResponseWithSession> {
608
+ const statusCode = options.statusCode || 180
609
+ const reasonPhrase = options.reasonPhrase
610
+ const extraHeaders = (options.extraHeaders || []).slice()
611
+ const body = options.body ? fromBodyLegacy(options.body) : undefined
612
+
613
+ // The 183 (Session Progress) response is used to convey information
614
+ // about the progress of the call that is not otherwise classified. The
615
+ // Reason-Phrase, header fields, or message body MAY be used to convey
616
+ // more details about the call progress.
617
+ // https://tools.ietf.org/html/rfc3261#section-21.1.5
618
+
619
+ // It is the de facto industry standard to utilize 183 with SDP to provide "early media".
620
+ // While it is unlikely someone would want to send a 183 without SDP, so it should be an option.
621
+ if (statusCode === 183 && !body) {
622
+ return this.sendProgressWithSDP(options)
623
+ }
624
+
625
+ try {
626
+ const progressResponse = this.incomingInviteRequest.progress({ statusCode, reasonPhrase, extraHeaders, body })
627
+ this._dialog = progressResponse.session
628
+ return Promise.resolve(progressResponse)
629
+ } catch (error) {
630
+ return Promise.reject(error)
631
+ }
632
+ }
633
+
634
+ /**
635
+ * A version of `progress` which resolves when the provisional response with sdp is sent.
636
+ * @param options - Options bucket.
637
+ */
638
+ private sendProgressWithSDP(options: InvitationProgressOptions = {}): Promise<OutgoingResponseWithSession> {
639
+ const responseOptions = {
640
+ sessionDescriptionHandlerOptions: this.sessionDescriptionHandlerOptions,
641
+ sessionDescriptionHandlerModifiers: this.sessionDescriptionHandlerModifiers
642
+ }
643
+ const statusCode = options.statusCode || 183
644
+ const reasonPhrase = options.reasonPhrase
645
+ const extraHeaders = (options.extraHeaders || []).slice()
646
+
647
+ // Get an offer/answer and send a reply.
648
+ return this.generateResponseOfferAnswer(this.incomingInviteRequest, responseOptions)
649
+ .then((body) => this.incomingInviteRequest.progress({ statusCode, reasonPhrase, extraHeaders, body }))
650
+ .then((progressResponse) => {
651
+ this._dialog = progressResponse.session
652
+ return progressResponse
653
+ })
654
+ }
655
+
656
+ /**
657
+ * A version of `progress` which resolves when the reliable provisional response is sent.
658
+ * @param options - Options bucket.
659
+ */
660
+ private sendProgressReliable(options: InvitationProgressOptions = {}): Promise<OutgoingResponseWithSession> {
661
+ options.extraHeaders = (options.extraHeaders || []).slice()
662
+ options.extraHeaders.push('Require: 100rel')
663
+ options.extraHeaders.push('RSeq: ' + Math.floor(Math.random() * 10000))
664
+ return this.sendProgressWithSDP(options)
665
+ }
666
+
667
+ /**
668
+ * A version of `progress` which resolves when the reliable provisional response is acknowledged.
669
+ * @param options - Options bucket.
670
+ */
671
+ private sendProgressReliableWaitForPrack(options: InvitationProgressOptions = {}): Promise<{
672
+ prackRequest: IncomingPrackRequest
673
+ prackResponse: OutgoingResponse
674
+ progressResponse: OutgoingResponseWithSession
675
+ }> {
676
+ const responseOptions = {
677
+ sessionDescriptionHandlerOptions: this.sessionDescriptionHandlerOptions,
678
+ sessionDescriptionHandlerModifiers: this.sessionDescriptionHandlerModifiers
679
+ }
680
+ const statusCode = options.statusCode || 183
681
+ const reasonPhrase = options.reasonPhrase
682
+ const extraHeaders: Array<string> = (options.extraHeaders || []).slice()
683
+ extraHeaders.push('Require: 100rel')
684
+ extraHeaders.push('RSeq: ' + this.rseq++)
685
+ let body: Body | undefined
686
+
687
+ return new Promise((resolve, reject) => {
688
+ this.waitingForPrack = true
689
+ this.generateResponseOfferAnswer(this.incomingInviteRequest, responseOptions)
690
+ .then((offerAnswer) => {
691
+ body = offerAnswer
692
+ return this.incomingInviteRequest.progress({ statusCode, reasonPhrase, extraHeaders, body })
693
+ })
694
+ .then((progressResponse) => {
695
+ this._dialog = progressResponse.session
696
+
697
+ let prackRequest: IncomingPrackRequest
698
+ let prackResponse: OutgoingResponse
699
+ progressResponse.session.delegate = {
700
+ onPrack: (request): void => {
701
+ prackRequest = request
702
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
703
+ clearTimeout(prackWaitTimeoutTimer)
704
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
705
+ clearTimeout(rel1xxRetransmissionTimer)
706
+ if (!this.waitingForPrack) {
707
+ return
708
+ }
709
+ this.waitingForPrack = false
710
+ this.handlePrackOfferAnswer(prackRequest)
711
+ .then((prackResponseBody) => {
712
+ try {
713
+ prackResponse = prackRequest.accept({ statusCode: 200, body: prackResponseBody })
714
+ this.prackArrived()
715
+ resolve({ prackRequest, prackResponse, progressResponse })
716
+ } catch (error) {
717
+ reject(error)
718
+ }
719
+ })
720
+ .catch((error: Error) => reject(error))
721
+ }
722
+ }
723
+
724
+ // https://tools.ietf.org/html/rfc3262#section-3
725
+ const prackWaitTimeout = (): void => {
726
+ if (!this.waitingForPrack) {
727
+ return
728
+ }
729
+ this.waitingForPrack = false
730
+ this.logger.warn('No PRACK received, rejecting INVITE.')
731
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
732
+ clearTimeout(rel1xxRetransmissionTimer)
733
+ this.reject({ statusCode: 504 })
734
+ .then(() => reject(new SessionTerminatedError()))
735
+ .catch((error: Error) => reject(error))
736
+ }
737
+ const prackWaitTimeoutTimer = setTimeout(prackWaitTimeout, Timers.T1 * 64)
738
+
739
+ // https://tools.ietf.org/html/rfc3262#section-3
740
+ const rel1xxRetransmission = (): void => {
741
+ try {
742
+ this.incomingInviteRequest.progress({ statusCode, reasonPhrase, extraHeaders, body })
743
+ } catch (error) {
744
+ this.waitingForPrack = false
745
+ reject(error)
746
+ return
747
+ }
748
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
749
+ rel1xxRetransmissionTimer = setTimeout(rel1xxRetransmission, (timeout *= 2))
750
+ }
751
+ let timeout = Timers.T1
752
+ let rel1xxRetransmissionTimer = setTimeout(rel1xxRetransmission, timeout)
753
+ })
754
+ .catch((error: Error) => {
755
+ this.waitingForPrack = false
756
+ reject(error)
757
+ })
758
+ })
759
+ }
760
+
761
+ /**
762
+ * A version of `progress` which resolves when a 100 Trying provisional response is sent.
763
+ */
764
+ private sendProgressTrying(): Promise<OutgoingResponse> {
765
+ try {
766
+ const progressResponse = this.incomingInviteRequest.trying()
767
+ return Promise.resolve(progressResponse)
768
+ } catch (error) {
769
+ return Promise.reject(error)
770
+ }
771
+ }
772
+
773
+ /**
774
+ * When attempting to accept the INVITE, an invitation waits
775
+ * for any outstanding PRACK to arrive before sending the 200 Ok.
776
+ * It will be waiting on this Promise to resolve which lets it know
777
+ * the PRACK has arrived and it may proceed to send the 200 Ok.
778
+ */
779
+ private waitForArrivalOfPrack(): Promise<void> {
780
+ if (this.waitingForPrackPromise) {
781
+ throw new Error('Already waiting for PRACK')
782
+ }
783
+ this.waitingForPrackPromise = new Promise<void>((resolve, reject) => {
784
+ this.waitingForPrackResolve = resolve
785
+ this.waitingForPrackReject = reject
786
+ })
787
+ return this.waitingForPrackPromise
788
+ }
789
+
790
+ /**
791
+ * Here we are resolving the promise which in turn will cause
792
+ * the accept to proceed (it may still fail for other reasons, but...).
793
+ */
794
+ private prackArrived(): void {
795
+ if (this.waitingForPrackResolve) {
796
+ this.waitingForPrackResolve()
797
+ }
798
+ this.waitingForPrackPromise = undefined
799
+ this.waitingForPrackResolve = undefined
800
+ this.waitingForPrackReject = undefined
801
+ }
802
+
803
+ /**
804
+ * Here we are rejecting the promise which in turn will cause
805
+ * the accept to fail and the session to transition to "terminated".
806
+ */
807
+ private prackNeverArrived(): void {
808
+ if (this.waitingForPrackReject) {
809
+ this.waitingForPrackReject(new SessionTerminatedError())
810
+ }
811
+ this.waitingForPrackPromise = undefined
812
+ this.waitingForPrackResolve = undefined
813
+ this.waitingForPrackReject = undefined
814
+ }
815
+ }