@webex/internal-media-core 0.0.2-beta → 0.0.5-beta

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 (124) hide show
  1. package/dist/cjs/index.js +13246 -0
  2. package/dist/esm/index.js +1342 -762
  3. package/dist/types/Media/Effects/BNR/Bnr.d.ts.map +1 -1
  4. package/dist/types/Media/Effects/BNR/BnrMock.d.ts.map +1 -1
  5. package/dist/types/MediaConnection/MediaConnection.d.ts.map +1 -1
  6. package/dist/types/MediaConnection/config.d.ts +11 -0
  7. package/dist/types/MediaConnection/config.d.ts.map +1 -1
  8. package/dist/types/MediaConnection/logger.d.ts +1 -1
  9. package/dist/types/MediaConnection/logger.d.ts.map +1 -1
  10. package/dist/types/MediaConnection/utils.d.ts +3 -0
  11. package/dist/types/MediaConnection/utils.d.ts.map +1 -1
  12. package/dist/types/MediaConnection/utils.test-fixtures.d.ts +10 -0
  13. package/dist/types/MediaConnection/utils.test-fixtures.d.ts.map +1 -1
  14. package/package.json +13 -8
  15. package/dist/transpiled/Logger/index.js +0 -41
  16. package/dist/transpiled/Logger/index.js.map +0 -1
  17. package/dist/transpiled/Media/Device/Device.js +0 -21
  18. package/dist/transpiled/Media/Device/Device.js.map +0 -1
  19. package/dist/transpiled/Media/Device/DeviceMocks.js +0 -65
  20. package/dist/transpiled/Media/Device/DeviceMocks.js.map +0 -1
  21. package/dist/transpiled/Media/Device/index.js +0 -2
  22. package/dist/transpiled/Media/Device/index.js.map +0 -1
  23. package/dist/transpiled/Media/Effects/BNR/Bnr.integration-test.js +0 -47
  24. package/dist/transpiled/Media/Effects/BNR/Bnr.integration-test.js.map +0 -1
  25. package/dist/transpiled/Media/Effects/BNR/Bnr.js +0 -187
  26. package/dist/transpiled/Media/Effects/BNR/Bnr.js.map +0 -1
  27. package/dist/transpiled/Media/Effects/BNR/Bnr.test.js +0 -37
  28. package/dist/transpiled/Media/Effects/BNR/Bnr.test.js.map +0 -1
  29. package/dist/transpiled/Media/Effects/BNR/BnrMock.js +0 -92
  30. package/dist/transpiled/Media/Effects/BNR/BnrMock.js.map +0 -1
  31. package/dist/transpiled/Media/Effects/BNR/index.js +0 -2
  32. package/dist/transpiled/Media/Effects/BNR/index.js.map +0 -1
  33. package/dist/transpiled/Media/Media.integration-test.js +0 -40
  34. package/dist/transpiled/Media/Media.integration-test.js.map +0 -1
  35. package/dist/transpiled/Media/Media.test.js +0 -291
  36. package/dist/transpiled/Media/Media.test.js.map +0 -1
  37. package/dist/transpiled/Media/Track/BufferSourceAudioTrack.js +0 -4
  38. package/dist/transpiled/Media/Track/BufferSourceAudioTrack.js.map +0 -1
  39. package/dist/transpiled/Media/Track/CameraVideoTrack.js +0 -4
  40. package/dist/transpiled/Media/Track/CameraVideoTrack.js.map +0 -1
  41. package/dist/transpiled/Media/Track/LocalAudioTrack.js +0 -4
  42. package/dist/transpiled/Media/Track/LocalAudioTrack.js.map +0 -1
  43. package/dist/transpiled/Media/Track/LocalTrack.js +0 -4
  44. package/dist/transpiled/Media/Track/LocalTrack.js.map +0 -1
  45. package/dist/transpiled/Media/Track/LocalVideoTrack.js +0 -4
  46. package/dist/transpiled/Media/Track/LocalVideoTrack.js.map +0 -1
  47. package/dist/transpiled/Media/Track/MicrophoneAudioTrack.js +0 -4
  48. package/dist/transpiled/Media/Track/MicrophoneAudioTrack.js.map +0 -1
  49. package/dist/transpiled/Media/Track/RemoteAudioTrack.js +0 -4
  50. package/dist/transpiled/Media/Track/RemoteAudioTrack.js.map +0 -1
  51. package/dist/transpiled/Media/Track/RemoteTrack.js +0 -4
  52. package/dist/transpiled/Media/Track/RemoteTrack.js.map +0 -1
  53. package/dist/transpiled/Media/Track/RemoteVideoTrack.js +0 -4
  54. package/dist/transpiled/Media/Track/RemoteVideoTrack.js.map +0 -1
  55. package/dist/transpiled/Media/Track/Track.integration-test.js +0 -118
  56. package/dist/transpiled/Media/Track/Track.integration-test.js.map +0 -1
  57. package/dist/transpiled/Media/Track/Track.js +0 -120
  58. package/dist/transpiled/Media/Track/Track.js.map +0 -1
  59. package/dist/transpiled/Media/Track/Track.test.js +0 -26
  60. package/dist/transpiled/Media/Track/Track.test.js.map +0 -1
  61. package/dist/transpiled/Media/Track/TrackMock.js +0 -109
  62. package/dist/transpiled/Media/Track/TrackMock.js.map +0 -1
  63. package/dist/transpiled/Media/Track/Utils.js +0 -31
  64. package/dist/transpiled/Media/Track/Utils.js.map +0 -1
  65. package/dist/transpiled/Media/Track/index.js +0 -2
  66. package/dist/transpiled/Media/Track/index.js.map +0 -1
  67. package/dist/transpiled/Media/index.js +0 -401
  68. package/dist/transpiled/Media/index.js.map +0 -1
  69. package/dist/transpiled/MediaConnection/EventEmitter.js +0 -4
  70. package/dist/transpiled/MediaConnection/EventEmitter.js.map +0 -1
  71. package/dist/transpiled/MediaConnection/MediaConnection.integration-test.js +0 -218
  72. package/dist/transpiled/MediaConnection/MediaConnection.integration-test.js.map +0 -1
  73. package/dist/transpiled/MediaConnection/MediaConnection.js +0 -357
  74. package/dist/transpiled/MediaConnection/MediaConnection.js.map +0 -1
  75. package/dist/transpiled/MediaConnection/MediaConnection.test.js +0 -427
  76. package/dist/transpiled/MediaConnection/MediaConnection.test.js.map +0 -1
  77. package/dist/transpiled/MediaConnection/RoapMediaConnection.integration-test.js +0 -368
  78. package/dist/transpiled/MediaConnection/RoapMediaConnection.integration-test.js.map +0 -1
  79. package/dist/transpiled/MediaConnection/RoapMediaConnection.js +0 -148
  80. package/dist/transpiled/MediaConnection/RoapMediaConnection.js.map +0 -1
  81. package/dist/transpiled/MediaConnection/RoapMediaConnection.test.js +0 -320
  82. package/dist/transpiled/MediaConnection/RoapMediaConnection.test.js.map +0 -1
  83. package/dist/transpiled/MediaConnection/config.js +0 -2
  84. package/dist/transpiled/MediaConnection/config.js.map +0 -1
  85. package/dist/transpiled/MediaConnection/eventTypes.js +0 -36
  86. package/dist/transpiled/MediaConnection/eventTypes.js.map +0 -1
  87. package/dist/transpiled/MediaConnection/index.js +0 -4
  88. package/dist/transpiled/MediaConnection/index.js.map +0 -1
  89. package/dist/transpiled/MediaConnection/logger.js +0 -22
  90. package/dist/transpiled/MediaConnection/logger.js.map +0 -1
  91. package/dist/transpiled/MediaConnection/roap.js +0 -399
  92. package/dist/transpiled/MediaConnection/roap.js.map +0 -1
  93. package/dist/transpiled/MediaConnection/roap.test.js +0 -873
  94. package/dist/transpiled/MediaConnection/roap.test.js.map +0 -1
  95. package/dist/transpiled/MediaConnection/roap.typegen.js +0 -2
  96. package/dist/transpiled/MediaConnection/roap.typegen.js.map +0 -1
  97. package/dist/transpiled/MediaConnection/testUtils/EventListener.js +0 -102
  98. package/dist/transpiled/MediaConnection/testUtils/EventListener.js.map +0 -1
  99. package/dist/transpiled/MediaConnection/testUtils/RoapListener.js +0 -15
  100. package/dist/transpiled/MediaConnection/testUtils/RoapListener.js.map +0 -1
  101. package/dist/transpiled/MediaConnection/testUtils/index.js +0 -17
  102. package/dist/transpiled/MediaConnection/testUtils/index.js.map +0 -1
  103. package/dist/transpiled/MediaConnection/testUtils/logger.js +0 -31
  104. package/dist/transpiled/MediaConnection/testUtils/logger.js.map +0 -1
  105. package/dist/transpiled/MediaConnection/testUtils.js +0 -14
  106. package/dist/transpiled/MediaConnection/testUtils.js.map +0 -1
  107. package/dist/transpiled/MediaConnection/utils.js +0 -71
  108. package/dist/transpiled/MediaConnection/utils.js.map +0 -1
  109. package/dist/transpiled/MediaConnection/utils.test-fixtures.js +0 -287
  110. package/dist/transpiled/MediaConnection/utils.test-fixtures.js.map +0 -1
  111. package/dist/transpiled/MediaConnection/utils.test.js +0 -20
  112. package/dist/transpiled/MediaConnection/utils.test.js.map +0 -1
  113. package/dist/transpiled/common/peerConnectionMock.js +0 -52
  114. package/dist/transpiled/common/peerConnectionMock.js.map +0 -1
  115. package/dist/transpiled/constants.js +0 -9
  116. package/dist/transpiled/constants.js.map +0 -1
  117. package/dist/transpiled/index.intergation-test.js +0 -14
  118. package/dist/transpiled/index.intergation-test.js.map +0 -1
  119. package/dist/transpiled/index.js +0 -41
  120. package/dist/transpiled/index.js.map +0 -1
  121. package/dist/types/MediaConnection/MediaConnection.integration-test.d.ts +0 -2
  122. package/dist/types/MediaConnection/MediaConnection.integration-test.d.ts.map +0 -1
  123. package/dist/types/MediaConnection/testUtils.d.ts +0 -7
  124. package/dist/types/MediaConnection/testUtils.d.ts.map +0 -1
@@ -1,368 +0,0 @@
1
- import { expect } from 'chai';
2
- import * as DetectRTC from 'detectrtc';
3
- import { RemoteTrackType } from './eventTypes';
4
- import { ConnectionState, Event, RoapMediaConnection } from './index';
5
- import { createControlledPromise, AnyValue, EventListener } from './testUtils';
6
- const logFn = (action, message) => console.log(`TEST: ${action}: ${message}`);
7
- describe('2 RoapMediaConnections connected to each other', () => {
8
- let localStream;
9
- let lastRoapOfferMessage;
10
- let testConnections;
11
- const setupConnectionEventHandlers = () => {
12
- const getOtherConnection = (connection) => {
13
- return connection === testConnections[0].mc ? testConnections[1].mc : testConnections[0].mc;
14
- };
15
- testConnections.forEach(({ mc, debug }) => {
16
- if (mc) {
17
- mc.on(Event.ROAP_MESSAGE_TO_SEND, (e) => {
18
- console.log(`TEST: got ROAP_MESSAGE_TO_SEND from ${debug}: ${e.roapMessage.sdp}`);
19
- if (e.roapMessage.messageType === 'OFFER') {
20
- const message = e.roapMessage;
21
- lastRoapOfferMessage = message;
22
- message.sdp = message.sdp?.replace(/\r\na=group:BUNDLE 0 1 2/gi, '');
23
- getOtherConnection(mc).roapMessageReceived(message);
24
- }
25
- else {
26
- getOtherConnection(mc).roapMessageReceived(e.roapMessage);
27
- }
28
- });
29
- }
30
- });
31
- };
32
- const createTestConnections = (options, configOverrides) => {
33
- const { send, receive } = options;
34
- const createTestConnection = (debug) => {
35
- const mc = new RoapMediaConnection({
36
- iceServers: [],
37
- skipInactiveTransceivers: false,
38
- sdpMunging: { convertPort9to0: false },
39
- ...configOverrides,
40
- }, { send, receive }, debug);
41
- return {
42
- mc,
43
- debug,
44
- connectionListener: new EventListener(mc, Event.CONNECTION_STATE_CHANGED, logFn, {
45
- useChaiExpect: true,
46
- strict: true,
47
- debug,
48
- }),
49
- remoteTrackAddedListener: new EventListener(mc, Event.REMOTE_TRACK_ADDED, logFn, {
50
- useChaiExpect: true,
51
- strict: false,
52
- debug,
53
- }),
54
- };
55
- };
56
- testConnections = [createTestConnection('mc1'), createTestConnection('mc2')];
57
- setupConnectionEventHandlers();
58
- };
59
- const waitForConnectionsEstablished = async () => {
60
- await testConnections[0].connectionListener.waitForEvent({ state: ConnectionState.CONNECTING });
61
- await testConnections[1].connectionListener.waitForEvent({ state: ConnectionState.CONNECTING });
62
- await testConnections[0].connectionListener.waitForEvent({ state: ConnectionState.CONNECTED });
63
- await testConnections[1].connectionListener.waitForEvent({ state: ConnectionState.CONNECTED });
64
- };
65
- const waitForRemoteTracksAdded = async (type) => {
66
- await testConnections[0].remoteTrackAddedListener.waitForEvent({ type, track: AnyValue });
67
- await testConnections[1].remoteTrackAddedListener.waitForEvent({ type, track: AnyValue });
68
- };
69
- beforeEach(async () => {
70
- localStream = await navigator.mediaDevices.getUserMedia({ audio: true, video: true });
71
- expect(localStream.getAudioTracks().length).to.equal(1);
72
- expect(localStream.getVideoTracks().length).to.equal(1);
73
- });
74
- afterEach(() => {
75
- testConnections?.forEach((testConnection) => {
76
- testConnection.mc.close();
77
- });
78
- localStream?.getTracks().forEach((track) => track.stop());
79
- });
80
- it('audio only (both ways)', async () => {
81
- const audioTrack = localStream.getAudioTracks()[0];
82
- createTestConnections({
83
- send: {
84
- audio: audioTrack,
85
- },
86
- receive: { audio: true, video: false, screenShareVideo: false },
87
- });
88
- await testConnections[0].mc.initiateOffer();
89
- await waitForConnectionsEstablished();
90
- await waitForRemoteTracksAdded(RemoteTrackType.AUDIO);
91
- expect(lastRoapOfferMessage?.sdp?.match(/^m=audio/gm)?.length).to.equal(1);
92
- expect(lastRoapOfferMessage?.sdp?.match(/^m=video/gm)?.length).to.equal(2);
93
- });
94
- it('audio only (both ways) with skipInactiveTransceivers=true', async () => {
95
- const audioTrack = localStream.getAudioTracks()[0];
96
- createTestConnections({
97
- send: {
98
- audio: audioTrack,
99
- },
100
- receive: { audio: true, video: false, screenShareVideo: false },
101
- }, { skipInactiveTransceivers: true });
102
- await testConnections[0].mc.initiateOffer();
103
- await waitForConnectionsEstablished();
104
- await waitForRemoteTracksAdded(RemoteTrackType.AUDIO);
105
- expect(lastRoapOfferMessage?.sdp?.match(/^m=audio/gm)?.length).to.equal(1);
106
- expect(lastRoapOfferMessage?.sdp?.match(/^m=video/gm)).to.equal(null);
107
- });
108
- it('audio and video both ways', async () => {
109
- const audioTrack = localStream.getAudioTracks()[0];
110
- const videoTrack = localStream.getVideoTracks()[0];
111
- createTestConnections({
112
- send: {
113
- audio: audioTrack,
114
- video: videoTrack,
115
- },
116
- receive: { audio: true, video: true, screenShareVideo: false },
117
- });
118
- await testConnections[0].mc.initiateOffer();
119
- await waitForConnectionsEstablished();
120
- await waitForRemoteTracksAdded(RemoteTrackType.VIDEO);
121
- await waitForRemoteTracksAdded(RemoteTrackType.AUDIO);
122
- });
123
- it('updateLocalTracks() should add an audio track (outgoing call)', async () => {
124
- createTestConnections({
125
- send: {},
126
- receive: { audio: true, video: true, screenShareVideo: true },
127
- });
128
- await testConnections[0].mc.initiateOffer();
129
- await waitForConnectionsEstablished();
130
- testConnections[0].mc.updateSendOptions({ audio: localStream.getAudioTracks()[0] });
131
- await testConnections[1].remoteTrackAddedListener.waitForEvent({
132
- type: RemoteTrackType.AUDIO,
133
- track: AnyValue,
134
- });
135
- });
136
- it('updateLocalTracks() should add an audio track (incoming call)', async () => {
137
- createTestConnections({
138
- send: {},
139
- receive: { audio: true, video: true, screenShareVideo: true },
140
- });
141
- await testConnections[0].mc.initiateOffer();
142
- await waitForConnectionsEstablished();
143
- testConnections[1].mc.updateSendOptions({ audio: localStream.getAudioTracks()[0] });
144
- await testConnections[0].remoteTrackAddedListener.waitForEvent({
145
- type: RemoteTrackType.AUDIO,
146
- track: AnyValue,
147
- });
148
- });
149
- describe('reconnect() method', () => {
150
- let connectionStateListener;
151
- const getIceDetails = (sdp) => {
152
- return {
153
- ufrag: sdp?.match(/^a=ice-ufrag:.*$/gm),
154
- pwd: sdp?.match(/^a=ice-pwd:.*$/gm),
155
- };
156
- };
157
- const checkIceDetailsChanged = (before, after) => {
158
- expect(before.ufrag?.length).to.equal(after.ufrag?.length);
159
- expect(before.pwd?.length).to.equal(after.pwd?.length);
160
- expect(before.ufrag?.length).to.equal(before.pwd?.length);
161
- if (before.ufrag && after.ufrag && before.pwd && after.pwd) {
162
- for (let i = 0; i < before.ufrag?.length; i += 1) {
163
- expect(before.ufrag[i]).not.to.equal(after.ufrag[i]);
164
- expect(before.pwd[i]).not.to.equal(after.pwd[i]);
165
- }
166
- }
167
- };
168
- beforeEach(async () => {
169
- const audioTrack = localStream.getAudioTracks()[0];
170
- const videoTrack = localStream.getVideoTracks()[0];
171
- createTestConnections({
172
- send: {
173
- audio: audioTrack,
174
- video: videoTrack,
175
- },
176
- receive: { audio: true, video: true, screenShareVideo: true },
177
- });
178
- await testConnections[0].mc.initiateOffer();
179
- await waitForConnectionsEstablished();
180
- await waitForRemoteTracksAdded(RemoteTrackType.AUDIO);
181
- await waitForRemoteTracksAdded(RemoteTrackType.VIDEO);
182
- connectionStateListener = new EventListener(testConnections[0].mc, Event.CONNECTION_STATE_CHANGED, logFn, { useChaiExpect: true, debug: testConnections[0].debug });
183
- });
184
- it('starts a new ICE connection with increased Roap seq', async () => {
185
- const before = {
186
- ice: getIceDetails(lastRoapOfferMessage?.sdp),
187
- seq: lastRoapOfferMessage?.seq || 0,
188
- };
189
- console.log('TEST: triggering reconnection...');
190
- await testConnections[0].mc.reconnect();
191
- await connectionStateListener.waitForEvent({ state: ConnectionState.CONNECTING });
192
- await connectionStateListener.waitForEvent({ state: ConnectionState.CONNECTED });
193
- const after = {
194
- ice: getIceDetails(lastRoapOfferMessage?.sdp),
195
- seq: lastRoapOfferMessage?.seq || 0,
196
- };
197
- expect(before.seq).lessThan(after.seq);
198
- checkIceDetailsChanged(before.ice, after.ice);
199
- });
200
- it('starts a new ICE connection with increased Roap seq (incoming call)', async () => {
201
- console.log('TEST: triggering reconnection...');
202
- await testConnections[0].mc.reconnect(false);
203
- testConnections[1].mc.reconnect(true);
204
- await connectionStateListener.waitForEvent({ state: ConnectionState.CONNECTING });
205
- await connectionStateListener.waitForEvent({ state: ConnectionState.CONNECTED });
206
- });
207
- });
208
- if (!DetectRTC.browser.isSafari) {
209
- describe('DTMF', () => {
210
- let dtmfToneChangeListeners;
211
- let newAudioTrack;
212
- beforeEach(async () => {
213
- const audioTrack = localStream.getAudioTracks()[0];
214
- newAudioTrack = audioTrack.clone();
215
- createTestConnections({
216
- send: {
217
- audio: audioTrack,
218
- },
219
- receive: { audio: true, video: false, screenShareVideo: false },
220
- });
221
- dtmfToneChangeListeners = [];
222
- testConnections.forEach((testConn) => {
223
- dtmfToneChangeListeners.push(new EventListener(testConn.mc, Event.DTMF_TONE_CHANGED, logFn, {
224
- debug: testConn.debug,
225
- strict: true,
226
- useChaiExpect: true,
227
- }));
228
- });
229
- await testConnections[0].mc.initiateOffer();
230
- await waitForConnectionsEstablished();
231
- await waitForRemoteTracksAdded(RemoteTrackType.AUDIO);
232
- });
233
- const checkDtmf = async (testConnectionIndex, dtmfSequence) => {
234
- const idx = testConnectionIndex;
235
- testConnections[idx].mc.insertDTMF(dtmfSequence);
236
- for (const expectedTone of dtmfSequence) {
237
- await dtmfToneChangeListeners[idx].waitForEvent({
238
- tone: expectedTone.toUpperCase(),
239
- });
240
- }
241
- await dtmfToneChangeListeners[idx].waitForEvent({ tone: '' });
242
- };
243
- it('sends DTMF signals when insertDTMF() is called', async () => {
244
- const TEST_DTMF_SEQUENCE = '0123456789ABCD*,#';
245
- await checkDtmf(0, TEST_DTMF_SEQUENCE);
246
- await checkDtmf(1, TEST_DTMF_SEQUENCE);
247
- });
248
- it('sends DTMF signals when insertDTMF() is called after audio track is replaced', async () => {
249
- await testConnections[0].mc.updateSendOptions({ audio: newAudioTrack });
250
- await checkDtmf(0, '987');
251
- });
252
- it('sends DTMF signals when insertDTMF() is called after transceiver was inactive', async () => {
253
- const roapListener = new EventListener(testConnections[0].mc, Event.ROAP_MESSAGE_TO_SEND, logFn, {
254
- debug: testConnections[0].debug,
255
- strict: false,
256
- useChaiExpect: true,
257
- });
258
- await testConnections[0].mc.updateSendReceiveOptions({
259
- send: { audio: null },
260
- receive: {
261
- audio: false,
262
- video: false,
263
- screenShareVideo: false,
264
- },
265
- });
266
- await roapListener.waitForEvent({ roapMessage: { messageType: 'OK', seq: 2 } });
267
- expect(() => testConnections[0].mc.insertDTMF('123')).to.throw();
268
- await testConnections[0].mc.updateSendReceiveOptions({
269
- send: { audio: newAudioTrack },
270
- receive: {
271
- audio: true,
272
- video: false,
273
- screenShareVideo: false,
274
- },
275
- });
276
- await roapListener.waitForEvent({ roapMessage: { messageType: 'OK', seq: 3 } });
277
- await checkDtmf(0, '#5');
278
- });
279
- });
280
- }
281
- });
282
- describe('1 RoapMediaConnection connected to a raw RTCPeerConnection', () => {
283
- let localStream;
284
- beforeEach(async () => {
285
- localStream = await navigator.mediaDevices.getUserMedia({ audio: true, video: true });
286
- expect(localStream.getAudioTracks().length).to.equal(1);
287
- expect(localStream.getVideoTracks().length).to.equal(1);
288
- });
289
- afterEach(() => {
290
- localStream?.getTracks().forEach((track) => track.stop());
291
- });
292
- it('incoming audio call (with a single m-line)', async () => {
293
- let failMessage;
294
- const audioTrack = localStream.getAudioTracks()[0];
295
- const pc = new RTCPeerConnection();
296
- const mc = new RoapMediaConnection({ iceServers: [], skipInactiveTransceivers: true, sdpMunging: { convertPort9to0: false } }, {
297
- send: {
298
- audio: audioTrack,
299
- },
300
- receive: {
301
- audio: true,
302
- video: false,
303
- screenShareVideo: false,
304
- },
305
- }, 'mc');
306
- const expectingRoapFromMc = {
307
- OFFER: false,
308
- OFFER_REQUEST: false,
309
- OFFER_RESPONSE: false,
310
- ANSWER: false,
311
- OK: false,
312
- ERROR: false,
313
- };
314
- const connectionStateListener = new EventListener(mc, Event.CONNECTION_STATE_CHANGED, logFn, {
315
- useChaiExpect: true,
316
- });
317
- const remoteTrackAddedListener = new EventListener(mc, Event.REMOTE_TRACK_ADDED, logFn, {
318
- useChaiExpect: true,
319
- strict: false,
320
- });
321
- const roapOkSent = createControlledPromise();
322
- mc.on(Event.ROAP_MESSAGE_TO_SEND, async (e) => {
323
- console.log(`TEST: got ROAP_MESSAGE_TO_SEND: ${e.roapMessage.messageType}, ${e.roapMessage.sdp}`);
324
- if (expectingRoapFromMc[e.roapMessage.messageType]) {
325
- if (e.roapMessage.messageType === 'ANSWER') {
326
- await pc.setRemoteDescription({ type: 'answer', sdp: e.roapMessage.sdp });
327
- mc.roapMessageReceived({ messageType: 'OK', seq: e.roapMessage.seq });
328
- }
329
- else if (e.roapMessage.messageType === 'OFFER') {
330
- await pc.setRemoteDescription({ type: 'offer', sdp: e.roapMessage.sdp });
331
- const answer = await pc.createAnswer();
332
- await pc.setLocalDescription(answer);
333
- mc.roapMessageReceived({ messageType: 'ANSWER', seq: e.roapMessage.seq, sdp: answer.sdp });
334
- }
335
- else if (e.roapMessage.messageType === 'OK') {
336
- roapOkSent.resolve({});
337
- }
338
- }
339
- else {
340
- failMessage = `unexpected roap message received: ${JSON.stringify(e.roapMessage)}`;
341
- }
342
- });
343
- pc.addTransceiver(audioTrack);
344
- await pc.setLocalDescription();
345
- const sdp = pc.localDescription?.sdp.replaceAll(/\r\n(a=mid:.*|a=group:BUNDLE.*)/g, '');
346
- console.log(`TEST: sending SDP offer to RoapMediaConnection: ${sdp}`);
347
- expectingRoapFromMc.ANSWER = true;
348
- mc.roapMessageReceived({
349
- messageType: 'OFFER',
350
- seq: 1,
351
- sdp,
352
- });
353
- await connectionStateListener.waitForEvent({ state: ConnectionState.CONNECTING });
354
- await connectionStateListener.waitForEvent({ state: ConnectionState.CONNECTED });
355
- await remoteTrackAddedListener.waitForEvent({
356
- type: RemoteTrackType.AUDIO,
357
- track: AnyValue,
358
- });
359
- expect(failMessage).to.equal(undefined);
360
- expectingRoapFromMc.OFFER = true;
361
- expectingRoapFromMc.ANSWER = false;
362
- expectingRoapFromMc.OK = true;
363
- mc.updateReceiveOptions({ audio: false, video: false, screenShareVideo: false });
364
- await roapOkSent;
365
- expect(failMessage).to.equal(undefined);
366
- });
367
- });
368
- //# sourceMappingURL=RoapMediaConnection.integration-test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RoapMediaConnection.integration-test.js","sourceRoot":"","sources":["../../../src/MediaConnection/RoapMediaConnection.integration-test.ts"],"names":[],"mappings":"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"}
@@ -1,148 +0,0 @@
1
- import EventEmitter from './EventEmitter';
2
- import { MediaConnection } from './MediaConnection';
3
- import { Roap } from './roap';
4
- import { Event, } from './eventTypes';
5
- import { getLogger, getErrorDescription } from './logger';
6
- export class RoapMediaConnection extends EventEmitter {
7
- id;
8
- debugId;
9
- mediaConnection;
10
- roap;
11
- sdpNegotiationStarted;
12
- constructor(mediaConnectionConfig, options, debugId) {
13
- super();
14
- this.debugId = debugId;
15
- this.id = debugId || 'RoapMediaConnection';
16
- this.sdpNegotiationStarted = false;
17
- this.log('constructor()', `config: ${JSON.stringify(mediaConnectionConfig)}, options: ${JSON.stringify(options)}`);
18
- this.mediaConnection = this.createMediaConnection(mediaConnectionConfig, options, debugId);
19
- this.roap = this.createRoap(debugId);
20
- }
21
- log(action, description) {
22
- getLogger().info(`${this.id}:${action} ${description}`);
23
- }
24
- error(action, description, error) {
25
- getLogger().error(`${this.id}:${action} ${description} ${getErrorDescription(error)}`);
26
- }
27
- createMediaConnection(mediaConnectionConfig, options, debugId) {
28
- const mediaConnection = new MediaConnection(mediaConnectionConfig, options, debugId);
29
- mediaConnection.on(Event.REMOTE_TRACK_ADDED, this.onRemoteTrack.bind(this));
30
- mediaConnection.on(Event.CONNECTION_STATE_CHANGED, this.onConnectionStateChanged.bind(this));
31
- mediaConnection.on(Event.DTMF_TONE_CHANGED, this.onDtmfToneChanged.bind(this));
32
- return mediaConnection;
33
- }
34
- createRoap(debugId, seq) {
35
- const roap = new Roap(this.createLocalOffer.bind(this), this.handleRemoteOffer.bind(this), this.handleRemoteAnswer.bind(this), debugId, seq);
36
- roap.on(Event.ROAP_MESSAGE_TO_SEND, this.onRoapMessageToSend.bind(this));
37
- roap.on(Event.ROAP_FAILURE, this.onRoapFailure.bind(this));
38
- return roap;
39
- }
40
- initiateOffer() {
41
- this.log('initiateOffer()', 'called');
42
- if (this.sdpNegotiationStarted) {
43
- this.error('initiateOffer()', 'SDP negotiation already started');
44
- return Promise.reject(new Error('SDP negotiation already started'));
45
- }
46
- this.mediaConnection.initializeTransceivers(false);
47
- this.sdpNegotiationStarted = true;
48
- return this.roap.initiateOffer();
49
- }
50
- close() {
51
- this.log('close()', 'called');
52
- this.closeMediaConnection();
53
- this.stopRoapSession();
54
- }
55
- closeMediaConnection() {
56
- this.mediaConnection.close();
57
- this.mediaConnection.removeAllListeners();
58
- }
59
- stopRoapSession() {
60
- this.roap.stop();
61
- this.roap.removeAllListeners();
62
- }
63
- reconnect(initiateOffer = true) {
64
- this.log('reconnect()', 'called');
65
- const config = this.mediaConnection.getConfig();
66
- const options = this.mediaConnection.getSendReceiveOptions();
67
- const seq = this.roap.getSeq();
68
- this.stopRoapSession();
69
- this.closeMediaConnection();
70
- this.sdpNegotiationStarted = false;
71
- this.mediaConnection = this.createMediaConnection(config, options, this.debugId);
72
- this.roap = this.createRoap(this.debugId, seq);
73
- if (initiateOffer) {
74
- return this.initiateOffer();
75
- }
76
- return Promise.resolve();
77
- }
78
- updateSendOptions(tracks) {
79
- this.log('updateSendOptions()', `called with ${JSON.stringify(tracks)}`);
80
- const newOfferNeeded = this.mediaConnection.updateSendOptions(tracks);
81
- if (newOfferNeeded) {
82
- this.log('updateSendOptions()', 'triggering offer...');
83
- return this.roap.initiateOffer();
84
- }
85
- return Promise.resolve();
86
- }
87
- updateReceiveOptions(options) {
88
- this.log('updateReceiveOptions()', `called with ${JSON.stringify(options)}`);
89
- const newOfferNeeded = this.mediaConnection.updateReceiveOptions(options);
90
- if (newOfferNeeded) {
91
- this.log('updateReceiveOptions()', 'triggering offer...');
92
- return this.roap.initiateOffer();
93
- }
94
- return Promise.resolve();
95
- }
96
- updateSendReceiveOptions(options) {
97
- this.log('updateSendReceiveOptions()', `called with ${JSON.stringify(options)}`);
98
- const newOfferNeeded = this.mediaConnection.updateSendReceiveOptions(options);
99
- if (newOfferNeeded) {
100
- this.log('updateSendReceiveOptions()', 'triggering offer...');
101
- return this.roap.initiateOffer();
102
- }
103
- return Promise.resolve();
104
- }
105
- getConnectionState() {
106
- return this.mediaConnection.getConnectionState();
107
- }
108
- getStats() {
109
- return this.mediaConnection.getStats();
110
- }
111
- insertDTMF(tones, duration, interToneGap) {
112
- this.log('insertDTMF()', `called with tones="${tones}", duration=${duration}, interToneGap=${interToneGap}`);
113
- this.mediaConnection.insertDTMF(tones, duration, interToneGap);
114
- }
115
- roapMessageReceived(roapMessage) {
116
- this.log('roapMessageReceived()', `called with messageType=${roapMessage.messageType}, seq=${roapMessage.seq}`);
117
- if (!this.sdpNegotiationStarted && roapMessage.messageType === 'OFFER') {
118
- this.sdpNegotiationStarted = true;
119
- this.mediaConnection.initializeTransceivers(true);
120
- }
121
- this.roap.roapMessageReceived(roapMessage);
122
- }
123
- onRoapMessageToSend(event) {
124
- this.emit(Event.ROAP_MESSAGE_TO_SEND, event);
125
- }
126
- onRoapFailure() {
127
- this.emit(Event.ROAP_FAILURE);
128
- }
129
- onRemoteTrack(event) {
130
- this.emit(Event.REMOTE_TRACK_ADDED, event);
131
- }
132
- onConnectionStateChanged(event) {
133
- this.emit(Event.CONNECTION_STATE_CHANGED, event);
134
- }
135
- onDtmfToneChanged(event) {
136
- this.emit(Event.DTMF_TONE_CHANGED, event);
137
- }
138
- createLocalOffer() {
139
- return this.mediaConnection.createLocalOffer();
140
- }
141
- handleRemoteOffer(sdp) {
142
- return this.mediaConnection.handleRemoteOffer(sdp);
143
- }
144
- handleRemoteAnswer(sdp) {
145
- return this.mediaConnection.handleRemoteAnswer(sdp);
146
- }
147
- }
148
- //# sourceMappingURL=RoapMediaConnection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RoapMediaConnection.js","sourceRoot":"","sources":["../../../src/MediaConnection/RoapMediaConnection.ts"],"names":[],"mappings":"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"}