@observertc/observer-js 0.40.9-beta → 0.40.10-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.
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/monitors/TurnUsageMonitor.d.ts +5 -0
- package/lib/monitors/TurnUsageMonitor.d.ts.map +1 -1
- package/lib/monitors/TurnUsageMonitor.js +7 -2
- package/package.json +3 -3
- package/src/index.ts +1 -0
- package/src/monitors/TurnUsageMonitor.ts +19 -3
package/lib/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export * as ReportSchema from '@observertc/report-schemas-js';
|
|
|
5
5
|
export type { LogLevel, Logger } from './common/logger';
|
|
6
6
|
export type { Samples, ClientSample, SfuSample, ExtensionStat, PeerConnectionTransport, IceCandidatePair, MediaSourceStat, MediaCodecStats, InboundAudioTrack, InboundVideoTrack, OutboundAudioTrack, OutboundVideoTrack, IceLocalCandidate, IceRemoteCandidate, CustomCallEvent, SfuTransport, SfuInboundRtpPad, SfuOutboundRtpPad, SfuSctpChannel, SfuExtensionStats, DataChannel, } from '@observertc/sample-schemas-js';
|
|
7
7
|
export type { CallEventReport, CallMetaReport, ClientDataChannelReport, ClientExtensionReport, IceCandidatePairReport, InboundAudioTrackReport, InboundVideoTrackReport, ObserverEventReport, OutboundAudioTrackReport, OutboundVideoTrackReport, PeerConnectionTransportReport, SfuEventReport, SfuExtensionReport, SfuInboundRtpPadReport, SfuMetaReport, SfuOutboundRtpPadReport, SfuSctpStreamReport, SFUTransportReport, } from '@observertc/report-schemas-js';
|
|
8
|
+
export type { ObservedCall, ObservedCallModel } from './ObservedCall';
|
|
8
9
|
export type { ObservedClient, ObservedClientModel } from './ObservedClient';
|
|
9
10
|
export type { ObservedPeerConnection, ObservedPeerConnectionModel, ObservedPeerConnectionEvents } from './ObservedPeerConnection';
|
|
10
11
|
export type { ObservedInboundTrack, ObservedInboundTrackModel, ObservedInboundTrackEvents } from './ObservedInboundTrack';
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAC;AAE9D,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAExD,YAAY,EACX,OAAO,EACP,YAAY,EACZ,SAAS,EACT,aAAa,EACb,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,WAAW,GACX,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EACX,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,6BAA6B,EAC7B,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,GAClB,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,YAAY,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAClI,YAAY,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAC1H,YAAY,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAE9H,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACtD,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,YAE9D;AAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAA8B,MAAM,iBAAiB,CAAC;AAC/E,wBAAgB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAG3D"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAC;AAE9D,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAExD,YAAY,EACX,OAAO,EACP,YAAY,EACZ,SAAS,EACT,aAAa,EACb,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,WAAW,GACX,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EACX,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,6BAA6B,EAC7B,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,GAClB,MAAM,+BAA+B,CAAC;AAEvC,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,YAAY,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAClI,YAAY,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAC1H,YAAY,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAE9H,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACtD,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,YAE9D;AAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAA8B,MAAM,iBAAiB,CAAC;AAC/E,wBAAgB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAG3D"}
|
|
@@ -3,6 +3,10 @@ import { EventEmitter } from 'events';
|
|
|
3
3
|
import { ObservedPeerConnection } from '../ObservedPeerConnection';
|
|
4
4
|
export type TurnUsageMonitorEvents = {
|
|
5
5
|
close: [];
|
|
6
|
+
'newturnip': [string];
|
|
7
|
+
update: [TurnUsage];
|
|
8
|
+
addpeerconnection: [ObservedPeerConnection];
|
|
9
|
+
removepeerconnection: [ObservedPeerConnection];
|
|
6
10
|
};
|
|
7
11
|
export type TurnUsage = {
|
|
8
12
|
turnIp: string;
|
|
@@ -15,6 +19,7 @@ export declare interface TurnUsageMonitor {
|
|
|
15
19
|
on<U extends keyof TurnUsageMonitorEvents>(event: U, listener: (...args: TurnUsageMonitorEvents[U]) => void): this;
|
|
16
20
|
off<U extends keyof TurnUsageMonitorEvents>(event: U, listener: (...args: TurnUsageMonitorEvents[U]) => void): this;
|
|
17
21
|
once<U extends keyof TurnUsageMonitorEvents>(event: U, listener: (...args: TurnUsageMonitorEvents[U]) => void): this;
|
|
22
|
+
emit<U extends keyof TurnUsageMonitorEvents>(event: U, ...args: TurnUsageMonitorEvents[U]): boolean;
|
|
18
23
|
}
|
|
19
24
|
export declare class TurnUsageMonitor extends EventEmitter {
|
|
20
25
|
private readonly _connections;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TurnUsageMonitor.d.ts","sourceRoot":"","sources":["../../src/monitors/TurnUsageMonitor.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,MAAM,MAAM,sBAAsB,GAAG;IACpC,KAAK,EAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"TurnUsageMonitor.d.ts","sourceRoot":"","sources":["../../src/monitors/TurnUsageMonitor.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,MAAM,MAAM,sBAAsB,GAAG;IACpC,KAAK,EAAE,EAAE,CAAC;IACV,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;IACtB,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC;IACpB,iBAAiB,EAAE,CAAC,sBAAsB,CAAC,CAAC;IAC5C,oBAAoB,EAAE,CAAC,sBAAsB,CAAC,CAAC;CAC/C,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;CAC7B,CAAA;AAQD,MAAM,CAAC,OAAO,WAAW,gBAAgB;IACxC,EAAE,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACnH,GAAG,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACpH,IAAI,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACrH,IAAI,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;CACpG;AAED,qBAAa,gBAAiB,SAAQ,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyC;IACtE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAE3D,OAAO,CAAC,OAAO,CAAS;;IAKjB,iBAAiB,CAAC,cAAc,EAAE,sBAAsB;IA4CxD,oBAAoB,CAAC,cAAc,EAAE,sBAAsB;IAelE,IAAW,OAAO,aAEjB;IAED,IAAW,eAAe,6BAEzB;IAEM,QAAQ,CAAC,MAAM,EAAE,MAAM;IAI9B,IAAW,MAAM,YAEhB;IAEM,KAAK;CAMZ"}
|
|
@@ -27,20 +27,23 @@ class TurnUsageMonitor extends events_1.EventEmitter {
|
|
|
27
27
|
totalBytesSent: 0,
|
|
28
28
|
totalBytesReceived: 0,
|
|
29
29
|
totalPacketsSent: 0,
|
|
30
|
-
totalPacketsReceived: 0
|
|
30
|
+
totalPacketsReceived: 0,
|
|
31
31
|
};
|
|
32
32
|
this._turnUsage.set(turnIp, usage);
|
|
33
|
+
this.emit('newturnip', turnIp);
|
|
33
34
|
}
|
|
34
35
|
usage.totalBytesSent += ice.deltaBytesSent;
|
|
35
36
|
usage.totalBytesReceived += ice.deltaBytesReceived;
|
|
36
37
|
usage.totalPacketsSent += ice.deltaPacketsSent;
|
|
37
38
|
usage.totalPacketsReceived += ice.deltaPacketsReceived;
|
|
39
|
+
this.emit('update', usage);
|
|
38
40
|
};
|
|
41
|
+
peerConnection.ICE.on('update', onUpdate);
|
|
39
42
|
this._connections.set(peerConnection.peerConnectionId, {
|
|
40
43
|
peerConnection,
|
|
41
44
|
onUpdate
|
|
42
45
|
});
|
|
43
|
-
|
|
46
|
+
this.emit('addpeerconnection', peerConnection);
|
|
44
47
|
}
|
|
45
48
|
removePeerConnection(peerConnection) {
|
|
46
49
|
var _a;
|
|
@@ -52,6 +55,8 @@ class TurnUsageMonitor extends events_1.EventEmitter {
|
|
|
52
55
|
if (!onUpdate)
|
|
53
56
|
return;
|
|
54
57
|
peerConnection.ICE.off('update', onUpdate);
|
|
58
|
+
this._connections.delete(peerConnection.peerConnectionId);
|
|
59
|
+
this.emit('removepeerconnection', peerConnection);
|
|
55
60
|
}
|
|
56
61
|
get turnIps() {
|
|
57
62
|
return Array.from(this._turnUsage.keys());
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@observertc/observer-js",
|
|
3
|
-
"version": "0.40.
|
|
3
|
+
"version": "0.40.10-beta",
|
|
4
4
|
"description": "Server Side NodeJS Library for processing ObserveRTC Samples",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -31,12 +31,12 @@
|
|
|
31
31
|
"uuid": "^8.3.2"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
+
"@types/events": "^3.0.0",
|
|
34
35
|
"@types/jest": "^27.5.2",
|
|
35
36
|
"@types/node": "^20.9.0",
|
|
37
|
+
"@types/uuid": "^8.3.4",
|
|
36
38
|
"@typescript-eslint/eslint-plugin": "^5.38.0",
|
|
37
39
|
"@typescript-eslint/parser": "^5.38.0",
|
|
38
|
-
"@types/events": "^3.0.0",
|
|
39
|
-
"@types/uuid": "^8.3.4",
|
|
40
40
|
"bufferutil": "^4.0.6",
|
|
41
41
|
"eslint": "^8.24.0",
|
|
42
42
|
"jest": "^27.5.0",
|
package/src/index.ts
CHANGED
|
@@ -52,6 +52,7 @@ export type {
|
|
|
52
52
|
SFUTransportReport,
|
|
53
53
|
} from '@observertc/report-schemas-js';
|
|
54
54
|
|
|
55
|
+
export type { ObservedCall, ObservedCallModel } from './ObservedCall';
|
|
55
56
|
export type { ObservedClient, ObservedClientModel } from './ObservedClient';
|
|
56
57
|
export type { ObservedPeerConnection, ObservedPeerConnectionModel, ObservedPeerConnectionEvents } from './ObservedPeerConnection';
|
|
57
58
|
export type { ObservedInboundTrack, ObservedInboundTrackModel, ObservedInboundTrackEvents } from './ObservedInboundTrack';
|
|
@@ -4,6 +4,10 @@ import { ObservedICEEvents } from '../ObservedICE';
|
|
|
4
4
|
|
|
5
5
|
export type TurnUsageMonitorEvents = {
|
|
6
6
|
close: [],
|
|
7
|
+
'newturnip': [string],
|
|
8
|
+
update: [TurnUsage],
|
|
9
|
+
addpeerconnection: [ObservedPeerConnection],
|
|
10
|
+
removepeerconnection: [ObservedPeerConnection],
|
|
7
11
|
}
|
|
8
12
|
|
|
9
13
|
export type TurnUsage = {
|
|
@@ -24,6 +28,7 @@ export declare interface TurnUsageMonitor {
|
|
|
24
28
|
on<U extends keyof TurnUsageMonitorEvents>(event: U, listener: (...args: TurnUsageMonitorEvents[U]) => void): this;
|
|
25
29
|
off<U extends keyof TurnUsageMonitorEvents>(event: U, listener: (...args: TurnUsageMonitorEvents[U]) => void): this;
|
|
26
30
|
once<U extends keyof TurnUsageMonitorEvents>(event: U, listener: (...args: TurnUsageMonitorEvents[U]) => void): this;
|
|
31
|
+
emit<U extends keyof TurnUsageMonitorEvents>(event: U, ...args: TurnUsageMonitorEvents[U]): boolean;
|
|
27
32
|
}
|
|
28
33
|
|
|
29
34
|
export class TurnUsageMonitor extends EventEmitter {
|
|
@@ -40,6 +45,7 @@ export class TurnUsageMonitor extends EventEmitter {
|
|
|
40
45
|
if (this._connections.has(peerConnection.peerConnectionId)) return;
|
|
41
46
|
|
|
42
47
|
const ice = peerConnection.ICE;
|
|
48
|
+
|
|
43
49
|
const onUpdate = () => {
|
|
44
50
|
const turnIp = ice?.selectedRemoteCandidate?.address;
|
|
45
51
|
|
|
@@ -53,34 +59,44 @@ export class TurnUsageMonitor extends EventEmitter {
|
|
|
53
59
|
totalBytesSent: 0,
|
|
54
60
|
totalBytesReceived: 0,
|
|
55
61
|
totalPacketsSent: 0,
|
|
56
|
-
totalPacketsReceived: 0
|
|
62
|
+
totalPacketsReceived: 0,
|
|
57
63
|
};
|
|
58
64
|
this._turnUsage.set(turnIp, usage);
|
|
65
|
+
|
|
66
|
+
this.emit('newturnip', turnIp);
|
|
59
67
|
}
|
|
60
68
|
|
|
61
69
|
usage.totalBytesSent += ice.deltaBytesSent;
|
|
62
70
|
usage.totalBytesReceived += ice.deltaBytesReceived;
|
|
63
71
|
usage.totalPacketsSent += ice.deltaPacketsSent;
|
|
64
72
|
usage.totalPacketsReceived += ice.deltaPacketsReceived;
|
|
73
|
+
|
|
74
|
+
this.emit('update', usage);
|
|
65
75
|
};
|
|
66
76
|
|
|
77
|
+
peerConnection.ICE.on('update', onUpdate);
|
|
78
|
+
|
|
67
79
|
this._connections.set(peerConnection.peerConnectionId, {
|
|
68
80
|
peerConnection,
|
|
69
81
|
onUpdate
|
|
70
82
|
});
|
|
71
83
|
|
|
72
|
-
|
|
84
|
+
this.emit('addpeerconnection', peerConnection);
|
|
73
85
|
}
|
|
74
86
|
|
|
75
87
|
public removePeerConnection(peerConnection: ObservedPeerConnection) {
|
|
76
88
|
if (this.closed) return;
|
|
77
89
|
if (!this._connections.has(peerConnection.peerConnectionId)) return;
|
|
78
|
-
|
|
90
|
+
|
|
79
91
|
const { onUpdate } = this._connections.get(peerConnection.peerConnectionId) ?? {};
|
|
80
92
|
|
|
81
93
|
if (!onUpdate) return;
|
|
82
94
|
|
|
83
95
|
peerConnection.ICE.off('update', onUpdate);
|
|
96
|
+
|
|
97
|
+
this._connections.delete(peerConnection.peerConnectionId);
|
|
98
|
+
|
|
99
|
+
this.emit('removepeerconnection', peerConnection);
|
|
84
100
|
}
|
|
85
101
|
|
|
86
102
|
public get turnIps() {
|