@webex/plugin-meetings 3.8.1-next.8 → 3.8.1

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 (230) hide show
  1. package/README.md +13 -26
  2. package/dist/annotation/annotation.types.d.ts +42 -0
  3. package/dist/annotation/constants.d.ts +31 -0
  4. package/dist/annotation/index.d.ts +117 -0
  5. package/dist/breakouts/breakout.d.ts +8 -0
  6. package/dist/breakouts/breakout.js +1 -1
  7. package/dist/breakouts/collection.d.ts +5 -0
  8. package/dist/breakouts/edit-lock-error.d.ts +15 -0
  9. package/dist/breakouts/events.d.ts +8 -0
  10. package/dist/breakouts/index.d.ts +5 -0
  11. package/dist/breakouts/index.js +1 -1
  12. package/dist/breakouts/request.d.ts +22 -0
  13. package/dist/breakouts/utils.d.ts +15 -0
  14. package/dist/common/browser-detection.d.ts +9 -0
  15. package/dist/common/collection.d.ts +48 -0
  16. package/dist/common/config.d.ts +2 -0
  17. package/dist/common/errors/captcha-error.d.ts +15 -0
  18. package/dist/common/errors/intent-to-join.d.ts +16 -0
  19. package/dist/common/errors/join-meeting.d.ts +17 -0
  20. package/dist/common/errors/media.d.ts +15 -0
  21. package/dist/common/errors/no-meeting-info.d.ts +14 -0
  22. package/dist/common/errors/parameter.d.ts +15 -0
  23. package/dist/common/errors/password-error.d.ts +15 -0
  24. package/dist/common/errors/permission.d.ts +14 -0
  25. package/dist/common/errors/reclaim-host-role-error.d.ts +60 -0
  26. package/dist/common/errors/reclaim-host-role-error.js +158 -0
  27. package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
  28. package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
  29. package/dist/common/errors/reconnection-in-progress.d.ts +9 -0
  30. package/dist/common/errors/reconnection-in-progress.js +35 -0
  31. package/dist/common/errors/reconnection-in-progress.js.map +1 -0
  32. package/dist/common/errors/reconnection.d.ts +15 -0
  33. package/dist/common/errors/stats.d.ts +15 -0
  34. package/dist/common/errors/webex-errors.d.ts +81 -0
  35. package/dist/common/errors/webex-meetings-error.d.ts +20 -0
  36. package/dist/common/events/events-scope.d.ts +17 -0
  37. package/dist/common/events/events.d.ts +12 -0
  38. package/dist/common/events/trigger-proxy.d.ts +2 -0
  39. package/dist/common/events/util.d.ts +2 -0
  40. package/dist/common/logs/logger-config.d.ts +2 -0
  41. package/dist/common/logs/logger-proxy.d.ts +2 -0
  42. package/dist/common/logs/request.d.ts +34 -0
  43. package/dist/common/queue.d.ts +32 -0
  44. package/dist/config.d.ts +73 -0
  45. package/dist/constants.d.ts +952 -0
  46. package/dist/constants.js +1 -8
  47. package/dist/constants.js.map +1 -1
  48. package/dist/controls-options-manager/constants.d.ts +4 -0
  49. package/dist/controls-options-manager/enums.d.ts +5 -0
  50. package/dist/controls-options-manager/enums.js +0 -1
  51. package/dist/controls-options-manager/enums.js.map +1 -1
  52. package/dist/controls-options-manager/index.d.ts +120 -0
  53. package/dist/controls-options-manager/types.d.ts +43 -0
  54. package/dist/controls-options-manager/types.js.map +1 -1
  55. package/dist/controls-options-manager/util.d.ts +7 -0
  56. package/dist/controls-options-manager/util.js +0 -26
  57. package/dist/controls-options-manager/util.js.map +1 -1
  58. package/dist/index.d.ts +4 -0
  59. package/dist/interceptors/index.d.ts +2 -0
  60. package/dist/interceptors/locusRetry.d.ts +27 -0
  61. package/dist/interpretation/collection.d.ts +5 -0
  62. package/dist/interpretation/index.d.ts +5 -0
  63. package/dist/interpretation/index.js +1 -1
  64. package/dist/interpretation/siLanguage.d.ts +5 -0
  65. package/dist/interpretation/siLanguage.js +1 -1
  66. package/dist/locus-info/controlsUtils.d.ts +2 -0
  67. package/dist/locus-info/controlsUtils.js +3 -11
  68. package/dist/locus-info/controlsUtils.js.map +1 -1
  69. package/dist/locus-info/embeddedAppsUtils.d.ts +2 -0
  70. package/dist/locus-info/fullState.d.ts +2 -0
  71. package/dist/locus-info/hostUtils.d.ts +2 -0
  72. package/dist/locus-info/index.d.ts +269 -0
  73. package/dist/locus-info/index.js +0 -30
  74. package/dist/locus-info/index.js.map +1 -1
  75. package/dist/locus-info/infoUtils.d.ts +2 -0
  76. package/dist/locus-info/mediaSharesUtils.d.ts +2 -0
  77. package/dist/locus-info/parser.d.ts +212 -0
  78. package/dist/locus-info/selfUtils.d.ts +2 -0
  79. package/dist/media/index.d.ts +32 -0
  80. package/dist/media/properties.d.ts +108 -0
  81. package/dist/media/util.d.ts +2 -0
  82. package/dist/mediaQualityMetrics/config.d.ts +233 -0
  83. package/dist/mediaQualityMetrics/config.js +513 -0
  84. package/dist/mediaQualityMetrics/config.js.map +1 -0
  85. package/dist/meeting/brbState.js +2 -3
  86. package/dist/meeting/brbState.js.map +1 -1
  87. package/dist/meeting/effectsState.d.ts +42 -0
  88. package/dist/meeting/effectsState.js +260 -0
  89. package/dist/meeting/effectsState.js.map +1 -0
  90. package/dist/meeting/in-meeting-actions.d.ts +79 -0
  91. package/dist/meeting/in-meeting-actions.js +1 -5
  92. package/dist/meeting/in-meeting-actions.js.map +1 -1
  93. package/dist/meeting/index.d.ts +1622 -0
  94. package/dist/meeting/index.js +66 -88
  95. package/dist/meeting/index.js.map +1 -1
  96. package/dist/meeting/locusMediaRequest.d.ts +74 -0
  97. package/dist/meeting/muteState.d.ts +116 -0
  98. package/dist/meeting/request.d.ts +257 -0
  99. package/dist/meeting/request.type.d.ts +11 -0
  100. package/dist/meeting/state.d.ts +9 -0
  101. package/dist/meeting/util.d.ts +2 -0
  102. package/dist/meeting/voicea-meeting.d.ts +16 -0
  103. package/dist/meeting-info/collection.d.ts +20 -0
  104. package/dist/meeting-info/index.d.ts +57 -0
  105. package/dist/meeting-info/meeting-info-v2.d.ts +93 -0
  106. package/dist/meeting-info/request.d.ts +22 -0
  107. package/dist/meeting-info/util.d.ts +2 -0
  108. package/dist/meeting-info/utilv2.d.ts +2 -0
  109. package/dist/meetings/collection.d.ts +23 -0
  110. package/dist/meetings/index.d.ts +296 -0
  111. package/dist/meetings/meetings.types.d.ts +4 -0
  112. package/dist/meetings/request.d.ts +27 -0
  113. package/dist/meetings/util.d.ts +18 -0
  114. package/dist/member/index.d.ts +148 -0
  115. package/dist/member/member.types.d.ts +11 -0
  116. package/dist/member/member.types.js +18 -0
  117. package/dist/member/member.types.js.map +1 -0
  118. package/dist/member/types.d.ts +32 -0
  119. package/dist/member/util.d.ts +2 -0
  120. package/dist/members/collection.d.ts +24 -0
  121. package/dist/members/index.d.ts +308 -0
  122. package/dist/members/request.d.ts +58 -0
  123. package/dist/members/types.d.ts +25 -0
  124. package/dist/members/util.d.ts +2 -0
  125. package/dist/metrics/config.d.ts +169 -0
  126. package/dist/metrics/config.js +289 -0
  127. package/dist/metrics/config.js.map +1 -0
  128. package/dist/metrics/constants.d.ts +59 -0
  129. package/dist/metrics/constants.js +0 -1
  130. package/dist/metrics/constants.js.map +1 -1
  131. package/dist/metrics/index.d.ts +152 -0
  132. package/dist/multistream/mediaRequestManager.d.ts +119 -0
  133. package/dist/multistream/receiveSlot.d.ts +68 -0
  134. package/dist/multistream/receiveSlotManager.d.ts +56 -0
  135. package/dist/multistream/remoteMedia.d.ts +72 -0
  136. package/dist/multistream/remoteMediaGroup.d.ts +49 -0
  137. package/dist/multistream/remoteMediaManager.d.ts +300 -0
  138. package/dist/multistream/sendSlotManager.d.ts +69 -0
  139. package/dist/networkQualityMonitor/index.d.ts +70 -0
  140. package/dist/networkQualityMonitor/index.js +226 -0
  141. package/dist/networkQualityMonitor/index.js.map +1 -0
  142. package/dist/peer-connection-manager/index.d.ts +6 -0
  143. package/dist/peer-connection-manager/index.js +671 -0
  144. package/dist/peer-connection-manager/index.js.map +1 -0
  145. package/dist/peer-connection-manager/util.d.ts +6 -0
  146. package/dist/peer-connection-manager/util.js +110 -0
  147. package/dist/peer-connection-manager/util.js.map +1 -0
  148. package/dist/personal-meeting-room/index.d.ts +47 -0
  149. package/dist/personal-meeting-room/request.d.ts +14 -0
  150. package/dist/personal-meeting-room/util.d.ts +2 -0
  151. package/dist/reachability/clusterReachability.d.ts +109 -0
  152. package/dist/reachability/index.d.ts +139 -0
  153. package/dist/reachability/index.js +10 -5
  154. package/dist/reachability/index.js.map +1 -1
  155. package/dist/reachability/request.d.ts +35 -0
  156. package/dist/reachability/util.d.ts +8 -0
  157. package/dist/reactions/constants.d.ts +3 -0
  158. package/dist/reactions/reactions.d.ts +4 -0
  159. package/dist/reactions/reactions.type.d.ts +32 -0
  160. package/dist/reconnection-manager/index.d.ts +112 -0
  161. package/dist/recording-controller/enums.d.ts +7 -0
  162. package/dist/recording-controller/index.d.ts +193 -0
  163. package/dist/recording-controller/util.d.ts +13 -0
  164. package/dist/roap/collection.d.ts +10 -0
  165. package/dist/roap/collection.js +63 -0
  166. package/dist/roap/collection.js.map +1 -0
  167. package/dist/roap/handler.d.ts +47 -0
  168. package/dist/roap/handler.js +279 -0
  169. package/dist/roap/handler.js.map +1 -0
  170. package/dist/roap/index.d.ts +116 -0
  171. package/dist/roap/request.d.ts +35 -0
  172. package/dist/roap/state.d.ts +9 -0
  173. package/dist/roap/state.js +127 -0
  174. package/dist/roap/state.js.map +1 -0
  175. package/dist/roap/turnDiscovery.d.ts +81 -0
  176. package/dist/roap/util.d.ts +2 -0
  177. package/dist/roap/util.js +76 -0
  178. package/dist/roap/util.js.map +1 -0
  179. package/dist/rtcMetrics/constants.d.ts +4 -0
  180. package/dist/rtcMetrics/constants.js +11 -0
  181. package/dist/rtcMetrics/constants.js.map +1 -0
  182. package/dist/rtcMetrics/index.d.ts +61 -0
  183. package/dist/rtcMetrics/index.js +197 -0
  184. package/dist/rtcMetrics/index.js.map +1 -0
  185. package/dist/statsAnalyzer/global.d.ts +118 -0
  186. package/dist/statsAnalyzer/global.js +127 -0
  187. package/dist/statsAnalyzer/global.js.map +1 -0
  188. package/dist/statsAnalyzer/index.d.ts +193 -0
  189. package/dist/statsAnalyzer/index.js +1019 -0
  190. package/dist/statsAnalyzer/index.js.map +1 -0
  191. package/dist/statsAnalyzer/mqaUtil.d.ts +22 -0
  192. package/dist/statsAnalyzer/mqaUtil.js +181 -0
  193. package/dist/statsAnalyzer/mqaUtil.js.map +1 -0
  194. package/dist/transcription/index.d.ts +64 -0
  195. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  196. package/dist/types/constants.d.ts +0 -6
  197. package/dist/types/controls-options-manager/enums.d.ts +1 -2
  198. package/dist/types/controls-options-manager/types.d.ts +1 -4
  199. package/dist/types/mediaQualityMetrics/config.d.ts +241 -0
  200. package/dist/types/meeting/in-meeting-actions.d.ts +0 -4
  201. package/dist/types/metrics/constants.d.ts +0 -1
  202. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  203. package/dist/types/reachability/index.d.ts +2 -2
  204. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  205. package/dist/types/rtcMetrics/index.d.ts +71 -0
  206. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  207. package/dist/types/statsAnalyzer/index.d.ts +217 -0
  208. package/dist/types/statsAnalyzer/mqaUtil.d.ts +48 -0
  209. package/dist/webinar/collection.d.ts +16 -0
  210. package/dist/webinar/index.d.ts +5 -0
  211. package/dist/webinar/index.js +1 -1
  212. package/package.json +22 -22
  213. package/src/constants.ts +0 -9
  214. package/src/controls-options-manager/enums.ts +0 -1
  215. package/src/controls-options-manager/types.ts +1 -6
  216. package/src/controls-options-manager/util.ts +0 -31
  217. package/src/locus-info/controlsUtils.ts +0 -15
  218. package/src/locus-info/index.ts +0 -41
  219. package/src/meeting/brbState.ts +2 -4
  220. package/src/meeting/in-meeting-actions.ts +0 -8
  221. package/src/meeting/index.ts +29 -62
  222. package/src/metrics/constants.ts +0 -1
  223. package/src/reachability/index.ts +13 -5
  224. package/test/unit/spec/controls-options-manager/util.js +0 -58
  225. package/test/unit/spec/locus-info/controlsUtils.js +0 -52
  226. package/test/unit/spec/locus-info/index.js +0 -42
  227. package/test/unit/spec/meeting/brbState.ts +2 -21
  228. package/test/unit/spec/meeting/in-meeting-actions.ts +0 -4
  229. package/test/unit/spec/meeting/index.js +27 -130
  230. package/test/unit/spec/reachability/index.ts +6 -2
@@ -0,0 +1,116 @@
1
+ import { StatelessWebexPlugin } from '@webex/webex-core';
2
+ import Meeting from '../meeting';
3
+ /**
4
+ * Roap options
5
+ * @typedef {Object} RoapOptions
6
+ * @property {String} sdp
7
+ * @property {Meeting} meeting
8
+ * @property {Number} roapSeq
9
+ * @property {Boolean} reconnect
10
+ */
11
+ /**
12
+ * @typedef {Object} SeqOptions
13
+ * @property {String} correlationId
14
+ * @property {String} mediaId
15
+ * @property {Number} seq
16
+ */
17
+ /**
18
+ * @class Roap
19
+ * @export
20
+ * @private
21
+ */
22
+ export default class Roap extends StatelessWebexPlugin {
23
+ attrs: any;
24
+ lastRoapOffer: any;
25
+ options: any;
26
+ roapHandler: any;
27
+ roapRequest: any;
28
+ turnDiscovery: any;
29
+ /**
30
+ *
31
+ * @param {Object} attrs
32
+ * @param {Object} options
33
+ */
34
+ constructor(attrs: any, options: any);
35
+ /**
36
+ * Starts listening to mercury events for Roap messages
37
+ * @param {object} data event object
38
+ * @returns {Promise}
39
+ * @private
40
+ * @memberof Roap
41
+ */
42
+ private roapEvent;
43
+ /**
44
+ *
45
+ * @param {String} correlationId correlation id of a meeting
46
+ * @param {Number} seq ROAP sequence number
47
+ * @returns {Promise}
48
+ * @private
49
+ * @memberof Roap
50
+ */
51
+ private stop;
52
+ /**
53
+ *
54
+ * @param {SeqOptions} options
55
+ * @returns {null}
56
+ * @private
57
+ * @memberof Roap
58
+ */
59
+ private sendRoapOK;
60
+ /**
61
+ * Sends a ROAP answer...
62
+ * @param {SeqOptions} options
63
+ * @param {Boolean} options.audioMuted
64
+ * @param {Boolean} options.videoMuted
65
+ * @returns {Promise}
66
+ * @private
67
+ * @memberof Roap
68
+ */
69
+ private sendRoapAnswer;
70
+ /**
71
+ * Sends a ROAP error...
72
+ * @param {Object} session
73
+ * @param {Object} locus
74
+ * @param {String} errorType
75
+ * @returns {Promise}
76
+ * @private
77
+ * @memberof Roap
78
+ */
79
+ private sendRoapError;
80
+ /**
81
+ * sends a roap media request
82
+ * @param {RoapOptions} options
83
+ * @returns {Promise}
84
+ * @private
85
+ * @memberof Roap
86
+ */
87
+ sendRoapMediaRequest(options: any): any;
88
+ /**
89
+ * sends a roap media request
90
+ * @param {RoapOptions} options
91
+ * @returns {Promise}
92
+ * @private
93
+ * @memberof Roap
94
+ */
95
+ sendRoapCallRequest: (options: any) => any;
96
+ /**
97
+ * Called when the roap sequence is finished (completed successfully or failed)
98
+ * @param {String} correlationId id of the meeting affected
99
+ * @param {String} sequenceId the id of the finished sequence
100
+ * @returns {undefined}
101
+ * @private
102
+ * @memberof Roap
103
+ */
104
+ private roapFinished;
105
+ /**
106
+ * Performs a TURN server discovery procedure, which involves exchanging
107
+ * some roap messages with the server. This exchange has to be done before
108
+ * any other roap messages are sent
109
+ *
110
+ * @param {Meeting} meeting
111
+ * @param {Boolean} isReconnecting should be set to true if this is a new
112
+ * media connection just after a reconnection
113
+ * @returns {Promise}
114
+ */
115
+ doTurnDiscovery(meeting: Meeting, isReconnecting: boolean): any;
116
+ }
@@ -0,0 +1,35 @@
1
+ import { StatelessWebexPlugin } from '@webex/webex-core';
2
+ /**
3
+ * @class RoapRequest
4
+ */
5
+ export default class RoapRequest extends StatelessWebexPlugin {
6
+ /**
7
+ * Joins a meeting via ROAP
8
+ * @param {Object} options
9
+ * @returns {Promise} returns a promise that resolves/rejects whatever the request does
10
+ */
11
+ attachRechabilityData(localSdp: any): any;
12
+ joinMeetingWithRoap(options: any): Promise<any>;
13
+ /**
14
+ * Sends a ROAP message
15
+ * @param {Object} options
16
+ * @param {Object} options.roapMessage
17
+ * @param {String} options.locusSelfUrl
18
+ * @param {String} options.mediaId
19
+ * @param {String} options.correlationId
20
+ * @param {Boolean} options.audioMuted
21
+ * @param {Boolean} options.videoMuted
22
+ * @param {String} options.meetingId
23
+ * @returns {Promise} returns the response/failure of the request
24
+ */
25
+ sendRoap(options: {
26
+ roapMessage: any;
27
+ locusSelfUrl: string;
28
+ mediaId: string;
29
+ correlationId: string;
30
+ audioMuted: boolean;
31
+ videoMuted: boolean;
32
+ meetingId: string;
33
+ preferTranscoding?: boolean;
34
+ }): any;
35
+ }
@@ -0,0 +1,9 @@
1
+ declare const RoapStateMachine: {
2
+ /**
3
+ * @param {Roap} roapRef
4
+ * initializes the state machine
5
+ * @returns {StateMachine} an instance of a state machine
6
+ */
7
+ createState(): any;
8
+ };
9
+ export default RoapStateMachine;
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _javascriptStateMachine = _interopRequireDefault(require("javascript-state-machine"));
10
+ var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
11
+ var _constants = require("../constants");
12
+ var shouldStep = function shouldStep(roap, meeting) {
13
+ var messageType = roap.msg.messageType;
14
+ if (meeting) {
15
+ if (messageType === _constants._OFFER_ && roap.remote && meeting.shareStatus === _constants._REQUESTED_) {
16
+ // The peer-connection is waiting for answer but got an offer Reset. Try to
17
+ // send the offer later after you accept the answer
18
+ return false;
19
+ }
20
+ // Assuming the mercury event has come first before the response for the event
21
+ // we have to wait for the response and trigger the ROAP request later on
22
+ if (!meeting.mediaProperties.peerConnection && messageType === _constants._ANSWER_) {
23
+ return false;
24
+ }
25
+ }
26
+ _loggerProxy.default.logger.log('Roap:state#shouldStep --> RoapStateMachine: PeerConnectionState, ', meeting.mediaProperties.peerConnection.signalingState);
27
+ _loggerProxy.default.logger.log('Roap:state#shouldStep --> RoapStateMachine: success save proceeding with transition, ', roap.msg);
28
+ return true;
29
+ };
30
+ var handleTransition = function handleTransition(value, signal, meeting) {
31
+ _loggerProxy.default.logger.log("Roap:state#handleTransition --> current ".concat(value, " to ").concat(signal));
32
+ switch (value) {
33
+ case _constants.ROAP.ROAP_STATE.INIT:
34
+ if (signal === _constants.ROAP.ROAP_SIGNAL.RX_OFFER) {
35
+ return _constants.ROAP.ROAP_STATE.WAIT_TX_ANSWER;
36
+ }
37
+ if (signal === _constants.ROAP.ROAP_SIGNAL.TX_OFFER) {
38
+ return _constants.ROAP.ROAP_STATE.WAIT_RX_ANSWER;
39
+ }
40
+ return value;
41
+ case _constants.ROAP.ROAP_STATE.WAIT_RX_OFFER:
42
+ return value;
43
+ case _constants.ROAP.ROAP_STATE.WAIT_RX_ANSWER:
44
+ if (signal === _constants.ROAP.ROAP_SIGNAL.RX_ANSWER) {
45
+ // There is a race condition where the /call response comes after mercury event from the server
46
+ // As mercury sends roap event if it didnt get back a response. We can send the roap ok after that
47
+ if (meeting.mediaId) {
48
+ return _constants.ROAP.ROAP_STATE.WAIT_TX_OK;
49
+ }
50
+ _loggerProxy.default.logger.error('Roap:state#handleTransition --> Race Condition no mediaId, continuing.');
51
+ return value;
52
+ }
53
+ if (signal === _constants.ROAP.ROAP_SIGNAL.RX_OFFER) {
54
+ return _constants.ROAP.ROAP_STATE.GLARE;
55
+ }
56
+ return value;
57
+ case _constants.ROAP.ROAP_STATE.WAIT_TX_OFFER:
58
+ return value;
59
+ case _constants.ROAP.ROAP_STATE.WAIT_TX_ANSWER:
60
+ if (signal === _constants.ROAP.ROAP_SIGNAL.TX_ANSWER) {
61
+ return _constants.ROAP.ROAP_STATE.WAIT_RX_OK;
62
+ }
63
+ return value;
64
+ case _constants.ROAP.ROAP_STATE.WAIT_TX_OK:
65
+ if (signal === _constants.ROAP.ROAP_SIGNAL.TX_OK) {
66
+ return _constants.ROAP.ROAP_STATE.INIT;
67
+ }
68
+ return value;
69
+ case _constants.ROAP.ROAP_STATE.WAIT_RX_OK:
70
+ if (signal === _constants.ROAP.ROAP_SIGNAL.RX_OK) {
71
+ return _constants.ROAP.ROAP_STATE.INIT;
72
+ }
73
+ return value;
74
+ case _constants.ROAP.ROAP_STATE.ERROR:
75
+ // eslint-disable-next-line no-warning-comments
76
+ // TODO: resolve error state. Add a signal constant and handle the cleanup
77
+ return _constants.ROAP.ROAP_STATE.INIT;
78
+ case _constants.ROAP.ROAP_STATE.GLARE:
79
+ return _constants.ROAP.ROAP_STATE.WAIT_RX_ANSWER;
80
+ default:
81
+ return value;
82
+ }
83
+ };
84
+ var RoapStateMachine = {
85
+ /**
86
+ * @param {Roap} roapRef
87
+ * initializes the state machine
88
+ * @returns {StateMachine} an instance of a state machine
89
+ */
90
+ createState: function createState() {
91
+ var RoapState = _javascriptStateMachine.default.factory({
92
+ init: _constants.ROAP.ROAP_STATE.INIT,
93
+ transitions: [{
94
+ name: _constants.ROAP.ROAP_TRANSITIONS.STEP,
95
+ from: '*',
96
+ /**
97
+ * Method to handle the transitions between states
98
+ * @param {String} signal
99
+ * @param {Meeting} meeting instance of a Meeting
100
+ * @param {Object} roap
101
+ * @returns {String} new state value
102
+ */
103
+ to: function to(signal, meeting, roap) {
104
+ var value = this.state;
105
+ if (!shouldStep(roap, meeting)) {
106
+ return value;
107
+ }
108
+ return handleTransition(value, signal, meeting);
109
+ }
110
+ }],
111
+ methods: {
112
+ /**
113
+ * Event that fires after we've transitioned to a new state
114
+ * @param {Object} transition
115
+ * @returns {null}
116
+ */
117
+ onAfterStep: function onAfterStep(transition) {
118
+ _loggerProxy.default.logger.log("Roap:state#onAfterStep --> RoapStateMachine->onAfterStep#fired! State changed from '".concat(transition.from, "' to '").concat(transition.to, "' with transition '").concat(transition.transition, "''."));
119
+ }
120
+ }
121
+ });
122
+ return new RoapState();
123
+ }
124
+ };
125
+ var _default = RoapStateMachine;
126
+ exports.default = _default;
127
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_javascriptStateMachine","_interopRequireDefault","require","_loggerProxy","_constants","shouldStep","roap","meeting","messageType","msg","_OFFER_","remote","shareStatus","_REQUESTED_","mediaProperties","peerConnection","_ANSWER_","LoggerProxy","logger","log","signalingState","handleTransition","value","signal","concat","ROAP","ROAP_STATE","INIT","ROAP_SIGNAL","RX_OFFER","WAIT_TX_ANSWER","TX_OFFER","WAIT_RX_ANSWER","WAIT_RX_OFFER","RX_ANSWER","mediaId","WAIT_TX_OK","error","GLARE","WAIT_TX_OFFER","TX_ANSWER","WAIT_RX_OK","TX_OK","RX_OK","ERROR","RoapStateMachine","createState","RoapState","StateMachine","factory","init","transitions","name","ROAP_TRANSITIONS","STEP","from","to","state","methods","onAfterStep","transition","_default","exports","default"],"sources":["state.ts"],"sourcesContent":["import StateMachine from 'javascript-state-machine';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {ROAP, _OFFER_, _ANSWER_, _REQUESTED_} from '../constants';\nimport Meeting from '../meeting';\n\nconst shouldStep = (roap, meeting) => {\n const {messageType} = roap.msg;\n\n if (meeting) {\n if (messageType === _OFFER_ && roap.remote && meeting.shareStatus === _REQUESTED_) {\n // The peer-connection is waiting for answer but got an offer Reset. Try to\n // send the offer later after you accept the answer\n return false;\n }\n // Assuming the mercury event has come first before the response for the event\n // we have to wait for the response and trigger the ROAP request later on\n if (!meeting.mediaProperties.peerConnection && messageType === _ANSWER_) {\n return false;\n }\n }\n LoggerProxy.logger.log(\n 'Roap:state#shouldStep --> RoapStateMachine: PeerConnectionState, ',\n meeting.mediaProperties.peerConnection.signalingState\n );\n LoggerProxy.logger.log(\n 'Roap:state#shouldStep --> RoapStateMachine: success save proceeding with transition, ',\n roap.msg\n );\n\n return true;\n};\n\nconst handleTransition = (value, signal, meeting) => {\n LoggerProxy.logger.log(`Roap:state#handleTransition --> current ${value} to ${signal}`);\n\n switch (value) {\n case ROAP.ROAP_STATE.INIT:\n if (signal === ROAP.ROAP_SIGNAL.RX_OFFER) {\n return ROAP.ROAP_STATE.WAIT_TX_ANSWER;\n }\n if (signal === ROAP.ROAP_SIGNAL.TX_OFFER) {\n return ROAP.ROAP_STATE.WAIT_RX_ANSWER;\n }\n\n return value;\n\n case ROAP.ROAP_STATE.WAIT_RX_OFFER:\n return value;\n\n case ROAP.ROAP_STATE.WAIT_RX_ANSWER:\n if (signal === ROAP.ROAP_SIGNAL.RX_ANSWER) {\n // There is a race condition where the /call response comes after mercury event from the server\n // As mercury sends roap event if it didnt get back a response. We can send the roap ok after that\n if (meeting.mediaId) {\n return ROAP.ROAP_STATE.WAIT_TX_OK;\n }\n LoggerProxy.logger.error(\n 'Roap:state#handleTransition --> Race Condition no mediaId, continuing.'\n );\n\n return value;\n }\n\n if (signal === ROAP.ROAP_SIGNAL.RX_OFFER) {\n return ROAP.ROAP_STATE.GLARE;\n }\n\n return value;\n\n case ROAP.ROAP_STATE.WAIT_TX_OFFER:\n return value;\n\n case ROAP.ROAP_STATE.WAIT_TX_ANSWER:\n if (signal === ROAP.ROAP_SIGNAL.TX_ANSWER) {\n return ROAP.ROAP_STATE.WAIT_RX_OK;\n }\n\n return value;\n\n case ROAP.ROAP_STATE.WAIT_TX_OK:\n if (signal === ROAP.ROAP_SIGNAL.TX_OK) {\n return ROAP.ROAP_STATE.INIT;\n }\n\n return value;\n\n case ROAP.ROAP_STATE.WAIT_RX_OK:\n if (signal === ROAP.ROAP_SIGNAL.RX_OK) {\n return ROAP.ROAP_STATE.INIT;\n }\n\n return value;\n\n case ROAP.ROAP_STATE.ERROR:\n // eslint-disable-next-line no-warning-comments\n // TODO: resolve error state. Add a signal constant and handle the cleanup\n return ROAP.ROAP_STATE.INIT;\n\n case ROAP.ROAP_STATE.GLARE:\n return ROAP.ROAP_STATE.WAIT_RX_ANSWER;\n default:\n return value;\n }\n};\n\nconst RoapStateMachine = {\n /**\n * @param {Roap} roapRef\n * initializes the state machine\n * @returns {StateMachine} an instance of a state machine\n */\n createState() {\n const RoapState = StateMachine.factory({\n init: ROAP.ROAP_STATE.INIT,\n transitions: [\n {\n name: ROAP.ROAP_TRANSITIONS.STEP,\n from: '*',\n /**\n * Method to handle the transitions between states\n * @param {String} signal\n * @param {Meeting} meeting instance of a Meeting\n * @param {Object} roap\n * @returns {String} new state value\n */\n to(signal: string, meeting: Meeting, roap: object) {\n const value = this.state;\n\n if (!shouldStep(roap, meeting)) {\n return value;\n }\n\n return handleTransition(value, signal, meeting);\n },\n },\n ],\n methods: {\n /**\n * Event that fires after we've transitioned to a new state\n * @param {Object} transition\n * @returns {null}\n */\n onAfterStep(transition: any) {\n LoggerProxy.logger.log(\n `Roap:state#onAfterStep --> RoapStateMachine->onAfterStep#fired! State changed from '${transition.from}' to '${transition.to}' with transition '${transition.transition}''.`\n );\n },\n },\n });\n\n return new RoapState();\n },\n};\n\nexport default RoapStateMachine;\n"],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import RoapRequest from './request';
2
+ import Meeting from '../meeting';
3
+ /**
4
+ * Handles the process of finding out TURN server information from Linus.
5
+ * This is achieved by sending a TURN_DISCOVERY_REQUEST.
6
+ */
7
+ export default class TurnDiscovery {
8
+ private roapRequest;
9
+ private defer?;
10
+ private turnInfo;
11
+ private responseTimer?;
12
+ /**
13
+ * Constructor
14
+ *
15
+ * @param {RoapRequest} roapRequest
16
+ */
17
+ constructor(roapRequest: RoapRequest);
18
+ /**
19
+ * waits for TURN_DISCOVERY_RESPONSE message to arrive
20
+ *
21
+ * @returns {Promise}
22
+ * @private
23
+ * @memberof Roap
24
+ */
25
+ private waitForTurnDiscoveryResponse;
26
+ /**
27
+ * handles TURN_DISCOVERY_RESPONSE roap message
28
+ *
29
+ * @param {Object} roapMessage
30
+ * @returns {void}
31
+ * @public
32
+ * @memberof Roap
33
+ */
34
+ handleTurnDiscoveryResponse(roapMessage: object): void;
35
+ /**
36
+ * sends the TURN_DISCOVERY_REQUEST roap request
37
+ *
38
+ * @param {Meeting} meeting
39
+ * @param {Boolean} isReconnecting
40
+ * @returns {Promise}
41
+ * @private
42
+ * @memberof Roap
43
+ */
44
+ private sendRoapTurnDiscoveryRequest;
45
+ /**
46
+ * Sends the OK message that server expects to receive
47
+ * after it sends us TURN_DISCOVERY_RESPONSE
48
+ *
49
+ * @param {Meeting} meeting
50
+ * @returns {Promise}
51
+ */
52
+ sendRoapOK(meeting: Meeting): any;
53
+ /**
54
+ * Retrieves TURN server information from the backend by doing
55
+ * a roap message exchange:
56
+ * client server
57
+ * | -----TURN_DISCOVERY_REQUEST-----> |
58
+ * | <----TURN_DISCOVERY_RESPONSE----- |
59
+ * | --------------OK----------------> |
60
+ *
61
+ * @param {Meeting} meeting
62
+ * @param {Boolean} isReconnecting should be set to true if this is a new
63
+ * media connection just after a reconnection
64
+ * @returns {Promise}
65
+ */
66
+ doTurnDiscovery(meeting: Meeting, isReconnecting?: boolean): Promise<any>;
67
+ /**
68
+ * Gets the reason why reachability is skipped.
69
+ *
70
+ * @param {Meeting} meeting
71
+ * @returns {Promise<string>} Promise with empty string if reachability is not skipped or a reason if it is skipped
72
+ */
73
+ private getSkipReason;
74
+ /**
75
+ * Checks if TURN discovery is skipped.
76
+ *
77
+ * @param {Meeting} meeting
78
+ * @returns {Boolean} true if TURN discovery is being skipped, false if it is being done
79
+ */
80
+ isSkipped(meeting: any): Promise<boolean>;
81
+ }
@@ -0,0 +1,2 @@
1
+ declare const RoapUtil: any;
2
+ export default RoapUtil;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
10
+ var _peerConnectionManager = _interopRequireDefault(require("../peer-connection-manager"));
11
+ var _constants = require("../constants");
12
+ var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
13
+ var _parameter = _interopRequireDefault(require("../common/errors/parameter"));
14
+ var RoapUtil = {};
15
+ var ROAP_ANSWER = _constants._ANSWER_.toLowerCase();
16
+ RoapUtil.shouldHandleMedia = function (meeting) {
17
+ var offer = meeting.mediaProperties.peerConnection && meeting.mediaProperties.peerConnection.signalingState === _constants.SDP.HAVE_LOCAL_OFFER;
18
+ if (offer) {
19
+ return false;
20
+ }
21
+ return true;
22
+ };
23
+ RoapUtil.handleError = function (pc) {
24
+ return _peerConnectionManager.default.rollBackLocalDescription({
25
+ peerConnection: pc
26
+ }).then(function () {
27
+ return _promise.default.resolve(true);
28
+ }).catch(function (err) {
29
+ _loggerProxy.default.logger.error("Roap:util#handleError --> ".concat(err));
30
+ return _promise.default.reject(err);
31
+ });
32
+ };
33
+ RoapUtil.findError = function (messageType, errorType, type) {
34
+ return (type === _constants.ROAP.RECEIVE_ROAP_MSG || type === _constants.ROAP.SEND_ROAP_MSG) && messageType === _constants._ERROR_ && errorType === _constants._CONFLICT_;
35
+ };
36
+ RoapUtil.ensureMeeting = function (meeting, type) {
37
+ if (type === _constants.ROAP.RECEIVE_ROAP_MSG || type === _constants.ROAP.SEND_ROAP_MSG || type === _constants.ROAP.SEND_ROAP_MSG_SUCCESS) {
38
+ if (!meeting) {
39
+ return false;
40
+ }
41
+ }
42
+ return true;
43
+ };
44
+ RoapUtil.updatePeerConnection = function (meeting, session) {
45
+ return _peerConnectionManager.default.updatePeerConnection({
46
+ offerSdp: session.OFFER.sdps,
47
+ peerConnection: meeting.mediaProperties.peerConnection
48
+ }, {
49
+ meetingId: meeting.id,
50
+ remoteQualityLevel: meeting.mediaProperties.remoteQualityLevel
51
+ }).then(function (res) {
52
+ meeting.roap.lastRoapOffer = session.OFFER.sdps;
53
+ return res;
54
+ });
55
+ };
56
+ RoapUtil.setRemoteDescription = function (meeting, session) {
57
+ _loggerProxy.default.logger.info("Roap:util#setRemoteDescription --> Transmit WAIT_TX_OK, correlationId: ".concat(meeting.correlationId));
58
+ if (!(meeting && meeting.mediaProperties.peerConnection)) {
59
+ _loggerProxy.default.logger.error("Roap:util#setRemoteDescription --> DANGER no media or screen peer connection, correlationId: ".concat(meeting.correlationId));
60
+ return _promise.default.reject(new _parameter.default('Must provide a media or screen peer connection'));
61
+ }
62
+ return _peerConnectionManager.default.setRemoteSessionDetails(meeting.mediaProperties.peerConnection, ROAP_ANSWER, session.ANSWER.sdps[0], meeting.id).then(function () {
63
+ _loggerProxy.default.logger.info("Roap:util#setRemoteDescription --> Success for correlationId: ".concat(meeting.correlationId));
64
+ return {
65
+ seq: session.ANSWER.seq,
66
+ mediaId: meeting.mediaId,
67
+ correlationId: meeting.correlationId
68
+ };
69
+ }).catch(function (err) {
70
+ _loggerProxy.default.logger.error("Roap:util#setRemoteDescription --> ".concat(err));
71
+ throw err;
72
+ });
73
+ };
74
+ var _default = RoapUtil;
75
+ exports.default = _default;
76
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_peerConnectionManager","_interopRequireDefault","require","_constants","_loggerProxy","_parameter","RoapUtil","ROAP_ANSWER","_ANSWER_","toLowerCase","shouldHandleMedia","meeting","offer","mediaProperties","peerConnection","signalingState","SDP","HAVE_LOCAL_OFFER","handleError","pc","PeerConnectionManager","rollBackLocalDescription","then","_promise","default","resolve","catch","err","LoggerProxy","logger","error","concat","reject","findError","messageType","errorType","type","ROAP","RECEIVE_ROAP_MSG","SEND_ROAP_MSG","_ERROR_","_CONFLICT_","ensureMeeting","SEND_ROAP_MSG_SUCCESS","updatePeerConnection","session","offerSdp","OFFER","sdps","meetingId","id","remoteQualityLevel","res","roap","lastRoapOffer","setRemoteDescription","info","correlationId","ParameterError","setRemoteSessionDetails","ANSWER","seq","mediaId","_default","exports"],"sources":["util.ts"],"sourcesContent":["import PeerConnectionManager from '../peer-connection-manager';\nimport {_ANSWER_, _ERROR_, _CONFLICT_, ROAP, SDP} from '../constants';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport ParameterError from '../common/errors/parameter';\n\nconst RoapUtil: any = {};\nconst ROAP_ANSWER = _ANSWER_.toLowerCase();\n\nRoapUtil.shouldHandleMedia = (meeting) => {\n const offer =\n meeting.mediaProperties.peerConnection &&\n meeting.mediaProperties.peerConnection.signalingState === SDP.HAVE_LOCAL_OFFER;\n\n if (offer) {\n return false;\n }\n\n return true;\n};\n\nRoapUtil.handleError = (pc) =>\n PeerConnectionManager.rollBackLocalDescription({peerConnection: pc})\n .then(() => Promise.resolve(true))\n .catch((err) => {\n LoggerProxy.logger.error(`Roap:util#handleError --> ${err}`);\n\n return Promise.reject(err);\n });\n\nRoapUtil.findError = (messageType, errorType, type) =>\n (type === ROAP.RECEIVE_ROAP_MSG || type === ROAP.SEND_ROAP_MSG) &&\n messageType === _ERROR_ &&\n errorType === _CONFLICT_;\n\nRoapUtil.ensureMeeting = (meeting, type) => {\n if (\n type === ROAP.RECEIVE_ROAP_MSG ||\n type === ROAP.SEND_ROAP_MSG ||\n type === ROAP.SEND_ROAP_MSG_SUCCESS\n ) {\n if (!meeting) {\n return false;\n }\n }\n\n return true;\n};\n\nRoapUtil.updatePeerConnection = (meeting, session) =>\n PeerConnectionManager.updatePeerConnection(\n {\n offerSdp: session.OFFER.sdps,\n peerConnection: meeting.mediaProperties.peerConnection,\n },\n {\n meetingId: meeting.id,\n remoteQualityLevel: meeting.mediaProperties.remoteQualityLevel,\n }\n ).then((res) => {\n meeting.roap.lastRoapOffer = session.OFFER.sdps;\n\n return res;\n });\n\nRoapUtil.setRemoteDescription = (meeting, session) => {\n LoggerProxy.logger.info(\n `Roap:util#setRemoteDescription --> Transmit WAIT_TX_OK, correlationId: ${meeting.correlationId}`\n );\n if (!(meeting && meeting.mediaProperties.peerConnection)) {\n LoggerProxy.logger.error(\n `Roap:util#setRemoteDescription --> DANGER no media or screen peer connection, correlationId: ${meeting.correlationId}`\n );\n\n return Promise.reject(new ParameterError('Must provide a media or screen peer connection'));\n }\n\n return PeerConnectionManager.setRemoteSessionDetails(\n meeting.mediaProperties.peerConnection,\n ROAP_ANSWER,\n session.ANSWER.sdps[0],\n meeting.id\n )\n .then(() => {\n LoggerProxy.logger.info(\n `Roap:util#setRemoteDescription --> Success for correlationId: ${meeting.correlationId}`\n );\n\n return {\n seq: session.ANSWER.seq,\n mediaId: meeting.mediaId,\n correlationId: meeting.correlationId,\n };\n })\n .catch((err) => {\n LoggerProxy.logger.error(`Roap:util#setRemoteDescription --> ${err}`);\n throw err;\n });\n};\n\nexport default RoapUtil;\n"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ declare const RTC_METRICS: {
2
+ APP_ID: string;
3
+ };
4
+ export { RTC_METRICS as default };
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ _Object$defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var RTC_METRICS = exports.default = {
9
+ APP_ID: 'FFB51ED5-4319-4C55-8303-B1F2FCCDE231'
10
+ };
11
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["RTC_METRICS","exports","default","APP_ID"],"sources":["constants.ts"],"sourcesContent":["const RTC_METRICS = {APP_ID: 'FFB51ED5-4319-4C55-8303-B1F2FCCDE231'};\n\nexport {RTC_METRICS as default};\n"],"mappings":";;;;;;;AAAA,IAAMA,WAAW,GAAAC,OAAA,CAAAC,OAAA,GAAG;EAACC,MAAM,EAAE;AAAsC,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Rtc Metrics
3
+ */
4
+ export default class RtcMetrics {
5
+ /**
6
+ * Array of MetricData items to be sent to the metrics service.
7
+ */
8
+ metricsQueue: any[];
9
+ intervalId: number;
10
+ webex: any;
11
+ meetingId: string;
12
+ correlationId: string;
13
+ connectionId: string;
14
+ /**
15
+ * Initialize the interval.
16
+ *
17
+ * @param {object} webex - The main `webex` object.
18
+ * @param {string} meetingId - The meeting id.
19
+ * @param {string} correlationId - The correlation id.
20
+ */
21
+ constructor(webex: any, meetingId: any, correlationId: any);
22
+ /**
23
+ * Check to see if the metrics queue has any items.
24
+ *
25
+ * @returns {void}
26
+ */
27
+ sendMetricsInQueue(): void;
28
+ /**
29
+ * Add metrics items to the metrics queue.
30
+ *
31
+ * @param {object} data - An object with a payload array of metrics items.
32
+ *
33
+ * @returns {void}
34
+ */
35
+ addMetrics(data: any): void;
36
+ /**
37
+ * Clear the metrics interval.
38
+ *
39
+ * @returns {void}
40
+ */
41
+ closeMetrics(): void;
42
+ /**
43
+ * Anonymize IP addresses.
44
+ *
45
+ * @param {array} stats - An RTCStatsReport organized into an array of strings.
46
+ * @returns {string}
47
+ */
48
+ anonymizeIp(stats: string): string;
49
+ /**
50
+ * Set a new connection id.
51
+ *
52
+ * @returns {void}
53
+ */
54
+ private setNewConnectionId;
55
+ /**
56
+ * Send metrics to the metrics service.
57
+ *
58
+ * @returns {void}
59
+ */
60
+ private sendMetrics;
61
+ }