@observertc/observer-js 1.0.1-c3edea3.0 → 1.0.1-ec27289.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 (125) hide show
  1. package/lib/ObservedCall.d.ts +41 -7
  2. package/lib/ObservedCall.d.ts.map +1 -1
  3. package/lib/ObservedCall.js +125 -13
  4. package/lib/ObservedCallSummary.d.ts +18 -0
  5. package/lib/ObservedCallSummary.d.ts.map +1 -0
  6. package/lib/ObservedClient.d.ts +70 -11
  7. package/lib/ObservedClient.d.ts.map +1 -1
  8. package/lib/ObservedClient.js +394 -72
  9. package/lib/ObservedClientEventMonitor.d.ts +89 -0
  10. package/lib/ObservedClientEventMonitor.d.ts.map +1 -0
  11. package/lib/ObservedClientEventMonitor.js +247 -0
  12. package/lib/ObservedClientSummary.d.ts +23 -0
  13. package/lib/ObservedClientSummary.d.ts.map +1 -0
  14. package/lib/ObservedClientSummary.js +2 -0
  15. package/lib/ObservedDataChannel.d.ts +6 -0
  16. package/lib/ObservedDataChannel.d.ts.map +1 -1
  17. package/lib/ObservedDataChannel.js +30 -0
  18. package/lib/ObservedIceCandidatePair.d.ts +4 -0
  19. package/lib/ObservedIceCandidatePair.d.ts.map +1 -1
  20. package/lib/ObservedIceCandidatePair.js +28 -0
  21. package/lib/ObservedIceTransport.d.ts +4 -0
  22. package/lib/ObservedIceTransport.d.ts.map +1 -1
  23. package/lib/ObservedIceTransport.js +28 -0
  24. package/lib/ObservedInboundTrack.d.ts +2 -0
  25. package/lib/ObservedInboundTrack.d.ts.map +1 -1
  26. package/lib/ObservedInboundTrack.js +2 -0
  27. package/lib/ObservedOutboundTrack.d.ts +2 -0
  28. package/lib/ObservedOutboundTrack.d.ts.map +1 -1
  29. package/lib/ObservedOutboundTrack.js +2 -0
  30. package/lib/ObservedPeerConnection.d.ts +14 -2
  31. package/lib/ObservedPeerConnection.d.ts.map +1 -1
  32. package/lib/ObservedPeerConnection.js +106 -14
  33. package/lib/ObservedTURN.d.ts +31 -0
  34. package/lib/ObservedTURN.d.ts.map +1 -0
  35. package/lib/ObservedTURN.js +58 -0
  36. package/lib/ObservedTurnServer.d.ts +25 -0
  37. package/lib/ObservedTurnServer.d.ts.map +1 -0
  38. package/lib/ObservedTurnServer.js +59 -0
  39. package/lib/Observer.d.ts +38 -21
  40. package/lib/Observer.d.ts.map +1 -1
  41. package/lib/Observer.js +114 -40
  42. package/lib/ObserverSummary.d.ts +13 -0
  43. package/lib/ObserverSummary.d.ts.map +1 -0
  44. package/lib/ObserverSummary.js +2 -0
  45. package/lib/common/utils.d.ts +2 -1
  46. package/lib/common/utils.d.ts.map +1 -1
  47. package/lib/common/utils.js +11 -3
  48. package/lib/index.d.ts +5 -0
  49. package/lib/index.d.ts.map +1 -1
  50. package/lib/index.js +7 -1
  51. package/lib/schema/ClientEventTypes.d.ts +100 -0
  52. package/lib/schema/ClientEventTypes.d.ts.map +1 -0
  53. package/lib/schema/ClientEventTypes.js +38 -0
  54. package/lib/schema/{metaTypes.d.ts → ClientMetaTypes.d.ts} +2 -2
  55. package/lib/schema/ClientMetaTypes.d.ts.map +1 -0
  56. package/lib/schema/ClientMetaTypes.js +16 -0
  57. package/lib/updaters/CallUpdater.d.ts.map +1 -0
  58. package/lib/updaters/CallUpdater.js +2 -0
  59. package/lib/updaters/ObserverUpdater.d.ts +5 -0
  60. package/lib/updaters/ObserverUpdater.d.ts.map +1 -0
  61. package/lib/updaters/ObserverUpdater.js +2 -0
  62. package/lib/updaters/OnAllCallObserverUpdater_.d.ts +13 -0
  63. package/lib/updaters/OnAllCallObserverUpdater_.d.ts.map +1 -0
  64. package/lib/updaters/OnAllCallObserverUpdater_.js +38 -0
  65. package/lib/updaters/OnAllClientCallUpdater.d.ts +13 -0
  66. package/lib/updaters/OnAllClientCallUpdater.d.ts.map +1 -0
  67. package/lib/updaters/OnAllClientCallUpdater.js +37 -0
  68. package/lib/updaters/OnAnyCallObserverUpdater_.d.ts +11 -0
  69. package/lib/updaters/OnAnyCallObserverUpdater_.d.ts.map +1 -0
  70. package/lib/updaters/OnAnyCallObserverUpdater_.js +27 -0
  71. package/lib/updaters/OnAnyClientCallUpdater.d.ts +11 -0
  72. package/lib/updaters/OnAnyClientCallUpdater.d.ts.map +1 -0
  73. package/lib/updaters/OnAnyClientCallUpdater.js +27 -0
  74. package/lib/updaters/OnIntervalUpdater.d.ts +10 -0
  75. package/lib/updaters/OnIntervalUpdater.d.ts.map +1 -0
  76. package/lib/updaters/OnIntervalUpdater.js +17 -0
  77. package/lib/updaters/Updater.d.ts +6 -0
  78. package/lib/updaters/Updater.d.ts.map +1 -0
  79. package/lib/updaters/Updater.js +2 -0
  80. package/package.json +1 -1
  81. package/src/ObservedCall.ts +205 -16
  82. package/src/ObservedCallSummary.ts +22 -0
  83. package/src/ObservedClient.ts +492 -78
  84. package/src/ObservedClientEventMonitor.ts +301 -0
  85. package/src/ObservedClientSummary.ts +24 -0
  86. package/src/ObservedDataChannel.ts +32 -0
  87. package/src/ObservedIceCandidatePair.ts +26 -0
  88. package/src/ObservedIceTransport.ts +29 -0
  89. package/src/ObservedInboundTrack.ts +3 -0
  90. package/src/ObservedOutboundTrack.ts +3 -0
  91. package/src/ObservedPeerConnection.ts +120 -16
  92. package/src/ObservedTURN.ts +86 -0
  93. package/src/ObservedTurnServer.ts +72 -0
  94. package/src/Observer.ts +164 -64
  95. package/src/ObserverSummary.ts +15 -0
  96. package/src/common/utils.ts +12 -2
  97. package/src/index.ts +5 -0
  98. package/src/schema/ClientEventTypes.ts +112 -0
  99. package/src/schema/{metaTypes.ts → ClientMetaTypes.ts} +1 -1
  100. package/src/updaters/ObserverUpdater.ts +5 -0
  101. package/src/updaters/OnAllCallObserverUpdater_.ts +46 -0
  102. package/src/updaters/OnAllClientCallUpdater.ts +46 -0
  103. package/src/updaters/OnAnyCallObserverUpdater_.ts +32 -0
  104. package/src/updaters/OnAnyClientCallUpdater.ts +32 -0
  105. package/src/updaters/OnIntervalUpdater.ts +19 -0
  106. package/src/updaters/Updater.ts +5 -0
  107. package/tsconfig.json +1 -1
  108. package/lib/schema/eventTypes.d.ts +0 -33
  109. package/lib/schema/eventTypes.d.ts.map +0 -1
  110. package/lib/schema/eventTypes.js +0 -38
  111. package/lib/schema/metaTypes.d.ts.map +0 -1
  112. package/lib/schema/metaTypes.js +0 -16
  113. package/lib/utils/CallUpdater.d.ts.map +0 -1
  114. package/lib/utils/OnAllClientCallUpdater.d.ts +0 -16
  115. package/lib/utils/OnAllClientCallUpdater.d.ts.map +0 -1
  116. package/lib/utils/OnAllClientCallUpdater.js +0 -58
  117. package/lib/utils/onAnyClientCallUpdater.d.ts +0 -14
  118. package/lib/utils/onAnyClientCallUpdater.d.ts.map +0 -1
  119. package/lib/utils/onAnyClientCallUpdater.js +0 -51
  120. package/src/schema/eventTypes.ts +0 -36
  121. package/src/utils/OnAllClientCallUpdater.ts +0 -68
  122. package/src/utils/onAnyClientCallUpdater.ts +0 -59
  123. /package/lib/{utils/CallUpdater.js → ObservedCallSummary.js} +0 -0
  124. /package/lib/{utils → updaters}/CallUpdater.d.ts +0 -0
  125. /package/src/{utils → updaters}/CallUpdater.ts +0 -0
package/lib/Observer.js CHANGED
@@ -2,22 +2,72 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Observer = void 0;
4
4
  const logger_1 = require("./common/logger");
5
- const Middleware_1 = require("./common/Middleware");
6
5
  const ObservedCall_1 = require("./ObservedCall");
7
6
  const events_1 = require("events");
7
+ const ObservedTURN_1 = require("./ObservedTURN");
8
+ const Detectors_1 = require("./detectors/Detectors");
9
+ const OnIntervalUpdater_1 = require("./updaters/OnIntervalUpdater");
10
+ const OnAllCallObserverUpdater_1 = require("./updaters/OnAllCallObserverUpdater_");
11
+ const OnAnyCallObserverUpdater_1 = require("./updaters/OnAnyCallObserverUpdater_");
8
12
  const logger = (0, logger_1.createLogger)('Observer');
9
13
  class Observer extends events_1.EventEmitter {
10
- processors = {
11
- events: new Middleware_1.MiddlewareProcessor(),
12
- metaData: new Middleware_1.MiddlewareProcessor(),
13
- issues: new Middleware_1.MiddlewareProcessor(),
14
- extensionStats: new Middleware_1.MiddlewareProcessor(),
15
- };
14
+ config;
15
+ detectors;
16
+ observedTURN = new ObservedTURN_1.ObservedTURN();
16
17
  observedCalls = new Map();
18
+ updater;
17
19
  closed = false;
18
- constructor() {
20
+ totalAddedCall = 0;
21
+ totalRemovedCall = 0;
22
+ totalRttLt50Measurements = 0;
23
+ totalRttLt150Measurements = 0;
24
+ totalRttLt300Measurements = 0;
25
+ totalRttGtOrEq300Measurements = 0;
26
+ totalClientIssues = 0;
27
+ numberOfClientsUsingTurn = 0;
28
+ numberOfClients = 0;
29
+ numberOfInboundRtpStreams = 0;
30
+ numberOfOutboundRtpStreams = 0;
31
+ numberOfDataChannels = 0;
32
+ numberOfPeerConnections = 0;
33
+ get numberOfCalls() {
34
+ return this.observedCalls.size;
35
+ }
36
+ _timer;
37
+ constructor(config = {
38
+ updatePolicy: 'update-when-all-call-updated',
39
+ updateIntervalInMs: undefined,
40
+ }) {
19
41
  super();
42
+ this.config = config;
20
43
  this.setMaxListeners(Infinity);
44
+ this.update = this.update.bind(this);
45
+ if (this.config.updateIntervalInMs) {
46
+ if (this.config.updatePolicy && this.config.updatePolicy !== 'update-on-interval') {
47
+ throw new Error('update policy must be update-on-interval if updateIntervalInMs is set in config');
48
+ }
49
+ this._timer = setInterval(this.update.bind(this), this.config.updateIntervalInMs);
50
+ }
51
+ if (this.config.updateIntervalInMs) {
52
+ if (this.config.updatePolicy !== 'update-on-interval') {
53
+ throw new Error('updatePolicy must be update-on-interval if updateIntervalInMs is set in config');
54
+ }
55
+ }
56
+ switch (this.config.updatePolicy) {
57
+ case 'update-on-any-call-updated':
58
+ this.updater = new OnAllCallObserverUpdater_1.OnAllCallObserverUpdater(this);
59
+ break;
60
+ case 'update-when-all-call-updated':
61
+ this.updater = new OnAnyCallObserverUpdater_1.OnAnyCallObserverUpdater(this);
62
+ break;
63
+ case 'update-on-interval':
64
+ if (!this.config.updateIntervalInMs) {
65
+ throw new Error('updateIntervalInMs setting in config must be set if updatePolicy is update-on-interval');
66
+ }
67
+ this.updater = new OnIntervalUpdater_1.OnIntervalUpdater(this.config.updateIntervalInMs, this.update.bind(this));
68
+ break;
69
+ }
70
+ this.detectors = new Detectors_1.Detectors();
21
71
  }
22
72
  getObservedCall(callId) {
23
73
  if (this.closed || !this.observedCalls.has(callId))
@@ -28,55 +78,79 @@ class Observer extends events_1.EventEmitter {
28
78
  if (this.closed) {
29
79
  throw new Error('Attempted to create a call source on a closed observer');
30
80
  }
81
+ if (!settings.updatePolicy) {
82
+ settings.updatePolicy = this.config.defaultCallUpdatePolicy;
83
+ settings.updateIntervalInMs = this.config.defaultCallUpdateIntervalInMs;
84
+ }
31
85
  const observedCall = new ObservedCall_1.ObservedCall(settings, this);
86
+ const onCallUpdated = () => this._onObservedCallUpdated(observedCall);
32
87
  if (this.observedCalls.has(observedCall.callId))
33
88
  throw new Error(`Observed Call with id ${observedCall.callId} already exists`);
34
89
  observedCall.once('close', () => {
35
90
  this.observedCalls.delete(observedCall.callId);
91
+ observedCall.off('update', onCallUpdated);
92
+ ++this.totalRemovedCall;
36
93
  });
37
94
  this.observedCalls.set(observedCall.callId, observedCall);
95
+ observedCall.on('update', onCallUpdated);
96
+ ++this.totalAddedCall;
38
97
  this.emit('newcall', observedCall);
39
98
  return observedCall;
40
99
  }
41
- addClientEventMiddleware(...middlewares) {
42
- this.processors.events.addMiddleware(...middlewares);
43
- return this;
44
- }
45
- removeClientEventMiddleware(...middlewares) {
46
- this.processors.events.removeMiddleware(...middlewares);
47
- return this;
48
- }
49
- addClientMetaDataMiddleware(...middlewares) {
50
- this.processors.metaData.addMiddleware(...middlewares);
51
- return this;
52
- }
53
- removeClientMetaDataMiddleware(...middlewares) {
54
- this.processors.metaData.removeMiddleware(...middlewares);
55
- return this;
56
- }
57
- addClientIssueMiddleware(...middlewares) {
58
- this.processors.issues.addMiddleware(...middlewares);
59
- return this;
60
- }
61
- removeClientIssueMiddleware(...middlewares) {
62
- this.processors.issues.removeMiddleware(...middlewares);
63
- return this;
64
- }
65
- addExtensionStatMiddleware(...middlewares) {
66
- this.processors.extensionStats.addMiddleware(...middlewares);
67
- return this;
68
- }
69
- removeExtensionStatMiddleware(...middlewares) {
70
- this.processors.extensionStats.removeMiddleware(...middlewares);
71
- return this;
72
- }
73
100
  close() {
74
101
  if (this.closed) {
75
102
  return logger.debug('Attempted to close twice');
76
103
  }
77
104
  this.closed = true;
105
+ clearInterval(this._timer);
106
+ this._timer = undefined;
78
107
  this.observedCalls.forEach((call) => call.close());
79
108
  this.emit('close');
80
109
  }
110
+ accept(sample) {
111
+ if (this.closed)
112
+ return;
113
+ if (!sample.callId)
114
+ return logger.warn('Received sample without callId. %o', sample);
115
+ if (!sample.clientId)
116
+ return logger.warn('Received sample without clientId %o', sample);
117
+ const call = this.getObservedCall(sample.callId) ?? this.createObservedCall({
118
+ callId: sample.callId,
119
+ updateIntervalInMs: this.config.defaultCallUpdateIntervalInMs,
120
+ updatePolicy: this.config.defaultCallUpdatePolicy,
121
+ });
122
+ const client = call.getObservedClient(sample.clientId) ?? call.createObservedClient({
123
+ clientId: sample.clientId,
124
+ });
125
+ client.accept(sample);
126
+ }
127
+ update() {
128
+ if (this.closed) {
129
+ return;
130
+ }
131
+ this.numberOfInboundRtpStreams = 0;
132
+ this.numberOfOutboundRtpStreams = 0;
133
+ this.numberOfPeerConnections = 0;
134
+ this.numberOfDataChannels = 0;
135
+ this.numberOfClients = 0;
136
+ this.numberOfClientsUsingTurn = 0;
137
+ for (const call of this.observedCalls.values()) {
138
+ this.numberOfInboundRtpStreams += call.numberOfInboundRtpStreams;
139
+ this.numberOfOutboundRtpStreams += call.numberOfOutboundRtpStreams;
140
+ this.numberOfPeerConnections += call.numberOfPeerConnections;
141
+ this.numberOfDataChannels += call.numberOfDataChannels;
142
+ this.numberOfClients += call.numberOfClients;
143
+ this.numberOfClientsUsingTurn += call.clientsUsedTurn.size;
144
+ }
145
+ this.observedTURN.update();
146
+ this.emit('update');
147
+ }
148
+ _onObservedCallUpdated(call) {
149
+ this.totalRttLt50Measurements += call.deltaRttLt50Measurements;
150
+ this.totalRttLt150Measurements += call.deltaRttLt150Measurements;
151
+ this.totalRttLt300Measurements += call.deltaRttLt300Measurements;
152
+ this.totalRttGtOrEq300Measurements += call.deltaRttGtOrEq300Measurements;
153
+ this.totalClientIssues += call.deltaNumberOfIssues;
154
+ }
81
155
  }
82
156
  exports.Observer = Observer;
@@ -0,0 +1,13 @@
1
+ export type ObserverSummary = {
2
+ currentActiveCalls: number;
3
+ currentNumberOfClientsUsingTURN: number;
4
+ currentNumberOfClients: number;
5
+ totalAddedCall: number;
6
+ totalRemovedCall: number;
7
+ totalRttLt50Measurements: number;
8
+ totalRttLt150Measurements: number;
9
+ totalRttLt300Measurements: number;
10
+ totalRttGtOrEq300Measurements: number;
11
+ totalClientIssues: number;
12
+ };
13
+ //# sourceMappingURL=ObserverSummary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObserverSummary.d.ts","sourceRoot":"","sources":["../src/ObserverSummary.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,+BAA+B,EAAE,MAAM,CAAC;IACxC,sBAAsB,EAAE,MAAM,CAAC;IAE/B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IAEzB,wBAAwB,EAAE,MAAM,CAAC;IACjC,yBAAyB,EAAE,MAAM,CAAC;IAClC,yBAAyB,EAAE,MAAM,CAAC;IAClC,6BAA6B,EAAE,MAAM,CAAC;IAEtC,iBAAiB,EAAE,MAAM,CAAC;CAC1B,CAAA"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -5,6 +5,7 @@ export type Writable<T> = T extends object ? {
5
5
  export declare function iteratorConverter<T>(generator: Generator<T, void, undefined>): IterableIterator<T>;
6
6
  export declare function asyncIteratorConverter<T>(generator: AsyncGenerator<T, void, undefined>): AsyncIterableIterator<T>;
7
7
  export declare function isValidUuid(str: string): boolean;
8
- export declare function getMedian(arr: number[]): number;
8
+ export declare function getAverage(arr: number[], defaultAvgIfArrLengthIs0?: number): number;
9
+ export declare function getMedian(arr: number[], copyArrayForSorting?: boolean): number;
9
10
  export declare function parseJsonAs<T>(json?: string): T | undefined;
10
11
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/common/utils.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE/E,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,CAAC,CAAC;AAE9F,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CASlG;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CASjH;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIhD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,CAc/C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAU3D"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/common/utils.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE/E,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAAG;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,CAAC,CAAC;AAE9F,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CASlG;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CASjH;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIhD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,wBAAwB,SAAI,GAAG,MAAM,CAI9E;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,mBAAmB,UAAO,GAAG,MAAM,CAkB3E;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAU3D"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseJsonAs = exports.getMedian = exports.isValidUuid = exports.asyncIteratorConverter = exports.iteratorConverter = void 0;
3
+ exports.parseJsonAs = exports.getMedian = exports.getAverage = exports.isValidUuid = exports.asyncIteratorConverter = exports.iteratorConverter = void 0;
4
4
  function iteratorConverter(generator) {
5
5
  return {
6
6
  [Symbol.iterator]() {
@@ -28,9 +28,17 @@ function isValidUuid(str) {
28
28
  return regexp.test(str);
29
29
  }
30
30
  exports.isValidUuid = isValidUuid;
31
- function getMedian(arr) {
31
+ function getAverage(arr, defaultAvgIfArrLengthIs0 = 0) {
32
+ if (arr.length === 0)
33
+ return defaultAvgIfArrLengthIs0;
34
+ return arr.reduce((a, b) => a + b, 0) / arr.length;
35
+ }
36
+ exports.getAverage = getAverage;
37
+ function getMedian(arr, copyArrayForSorting = true) {
32
38
  // Sort the array in ascending order
33
- const sortedArr = arr.slice().sort((a, b) => a - b);
39
+ const sortedArr = copyArrayForSorting
40
+ ? arr.slice().sort((a, b) => a - b)
41
+ : arr.sort((a, b) => a - b);
34
42
  // Calculate the middle index
35
43
  const mid = Math.floor(sortedArr.length / 2);
36
44
  // If the array length is odd, return the middle element
package/lib/index.d.ts CHANGED
@@ -18,5 +18,10 @@ export { ObservedIceCandidatePair } from './ObservedIceCandidatePair';
18
18
  export { ObservedIceCandidate } from './ObservedIceCandidate';
19
19
  export { ObservedIceTransport } from './ObservedIceTransport';
20
20
  export { ObservedPeerConnectionTransport } from './ObservedPeerConnectionTransport';
21
+ export { ClientEventTypes } from './schema/ClientEventTypes';
22
+ export { ClientMetaTypes } from './schema/ClientMetaTypes';
23
+ export { ClientSample } from './schema/ClientSample';
24
+ export { ScoreCalculator } from './scores/ScoreCalculator';
25
+ export { ObservedClientEventMonitor } from './ObservedClientEventMonitor';
21
26
  export { Middleware } from './common/Middleware';
22
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AAEpF,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
package/lib/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ObservedPeerConnectionTransport = exports.ObservedIceTransport = exports.ObservedIceCandidate = exports.ObservedIceCandidatePair = exports.ObservedRemoteOutboundRtp = exports.ObservedRemoteInboundRtp = exports.ObservedOutboundRtp = exports.ObservedInboundRtp = exports.ObservedDataChannel = exports.ObservedCertificate = exports.ObservedCodec = exports.ObservedMediaPlayout = exports.ObservedMediaSource = exports.ObservedPeerConnection = exports.ObservedClient = exports.ObservedOutboundTrack = exports.ObservedInboundTrack = exports.ObservedCall = exports.Observer = void 0;
3
+ exports.ObservedClientEventMonitor = exports.ClientMetaTypes = exports.ClientEventTypes = exports.ObservedPeerConnectionTransport = exports.ObservedIceTransport = exports.ObservedIceCandidate = exports.ObservedIceCandidatePair = exports.ObservedRemoteOutboundRtp = exports.ObservedRemoteInboundRtp = exports.ObservedOutboundRtp = exports.ObservedInboundRtp = exports.ObservedDataChannel = exports.ObservedCertificate = exports.ObservedCodec = exports.ObservedMediaPlayout = exports.ObservedMediaSource = exports.ObservedPeerConnection = exports.ObservedClient = exports.ObservedOutboundTrack = exports.ObservedInboundTrack = exports.ObservedCall = exports.Observer = void 0;
4
4
  var Observer_1 = require("./Observer");
5
5
  Object.defineProperty(exports, "Observer", { enumerable: true, get: function () { return Observer_1.Observer; } });
6
6
  var ObservedCall_1 = require("./ObservedCall");
@@ -39,3 +39,9 @@ var ObservedIceTransport_1 = require("./ObservedIceTransport");
39
39
  Object.defineProperty(exports, "ObservedIceTransport", { enumerable: true, get: function () { return ObservedIceTransport_1.ObservedIceTransport; } });
40
40
  var ObservedPeerConnectionTransport_1 = require("./ObservedPeerConnectionTransport");
41
41
  Object.defineProperty(exports, "ObservedPeerConnectionTransport", { enumerable: true, get: function () { return ObservedPeerConnectionTransport_1.ObservedPeerConnectionTransport; } });
42
+ var ClientEventTypes_1 = require("./schema/ClientEventTypes");
43
+ Object.defineProperty(exports, "ClientEventTypes", { enumerable: true, get: function () { return ClientEventTypes_1.ClientEventTypes; } });
44
+ var ClientMetaTypes_1 = require("./schema/ClientMetaTypes");
45
+ Object.defineProperty(exports, "ClientMetaTypes", { enumerable: true, get: function () { return ClientMetaTypes_1.ClientMetaTypes; } });
46
+ var ObservedClientEventMonitor_1 = require("./ObservedClientEventMonitor");
47
+ Object.defineProperty(exports, "ObservedClientEventMonitor", { enumerable: true, get: function () { return ObservedClientEventMonitor_1.ObservedClientEventMonitor; } });
@@ -0,0 +1,100 @@
1
+ export declare enum ClientEventTypes {
2
+ CLIENT_JOINED = "CLIENT_JOINED",
3
+ CLIENT_LEFT = "CLIENT_LEFT",
4
+ PEER_CONNECTION_OPENED = "PEER_CONNECTION_OPENED",
5
+ PEER_CONNECTION_CLOSED = "PEER_CONNECTION_CLOSED",
6
+ MEDIA_TRACK_ADDED = "MEDIA_TRACK_ADDED",
7
+ MEDIA_TRACK_REMOVED = "MEDIA_TRACK_REMOVED",
8
+ MEDIA_TRACK_RESUMED = "MEDIA_TRACK_RESUMED",
9
+ MEDIA_TRACK_MUTED = "MEDIA_TRACK_MUTED",
10
+ MEDIA_TRACK_UNMUTED = "MEDIA_TRACK_UNMUTED",
11
+ ICE_GATHERING_STATE_CHANGED = "ICE_GATHERING_STATE_CHANGED",
12
+ PEER_CONNECTION_STATE_CHANGED = "PEER_CONNECTION_STATE_CHANGED",
13
+ ICE_CONNECTION_STATE_CHANGED = "ICE_CONNECTION_STATE_CHANGED",
14
+ DATA_CHANNEL_OPEN = "DATA_CHANNEL_OPEN",
15
+ DATA_CHANNEL_CLOSED = "DATA_CHANNEL_CLOSED",
16
+ DATA_CHANNEL_ERROR = "DATA_CHANNEL_ERROR",
17
+ NEGOTIATION_NEEDED = "NEGOTIATION_NEEDED",
18
+ SIGNALING_STATE_CHANGE = "SIGNALING_STATE_CHANGE",
19
+ ICE_GATHERING_STATE_CHANGE = "ICE_GATHERING_STATE_CHANGE",
20
+ ICE_CONNECTION_STATE_CHANGE = "ICE_CONNECTION_STATE_CHANGE",
21
+ ICE_CANDIDATE = "ICE_CANDIDATE",
22
+ PRODUCER_ADDED = "PRODUCER_ADDED",
23
+ PRODUCER_REMOVED = "PRODUCER_REMOVED",
24
+ PRODUCER_PAUSED = "PRODUCER_PAUSED",
25
+ PRODUCER_RESUMED = "PRODUCER_RESUMED",
26
+ CONSUMER_ADDED = "CONSUMER_ADDED",
27
+ CONSUMER_REMOVED = "CONSUMER_REMOVED",
28
+ DATA_PRODUCER_CREATED = "DATA_PRODUCER_CREATED",
29
+ DATA_PRODUCER_CLOSED = "DATA_PRODUCER_CLOSED",
30
+ DATA_CONSUMER_CREATED = "DATA_CONSUMER_CREATED",
31
+ DATA_CONSUMER_CLOSED = "DATA_CONSUMER_CLOSED"
32
+ }
33
+ export interface PeerConnectionOpenedEventPayload extends Record<string, unknown> {
34
+ peerConnectionId: string;
35
+ iceConnectionState: string;
36
+ iceGatheringState: string;
37
+ signalingState: string;
38
+ }
39
+ export interface PeerConnectionClosedEventPayload extends Record<string, unknown> {
40
+ peerConnectionId: string;
41
+ iceConnectionState: string;
42
+ iceGatheringState: string;
43
+ signalingState: string;
44
+ }
45
+ export interface MediaTrackMutedEventPayload extends Record<string, unknown> {
46
+ trackId: string;
47
+ kind: 'audio' | 'video';
48
+ label?: string;
49
+ muted: boolean;
50
+ enabled: boolean;
51
+ readyState: string;
52
+ contentHint?: string;
53
+ }
54
+ export interface MediaTrackUnmutedEventPayload extends Record<string, unknown> {
55
+ trackId: string;
56
+ kind: 'audio' | 'video';
57
+ label?: string;
58
+ muted: boolean;
59
+ enabled: boolean;
60
+ readyState: string;
61
+ contentHint?: string;
62
+ }
63
+ export interface MediaTrackAddedEventPayload extends Record<string, unknown> {
64
+ trackId: string;
65
+ kind: 'audio' | 'video';
66
+ label?: string;
67
+ muted: boolean;
68
+ enabled: boolean;
69
+ readyState: string;
70
+ contentHint?: string;
71
+ constraints: MediaTrackConstraints;
72
+ capabilities: MediaTrackCapabilities;
73
+ settings: MediaTrackSettings;
74
+ }
75
+ export interface MediaTrackRemovedEventPayload extends Record<string, unknown> {
76
+ trackId: string;
77
+ kind: 'audio' | 'video';
78
+ label?: string;
79
+ muted: boolean;
80
+ enabled: boolean;
81
+ readyState: string;
82
+ contentHint?: string;
83
+ }
84
+ export interface DataChannelErrorEventPayload extends Record<string, unknown> {
85
+ label: string;
86
+ readyState: string;
87
+ dataChannelId: string;
88
+ error: string;
89
+ }
90
+ export interface DataChannelOpenEventPayload extends Record<string, unknown> {
91
+ label: string;
92
+ readyState: string;
93
+ dataChannelId: string;
94
+ }
95
+ export interface DataChannelClosedEventPayload extends Record<string, unknown> {
96
+ label: string;
97
+ readyState: string;
98
+ dataChannelId: string;
99
+ }
100
+ //# sourceMappingURL=ClientEventTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientEventTypes.d.ts","sourceRoot":"","sources":["../../src/schema/ClientEventTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ /* eslint-disable no-shadow */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ClientEventTypes = void 0;
5
+ var ClientEventTypes;
6
+ (function (ClientEventTypes) {
7
+ ClientEventTypes["CLIENT_JOINED"] = "CLIENT_JOINED";
8
+ ClientEventTypes["CLIENT_LEFT"] = "CLIENT_LEFT";
9
+ ClientEventTypes["PEER_CONNECTION_OPENED"] = "PEER_CONNECTION_OPENED";
10
+ ClientEventTypes["PEER_CONNECTION_CLOSED"] = "PEER_CONNECTION_CLOSED";
11
+ ClientEventTypes["MEDIA_TRACK_ADDED"] = "MEDIA_TRACK_ADDED";
12
+ ClientEventTypes["MEDIA_TRACK_REMOVED"] = "MEDIA_TRACK_REMOVED";
13
+ ClientEventTypes["MEDIA_TRACK_RESUMED"] = "MEDIA_TRACK_RESUMED";
14
+ ClientEventTypes["MEDIA_TRACK_MUTED"] = "MEDIA_TRACK_MUTED";
15
+ ClientEventTypes["MEDIA_TRACK_UNMUTED"] = "MEDIA_TRACK_UNMUTED";
16
+ ClientEventTypes["ICE_GATHERING_STATE_CHANGED"] = "ICE_GATHERING_STATE_CHANGED";
17
+ ClientEventTypes["PEER_CONNECTION_STATE_CHANGED"] = "PEER_CONNECTION_STATE_CHANGED";
18
+ ClientEventTypes["ICE_CONNECTION_STATE_CHANGED"] = "ICE_CONNECTION_STATE_CHANGED";
19
+ ClientEventTypes["DATA_CHANNEL_OPEN"] = "DATA_CHANNEL_OPEN";
20
+ ClientEventTypes["DATA_CHANNEL_CLOSED"] = "DATA_CHANNEL_CLOSED";
21
+ ClientEventTypes["DATA_CHANNEL_ERROR"] = "DATA_CHANNEL_ERROR";
22
+ ClientEventTypes["NEGOTIATION_NEEDED"] = "NEGOTIATION_NEEDED";
23
+ ClientEventTypes["SIGNALING_STATE_CHANGE"] = "SIGNALING_STATE_CHANGE";
24
+ ClientEventTypes["ICE_GATHERING_STATE_CHANGE"] = "ICE_GATHERING_STATE_CHANGE";
25
+ ClientEventTypes["ICE_CONNECTION_STATE_CHANGE"] = "ICE_CONNECTION_STATE_CHANGE";
26
+ ClientEventTypes["ICE_CANDIDATE"] = "ICE_CANDIDATE";
27
+ // mediasoup events
28
+ ClientEventTypes["PRODUCER_ADDED"] = "PRODUCER_ADDED";
29
+ ClientEventTypes["PRODUCER_REMOVED"] = "PRODUCER_REMOVED";
30
+ ClientEventTypes["PRODUCER_PAUSED"] = "PRODUCER_PAUSED";
31
+ ClientEventTypes["PRODUCER_RESUMED"] = "PRODUCER_RESUMED";
32
+ ClientEventTypes["CONSUMER_ADDED"] = "CONSUMER_ADDED";
33
+ ClientEventTypes["CONSUMER_REMOVED"] = "CONSUMER_REMOVED";
34
+ ClientEventTypes["DATA_PRODUCER_CREATED"] = "DATA_PRODUCER_CREATED";
35
+ ClientEventTypes["DATA_PRODUCER_CLOSED"] = "DATA_PRODUCER_CLOSED";
36
+ ClientEventTypes["DATA_CONSUMER_CREATED"] = "DATA_CONSUMER_CREATED";
37
+ ClientEventTypes["DATA_CONSUMER_CLOSED"] = "DATA_CONSUMER_CLOSED";
38
+ })(ClientEventTypes = exports.ClientEventTypes || (exports.ClientEventTypes = {}));
@@ -1,4 +1,4 @@
1
- export declare enum ClientMetaType {
1
+ export declare enum ClientMetaTypes {
2
2
  MEDIA_CONSTRAINT = "MEDIA_CONSTRAINT",
3
3
  MEDIA_DEVICE = "MEDIA_DEVICE",
4
4
  MEDIA_DEVICES_SUPPORTED_CONSTRAINTS = "MEDIA_DEVICES_SUPPORTED_CONSTRAINTS",
@@ -31,4 +31,4 @@ export type OperationSystem = {
31
31
  name: string;
32
32
  version: string;
33
33
  };
34
- //# sourceMappingURL=metaTypes.d.ts.map
34
+ //# sourceMappingURL=ClientMetaTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientMetaTypes.d.ts","sourceRoot":"","sources":["../../src/schema/ClientMetaTypes.ts"],"names":[],"mappings":"AAEA,oBAAY,eAAe;IAC1B,gBAAgB,qBAAqB;IACrC,YAAY,iBAAiB;IAC7B,mCAAmC,wCAAwC;IAC3E,gBAAgB,qBAAqB;IACrC,SAAS,cAAc;IAEvB,gBAAgB,qBAAqB;IACrC,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACnB;AAED,MAAM,MAAM,eAAe,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB,CAAA"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ /* eslint-disable no-shadow */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ClientMetaTypes = void 0;
5
+ var ClientMetaTypes;
6
+ (function (ClientMetaTypes) {
7
+ ClientMetaTypes["MEDIA_CONSTRAINT"] = "MEDIA_CONSTRAINT";
8
+ ClientMetaTypes["MEDIA_DEVICE"] = "MEDIA_DEVICE";
9
+ ClientMetaTypes["MEDIA_DEVICES_SUPPORTED_CONSTRAINTS"] = "MEDIA_DEVICES_SUPPORTED_CONSTRAINTS";
10
+ ClientMetaTypes["USER_MEDIA_ERROR"] = "USER_MEDIA_ERROR";
11
+ ClientMetaTypes["LOCAL_SDP"] = "LOCAL_SDP";
12
+ ClientMetaTypes["OPERATION_SYSTEM"] = "OPERATION_SYSTEM";
13
+ ClientMetaTypes["ENGINE"] = "ENGINE";
14
+ ClientMetaTypes["PLATFORM"] = "PLATFORM";
15
+ ClientMetaTypes["BROWSER"] = "BROWSER";
16
+ })(ClientMetaTypes = exports.ClientMetaTypes || (exports.ClientMetaTypes = {}));
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CallUpdater.d.ts","sourceRoot":"","sources":["../../src/updaters/CallUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC3B,cAAc,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;CACrD"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ import { ObservedCall } from '../ObservedCall';
2
+ export interface ObserverUpdater {
3
+ onCallUpdate(observedCall: ObservedCall): void;
4
+ }
5
+ //# sourceMappingURL=ObserverUpdater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObserverUpdater.d.ts","sourceRoot":"","sources":["../../src/updaters/ObserverUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC/B,YAAY,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;CAC/C"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,13 @@
1
+ import { Observer } from '../Observer';
2
+ import { Updater } from './Updater';
3
+ export declare class OnAllCallObserverUpdater implements Updater {
4
+ private observer;
5
+ readonly name = "OnAllCallObserverUpdater";
6
+ readonly description = "Call Observer's update() method when all of the ObservedCalls are updated";
7
+ private readonly _updatedCalls;
8
+ constructor(observer: Observer);
9
+ close(): void;
10
+ private _onNewObservedCall;
11
+ private _onObservedCallUpdated;
12
+ }
13
+ //# 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;IAOtD,OAAO,CAAC,QAAQ;IANjB,SAAgB,IAAI,8BAA8B;IAClD,SAAgB,WAAW,+EAAgF;IAE3G,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;gBAG1C,QAAQ,EAAE,QAAQ;IAU3B,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,sBAAsB;CAU9B"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OnAllCallObserverUpdater = void 0;
4
+ class OnAllCallObserverUpdater {
5
+ observer;
6
+ name = 'OnAllCallObserverUpdater';
7
+ description = 'Call Observer\'s update() method when all of the ObservedCalls are updated';
8
+ _updatedCalls = new Set();
9
+ constructor(observer) {
10
+ this.observer = observer;
11
+ this._onNewObservedCall = this._onNewObservedCall.bind(this);
12
+ this.observer.once('close', () => {
13
+ this.observer.off('newcall', this._onNewObservedCall);
14
+ });
15
+ this.observer.on('newcall', this._onNewObservedCall);
16
+ }
17
+ close() {
18
+ // do nothing, because we unsubscribe once close is emitted from observer
19
+ }
20
+ _onNewObservedCall(observedCall) {
21
+ const onUpdate = () => this._onObservedCallUpdated(observedCall);
22
+ observedCall.once('close', () => {
23
+ observedCall.off('update', onUpdate);
24
+ this._updatedCalls.delete(observedCall.callId);
25
+ });
26
+ observedCall.on('update', onUpdate);
27
+ }
28
+ _onObservedCallUpdated(observedCall) {
29
+ if (observedCall.closed)
30
+ return;
31
+ this._updatedCalls.add(observedCall.callId);
32
+ if (this._updatedCalls.size < this.observer.observedCalls.size)
33
+ return;
34
+ this._updatedCalls.clear();
35
+ this.observer.update();
36
+ }
37
+ }
38
+ exports.OnAllCallObserverUpdater = OnAllCallObserverUpdater;
@@ -0,0 +1,13 @@
1
+ import { ObservedCall } from '../ObservedCall';
2
+ import { Updater } from './Updater';
3
+ export declare class OnAllClientCallUpdater implements Updater {
4
+ private _observedCall;
5
+ readonly name = "OnAllClientCallUpdater";
6
+ readonly description = "Call the update() method of the ObservedCall once all client has been updated";
7
+ private readonly _updatedClients;
8
+ constructor(_observedCall: ObservedCall);
9
+ close(): void;
10
+ private _onNewObservedClient;
11
+ private _onClientUpdate;
12
+ }
13
+ //# sourceMappingURL=OnAllClientCallUpdater.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OnAllClientCallUpdater = void 0;
4
+ class OnAllClientCallUpdater {
5
+ _observedCall;
6
+ name = 'OnAllClientCallUpdater';
7
+ description = 'Call the update() method of the ObservedCall once all client has been updated';
8
+ _updatedClients = new Set();
9
+ constructor(_observedCall) {
10
+ this._observedCall = _observedCall;
11
+ this._onNewObservedClient = this._onNewObservedClient.bind(this);
12
+ this._observedCall.once('close', () => {
13
+ this._observedCall.off('newclient', this._onNewObservedClient);
14
+ });
15
+ this._observedCall.on('newclient', this._onNewObservedClient);
16
+ }
17
+ close() {
18
+ // do nothing, as close once emitted unsubscription happened
19
+ }
20
+ _onNewObservedClient(observedClient) {
21
+ const onUpdate = () => this._onClientUpdate(observedClient);
22
+ observedClient.once('close', () => {
23
+ observedClient.off('update', onUpdate);
24
+ this._updatedClients.delete(observedClient.clientId);
25
+ });
26
+ observedClient.on('update', onUpdate);
27
+ }
28
+ _onClientUpdate(observedClient) {
29
+ this._updatedClients.add(observedClient.clientId);
30
+ if (this._updatedClients.size < this._observedCall.observedClients.size) {
31
+ return;
32
+ }
33
+ this._updatedClients.clear();
34
+ this._observedCall.update();
35
+ }
36
+ }
37
+ exports.OnAllClientCallUpdater = OnAllClientCallUpdater;
@@ -0,0 +1,11 @@
1
+ import { Observer } from '../Observer';
2
+ import { Updater } from './Updater';
3
+ export declare class OnAnyCallObserverUpdater implements Updater {
4
+ private observver;
5
+ readonly name = "OnAnyCallObserverUpdater";
6
+ readonly description = "Call Observer's update() method on any of the ObservedCall is updated";
7
+ constructor(observver: Observer);
8
+ close(): void;
9
+ private _onNewObservedCall;
10
+ }
11
+ //# 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;IAKtD,OAAO,CAAC,SAAS;IAJlB,SAAgB,IAAI,8BAA8B;IAClD,SAAgB,WAAW,2EAA4E;gBAG9F,SAAS,EAAE,QAAQ;IAU5B,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,kBAAkB;CAQ1B"}