@observertc/observer-js 1.0.1-4416b1e.0 → 1.0.1-4daea92.0

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 (50) hide show
  1. package/lib/ObservedCall.d.ts +2 -0
  2. package/lib/ObservedCall.d.ts.map +1 -1
  3. package/lib/ObservedCall.js +4 -0
  4. package/lib/ObservedCallEventMonitor.d.ts +103 -0
  5. package/lib/ObservedCallEventMonitor.d.ts.map +1 -0
  6. package/lib/ObservedCallEventMonitor.js +312 -0
  7. package/lib/ObservedClient.d.ts +10 -3
  8. package/lib/ObservedClient.d.ts.map +1 -1
  9. package/lib/ObservedClient.js +73 -3
  10. package/lib/Observer.d.ts +2 -0
  11. package/lib/Observer.d.ts.map +1 -1
  12. package/lib/Observer.js +10 -2
  13. package/lib/ObserverEventMonitor.d.ts +106 -0
  14. package/lib/ObserverEventMonitor.d.ts.map +1 -0
  15. package/lib/ObserverEventMonitor.js +320 -0
  16. package/lib/index.d.ts +1 -0
  17. package/lib/index.d.ts.map +1 -1
  18. package/lib/index.js +3 -1
  19. package/lib/schema/ClientEventTypes.d.ts +60 -0
  20. package/lib/schema/ClientEventTypes.d.ts.map +1 -1
  21. package/lib/updaters/{OnAllCallObserverUpdater_.d.ts → OnAllCallObserverUpdater.d.ts} +3 -1
  22. package/lib/updaters/OnAllCallObserverUpdater.d.ts.map +1 -0
  23. package/lib/updaters/{OnAllCallObserverUpdater_.js → OnAllCallObserverUpdater.js} +13 -1
  24. package/lib/updaters/OnAllClientCallUpdater.d.ts +2 -0
  25. package/lib/updaters/OnAllClientCallUpdater.d.ts.map +1 -1
  26. package/lib/updaters/OnAllClientCallUpdater.js +16 -0
  27. package/lib/updaters/{OnAnyCallObserverUpdater_.d.ts → OnAnyCallObserverUpdater.d.ts} +2 -1
  28. package/lib/updaters/OnAnyCallObserverUpdater.d.ts.map +1 -0
  29. package/lib/updaters/{OnAnyCallObserverUpdater_.js → OnAnyCallObserverUpdater.js} +11 -1
  30. package/lib/updaters/OnAnyClientCallUpdater.d.ts +1 -0
  31. package/lib/updaters/OnAnyClientCallUpdater.d.ts.map +1 -1
  32. package/lib/updaters/OnAnyClientCallUpdater.js +11 -2
  33. package/lib/utils/MediasoupRemoteTrackResolver.d.ts +25 -0
  34. package/lib/utils/MediasoupRemoteTrackResolver.d.ts.map +1 -0
  35. package/lib/utils/MediasoupRemoteTrackResolver.js +110 -0
  36. package/package.json +1 -1
  37. package/src/ObservedCall.ts +5 -0
  38. package/src/ObservedCallEventMonitor.ts +389 -0
  39. package/src/ObservedClient.ts +88 -5
  40. package/src/Observer.ts +12 -3
  41. package/src/ObserverEventMonitor.ts +398 -0
  42. package/src/index.ts +1 -0
  43. package/src/schema/ClientEventTypes.ts +64 -0
  44. package/src/updaters/{OnAllCallObserverUpdater_.ts → OnAllCallObserverUpdater.ts} +14 -1
  45. package/src/updaters/OnAllClientCallUpdater.ts +15 -0
  46. package/src/updaters/{OnAnyCallObserverUpdater_.ts → OnAnyCallObserverUpdater.ts} +11 -2
  47. package/src/updaters/OnAnyClientCallUpdater.ts +9 -2
  48. package/src/utils/MediasoupRemoteTrackResolver.ts +155 -0
  49. package/lib/updaters/OnAllCallObserverUpdater_.d.ts.map +0 -1
  50. package/lib/updaters/OnAnyCallObserverUpdater_.d.ts.map +0 -1
@@ -1,3 +1,62 @@
1
+ interface DoubleRange {
2
+ max?: number;
3
+ min?: number;
4
+ }
5
+ interface ULongRange {
6
+ max?: number;
7
+ min?: number;
8
+ }
9
+ interface MediaTrackConstraints {
10
+ aspectRatio?: DoubleRange;
11
+ autoGainControl?: boolean[];
12
+ backgroundBlur?: boolean[];
13
+ channelCount?: ULongRange;
14
+ deviceId?: string;
15
+ displaySurface?: string;
16
+ echoCancellation?: boolean[];
17
+ facingMode?: string[];
18
+ frameRate?: DoubleRange;
19
+ groupId?: string;
20
+ height?: ULongRange;
21
+ noiseSuppression?: boolean[];
22
+ sampleRate?: ULongRange;
23
+ sampleSize?: ULongRange;
24
+ width?: ULongRange;
25
+ }
26
+ interface MediaTrackCapabilities {
27
+ aspectRatio?: DoubleRange;
28
+ autoGainControl?: boolean[];
29
+ backgroundBlur?: boolean[];
30
+ channelCount?: ULongRange;
31
+ deviceId?: string;
32
+ displaySurface?: string;
33
+ echoCancellation?: boolean[];
34
+ facingMode?: string[];
35
+ frameRate?: DoubleRange;
36
+ groupId?: string;
37
+ height?: ULongRange;
38
+ noiseSuppression?: boolean[];
39
+ sampleRate?: ULongRange;
40
+ sampleSize?: ULongRange;
41
+ width?: ULongRange;
42
+ }
43
+ interface MediaTrackSettings {
44
+ aspectRatio?: number;
45
+ autoGainControl?: boolean;
46
+ backgroundBlur?: boolean;
47
+ channelCount?: number;
48
+ deviceId?: string;
49
+ displaySurface?: string;
50
+ echoCancellation?: boolean;
51
+ facingMode?: string;
52
+ frameRate?: number;
53
+ groupId?: string;
54
+ height?: number;
55
+ noiseSuppression?: boolean;
56
+ sampleRate?: number;
57
+ sampleSize?: number;
58
+ width?: number;
59
+ }
1
60
  export declare enum ClientEventTypes {
2
61
  CLIENT_JOINED = "CLIENT_JOINED",
3
62
  CLIENT_LEFT = "CLIENT_LEFT",
@@ -97,4 +156,5 @@ export interface DataChannelClosedEventPayload extends Record<string, unknown> {
97
156
  readyState: string;
98
157
  dataChannelId: string;
99
158
  }
159
+ export {};
100
160
  //# sourceMappingURL=ClientEventTypes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClientEventTypes.d.ts","sourceRoot":"","sources":["../../src/schema/ClientEventTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClientEventTypes.d.ts","sourceRoot":"","sources":["../../src/schema/ClientEventTypes.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,11 @@ export declare class OnAllCallObserverUpdater implements Updater {
5
5
  readonly name = "OnAllCallObserverUpdater";
6
6
  readonly description = "Call Observer's update() method when all of the ObservedCalls are updated";
7
7
  private readonly _updatedCalls;
8
+ closed: boolean;
8
9
  constructor(observer: Observer);
9
10
  close(): void;
10
11
  private _onNewObservedCall;
11
12
  private _onObservedCallUpdated;
13
+ private _updateIfEveryCallUpdated;
12
14
  }
13
- //# sourceMappingURL=OnAllCallObserverUpdater_.d.ts.map
15
+ //# sourceMappingURL=OnAllCallObserverUpdater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnAllCallObserverUpdater.d.ts","sourceRoot":"","sources":["../../src/updaters/OnAllCallObserverUpdater.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,wBAAyB,YAAW,OAAO;IAQtD,OAAO,CAAC,QAAQ;IAPjB,SAAgB,IAAI,8BAA8B;IAClD,SAAgB,WAAW,+EAAgF;IAE3G,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IAC5C,MAAM,UAAS;gBAGb,QAAQ,EAAE,QAAQ;IAU3B,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,yBAAyB;CAOjC"}
@@ -6,6 +6,7 @@ class OnAllCallObserverUpdater {
6
6
  name = 'OnAllCallObserverUpdater';
7
7
  description = 'Call Observer\'s update() method when all of the ObservedCalls are updated';
8
8
  _updatedCalls = new Set();
9
+ closed = false;
9
10
  constructor(observer) {
10
11
  this.observer = observer;
11
12
  this._onNewObservedCall = this._onNewObservedCall.bind(this);
@@ -15,13 +16,19 @@ class OnAllCallObserverUpdater {
15
16
  this.observer.on('newcall', this._onNewObservedCall);
16
17
  }
17
18
  close() {
18
- // do nothing, because we unsubscribe once close is emitted from observer
19
+ if (this.closed)
20
+ return;
21
+ this.closed = true;
22
+ this._updatedCalls.clear();
19
23
  }
20
24
  _onNewObservedCall(observedCall) {
25
+ if (this.closed)
26
+ return;
21
27
  const onUpdate = () => this._onObservedCallUpdated(observedCall);
22
28
  observedCall.once('close', () => {
23
29
  observedCall.off('update', onUpdate);
24
30
  this._updatedCalls.delete(observedCall.callId);
31
+ this._updateIfEveryCallUpdated();
25
32
  });
26
33
  observedCall.on('update', onUpdate);
27
34
  }
@@ -29,8 +36,13 @@ class OnAllCallObserverUpdater {
29
36
  if (observedCall.closed)
30
37
  return;
31
38
  this._updatedCalls.add(observedCall.callId);
39
+ this._updateIfEveryCallUpdated();
40
+ }
41
+ _updateIfEveryCallUpdated() {
32
42
  if (this._updatedCalls.size < this.observer.observedCalls.size)
33
43
  return;
44
+ else if (this.closed)
45
+ return;
34
46
  this._updatedCalls.clear();
35
47
  this.observer.update();
36
48
  }
@@ -5,9 +5,11 @@ export declare class OnAllClientCallUpdater implements Updater {
5
5
  readonly name = "OnAllClientCallUpdater";
6
6
  readonly description = "Call the update() method of the ObservedCall once all client has been updated";
7
7
  private readonly _updatedClients;
8
+ closed: boolean;
8
9
  constructor(_observedCall: ObservedCall);
9
10
  close(): void;
10
11
  private _onNewObservedClient;
11
12
  private _onClientUpdate;
13
+ private _updateIfEveryClientUpdated;
12
14
  }
13
15
  //# sourceMappingURL=OnAllClientCallUpdater.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OnAllClientCallUpdater.d.ts","sourceRoot":"","sources":["../../src/updaters/OnAllClientCallUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,sBAAuB,YAAW,OAAO;IAOpD,OAAO,CAAC,aAAa;IANtB,QAAQ,CAAC,IAAI,4BAA4B;IACzC,QAAQ,CAAC,WAAW,mFAAmF;IAEvG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;gBAG5C,aAAa,EAAE,YAAY;IAU7B,KAAK,IAAI,IAAI;IAIpB,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,eAAe;CAUvB"}
1
+ {"version":3,"file":"OnAllClientCallUpdater.d.ts","sourceRoot":"","sources":["../../src/updaters/OnAllClientCallUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,sBAAuB,YAAW,OAAO;IAQpD,OAAO,CAAC,aAAa;IAPtB,QAAQ,CAAC,IAAI,4BAA4B;IACzC,QAAQ,CAAC,WAAW,mFAAmF;IAEvG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IAC9C,MAAM,UAAS;gBAGb,aAAa,EAAE,YAAY;IAU7B,KAAK,IAAI,IAAI;IAOpB,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,2BAA2B;CAWnC"}
@@ -6,6 +6,7 @@ class OnAllClientCallUpdater {
6
6
  name = 'OnAllClientCallUpdater';
7
7
  description = 'Call the update() method of the ObservedCall once all client has been updated';
8
8
  _updatedClients = new Set();
9
+ closed = false;
9
10
  constructor(_observedCall) {
10
11
  this._observedCall = _observedCall;
11
12
  this._onNewObservedClient = this._onNewObservedClient.bind(this);
@@ -15,21 +16,36 @@ class OnAllClientCallUpdater {
15
16
  this._observedCall.on('newclient', this._onNewObservedClient);
16
17
  }
17
18
  close() {
19
+ if (this.closed)
20
+ return;
21
+ this.closed = true;
18
22
  // do nothing, as close once emitted unsubscription happened
23
+ this._updatedClients.clear();
19
24
  }
20
25
  _onNewObservedClient(observedClient) {
26
+ if (this.closed)
27
+ return;
21
28
  const onUpdate = () => this._onClientUpdate(observedClient);
22
29
  observedClient.once('close', () => {
23
30
  observedClient.off('update', onUpdate);
24
31
  this._updatedClients.delete(observedClient.clientId);
32
+ this._updateIfEveryClientUpdated();
25
33
  });
26
34
  observedClient.on('update', onUpdate);
27
35
  }
28
36
  _onClientUpdate(observedClient) {
37
+ if (observedClient.closed)
38
+ return;
29
39
  this._updatedClients.add(observedClient.clientId);
40
+ this._updateIfEveryClientUpdated();
41
+ }
42
+ _updateIfEveryClientUpdated() {
30
43
  if (this._updatedClients.size < this._observedCall.observedClients.size) {
31
44
  return;
32
45
  }
46
+ else if (this.closed) {
47
+ return;
48
+ }
33
49
  this._updatedClients.clear();
34
50
  this._observedCall.update();
35
51
  }
@@ -4,8 +4,9 @@ export declare class OnAnyCallObserverUpdater implements Updater {
4
4
  private observver;
5
5
  readonly name = "OnAnyCallObserverUpdater";
6
6
  readonly description = "Call Observer's update() method on any of the ObservedCall is updated";
7
+ closed: boolean;
7
8
  constructor(observver: Observer);
8
9
  close(): void;
9
10
  private _onNewObservedCall;
10
11
  }
11
- //# sourceMappingURL=OnAnyCallObserverUpdater_.d.ts.map
12
+ //# sourceMappingURL=OnAnyCallObserverUpdater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnAnyCallObserverUpdater.d.ts","sourceRoot":"","sources":["../../src/updaters/OnAnyCallObserverUpdater.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,wBAAyB,YAAW,OAAO;IAMtD,OAAO,CAAC,SAAS;IALlB,SAAgB,IAAI,8BAA8B;IAClD,SAAgB,WAAW,2EAA4E;IAChG,MAAM,UAAS;gBAGb,SAAS,EAAE,QAAQ;IAU5B,KAAK,IAAI,IAAI;IAMb,OAAO,CAAC,kBAAkB;CAc1B"}
@@ -5,6 +5,7 @@ class OnAnyCallObserverUpdater {
5
5
  observver;
6
6
  name = 'OnAnyCallObserverUpdater';
7
7
  description = 'Call Observer\'s update() method on any of the ObservedCall is updated';
8
+ closed = false;
8
9
  constructor(observver) {
9
10
  this.observver = observver;
10
11
  this._onNewObservedCall = this._onNewObservedCall.bind(this);
@@ -14,10 +15,19 @@ class OnAnyCallObserverUpdater {
14
15
  this.observver.on('newcall', this._onNewObservedCall);
15
16
  }
16
17
  close() {
18
+ if (this.closed)
19
+ return;
20
+ this.closed = true;
17
21
  // do nothing, because we unsubscribe once close is emitted from observer
18
22
  }
19
23
  _onNewObservedCall(observedCall) {
20
- const onUpdate = () => this.observver.update();
24
+ if (this.closed)
25
+ return;
26
+ const onUpdate = () => {
27
+ if (this.closed)
28
+ return;
29
+ this.observver.update();
30
+ };
21
31
  observedCall.once('close', () => {
22
32
  observedCall.off('update', onUpdate);
23
33
  });
@@ -4,6 +4,7 @@ export declare class OnAnyClientCallUpdater implements Updater {
4
4
  private _observedCall;
5
5
  readonly name = "OnAnyClientCallUpdater";
6
6
  readonly description = "Call the update() method of the ObservedCall when any of the client has been updated";
7
+ closed: boolean;
7
8
  constructor(_observedCall: ObservedCall);
8
9
  close(): void;
9
10
  private _onNewObservedClient;
@@ -1 +1 @@
1
- {"version":3,"file":"OnAnyClientCallUpdater.d.ts","sourceRoot":"","sources":["../../src/updaters/OnAnyClientCallUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,sBAAuB,YAAW,OAAO;IAKpD,OAAO,CAAC,aAAa;IAJtB,QAAQ,CAAC,IAAI,4BAA4B;IACzC,QAAQ,CAAC,WAAW,0FAA0F;gBAGrG,aAAa,EAAE,YAAY;IAU7B,KAAK,IAAI,IAAI;IAIpB,OAAO,CAAC,oBAAoB;CAQ5B"}
1
+ {"version":3,"file":"OnAnyClientCallUpdater.d.ts","sourceRoot":"","sources":["../../src/updaters/OnAnyClientCallUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,sBAAuB,YAAW,OAAO;IAMpD,OAAO,CAAC,aAAa;IALtB,QAAQ,CAAC,IAAI,4BAA4B;IACzC,QAAQ,CAAC,WAAW,0FAA0F;IACvG,MAAM,UAAS;gBAGb,aAAa,EAAE,YAAY;IAU7B,KAAK,IAAI,IAAI;IAKpB,OAAO,CAAC,oBAAoB;CAa5B"}
@@ -5,6 +5,7 @@ class OnAnyClientCallUpdater {
5
5
  _observedCall;
6
6
  name = 'OnAnyClientCallUpdater';
7
7
  description = 'Call the update() method of the ObservedCall when any of the client has been updated';
8
+ closed = false;
8
9
  constructor(_observedCall) {
9
10
  this._observedCall = _observedCall;
10
11
  this._onNewObservedClient = this._onNewObservedClient.bind(this);
@@ -14,10 +15,18 @@ class OnAnyClientCallUpdater {
14
15
  this._observedCall.on('newclient', this._onNewObservedClient);
15
16
  }
16
17
  close() {
17
- // do nothing, as close once emitted unsubscription happened
18
+ if (this.closed)
19
+ return;
20
+ this.closed = true;
18
21
  }
19
22
  _onNewObservedClient(observedClient) {
20
- const onUpdate = () => this._observedCall.update();
23
+ if (this.closed)
24
+ return;
25
+ const onUpdate = () => {
26
+ if (this.closed)
27
+ return;
28
+ this._observedCall.update();
29
+ };
21
30
  observedClient.once('close', () => {
22
31
  observedClient.off('update', onUpdate);
23
32
  });
@@ -0,0 +1,25 @@
1
+ import { ObservedCall } from '../ObservedCall';
2
+ import { ObservedCallEventMonitor } from '../ObservedCallEventMonitor';
3
+ import { ObservedInboundTrack } from '../ObservedInboundTrack';
4
+ import { ObservedOutboundTrack } from '../ObservedOutboundTrack';
5
+ import { RemoteTrackResolver } from './RemoteTrackResolver';
6
+ export declare class MediasoupRemoteTrackResolver implements RemoteTrackResolver {
7
+ readonly observedCall: ObservedCall;
8
+ readonly eventMonitor: ObservedCallEventMonitor<{}>;
9
+ private _consumerIdToProducerId;
10
+ private _producerIdToOutboundTrack;
11
+ private _consumerIdToInboundTrack;
12
+ private _inboundTrackToConsumerId;
13
+ private _producerIdToConsumerIds;
14
+ private _outboundTrackToProducerId;
15
+ constructor(observedCall: ObservedCall);
16
+ resolveRemoteOutboundTrack(inboundTrack: ObservedInboundTrack): ObservedOutboundTrack | undefined;
17
+ resolveRemoteInboundTracks(outboundTrack: ObservedOutboundTrack): ObservedInboundTrack[] | undefined;
18
+ private _addInboundTrack;
19
+ private _removeInboundTrack;
20
+ private _addOutboundTrack;
21
+ private _removeOutboundTrack;
22
+ private _getInboundTrackAttachments;
23
+ private _getOutboundTrackAttachments;
24
+ }
25
+ //# sourceMappingURL=MediasoupRemoteTrackResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediasoupRemoteTrackResolver.d.ts","sourceRoot":"","sources":["../../src/utils/MediasoupRemoteTrackResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,qBAAa,4BAA6B,YAAW,mBAAmB;aAetD,YAAY,EAAE,YAAY;IAd3C,SAAgB,YAAY,EAAE,wBAAwB,CAAC,EAEtD,CAAC,CAAC;IAEH,OAAO,CAAC,uBAAuB,CAA6B;IAC5D,OAAO,CAAC,0BAA0B,CAA4C;IAC9E,OAAO,CAAC,yBAAyB,CAA2C;IAG5E,OAAO,CAAC,yBAAyB,CAA6B;IAC9D,OAAO,CAAC,wBAAwB,CAA+B;IAC/D,OAAO,CAAC,0BAA0B,CAA6B;gBAG9C,YAAY,EAAE,YAAY;IAcpC,0BAA0B,CAAC,YAAY,EAAE,oBAAoB,GAAG,qBAAqB,GAAG,SAAS;IAYjG,0BAA0B,CAAC,aAAa,EAAE,qBAAqB,GAAG,oBAAoB,EAAE,GAAG,SAAS;IAe3G,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,2BAA2B;IAcnC,OAAO,CAAC,4BAA4B;CAWpC"}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MediasoupRemoteTrackResolver = void 0;
4
+ class MediasoupRemoteTrackResolver {
5
+ observedCall;
6
+ eventMonitor;
7
+ _consumerIdToProducerId = new Map();
8
+ _producerIdToOutboundTrack = new Map();
9
+ _consumerIdToInboundTrack = new Map();
10
+ // private _producerIdToOutboundTrack = new Map<string, ObservedOutboundTrack>();
11
+ _inboundTrackToConsumerId = new Map();
12
+ _producerIdToConsumerIds = new Map();
13
+ _outboundTrackToProducerId = new Map();
14
+ constructor(observedCall) {
15
+ this.observedCall = observedCall;
16
+ this.eventMonitor = this.observedCall.createEventMonitor({});
17
+ this.eventMonitor.onInboundTrackAdded = this._addInboundTrack.bind(this);
18
+ this.eventMonitor.onInboundTrackRemoved = this._removeInboundTrack.bind(this);
19
+ this.eventMonitor.onOutboundTrackAdded = this._addOutboundTrack.bind(this);
20
+ this.eventMonitor.onOutboundTrackRemoved = this._removeOutboundTrack.bind(this);
21
+ // this.eventMonitor.onClientEvent = (client, event) => {
22
+ // };
23
+ }
24
+ resolveRemoteOutboundTrack(inboundTrack) {
25
+ const consumerId = this._inboundTrackToConsumerId.get(inboundTrack.id);
26
+ if (!consumerId)
27
+ return;
28
+ const producerId = this._consumerIdToProducerId.get(consumerId);
29
+ if (!producerId)
30
+ return;
31
+ return this._producerIdToOutboundTrack.get(producerId);
32
+ }
33
+ resolveRemoteInboundTracks(outboundTrack) {
34
+ const producerId = this._outboundTrackToProducerId.get(outboundTrack.id);
35
+ if (!producerId)
36
+ return;
37
+ const consumerIds = this._producerIdToConsumerIds.get(producerId);
38
+ if (!consumerIds)
39
+ return;
40
+ return consumerIds
41
+ .map((consumerId) => this._consumerIdToInboundTrack.get(consumerId))
42
+ .filter((inboundTrack) => Boolean(inboundTrack));
43
+ }
44
+ _addInboundTrack(inboundTrack) {
45
+ const attachments = this._getInboundTrackAttachments(inboundTrack);
46
+ if (!attachments)
47
+ return;
48
+ const { producerId, consumerId } = attachments;
49
+ this._inboundTrackToConsumerId.set(inboundTrack.id, consumerId);
50
+ this._consumerIdToProducerId.set(consumerId, producerId);
51
+ this._consumerIdToInboundTrack.set(consumerId, inboundTrack);
52
+ let producerConsumers = this._producerIdToConsumerIds.get(producerId);
53
+ if (!producerConsumers) {
54
+ producerConsumers = [];
55
+ this._producerIdToConsumerIds.set(producerId, producerConsumers);
56
+ }
57
+ producerConsumers.push(consumerId);
58
+ }
59
+ _removeInboundTrack(inboundTrack) {
60
+ const consumerId = this._inboundTrackToConsumerId.get(inboundTrack.id);
61
+ if (!consumerId)
62
+ return;
63
+ this._inboundTrackToConsumerId.delete(inboundTrack.id);
64
+ this._consumerIdToProducerId.delete(consumerId);
65
+ this._consumerIdToInboundTrack.delete(consumerId);
66
+ const producerConsumers = this._producerIdToConsumerIds.get(consumerId);
67
+ if (!producerConsumers)
68
+ return;
69
+ const filteredProducerConsumers = producerConsumers.filter((id) => id !== consumerId);
70
+ if (filteredProducerConsumers.length === 0) {
71
+ this._producerIdToConsumerIds.delete(consumerId);
72
+ }
73
+ else {
74
+ this._producerIdToConsumerIds.set(consumerId, filteredProducerConsumers);
75
+ }
76
+ }
77
+ _addOutboundTrack(outboundTrack) {
78
+ const attachments = this._getOutboundTrackAttachments(outboundTrack);
79
+ if (!attachments)
80
+ return;
81
+ const { producerId, } = attachments;
82
+ this._producerIdToOutboundTrack.set(producerId, outboundTrack);
83
+ this._outboundTrackToProducerId.set(outboundTrack.id, producerId);
84
+ }
85
+ _removeOutboundTrack(outboundTrack) {
86
+ const producerId = this._outboundTrackToProducerId.get(outboundTrack.id);
87
+ if (!producerId)
88
+ return;
89
+ this._producerIdToOutboundTrack.delete(producerId);
90
+ this._outboundTrackToProducerId.delete(outboundTrack.id);
91
+ }
92
+ _getInboundTrackAttachments(inboundTrack) {
93
+ const { producerId, consumerId } = inboundTrack.attachments ?? {};
94
+ if (!producerId || !consumerId || typeof producerId !== 'string' || typeof consumerId !== 'string')
95
+ return;
96
+ return {
97
+ producerId,
98
+ consumerId
99
+ };
100
+ }
101
+ _getOutboundTrackAttachments(outboundTrack) {
102
+ const { producerId, } = outboundTrack.attachments ?? {};
103
+ if (!producerId || typeof producerId !== 'string')
104
+ return;
105
+ return {
106
+ producerId,
107
+ };
108
+ }
109
+ }
110
+ exports.MediasoupRemoteTrackResolver = MediasoupRemoteTrackResolver;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@observertc/observer-js",
3
- "version": "1.0.1-4416b1e.0",
3
+ "version": "1.0.1-4daea92.0",
4
4
  "description": "Server Side NodeJS Library for processing ObserveRTC Samples",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -10,6 +10,7 @@ import { OnAllClientCallUpdater } from './updaters/OnAllClientCallUpdater';
10
10
  import { Updater } from './updaters/Updater';
11
11
  import { OnIntervalUpdater } from './updaters/OnIntervalUpdater';
12
12
  import { OnAnyClientCallUpdater } from './updaters/OnAnyClientCallUpdater';
13
+ import { ObservedCallEventMonitor } from './ObservedCallEventMonitor';
13
14
 
14
15
  export type ObservedCallSettings<AppData extends Record<string, unknown> = Record<string, unknown>> = {
15
16
  callId: string;
@@ -206,6 +207,10 @@ export class ObservedCall<AppData extends Record<string, unknown> = Record<strin
206
207
  return result;
207
208
  }
208
209
 
210
+ public createEventMonitor<CTX>(context: CTX): ObservedCallEventMonitor<CTX> {
211
+ return new ObservedCallEventMonitor(this, context);
212
+ }
213
+
209
214
  public update() {
210
215
  if (this.closed) return;
211
216