ue-softphone-sdk 2.2.3 → 2.2.4

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 (390) hide show
  1. package/dist/api/bye.d.ts +16 -0
  2. package/dist/api/dtmf.d.ts +15 -0
  3. package/dist/api/emitter.d.ts +88 -0
  4. package/dist/api/exceptions/content-type-unsupported.d.ts +8 -0
  5. package/dist/api/exceptions/index.d.ts +5 -0
  6. package/dist/api/exceptions/request-pending.d.ts +9 -0
  7. package/dist/api/exceptions/session-description-handler.d.ts +8 -0
  8. package/dist/api/exceptions/session-terminated.d.ts +8 -0
  9. package/dist/api/exceptions/state-transition.d.ts +8 -0
  10. package/dist/api/index.d.ts +58 -0
  11. package/dist/api/info.d.ts +16 -0
  12. package/dist/api/invitation-accept-options.d.ts +19 -0
  13. package/dist/api/invitation-progress-options.d.ts +38 -0
  14. package/dist/api/invitation-reject-options.d.ts +25 -0
  15. package/dist/api/invitation.d.ts +179 -0
  16. package/dist/api/inviter-cancel-options.d.ts +9 -0
  17. package/dist/api/inviter-invite-options.d.ts +28 -0
  18. package/dist/api/inviter-options.d.ts +43 -0
  19. package/dist/api/inviter.d.ts +236 -0
  20. package/dist/api/message.d.ts +16 -0
  21. package/dist/api/messager-message-options.d.ts +11 -0
  22. package/dist/api/messager-options.d.ts +17 -0
  23. package/dist/api/messager.d.ts +26 -0
  24. package/dist/api/notification.d.ts +16 -0
  25. package/dist/api/notifier.d.ts +8 -0
  26. package/dist/api/publisher-options.d.ts +33 -0
  27. package/dist/api/publisher-publish-options.d.ts +6 -0
  28. package/dist/api/publisher-state.d.ts +21 -0
  29. package/dist/api/publisher-unpublish-options.d.ts +6 -0
  30. package/dist/api/publisher.d.ts +65 -0
  31. package/dist/api/referral.d.ts +38 -0
  32. package/dist/api/registerer-options.d.ts +46 -0
  33. package/dist/api/registerer-register-options.d.ts +11 -0
  34. package/dist/api/registerer-state.d.ts +21 -0
  35. package/dist/api/registerer-unregister-options.d.ts +16 -0
  36. package/dist/api/registerer.d.ts +144 -0
  37. package/dist/api/session-bye-options.d.ts +11 -0
  38. package/dist/api/session-delegate.d.ts +73 -0
  39. package/dist/api/session-description-handler-factory.d.ts +15 -0
  40. package/dist/api/session-description-handler.d.ts +74 -0
  41. package/dist/api/session-info-options.d.ts +11 -0
  42. package/dist/api/session-invite-options.d.ts +28 -0
  43. package/dist/api/session-message-options.d.ts +11 -0
  44. package/dist/api/session-options.d.ts +8 -0
  45. package/dist/api/session-refer-options.d.ts +14 -0
  46. package/dist/api/session-state.d.ts +45 -0
  47. package/dist/api/session.d.ts +359 -0
  48. package/dist/api/subscriber-options.d.ts +11 -0
  49. package/dist/api/subscriber-subscribe-options.d.ts +6 -0
  50. package/dist/api/subscriber.d.ts +94 -0
  51. package/dist/api/subscription-delegate.d.ts +12 -0
  52. package/dist/api/subscription-options.d.ts +8 -0
  53. package/dist/api/subscription-state.d.ts +19 -0
  54. package/dist/api/subscription-subscribe-options.d.ts +6 -0
  55. package/dist/api/subscription-unsubscribe-options.d.ts +6 -0
  56. package/dist/api/subscription.d.ts +84 -0
  57. package/dist/api/transport-state.d.ts +37 -0
  58. package/dist/api/transport.d.ts +159 -0
  59. package/dist/api/user-agent-delegate.d.ts +84 -0
  60. package/dist/api/user-agent-options.d.ts +253 -0
  61. package/dist/api/user-agent-state.d.ts +14 -0
  62. package/dist/api/user-agent.d.ts +200 -0
  63. package/dist/core/dialogs/dialog-state.d.ts +34 -0
  64. package/dist/core/dialogs/dialog.d.ts +161 -0
  65. package/dist/core/dialogs/index.d.ts +4 -0
  66. package/dist/core/dialogs/session-dialog.d.ts +196 -0
  67. package/dist/core/dialogs/subscription-dialog.d.ts +120 -0
  68. package/dist/core/exceptions/exception.d.ts +8 -0
  69. package/dist/core/exceptions/index.d.ts +3 -0
  70. package/dist/core/exceptions/transaction-state-error.d.ts +8 -0
  71. package/dist/core/exceptions/transport-error.d.ts +8 -0
  72. package/dist/core/index.d.ts +15 -0
  73. package/dist/core/log/index.d.ts +3 -0
  74. package/dist/core/log/levels.d.ts +10 -0
  75. package/dist/core/log/logger-factory.d.ts +21 -0
  76. package/dist/core/log/logger.d.ts +19 -0
  77. package/dist/core/messages/body.d.ts +64 -0
  78. package/dist/core/messages/digest-authentication.d.ts +51 -0
  79. package/dist/core/messages/incoming-message.d.ts +79 -0
  80. package/dist/core/messages/incoming-request-message.d.ts +10 -0
  81. package/dist/core/messages/incoming-request.d.ts +67 -0
  82. package/dist/core/messages/incoming-response-message.d.ts +10 -0
  83. package/dist/core/messages/incoming-response.d.ts +12 -0
  84. package/dist/core/messages/index.d.ts +13 -0
  85. package/dist/core/messages/md5.d.ts +32 -0
  86. package/dist/core/messages/methods/ack.d.ts +18 -0
  87. package/dist/core/messages/methods/bye.d.ts +21 -0
  88. package/dist/core/messages/methods/cancel.d.ts +21 -0
  89. package/dist/core/messages/methods/constants.d.ts +20 -0
  90. package/dist/core/messages/methods/index.d.ts +13 -0
  91. package/dist/core/messages/methods/info.d.ts +21 -0
  92. package/dist/core/messages/methods/invite.d.ts +86 -0
  93. package/dist/core/messages/methods/message.d.ts +21 -0
  94. package/dist/core/messages/methods/notify.d.ts +21 -0
  95. package/dist/core/messages/methods/prack.d.ts +21 -0
  96. package/dist/core/messages/methods/publish.d.ts +21 -0
  97. package/dist/core/messages/methods/refer.d.ts +21 -0
  98. package/dist/core/messages/methods/register.d.ts +21 -0
  99. package/dist/core/messages/methods/subscribe.d.ts +54 -0
  100. package/dist/core/messages/outgoing-request-message.d.ts +94 -0
  101. package/dist/core/messages/outgoing-request.d.ts +67 -0
  102. package/dist/core/messages/outgoing-response.d.ts +42 -0
  103. package/dist/core/messages/parser.d.ts +14 -0
  104. package/dist/core/messages/utils.d.ts +24 -0
  105. package/dist/core/session/index.d.ts +2 -0
  106. package/dist/core/session/session-delegate.d.ts +70 -0
  107. package/dist/core/session/session.d.ts +134 -0
  108. package/dist/core/subscription/index.d.ts +2 -0
  109. package/dist/core/subscription/subscription-delegate.d.ts +27 -0
  110. package/dist/core/subscription/subscription.d.ts +55 -0
  111. package/dist/core/timers.d.ts +20 -0
  112. package/dist/core/transactions/client-transaction.d.ts +45 -0
  113. package/dist/core/transactions/index.d.ts +10 -0
  114. package/dist/core/transactions/invite-client-transaction.d.ts +116 -0
  115. package/dist/core/transactions/invite-server-transaction.d.ts +127 -0
  116. package/dist/core/transactions/non-invite-client-transaction.d.ts +69 -0
  117. package/dist/core/transactions/non-invite-server-transaction.d.ts +57 -0
  118. package/dist/core/transactions/server-transaction.d.ts +35 -0
  119. package/dist/core/transactions/transaction-state.d.ts +13 -0
  120. package/dist/core/transactions/transaction-user.d.ts +72 -0
  121. package/dist/core/transactions/transaction.d.ts +79 -0
  122. package/dist/core/transport.d.ts +31 -0
  123. package/dist/core/user-agent-core/allowed-methods.d.ts +4 -0
  124. package/dist/core/user-agent-core/index.d.ts +3 -0
  125. package/dist/core/user-agent-core/user-agent-core-configuration.d.ts +99 -0
  126. package/dist/core/user-agent-core/user-agent-core-delegate.d.ts +37 -0
  127. package/dist/core/user-agent-core/user-agent-core.d.ts +179 -0
  128. package/dist/core/user-agents/bye-user-agent-client.d.ts +10 -0
  129. package/dist/core/user-agents/bye-user-agent-server.d.ts +10 -0
  130. package/dist/core/user-agents/cancel-user-agent-client.d.ts +10 -0
  131. package/dist/core/user-agents/index.d.ts +26 -0
  132. package/dist/core/user-agents/info-user-agent-client.d.ts +10 -0
  133. package/dist/core/user-agents/info-user-agent-server.d.ts +10 -0
  134. package/dist/core/user-agents/invite-user-agent-client.d.ts +35 -0
  135. package/dist/core/user-agents/invite-user-agent-server.d.ts +77 -0
  136. package/dist/core/user-agents/message-user-agent-client.d.ts +10 -0
  137. package/dist/core/user-agents/message-user-agent-server.d.ts +10 -0
  138. package/dist/core/user-agents/notify-user-agent-client.d.ts +10 -0
  139. package/dist/core/user-agents/notify-user-agent-server.d.ts +16 -0
  140. package/dist/core/user-agents/prack-user-agent-client.d.ts +10 -0
  141. package/dist/core/user-agents/prack-user-agent-server.d.ts +16 -0
  142. package/dist/core/user-agents/publish-user-agent-client.d.ts +10 -0
  143. package/dist/core/user-agents/re-invite-user-agent-client.d.ts +18 -0
  144. package/dist/core/user-agents/re-invite-user-agent-server.d.ts +41 -0
  145. package/dist/core/user-agents/re-subscribe-user-agent-client.d.ts +17 -0
  146. package/dist/core/user-agents/re-subscribe-user-agent-server.d.ts +10 -0
  147. package/dist/core/user-agents/refer-user-agent-client.d.ts +10 -0
  148. package/dist/core/user-agents/refer-user-agent-server.d.ts +16 -0
  149. package/dist/core/user-agents/register-user-agent-client.d.ts +10 -0
  150. package/dist/core/user-agents/register-user-agent-server.d.ts +11 -0
  151. package/dist/core/user-agents/subscribe-user-agent-client.d.ts +65 -0
  152. package/dist/core/user-agents/subscribe-user-agent-server.d.ts +11 -0
  153. package/dist/core/user-agents/user-agent-client.d.ts +103 -0
  154. package/dist/core/user-agents/user-agent-server.d.ts +79 -0
  155. package/dist/grammar/grammar.d.ts +26 -0
  156. package/dist/grammar/index.d.ts +4 -0
  157. package/dist/grammar/name-addr-header.d.ts +24 -0
  158. package/dist/grammar/parameters.d.ts +16 -0
  159. package/dist/grammar/pegjs/dist/grammar.d.ts +50 -0
  160. package/dist/grammar/uri.d.ts +62 -0
  161. package/dist/{types/index.d.ts → index.d.ts} +7 -3
  162. package/dist/main.d.ts +9 -0
  163. package/dist/new-index.d.ts +199 -0
  164. package/dist/platform/web/index.d.ts +4 -0
  165. package/dist/platform/web/modifiers/index.d.ts +5 -0
  166. package/dist/platform/web/modifiers/modifiers.d.ts +41 -0
  167. package/dist/platform/web/session-description-handler/index.d.ts +14 -0
  168. package/dist/platform/web/session-description-handler/media-stream-factory-default.d.ts +6 -0
  169. package/dist/platform/web/session-description-handler/media-stream-factory.d.ts +6 -0
  170. package/dist/platform/web/session-description-handler/peer-connection-configuration-default.d.ts +5 -0
  171. package/dist/platform/web/session-description-handler/peer-connection-delegate.d.ts +63 -0
  172. package/dist/platform/web/session-description-handler/session-description-handler-configuration.d.ts +16 -0
  173. package/dist/platform/web/session-description-handler/session-description-handler-factory-default.d.ts +11 -0
  174. package/dist/platform/web/session-description-handler/session-description-handler-factory-options.d.ts +9 -0
  175. package/dist/platform/web/session-description-handler/session-description-handler-factory.d.ts +16 -0
  176. package/dist/platform/web/session-description-handler/session-description-handler-options.d.ts +47 -0
  177. package/dist/platform/web/session-description-handler/session-description-handler.d.ts +212 -0
  178. package/dist/platform/web/simple-user/index.d.ts +7 -0
  179. package/dist/platform/web/simple-user/simple-user-delegate.d.ts +72 -0
  180. package/dist/platform/web/simple-user/simple-user-options.d.ts +90 -0
  181. package/dist/platform/web/simple-user/simple-user.d.ts +226 -0
  182. package/dist/platform/web/transport/index.d.ts +6 -0
  183. package/dist/platform/web/transport/transport-options.d.ts +30 -0
  184. package/dist/platform/web/transport/transport.d.ts +125 -0
  185. package/dist/ue-softphone-sdk.js +2 -1
  186. package/dist/ue-softphone-sdk.js.map +1 -0
  187. package/dist/version.d.ts +1 -0
  188. package/dist/webPhoneSdk.d.ts +24 -0
  189. package/dist/webrtc.d.ts +17 -0
  190. package/{rollup-new.config.mjs → new-rollup.config.mjs} +1 -1
  191. package/package.json +6 -6
  192. package/rollup.config.js +15 -14
  193. package/src/api/api-extractor.json +358 -0
  194. package/src/api/bye.ts +27 -0
  195. package/src/api/dtmf.ts +27 -0
  196. package/src/api/emitter.ts +110 -0
  197. package/src/api/exceptions/content-type-unsupported.ts +11 -0
  198. package/src/api/exceptions/index.ts +5 -0
  199. package/src/api/exceptions/request-pending.ts +12 -0
  200. package/src/api/exceptions/session-description-handler.ts +11 -0
  201. package/src/api/exceptions/session-terminated.ts +11 -0
  202. package/src/api/exceptions/state-transition.ts +11 -0
  203. package/src/api/index.ts +58 -0
  204. package/src/api/info.ts +27 -0
  205. package/src/api/invitation-accept-options.ts +20 -0
  206. package/src/api/invitation-progress-options.ts +36 -0
  207. package/src/api/invitation-reject-options.ts +22 -0
  208. package/src/api/invitation.ts +816 -0
  209. package/src/api/inviter-cancel-options.ts +9 -0
  210. package/src/api/inviter-invite-options.ts +29 -0
  211. package/src/api/inviter-options.ts +44 -0
  212. package/src/api/inviter.ts +1126 -0
  213. package/src/api/message.ts +27 -0
  214. package/src/api/messager-message-options.ts +12 -0
  215. package/src/api/messager-options.ts +18 -0
  216. package/src/api/messager.ts +89 -0
  217. package/src/api/notification.ts +27 -0
  218. package/src/api/notifier.ts +7 -0
  219. package/src/api/publisher-options.ts +34 -0
  220. package/src/api/publisher-publish-options.ts +6 -0
  221. package/src/api/publisher-state.ts +21 -0
  222. package/src/api/publisher-unpublish-options.ts +6 -0
  223. package/src/api/publisher.ts +418 -0
  224. package/src/api/referral.ts +89 -0
  225. package/src/api/registerer-options.ts +55 -0
  226. package/src/api/registerer-register-options.ts +12 -0
  227. package/src/api/registerer-state.ts +21 -0
  228. package/src/api/registerer-unregister-options.ts +17 -0
  229. package/src/api/registerer.ts +814 -0
  230. package/src/api/session-bye-options.ts +12 -0
  231. package/src/api/session-delegate.ts +80 -0
  232. package/src/api/session-description-handler-factory.ts +16 -0
  233. package/src/api/session-description-handler.ts +89 -0
  234. package/src/api/session-info-options.ts +12 -0
  235. package/src/api/session-invite-options.ts +29 -0
  236. package/src/api/session-message-options.ts +12 -0
  237. package/src/api/session-options.ts +8 -0
  238. package/src/api/session-refer-options.ts +15 -0
  239. package/src/api/session-state.ts +45 -0
  240. package/src/api/session.ts +1448 -0
  241. package/src/api/subscriber-options.ts +12 -0
  242. package/src/api/subscriber-subscribe-options.ts +6 -0
  243. package/src/api/subscriber.ts +536 -0
  244. package/src/api/subscription-delegate.ts +13 -0
  245. package/src/api/subscription-options.ts +8 -0
  246. package/src/api/subscription-state.ts +19 -0
  247. package/src/api/subscription-subscribe-options.ts +6 -0
  248. package/src/api/subscription-unsubscribe-options.ts +6 -0
  249. package/src/api/subscription.ts +161 -0
  250. package/src/api/transport-state.ts +37 -0
  251. package/src/api/transport.ts +169 -0
  252. package/src/api/user-agent-delegate.ts +95 -0
  253. package/src/api/user-agent-options.ts +322 -0
  254. package/src/api/user-agent-state.ts +14 -0
  255. package/src/api/user-agent.ts +1014 -0
  256. package/src/core/api-extractor.json +358 -0
  257. package/src/core/dialogs/dialog-state.ts +35 -0
  258. package/src/core/dialogs/dialog.ts +605 -0
  259. package/src/core/dialogs/index.ts +4 -0
  260. package/src/core/dialogs/session-dialog.ts +996 -0
  261. package/src/core/dialogs/subscription-dialog.ts +557 -0
  262. package/src/core/exceptions/exception.ts +11 -0
  263. package/src/core/exceptions/index.ts +3 -0
  264. package/src/core/exceptions/transaction-state-error.ts +11 -0
  265. package/src/core/exceptions/transport-error.ts +11 -0
  266. package/src/core/index.ts +19 -0
  267. package/src/core/log/index.ts +3 -0
  268. package/src/core/log/levels.ts +10 -0
  269. package/src/core/log/logger-factory.ts +119 -0
  270. package/src/core/log/logger.ts +42 -0
  271. package/src/core/messages/body.ts +171 -0
  272. package/src/core/messages/digest-authentication.ts +190 -0
  273. package/src/core/messages/incoming-message.ts +152 -0
  274. package/src/core/messages/incoming-request-message.ts +14 -0
  275. package/src/core/messages/incoming-request.ts +75 -0
  276. package/src/core/messages/incoming-response-message.ts +14 -0
  277. package/src/core/messages/incoming-response.ts +13 -0
  278. package/src/core/messages/index.ts +18 -0
  279. package/src/core/messages/md5.ts +437 -0
  280. package/src/core/messages/methods/ack.ts +22 -0
  281. package/src/core/messages/methods/bye.ts +22 -0
  282. package/src/core/messages/methods/cancel.ts +22 -0
  283. package/src/core/messages/methods/constants.ts +21 -0
  284. package/src/core/messages/methods/index.ts +13 -0
  285. package/src/core/messages/methods/info.ts +22 -0
  286. package/src/core/messages/methods/invite.ts +104 -0
  287. package/src/core/messages/methods/message.ts +22 -0
  288. package/src/core/messages/methods/notify.ts +22 -0
  289. package/src/core/messages/methods/prack.ts +22 -0
  290. package/src/core/messages/methods/publish.ts +22 -0
  291. package/src/core/messages/methods/refer.ts +22 -0
  292. package/src/core/messages/methods/register.ts +22 -0
  293. package/src/core/messages/methods/subscribe.ts +59 -0
  294. package/src/core/messages/outgoing-request-message.ts +299 -0
  295. package/src/core/messages/outgoing-request.ts +77 -0
  296. package/src/core/messages/outgoing-response.ts +174 -0
  297. package/src/core/messages/parser.ts +265 -0
  298. package/src/core/messages/utils.ts +144 -0
  299. package/src/core/session/index.ts +2 -0
  300. package/src/core/session/session-delegate.ts +88 -0
  301. package/src/core/session/session.ts +158 -0
  302. package/src/core/subscription/index.ts +2 -0
  303. package/src/core/subscription/subscription-delegate.ts +30 -0
  304. package/src/core/subscription/subscription.ts +61 -0
  305. package/src/core/timers.ts +24 -0
  306. package/src/core/transactions/client-transaction.ts +78 -0
  307. package/src/core/transactions/index.ts +10 -0
  308. package/src/core/transactions/invite-client-transaction.ts +504 -0
  309. package/src/core/transactions/invite-server-transaction.ts +432 -0
  310. package/src/core/transactions/non-invite-client-transaction.ts +257 -0
  311. package/src/core/transactions/non-invite-server-transaction.ts +241 -0
  312. package/src/core/transactions/server-transaction.ts +47 -0
  313. package/src/core/transactions/transaction-state.ts +13 -0
  314. package/src/core/transactions/transaction-user.ts +82 -0
  315. package/src/core/transactions/transaction.ts +149 -0
  316. package/src/core/transport.ts +32 -0
  317. package/src/core/user-agent-core/allowed-methods.ts +19 -0
  318. package/src/core/user-agent-core/index.ts +3 -0
  319. package/src/core/user-agent-core/user-agent-core-configuration.ts +111 -0
  320. package/src/core/user-agent-core/user-agent-core-delegate.ts +50 -0
  321. package/src/core/user-agent-core/user-agent-core.ts +905 -0
  322. package/src/core/user-agents/bye-user-agent-client.ts +16 -0
  323. package/src/core/user-agents/bye-user-agent-server.ts +14 -0
  324. package/src/core/user-agents/cancel-user-agent-client.ts +14 -0
  325. package/src/core/user-agents/index.ts +26 -0
  326. package/src/core/user-agents/info-user-agent-client.ts +15 -0
  327. package/src/core/user-agents/info-user-agent-server.ts +14 -0
  328. package/src/core/user-agents/invite-user-agent-client.ts +405 -0
  329. package/src/core/user-agents/invite-user-agent-server.ts +269 -0
  330. package/src/core/user-agents/message-user-agent-client.ts +14 -0
  331. package/src/core/user-agents/message-user-agent-server.ts +14 -0
  332. package/src/core/user-agents/notify-user-agent-client.ts +15 -0
  333. package/src/core/user-agents/notify-user-agent-server.ts +30 -0
  334. package/src/core/user-agents/prack-user-agent-client.ts +16 -0
  335. package/src/core/user-agents/prack-user-agent-server.ts +37 -0
  336. package/src/core/user-agents/publish-user-agent-client.ts +14 -0
  337. package/src/core/user-agents/re-invite-user-agent-client.ts +127 -0
  338. package/src/core/user-agents/re-invite-user-agent-server.ts +109 -0
  339. package/src/core/user-agents/re-subscribe-user-agent-client.ts +78 -0
  340. package/src/core/user-agents/re-subscribe-user-agent-server.ts +14 -0
  341. package/src/core/user-agents/refer-user-agent-client.ts +15 -0
  342. package/src/core/user-agents/refer-user-agent-server.ts +30 -0
  343. package/src/core/user-agents/register-user-agent-client.ts +14 -0
  344. package/src/core/user-agents/register-user-agent-server.ts +14 -0
  345. package/src/core/user-agents/subscribe-user-agent-client.ts +341 -0
  346. package/src/core/user-agents/subscribe-user-agent-server.ts +14 -0
  347. package/src/core/user-agents/user-agent-client.ts +378 -0
  348. package/src/core/user-agents/user-agent-server.ts +276 -0
  349. package/src/grammar/grammar.ts +55 -0
  350. package/src/grammar/index.ts +4 -0
  351. package/src/grammar/name-addr-header.ts +58 -0
  352. package/src/grammar/parameters.ts +45 -0
  353. package/src/grammar/pegjs/README.md +9 -0
  354. package/src/grammar/pegjs/dist/grammar.ts +1557 -0
  355. package/src/grammar/pegjs/src/grammar.pegjs +1009 -0
  356. package/src/grammar/uri.ts +370 -0
  357. package/src/index.ts +49 -26
  358. package/src/lib/socket.io.esm.min.js +7 -0
  359. package/src/main.ts +26 -0
  360. package/src/new-index.ts +2478 -0
  361. package/src/platform/react/README.md +1 -0
  362. package/src/platform/web/index.ts +4 -0
  363. package/src/platform/web/modifiers/index.ts +5 -0
  364. package/src/platform/web/modifiers/modifiers.ts +180 -0
  365. package/src/platform/web/session-description-handler/api-extractor.json +358 -0
  366. package/src/platform/web/session-description-handler/index.ts +14 -0
  367. package/src/platform/web/session-description-handler/media-stream-factory-default.ts +22 -0
  368. package/src/platform/web/session-description-handler/media-stream-factory.ts +10 -0
  369. package/src/platform/web/session-description-handler/peer-connection-configuration-default.ts +17 -0
  370. package/src/platform/web/session-description-handler/peer-connection-delegate.ts +72 -0
  371. package/src/platform/web/session-description-handler/session-description-handler-configuration.ts +17 -0
  372. package/src/platform/web/session-description-handler/session-description-handler-factory-default.ts +45 -0
  373. package/src/platform/web/session-description-handler/session-description-handler-factory-options.ts +10 -0
  374. package/src/platform/web/session-description-handler/session-description-handler-factory.ts +17 -0
  375. package/src/platform/web/session-description-handler/session-description-handler-options.ts +56 -0
  376. package/src/platform/web/session-description-handler/session-description-handler.ts +938 -0
  377. package/src/platform/web/simple-user/api-extractor.json +358 -0
  378. package/src/platform/web/simple-user/index.ts +7 -0
  379. package/src/platform/web/simple-user/simple-user-delegate.ts +82 -0
  380. package/src/platform/web/simple-user/simple-user-options.ts +102 -0
  381. package/src/platform/web/simple-user/simple-user.ts +1099 -0
  382. package/src/platform/web/transport/api-extractor.json +358 -0
  383. package/src/platform/web/transport/index.ts +6 -0
  384. package/src/platform/web/transport/transport-options.ts +34 -0
  385. package/src/platform/web/transport/transport.ts +742 -0
  386. package/src/version.ts +8 -0
  387. package/src/webPhoneSdk.ts +67 -0
  388. package/src/webrtc.ts +318 -0
  389. package/tsconfig.json +26 -10
  390. /package/dist/{types/config.d.ts → config.d.ts} +0 -0
@@ -0,0 +1,78 @@
1
+ import { SubscriptionDialog } from "../dialogs";
2
+ import {
3
+ C,
4
+ IncomingResponseMessage,
5
+ OutgoingRequestDelegate,
6
+ OutgoingSubscribeRequest,
7
+ RequestOptions
8
+ } from "../messages";
9
+ import { NonInviteClientTransaction } from "../transactions";
10
+ import { UserAgentClient } from "./user-agent-client";
11
+
12
+ /**
13
+ * Re-SUBSCRIBE UAC.
14
+ * @public
15
+ */
16
+ export class ReSubscribeUserAgentClient extends UserAgentClient implements OutgoingSubscribeRequest {
17
+ private dialog: SubscriptionDialog;
18
+
19
+ constructor(dialog: SubscriptionDialog, delegate?: OutgoingRequestDelegate, options?: RequestOptions) {
20
+ const message = dialog.createOutgoingRequestMessage(C.SUBSCRIBE, options);
21
+ super(NonInviteClientTransaction, dialog.userAgentCore, message, delegate);
22
+ this.dialog = dialog;
23
+ }
24
+
25
+ public waitNotifyStop(): void {
26
+ // TODO: Placeholder. Not utilized currently.
27
+ return;
28
+ }
29
+
30
+ /**
31
+ * Receive a response from the transaction layer.
32
+ * @param message - Incoming response message.
33
+ */
34
+ protected receiveResponse(message: IncomingResponseMessage): void {
35
+ if (message.statusCode && message.statusCode >= 200 && message.statusCode < 300) {
36
+ // The "Expires" header field in a 200-class response to SUBSCRIBE
37
+ // request indicates the actual duration for which the subscription will
38
+ // remain active (unless refreshed). The received value might be
39
+ // smaller than the value indicated in the SUBSCRIBE request but cannot
40
+ // be larger; see Section 4.2.1 for details.
41
+ // https://tools.ietf.org/html/rfc6665#section-4.1.2.1
42
+ const expires = message.getHeader("Expires");
43
+ if (!expires) {
44
+ this.logger.warn("Expires header missing in a 200-class response to SUBSCRIBE");
45
+ } else {
46
+ const subscriptionExpiresReceived = Number(expires);
47
+ if (this.dialog.subscriptionExpires > subscriptionExpiresReceived) {
48
+ this.dialog.subscriptionExpires = subscriptionExpiresReceived;
49
+ }
50
+ }
51
+ }
52
+
53
+ if (message.statusCode && message.statusCode >= 400 && message.statusCode < 700) {
54
+ // If a SUBSCRIBE request to refresh a subscription receives a 404, 405,
55
+ // 410, 416, 480-485, 489, 501, or 604 response, the subscriber MUST
56
+ // consider the subscription terminated. (See [RFC5057] for further
57
+ // details and notes about the effect of error codes on dialogs and
58
+ // usages within dialog, such as subscriptions). If the subscriber
59
+ // wishes to re-subscribe to the state, he does so by composing an
60
+ // unrelated initial SUBSCRIBE request with a freshly generated Call-ID
61
+ // and a new, unique "From" tag (see Section 4.1.2.1).
62
+ // https://tools.ietf.org/html/rfc6665#section-4.1.2.2
63
+ const errorCodes = [404, 405, 410, 416, 480, 481, 482, 483, 484, 485, 489, 501, 604];
64
+ if (errorCodes.includes(message.statusCode)) {
65
+ this.dialog.terminate();
66
+ }
67
+ // If a SUBSCRIBE request to refresh a subscription fails with any error
68
+ // code other than those listed above, the original subscription is
69
+ // still considered valid for the duration of the most recently known
70
+ // "Expires" value as negotiated by the most recent successful SUBSCRIBE
71
+ // transaction, or as communicated by a NOTIFY request in its
72
+ // "Subscription-State" header field "expires" parameter.
73
+ // https://tools.ietf.org/html/rfc6665#section-4.1.2.2
74
+ }
75
+
76
+ super.receiveResponse(message);
77
+ }
78
+ }
@@ -0,0 +1,14 @@
1
+ import { Dialog } from "../dialogs";
2
+ import { IncomingRequestDelegate, IncomingRequestMessage, IncomingSubscribeRequest } from "../messages";
3
+ import { NonInviteServerTransaction } from "../transactions";
4
+ import { UserAgentServer } from "./user-agent-server";
5
+
6
+ /**
7
+ * Re-SUBSCRIBE UAS.
8
+ * @public
9
+ */
10
+ export class ReSubscribeUserAgentServer extends UserAgentServer implements IncomingSubscribeRequest {
11
+ constructor(dialog: Dialog, message: IncomingRequestMessage, delegate?: IncomingRequestDelegate) {
12
+ super(NonInviteServerTransaction, dialog.userAgentCore, message, delegate);
13
+ }
14
+ }
@@ -0,0 +1,15 @@
1
+ import { SessionDialog } from "../dialogs";
2
+ import { C, OutgoingReferRequest, OutgoingRequestDelegate, RequestOptions } from "../messages";
3
+ import { NonInviteClientTransaction } from "../transactions";
4
+ import { UserAgentClient } from "./user-agent-client";
5
+
6
+ /**
7
+ * REFER UAC.
8
+ * @public
9
+ */
10
+ export class ReferUserAgentClient extends UserAgentClient implements OutgoingReferRequest {
11
+ constructor(dialog: SessionDialog, delegate?: OutgoingRequestDelegate, options?: RequestOptions) {
12
+ const message = dialog.createOutgoingRequestMessage(C.REFER, options);
13
+ super(NonInviteClientTransaction, dialog.userAgentCore, message, delegate);
14
+ }
15
+ }
@@ -0,0 +1,30 @@
1
+ import { SessionDialog } from "../dialogs";
2
+ import { IncomingReferRequest, IncomingRequestDelegate, IncomingRequestMessage } from "../messages";
3
+ import { NonInviteServerTransaction } from "../transactions";
4
+ import { UserAgentCore } from "../user-agent-core";
5
+ import { UserAgentServer } from "./user-agent-server";
6
+
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+ function instanceOfSessionDialog(object: any): object is SessionDialog {
9
+ return object.userAgentCore !== undefined;
10
+ }
11
+
12
+ /**
13
+ * REFER UAS.
14
+ * @public
15
+ */
16
+ export class ReferUserAgentServer extends UserAgentServer implements IncomingReferRequest {
17
+ /**
18
+ * REFER UAS constructor.
19
+ * @param dialogOrCore - Dialog for in dialog REFER, UserAgentCore for out of dialog REFER.
20
+ * @param message - Incoming REFER request message.
21
+ */
22
+ constructor(
23
+ dialogOrCore: SessionDialog | UserAgentCore,
24
+ message: IncomingRequestMessage,
25
+ delegate?: IncomingRequestDelegate
26
+ ) {
27
+ const userAgentCore = instanceOfSessionDialog(dialogOrCore) ? dialogOrCore.userAgentCore : dialogOrCore;
28
+ super(NonInviteServerTransaction, userAgentCore, message, delegate);
29
+ }
30
+ }
@@ -0,0 +1,14 @@
1
+ import { OutgoingRegisterRequest, OutgoingRequestDelegate, OutgoingRequestMessage } from "../messages";
2
+ import { NonInviteClientTransaction } from "../transactions";
3
+ import { UserAgentCore } from "../user-agent-core";
4
+ import { UserAgentClient } from "./user-agent-client";
5
+
6
+ /**
7
+ * REGISTER UAC.
8
+ * @public
9
+ */
10
+ export class RegisterUserAgentClient extends UserAgentClient implements OutgoingRegisterRequest {
11
+ constructor(core: UserAgentCore, message: OutgoingRequestMessage, delegate?: OutgoingRequestDelegate) {
12
+ super(NonInviteClientTransaction, core, message, delegate);
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ import { IncomingRegisterRequest, IncomingRequestDelegate, IncomingRequestMessage } from "../messages";
2
+ import { NonInviteServerTransaction } from "../transactions";
3
+ import { UserAgentCore } from "../user-agent-core";
4
+ import { UserAgentServer } from "./user-agent-server";
5
+
6
+ /**
7
+ * REGISTER UAS.
8
+ * @public
9
+ */
10
+ export class RegisterUserAgentServer extends UserAgentServer implements IncomingRegisterRequest {
11
+ constructor(protected core: UserAgentCore, message: IncomingRequestMessage, delegate?: IncomingRequestDelegate) {
12
+ super(NonInviteServerTransaction, core, message, delegate);
13
+ }
14
+ }
@@ -0,0 +1,341 @@
1
+ import { SubscriptionDialog } from "../dialogs/subscription-dialog";
2
+ import {
3
+ IncomingResponseMessage,
4
+ OutgoingRequestMessage,
5
+ OutgoingSubscribeRequest,
6
+ OutgoingSubscribeRequestDelegate
7
+ } from "../messages";
8
+ import { SubscriptionState } from "../subscription";
9
+ import { Timers } from "../timers";
10
+ import { NonInviteClientTransaction } from "../transactions";
11
+ import { UserAgentCore } from "../user-agent-core";
12
+ import { NotifyUserAgentServer } from "./notify-user-agent-server";
13
+ import { UserAgentClient } from "./user-agent-client";
14
+
15
+ /**
16
+ * SUBSCRIBE UAC.
17
+ * @remarks
18
+ * 4.1. Subscriber Behavior
19
+ * https://tools.ietf.org/html/rfc6665#section-4.1
20
+ *
21
+ * User agent client for installation of a single subscription per SUBSCRIBE request.
22
+ * TODO: Support for installation of multiple subscriptions on forked SUBSCRIBE requests.
23
+ * @public
24
+ */
25
+ export class SubscribeUserAgentClient extends UserAgentClient implements OutgoingSubscribeRequest {
26
+ public delegate: OutgoingSubscribeRequestDelegate | undefined;
27
+
28
+ /** Dialog created upon receiving the first NOTIFY. */
29
+ private dialog: SubscriptionDialog | undefined;
30
+ /** Identifier of this user agent client. */
31
+ private subscriberId: string;
32
+ /** When the subscription expires. Starts as requested expires and updated on 200 and NOTIFY. */
33
+ private subscriptionExpires: number;
34
+ /** The requested expires for the subscription. */
35
+ private subscriptionExpiresRequested: number;
36
+ /** Subscription event being targeted. */
37
+ private subscriptionEvent: string;
38
+ /** Subscription state. */
39
+ private subscriptionState: SubscriptionState;
40
+ /** Timer N Id. */
41
+ private N: number | undefined;
42
+
43
+ constructor(core: UserAgentCore, message: OutgoingRequestMessage, delegate?: OutgoingSubscribeRequestDelegate) {
44
+ // Get event from request message.
45
+ const event = message.getHeader("Event");
46
+ if (!event) {
47
+ throw new Error("Event undefined");
48
+ }
49
+ // Get expires from request message.
50
+ const expires = message.getHeader("Expires");
51
+ if (!expires) {
52
+ throw new Error("Expires undefined");
53
+ }
54
+ super(NonInviteClientTransaction, core, message, delegate);
55
+ this.delegate = delegate;
56
+
57
+ // FIXME: Subscriber id should also be matching on event id.
58
+ this.subscriberId = message.callId + message.fromTag + event;
59
+ this.subscriptionExpiresRequested = this.subscriptionExpires = Number(expires);
60
+ this.subscriptionEvent = event;
61
+ this.subscriptionState = SubscriptionState.NotifyWait;
62
+
63
+ // Start waiting for a NOTIFY we can use to create a subscription.
64
+ this.waitNotifyStart();
65
+ }
66
+
67
+ /**
68
+ * Destructor.
69
+ * Note that Timer N may live on waiting for an initial NOTIFY and
70
+ * the delegate may still receive that NOTIFY. If you don't want
71
+ * that behavior then either clear the delegate so the delegate
72
+ * doesn't get called (a 200 will be sent in response to the NOTIFY)
73
+ * or call `waitNotifyStop` which will clear Timer N and remove this
74
+ * UAC from the core (a 481 will be sent in response to the NOTIFY).
75
+ */
76
+ public dispose(): void {
77
+ super.dispose();
78
+ }
79
+
80
+ /**
81
+ * Handle out of dialog NOTIFY associated with SUBSCRIBE request.
82
+ * This is the first NOTIFY received after the SUBSCRIBE request.
83
+ * @param uas - User agent server handling the subscription creating NOTIFY.
84
+ */
85
+ public onNotify(uas: NotifyUserAgentServer): void {
86
+ // NOTIFY requests are matched to such SUBSCRIBE requests if they
87
+ // contain the same "Call-ID", a "To" header field "tag" parameter that
88
+ // matches the "From" header field "tag" parameter of the SUBSCRIBE
89
+ // request, and the same "Event" header field. Rules for comparisons of
90
+ // the "Event" header fields are described in Section 8.2.1.
91
+ // https://tools.ietf.org/html/rfc6665#section-4.4.1
92
+ const event: string = uas.message.parseHeader("Event").event;
93
+ if (!event || event !== this.subscriptionEvent) {
94
+ this.logger.warn(`Failed to parse event.`);
95
+ uas.reject({ statusCode: 489 });
96
+ return;
97
+ }
98
+
99
+ // NOTIFY requests MUST contain "Subscription-State" header fields that
100
+ // indicate the status of the subscription.
101
+ // https://tools.ietf.org/html/rfc6665#section-4.1.3
102
+ const subscriptionState = uas.message.parseHeader("Subscription-State");
103
+ if (!subscriptionState || !subscriptionState.state) {
104
+ this.logger.warn("Failed to parse subscription state.");
105
+ uas.reject({ statusCode: 489 });
106
+ return;
107
+ }
108
+ // Validate subscription state.
109
+ const state: string = subscriptionState.state;
110
+ switch (state) {
111
+ case "pending":
112
+ break;
113
+ case "active":
114
+ break;
115
+ case "terminated":
116
+ break;
117
+ default:
118
+ this.logger.warn(`Invalid subscription state ${state}`);
119
+ uas.reject({ statusCode: 489 });
120
+ return;
121
+ }
122
+
123
+ // Dialogs usages are created upon completion of a NOTIFY transaction
124
+ // for a new subscription, unless the NOTIFY request contains a
125
+ // "Subscription-State" of "terminated."
126
+ // https://tools.ietf.org/html/rfc6665#section-4.4.1
127
+ if (state !== "terminated") {
128
+ // The Contact header field MUST be present and contain exactly one SIP
129
+ // or SIPS URI in any request that can result in the establishment of a
130
+ // dialog.
131
+ // https://tools.ietf.org/html/rfc3261#section-8.1.1.8
132
+ const contact = uas.message.parseHeader("contact");
133
+ if (!contact) {
134
+ this.logger.warn("Failed to parse contact.");
135
+ uas.reject({ statusCode: 489 });
136
+ return;
137
+ }
138
+ }
139
+
140
+ // In accordance with the rules for proxying non-INVITE requests as
141
+ // defined in [RFC3261], successful SUBSCRIBE requests will receive only
142
+ // one 200-class response; however, due to forking, the subscription may
143
+ // have been accepted by multiple nodes. The subscriber MUST therefore
144
+ // be prepared to receive NOTIFY requests with "From:" tags that differ
145
+ // from the "To:" tag received in the SUBSCRIBE 200-class response.
146
+ //
147
+ // If multiple NOTIFY requests are received in different dialogs in
148
+ // response to a single SUBSCRIBE request, each dialog represents a
149
+ // different destination to which the SUBSCRIBE request was forked.
150
+ // Subscriber handling in such situations varies by event package; see
151
+ // Section 5.4.9 for details.
152
+ // https://tools.ietf.org/html/rfc6665#section-4.1.4
153
+
154
+ // Each event package MUST specify whether forked SUBSCRIBE requests are
155
+ // allowed to install multiple subscriptions.
156
+ //
157
+ // If such behavior is not allowed, the first potential dialog-
158
+ // establishing message will create a dialog. All subsequent NOTIFY
159
+ // requests that correspond to the SUBSCRIBE request (i.e., have
160
+ // matching "To", "From", "Call-ID", and "Event" header fields, as well
161
+ // as "From" header field "tag" parameter and "Event" header field "id"
162
+ // parameter) but that do not match the dialog would be rejected with a
163
+ // 481 response. Note that the 200-class response to the SUBSCRIBE
164
+ // request can arrive after a matching NOTIFY request has been received;
165
+ // such responses might not correlate to the same dialog established by
166
+ // the NOTIFY request. Except as required to complete the SUBSCRIBE
167
+ // transaction, such non-matching 200-class responses are ignored.
168
+ //
169
+ // If installing of multiple subscriptions by way of a single forked
170
+ // SUBSCRIBE request is allowed, the subscriber establishes a new dialog
171
+ // towards each notifier by returning a 200-class response to each
172
+ // NOTIFY request. Each dialog is then handled as its own entity and is
173
+ // refreshed independently of the other dialogs.
174
+ //
175
+ // In the case that multiple subscriptions are allowed, the event
176
+ // package MUST specify whether merging of the notifications to form a
177
+ // single state is required, and how such merging is to be performed.
178
+ // Note that it is possible that some event packages may be defined in
179
+ // such a way that each dialog is tied to a mutually exclusive state
180
+ // that is unaffected by the other dialogs; this MUST be clearly stated
181
+ // if it is the case.
182
+ // https://tools.ietf.org/html/rfc6665#section-5.4.9
183
+
184
+ // *** NOTE: This implementation is only for event packages which
185
+ // do not allow forked requests to install multiple subscriptions.
186
+ // As such and in accordance with the specification, we stop waiting
187
+ // and any future NOTIFY requests will be rejected with a 481.
188
+ if (this.dialog) {
189
+ throw new Error("Dialog already created. This implementation only supports install of single subscriptions.");
190
+ }
191
+ this.waitNotifyStop();
192
+
193
+ // Update expires.
194
+ this.subscriptionExpires = subscriptionState.expires
195
+ ? Math.min(this.subscriptionExpires, Math.max(subscriptionState.expires, 0))
196
+ : this.subscriptionExpires;
197
+
198
+ // Update subscription state.
199
+ switch (state) {
200
+ case "pending":
201
+ this.subscriptionState = SubscriptionState.Pending;
202
+ break;
203
+ case "active":
204
+ this.subscriptionState = SubscriptionState.Active;
205
+ break;
206
+ case "terminated":
207
+ this.subscriptionState = SubscriptionState.Terminated;
208
+ break;
209
+ default:
210
+ throw new Error(`Unrecognized state ${state}.`);
211
+ }
212
+
213
+ // Dialogs usages are created upon completion of a NOTIFY transaction
214
+ // for a new subscription, unless the NOTIFY request contains a
215
+ // "Subscription-State" of "terminated."
216
+ // https://tools.ietf.org/html/rfc6665#section-4.4.1
217
+ if (this.subscriptionState !== SubscriptionState.Terminated) {
218
+ // Because the dialog usage is established by the NOTIFY request, the
219
+ // route set at the subscriber is taken from the NOTIFY request itself,
220
+ // as opposed to the route set present in the 200-class response to the
221
+ // SUBSCRIBE request.
222
+ // https://tools.ietf.org/html/rfc6665#section-4.4.1
223
+ const dialogState = SubscriptionDialog.initialDialogStateForSubscription(this.message, uas.message);
224
+
225
+ // Subscription Initiated! :)
226
+ this.dialog = new SubscriptionDialog(
227
+ this.subscriptionEvent,
228
+ this.subscriptionExpires,
229
+ this.subscriptionState,
230
+ this.core,
231
+ dialogState
232
+ );
233
+ }
234
+
235
+ // Delegate.
236
+ if (this.delegate && this.delegate.onNotify) {
237
+ const request = uas;
238
+ const subscription = this.dialog;
239
+ this.delegate.onNotify({ request, subscription });
240
+ } else {
241
+ uas.accept();
242
+ }
243
+ }
244
+
245
+ public waitNotifyStart(): void {
246
+ if (!this.N) {
247
+ // Add ourselves to the core's subscriber map.
248
+ // This allows the core to route out of dialog NOTIFY messages to us.
249
+ this.core.subscribers.set(this.subscriberId, this);
250
+ this.N = window.setTimeout(() => this.timerN(), Timers.TIMER_N);
251
+ }
252
+ }
253
+
254
+ public waitNotifyStop(): void {
255
+ if (this.N) {
256
+ // Remove ourselves to the core's subscriber map.
257
+ // Any future out of dialog NOTIFY messages will be rejected with a 481.
258
+ this.core.subscribers.delete(this.subscriberId);
259
+ clearTimeout(this.N);
260
+ this.N = undefined;
261
+ }
262
+ }
263
+
264
+ /**
265
+ * Receive a response from the transaction layer.
266
+ * @param message - Incoming response message.
267
+ */
268
+ protected receiveResponse(message: IncomingResponseMessage): void {
269
+ if (!this.authenticationGuard(message)) {
270
+ return;
271
+ }
272
+
273
+ if (message.statusCode && message.statusCode >= 200 && message.statusCode < 300) {
274
+ // The "Expires" header field in a 200-class response to SUBSCRIBE
275
+ // request indicates the actual duration for which the subscription will
276
+ // remain active (unless refreshed). The received value might be
277
+ // smaller than the value indicated in the SUBSCRIBE request but cannot
278
+ // be larger; see Section 4.2.1 for details.
279
+ // https://tools.ietf.org/html/rfc6665#section-4.1.2.1
280
+
281
+ // The "Expires" values present in SUBSCRIBE 200-class responses behave
282
+ // in the same way as they do in REGISTER responses: the server MAY
283
+ // shorten the interval but MUST NOT lengthen it.
284
+ //
285
+ // If the duration specified in a SUBSCRIBE request is unacceptably
286
+ // short, the notifier may be able to send a 423 response, as
287
+ // described earlier in this section.
288
+ //
289
+ // 200-class responses to SUBSCRIBE requests will not generally contain
290
+ // any useful information beyond subscription duration; their primary
291
+ // purpose is to serve as a reliability mechanism. State information
292
+ // will be communicated via a subsequent NOTIFY request from the
293
+ // notifier.
294
+ // https://tools.ietf.org/html/rfc6665#section-4.2.1.1
295
+ const expires = message.getHeader("Expires");
296
+ if (!expires) {
297
+ this.logger.warn("Expires header missing in a 200-class response to SUBSCRIBE");
298
+ } else {
299
+ const subscriptionExpiresReceived = Number(expires);
300
+ if (subscriptionExpiresReceived > this.subscriptionExpiresRequested) {
301
+ this.logger.warn(
302
+ "Expires header in a 200-class response to SUBSCRIBE with a higher value than the one in the request"
303
+ );
304
+ }
305
+ if (subscriptionExpiresReceived < this.subscriptionExpires) {
306
+ this.subscriptionExpires = subscriptionExpiresReceived;
307
+ }
308
+ }
309
+ // If a NOTIFY arrived before 200-class response a dialog may have been created.
310
+ // Updated the dialogs expiration only if this indicates earlier expiration.
311
+ if (this.dialog) {
312
+ if (this.dialog.subscriptionExpires > this.subscriptionExpires) {
313
+ this.dialog.subscriptionExpires = this.subscriptionExpires;
314
+ }
315
+ }
316
+ }
317
+
318
+ if (message.statusCode && message.statusCode >= 300 && message.statusCode < 700) {
319
+ this.waitNotifyStop(); // No NOTIFY will be sent after a negative final response.
320
+ }
321
+
322
+ super.receiveResponse(message);
323
+ }
324
+
325
+ /**
326
+ * To ensure that subscribers do not wait indefinitely for a
327
+ * subscription to be established, a subscriber starts a Timer N, set to
328
+ * 64*T1, when it sends a SUBSCRIBE request. If this Timer N expires
329
+ * prior to the receipt of a NOTIFY request, the subscriber considers
330
+ * the subscription failed, and cleans up any state associated with the
331
+ * subscription attempt.
332
+ * https://tools.ietf.org/html/rfc6665#section-4.1.2.4
333
+ */
334
+ private timerN(): void {
335
+ this.logger.warn(`Timer N expired for SUBSCRIBE user agent client. Timed out waiting for NOTIFY.`);
336
+ this.waitNotifyStop();
337
+ if (this.delegate && this.delegate.onNotifyTimeout) {
338
+ this.delegate.onNotifyTimeout();
339
+ }
340
+ }
341
+ }
@@ -0,0 +1,14 @@
1
+ import { IncomingRequestDelegate, IncomingRequestMessage, IncomingSubscribeRequest } from "../messages";
2
+ import { NonInviteServerTransaction } from "../transactions";
3
+ import { UserAgentCore } from "../user-agent-core";
4
+ import { UserAgentServer } from "./user-agent-server";
5
+
6
+ /**
7
+ * SUBSCRIBE UAS.
8
+ * @public
9
+ */
10
+ export class SubscribeUserAgentServer extends UserAgentServer implements IncomingSubscribeRequest {
11
+ constructor(protected core: UserAgentCore, message: IncomingRequestMessage, delegate?: IncomingRequestDelegate) {
12
+ super(NonInviteServerTransaction, core, message, delegate);
13
+ }
14
+ }