mediasoup-client 3.6.52 → 3.6.53

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 (67) hide show
  1. package/lib/Consumer.d.ts +16 -18
  2. package/lib/Consumer.d.ts.map +1 -1
  3. package/lib/Consumer.js +3 -17
  4. package/lib/DataConsumer.d.ts +13 -15
  5. package/lib/DataConsumer.d.ts.map +1 -1
  6. package/lib/DataConsumer.js +0 -13
  7. package/lib/DataProducer.d.ts +13 -15
  8. package/lib/DataProducer.d.ts.map +1 -1
  9. package/lib/DataProducer.js +0 -13
  10. package/lib/Device.d.ts +4 -6
  11. package/lib/Device.d.ts.map +1 -1
  12. package/lib/Device.js +0 -5
  13. package/lib/EnhancedEventEmitter.d.ts +19 -3
  14. package/lib/EnhancedEventEmitter.d.ts.map +1 -1
  15. package/lib/EnhancedEventEmitter.js +50 -14
  16. package/lib/Producer.d.ts +29 -22
  17. package/lib/Producer.d.ts.map +1 -1
  18. package/lib/Producer.js +18 -28
  19. package/lib/Transport.d.ts +40 -18
  20. package/lib/Transport.d.ts.map +1 -1
  21. package/lib/Transport.js +14 -25
  22. package/lib/handlers/Chrome55.d.ts.map +1 -1
  23. package/lib/handlers/Chrome55.js +3 -1
  24. package/lib/handlers/Chrome67.d.ts.map +1 -1
  25. package/lib/handlers/Chrome67.js +3 -1
  26. package/lib/handlers/Chrome70.d.ts.map +1 -1
  27. package/lib/handlers/Chrome70.js +3 -1
  28. package/lib/handlers/Chrome74.d.ts.map +1 -1
  29. package/lib/handlers/Chrome74.js +3 -1
  30. package/lib/handlers/Edge11.d.ts.map +1 -1
  31. package/lib/handlers/Edge11.js +3 -1
  32. package/lib/handlers/FakeHandler.d.ts +2 -2
  33. package/lib/handlers/FakeHandler.d.ts.map +1 -1
  34. package/lib/handlers/Firefox60.d.ts.map +1 -1
  35. package/lib/handlers/Firefox60.js +3 -1
  36. package/lib/handlers/HandlerInterface.d.ts +12 -10
  37. package/lib/handlers/HandlerInterface.d.ts.map +1 -1
  38. package/lib/handlers/HandlerInterface.js +0 -8
  39. package/lib/handlers/ReactNative.d.ts.map +1 -1
  40. package/lib/handlers/ReactNative.js +3 -1
  41. package/lib/handlers/Safari11.d.ts.map +1 -1
  42. package/lib/handlers/Safari11.js +3 -1
  43. package/lib/handlers/Safari12.d.ts.map +1 -1
  44. package/lib/handlers/Safari12.js +3 -1
  45. package/lib/index.d.ts +1 -1
  46. package/lib/index.js +1 -1
  47. package/lib/utils.d.ts.map +1 -1
  48. package/package.json +7 -7
  49. package/src/Consumer.ts +30 -20
  50. package/src/DataConsumer.ts +19 -16
  51. package/src/DataProducer.ts +19 -16
  52. package/src/Device.ts +6 -6
  53. package/src/EnhancedEventEmitter.ts +105 -22
  54. package/src/Producer.ts +91 -31
  55. package/src/Transport.ts +73 -39
  56. package/src/handlers/Chrome55.ts +9 -1
  57. package/src/handlers/Chrome67.ts +9 -1
  58. package/src/handlers/Chrome70.ts +9 -1
  59. package/src/handlers/Chrome74.ts +9 -1
  60. package/src/handlers/Edge11.ts +9 -1
  61. package/src/handlers/FakeHandler.ts +4 -3
  62. package/src/handlers/Firefox60.ts +9 -1
  63. package/src/handlers/HandlerInterface.ts +14 -10
  64. package/src/handlers/ReactNative.ts +9 -1
  65. package/src/handlers/Safari11.ts +9 -1
  66. package/src/handlers/Safari12.ts +9 -1
  67. package/src/utils.ts +0 -1
package/src/Transport.ts CHANGED
@@ -9,7 +9,10 @@ import { Producer, ProducerOptions } from './Producer';
9
9
  import { Consumer, ConsumerOptions } from './Consumer';
10
10
  import { DataProducer, DataProducerOptions } from './DataProducer';
11
11
  import { DataConsumer, DataConsumerOptions } from './DataConsumer';
12
- import { SctpParameters } from './SctpParameters';
12
+ import { RtpParameters, MediaKind } from './RtpParameters';
13
+ import { SctpParameters, SctpStreamParameters } from './SctpParameters';
14
+
15
+ const logger = new Logger('Transport');
13
16
 
14
17
  interface InternalTransportOptions extends TransportOptions
15
18
  {
@@ -29,7 +32,7 @@ class ConsumerCreationTask
29
32
  constructor(consumerOptions: ConsumerOptions)
30
33
  {
31
34
  this.consumerOptions = consumerOptions;
32
- this.promise = new Promise((resolve, reject) =>
35
+ this.promise = new Promise<Consumer>((resolve, reject) =>
33
36
  {
34
37
  this.resolve = resolve;
35
38
  this.reject = reject;
@@ -148,9 +151,43 @@ export type PlainRtpParameters =
148
151
  port: number;
149
152
  };
150
153
 
151
- const logger = new Logger('Transport');
154
+ export type TransportEvents =
155
+ {
156
+ connect: [{ dtlsParameters: DtlsParameters }, () => void, (error: Error) => void];
157
+ connectionstatechange: [ConnectionState];
158
+ produce:
159
+ [
160
+ {
161
+ kind: MediaKind;
162
+ rtpParameters: RtpParameters;
163
+ appData: Record<string, unknown>;
164
+ },
165
+ ({ id }: { id: string }) => void,
166
+ (error: Error) => void
167
+ ];
168
+ producedata:
169
+ [
170
+ {
171
+ sctpStreamParameters: SctpStreamParameters;
172
+ label?: string;
173
+ protocol?: string;
174
+ appData: Record<string, unknown>;
175
+ },
176
+ ({ id }: { id: string }) => void,
177
+ (error: Error) => void
178
+ ];
179
+ };
152
180
 
153
- export class Transport extends EnhancedEventEmitter
181
+ export type TransportObserverEvents =
182
+ {
183
+ close: [];
184
+ newproducer: [Producer];
185
+ newconsumer: [Consumer];
186
+ newdataproducer: [DataProducer];
187
+ newdataconsumer: [DataConsumer];
188
+ };
189
+
190
+ export class Transport extends EnhancedEventEmitter<TransportEvents>
154
191
  {
155
192
  // Id.
156
193
  private readonly _id: string;
@@ -196,14 +233,8 @@ export class Transport extends EnhancedEventEmitter
196
233
  // Consumer resume in progress flag.
197
234
  private _consumerResumeInProgress = false;
198
235
  // Observer instance.
199
- protected readonly _observer = new EnhancedEventEmitter();
236
+ protected readonly _observer = new EnhancedEventEmitter<TransportObserverEvents>();
200
237
 
201
- /**
202
- * @emits connect - (transportLocalParameters: any, callback: Function, errback: Function)
203
- * @emits connectionstatechange - (connectionState: ConnectionState)
204
- * @emits produce - (producerLocalParameters: any, callback: Function, errback: Function)
205
- * @emits producedata - (dataProducerLocalParameters: any, callback: Function, errback: Function)
206
- */
207
238
  constructor(
208
239
  {
209
240
  direction,
@@ -321,15 +352,6 @@ export class Transport extends EnhancedEventEmitter
321
352
  throw new Error('cannot override appData object');
322
353
  }
323
354
 
324
- /**
325
- * Observer.
326
- *
327
- * @emits close
328
- * @emits newproducer - (producer: Producer)
329
- * @emits newconsumer - (producer: Producer)
330
- * @emits newdataproducer - (dataProducer: DataProducer)
331
- * @emits newdataconsumer - (dataProducer: DataProducer)
332
- */
333
355
  get observer(): EnhancedEventEmitter
334
356
  {
335
357
  return this._observer;
@@ -530,13 +552,19 @@ export class Transport extends EnhancedEventEmitter
530
552
  // This will fill rtpParameters's missing fields with default values.
531
553
  ortc.validateRtpParameters(rtpParameters);
532
554
 
533
- const { id } = await this.safeEmitAsPromise(
534
- 'produce',
535
- {
536
- kind : track.kind,
537
- rtpParameters,
538
- appData
539
- });
555
+ const { id } = await new Promise<{ id: string }>((resolve, reject) =>
556
+ {
557
+ this.safeEmit(
558
+ 'produce',
559
+ {
560
+ kind : track.kind as MediaKind,
561
+ rtpParameters,
562
+ appData
563
+ },
564
+ resolve,
565
+ reject
566
+ );
567
+ });
540
568
 
541
569
  const producer = new Producer(
542
570
  {
@@ -692,14 +720,20 @@ export class Transport extends EnhancedEventEmitter
692
720
  // This will fill sctpStreamParameters's missing fields with default values.
693
721
  ortc.validateSctpStreamParameters(sctpStreamParameters);
694
722
 
695
- const { id } = await this.safeEmitAsPromise(
696
- 'producedata',
697
- {
698
- sctpStreamParameters,
699
- label,
700
- protocol,
701
- appData
702
- });
723
+ const { id } = await new Promise<{ id: string }>((resolve, reject) =>
724
+ {
725
+ this.safeEmit(
726
+ 'producedata',
727
+ {
728
+ sctpStreamParameters,
729
+ label,
730
+ protocol,
731
+ appData
732
+ },
733
+ resolve,
734
+ reject
735
+ );
736
+ });
703
737
 
704
738
  const dataProducer =
705
739
  new DataProducer({ id, dataChannel, sctpStreamParameters, appData });
@@ -983,8 +1017,8 @@ export class Transport extends EnhancedEventEmitter
983
1017
 
984
1018
  handler.on('@connect', (
985
1019
  { dtlsParameters }: { dtlsParameters: DtlsParameters },
986
- callback: Function,
987
- errback: Function
1020
+ callback: () => void,
1021
+ errback: (error: Error) => void
988
1022
  ) =>
989
1023
  {
990
1024
  if (this._closed)
@@ -1058,7 +1092,7 @@ export class Transport extends EnhancedEventEmitter
1058
1092
  producer.on('@getstats', (callback, errback) =>
1059
1093
  {
1060
1094
  if (this._closed)
1061
- return errback(new InvalidStateError('closed'));
1095
+ return errback!(new InvalidStateError('closed'));
1062
1096
 
1063
1097
  this._handler.getSenderStats(producer.localId)
1064
1098
  .then(callback)
@@ -1122,7 +1156,7 @@ export class Transport extends EnhancedEventEmitter
1122
1156
  consumer.on('@getstats', (callback, errback) =>
1123
1157
  {
1124
1158
  if (this._closed)
1125
- return errback(new InvalidStateError('closed'));
1159
+ return errback!(new InvalidStateError('closed'));
1126
1160
 
1127
1161
  this._handler.getReceiverStats(consumer.localId)
1128
1162
  .then(callback)
@@ -816,7 +816,15 @@ export class Chrome55 extends HandlerInterface
816
816
  localDtlsRole === 'client' ? 'server' : 'client');
817
817
 
818
818
  // Need to tell the remote transport about our parameters.
819
- await this.safeEmitAsPromise('@connect', { dtlsParameters });
819
+ await new Promise<void>((resolve, reject) =>
820
+ {
821
+ this.safeEmit(
822
+ '@connect',
823
+ { dtlsParameters },
824
+ resolve,
825
+ reject
826
+ );
827
+ });
820
828
 
821
829
  this._transportReady = true;
822
830
  }
@@ -901,7 +901,15 @@ export class Chrome67 extends HandlerInterface
901
901
  localDtlsRole === 'client' ? 'server' : 'client');
902
902
 
903
903
  // Need to tell the remote transport about our parameters.
904
- await this.safeEmitAsPromise('@connect', { dtlsParameters });
904
+ await new Promise<void>((resolve, reject) =>
905
+ {
906
+ this.safeEmit(
907
+ '@connect',
908
+ { dtlsParameters },
909
+ resolve,
910
+ reject
911
+ );
912
+ });
905
913
 
906
914
  this._transportReady = true;
907
915
  }
@@ -909,7 +909,15 @@ export class Chrome70 extends HandlerInterface
909
909
  localDtlsRole === 'client' ? 'server' : 'client');
910
910
 
911
911
  // Need to tell the remote transport about our parameters.
912
- await this.safeEmitAsPromise('@connect', { dtlsParameters });
912
+ await new Promise<void>((resolve, reject) =>
913
+ {
914
+ this.safeEmit(
915
+ '@connect',
916
+ { dtlsParameters },
917
+ resolve,
918
+ reject
919
+ );
920
+ });
913
921
 
914
922
  this._transportReady = true;
915
923
  }
@@ -950,7 +950,15 @@ export class Chrome74 extends HandlerInterface
950
950
  localDtlsRole === 'client' ? 'server' : 'client');
951
951
 
952
952
  // Need to tell the remote transport about our parameters.
953
- await this.safeEmitAsPromise('@connect', { dtlsParameters });
953
+ await new Promise<void>((resolve, reject) =>
954
+ {
955
+ this.safeEmit(
956
+ '@connect',
957
+ { dtlsParameters },
958
+ resolve,
959
+ reject
960
+ );
961
+ });
954
962
 
955
963
  this._transportReady = true;
956
964
  }
@@ -605,7 +605,15 @@ export class Edge11 extends HandlerInterface
605
605
  dtlsParameters.role = localDtlsRole;
606
606
 
607
607
  // Need to tell the remote transport about our parameters.
608
- await this.safeEmitAsPromise('@connect', { dtlsParameters });
608
+ await new Promise<void>((resolve, reject) =>
609
+ {
610
+ this.safeEmit(
611
+ '@connect',
612
+ { dtlsParameters },
613
+ resolve,
614
+ reject
615
+ );
616
+ });
609
617
 
610
618
  // Start the RTCIceTransport.
611
619
  this._iceTransport.start(
@@ -18,7 +18,8 @@ import {
18
18
  import {
19
19
  IceParameters,
20
20
  DtlsParameters,
21
- DtlsRole
21
+ DtlsRole,
22
+ ConnectionState
22
23
  } from '../Transport';
23
24
  import { RtpCapabilities, RtpParameters } from '../RtpParameters';
24
25
  import { SctpCapabilities } from '../SctpParameters';
@@ -126,7 +127,7 @@ export class FakeHandler extends HandlerInterface
126
127
  }
127
128
 
128
129
  // NOTE: Custom method for simulation purposes.
129
- setConnectionState(connectionState: string): void
130
+ setConnectionState(connectionState: ConnectionState): void
130
131
  {
131
132
  this.emit('@connectionstatechange', connectionState);
132
133
  }
@@ -422,7 +423,7 @@ export class FakeHandler extends HandlerInterface
422
423
  this.emit('@connectionstatechange', 'connecting');
423
424
 
424
425
  // Need to tell the remote transport about our parameters.
425
- await new Promise((resolve, reject) => (
426
+ await new Promise<void>((resolve, reject) => (
426
427
  this.emit('@connect', { dtlsParameters }, resolve, reject)
427
428
  ));
428
429
 
@@ -931,7 +931,15 @@ export class Firefox60 extends HandlerInterface
931
931
  localDtlsRole === 'client' ? 'server' : 'client');
932
932
 
933
933
  // Need to tell the remote transport about our parameters.
934
- await this.safeEmitAsPromise('@connect', { dtlsParameters });
934
+ await new Promise<void>((resolve, reject) =>
935
+ {
936
+ this.safeEmit(
937
+ '@connect',
938
+ { dtlsParameters },
939
+ resolve,
940
+ reject
941
+ );
942
+ });
935
943
 
936
944
  this._transportReady = true;
937
945
  }
@@ -3,7 +3,8 @@ import { ProducerCodecOptions } from '../Producer';
3
3
  import {
4
4
  IceParameters,
5
5
  IceCandidate,
6
- DtlsParameters
6
+ DtlsParameters,
7
+ ConnectionState
7
8
  } from '../Transport';
8
9
  import {
9
10
  RtpCapabilities,
@@ -82,16 +83,19 @@ export type HandlerReceiveDataChannelResult =
82
83
  dataChannel: RTCDataChannel;
83
84
  }
84
85
 
85
- export abstract class HandlerInterface extends EnhancedEventEmitter
86
+ export type HandlerEvents =
87
+ {
88
+ '@connect':
89
+ [
90
+ { dtlsParameters: DtlsParameters },
91
+ () => void,
92
+ (error: Error) => void
93
+ ];
94
+ '@connectionstatechange': [ConnectionState];
95
+ }
96
+
97
+ export abstract class HandlerInterface extends EnhancedEventEmitter<HandlerEvents>
86
98
  {
87
- /**
88
- * @emits @connect - (
89
- * { dtlsParameters: DtlsParameters },
90
- * callback: Function,
91
- * errback: Function
92
- * )
93
- * @emits @connectionstatechange - (connectionState: ConnectionState)
94
- */
95
99
  constructor()
96
100
  {
97
101
  super();
@@ -836,7 +836,15 @@ export class ReactNative extends HandlerInterface
836
836
  localDtlsRole === 'client' ? 'server' : 'client');
837
837
 
838
838
  // Need to tell the remote transport about our parameters.
839
- await this.safeEmitAsPromise('@connect', { dtlsParameters });
839
+ await new Promise<void>((resolve, reject) =>
840
+ {
841
+ this.safeEmit(
842
+ '@connect',
843
+ { dtlsParameters },
844
+ resolve,
845
+ reject
846
+ );
847
+ });
840
848
 
841
849
  this._transportReady = true;
842
850
  }
@@ -894,7 +894,15 @@ export class Safari11 extends HandlerInterface
894
894
  localDtlsRole === 'client' ? 'server' : 'client');
895
895
 
896
896
  // Need to tell the remote transport about our parameters.
897
- await this.safeEmitAsPromise('@connect', { dtlsParameters });
897
+ await new Promise<void>((resolve, reject) =>
898
+ {
899
+ this.safeEmit(
900
+ '@connect',
901
+ { dtlsParameters },
902
+ resolve,
903
+ reject
904
+ );
905
+ });
898
906
 
899
907
  this._transportReady = true;
900
908
  }
@@ -900,7 +900,15 @@ export class Safari12 extends HandlerInterface
900
900
  localDtlsRole === 'client' ? 'server' : 'client');
901
901
 
902
902
  // Need to tell the remote transport about our parameters.
903
- await this.safeEmitAsPromise('@connect', { dtlsParameters });
903
+ await new Promise<void>((resolve, reject) =>
904
+ {
905
+ this.safeEmit(
906
+ '@connect',
907
+ { dtlsParameters },
908
+ resolve,
909
+ reject
910
+ );
911
+ });
904
912
 
905
913
  this._transportReady = true;
906
914
  }
package/src/utils.ts CHANGED
@@ -3,7 +3,6 @@
3
3
  */
4
4
  export function clone(data: any, defaultValue: any): any
5
5
  {
6
-
7
6
  if (typeof data === 'undefined')
8
7
  return defaultValue;
9
8