@observertc/observer-js 1.0.0-b276103.0 → 1.0.0-beta.10
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/README.md +972 -383
- package/dist/index.d.mts +2952 -0
- package/dist/index.d.ts +2952 -0
- package/dist/index.js +4040 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +3970 -0
- package/dist/index.mjs.map +1 -0
- package/llms-full.txt +1536 -0
- package/package.json +32 -16
- package/.eslintrc.json +0 -143
- package/.prettierignore +0 -5
- package/.prettierrc +0 -7
- package/jest.config.js +0 -9
- package/lib/ObservedCall.d.ts +0 -70
- package/lib/ObservedCall.d.ts.map +0 -1
- package/lib/ObservedCall.js +0 -196
- package/lib/ObservedCallEventMonitor.d.ts +0 -107
- package/lib/ObservedCallEventMonitor.d.ts.map +0 -1
- package/lib/ObservedCallEventMonitor.js +0 -321
- package/lib/ObservedCallSummary.d.ts +0 -18
- package/lib/ObservedCallSummary.d.ts.map +0 -1
- package/lib/ObservedCallSummary.js +0 -2
- package/lib/ObservedCertificate.d.ts +0 -19
- package/lib/ObservedCertificate.d.ts.map +0 -1
- package/lib/ObservedCertificate.js +0 -38
- package/lib/ObservedClient.d.ts +0 -115
- package/lib/ObservedClient.d.ts.map +0 -1
- package/lib/ObservedClient.js +0 -714
- package/lib/ObservedClientEventMonitor.d.ts +0 -91
- package/lib/ObservedClientEventMonitor.d.ts.map +0 -1
- package/lib/ObservedClientEventMonitor.js +0 -254
- package/lib/ObservedClientSummary.d.ts +0 -23
- package/lib/ObservedClientSummary.d.ts.map +0 -1
- package/lib/ObservedClientSummary.js +0 -2
- package/lib/ObservedCodec.d.ts +0 -22
- package/lib/ObservedCodec.d.ts.map +0 -1
- package/lib/ObservedCodec.js +0 -45
- package/lib/ObservedDataChannel.d.ts +0 -30
- package/lib/ObservedDataChannel.d.ts.map +0 -1
- package/lib/ObservedDataChannel.js +0 -75
- package/lib/ObservedIceCandidate.d.ts +0 -29
- package/lib/ObservedIceCandidate.d.ts.map +0 -1
- package/lib/ObservedIceCandidate.js +0 -59
- package/lib/ObservedIceCandidatePair.d.ts +0 -45
- package/lib/ObservedIceCandidatePair.d.ts.map +0 -1
- package/lib/ObservedIceCandidatePair.js +0 -127
- package/lib/ObservedIceTransport.d.ts +0 -36
- package/lib/ObservedIceTransport.d.ts.map +0 -1
- package/lib/ObservedIceTransport.js +0 -93
- package/lib/ObservedInboundRtp.d.ts +0 -92
- package/lib/ObservedInboundRtp.d.ts.map +0 -1
- package/lib/ObservedInboundRtp.js +0 -193
- package/lib/ObservedInboundTrack.d.ts +0 -34
- package/lib/ObservedInboundTrack.d.ts.map +0 -1
- package/lib/ObservedInboundTrack.js +0 -92
- package/lib/ObservedMediaPlayout.d.ts +0 -22
- package/lib/ObservedMediaPlayout.d.ts.map +0 -1
- package/lib/ObservedMediaPlayout.js +0 -42
- package/lib/ObservedMediaSource.d.ts +0 -28
- package/lib/ObservedMediaSource.d.ts.map +0 -1
- package/lib/ObservedMediaSource.js +0 -55
- package/lib/ObservedOutboundRtp.d.ts +0 -62
- package/lib/ObservedOutboundRtp.d.ts.map +0 -1
- package/lib/ObservedOutboundRtp.js +0 -144
- package/lib/ObservedOutboundTrack.d.ts +0 -34
- package/lib/ObservedOutboundTrack.d.ts.map +0 -1
- package/lib/ObservedOutboundTrack.js +0 -65
- package/lib/ObservedPeerConnection.d.ts +0 -207
- package/lib/ObservedPeerConnection.d.ts.map +0 -1
- package/lib/ObservedPeerConnection.js +0 -788
- package/lib/ObservedPeerConnectionTransport.d.ts +0 -17
- package/lib/ObservedPeerConnectionTransport.d.ts.map +0 -1
- package/lib/ObservedPeerConnectionTransport.js +0 -34
- package/lib/ObservedRemoteInboundRtp.d.ts +0 -30
- package/lib/ObservedRemoteInboundRtp.d.ts.map +0 -1
- package/lib/ObservedRemoteInboundRtp.js +0 -60
- package/lib/ObservedRemoteOutboundRtp.d.ts +0 -30
- package/lib/ObservedRemoteOutboundRtp.d.ts.map +0 -1
- package/lib/ObservedRemoteOutboundRtp.js +0 -60
- package/lib/ObservedTURN.d.ts +0 -31
- package/lib/ObservedTURN.d.ts.map +0 -1
- package/lib/ObservedTURN.js +0 -58
- package/lib/ObservedTurnServer.d.ts +0 -25
- package/lib/ObservedTurnServer.d.ts.map +0 -1
- package/lib/ObservedTurnServer.js +0 -59
- package/lib/Observer.d.ts +0 -62
- package/lib/Observer.d.ts.map +0 -1
- package/lib/Observer.js +0 -160
- package/lib/ObserverEventMonitor.d.ts +0 -141
- package/lib/ObserverEventMonitor.d.ts.map +0 -1
- package/lib/ObserverEventMonitor.js +0 -440
- package/lib/ObserverSummary.d.ts +0 -13
- package/lib/ObserverSummary.d.ts.map +0 -1
- package/lib/ObserverSummary.js +0 -2
- package/lib/Reports.d.ts +0 -85
- package/lib/Reports.d.ts.map +0 -1
- package/lib/Reports.js +0 -2
- package/lib/common/Middleware.d.ts +0 -17
- package/lib/common/Middleware.d.ts.map +0 -1
- package/lib/common/Middleware.js +0 -60
- package/lib/common/SingleExecutor.d.ts +0 -3
- package/lib/common/SingleExecutor.d.ts.map +0 -1
- package/lib/common/SingleExecutor.js +0 -31
- package/lib/common/logger.d.ts +0 -17
- package/lib/common/logger.d.ts.map +0 -1
- package/lib/common/logger.js +0 -50
- package/lib/common/types.d.ts +0 -3
- package/lib/common/types.d.ts.map +0 -1
- package/lib/common/types.js +0 -3
- package/lib/common/utils.d.ts +0 -11
- package/lib/common/utils.d.ts.map +0 -1
- package/lib/common/utils.js +0 -63
- package/lib/detectors/Detector.d.ts +0 -5
- package/lib/detectors/Detector.d.ts.map +0 -1
- package/lib/detectors/Detector.js +0 -3
- package/lib/detectors/Detectors.d.ts +0 -11
- package/lib/detectors/Detectors.d.ts.map +0 -1
- package/lib/detectors/Detectors.js +0 -34
- package/lib/index.d.ts +0 -29
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -49
- package/lib/mediasoup/ObservedMediaRouter.d.ts +0 -10
- package/lib/mediasoup/ObservedMediaRouter.d.ts.map +0 -1
- package/lib/mediasoup/ObservedMediaRouter.js +0 -6
- package/lib/monitors/TurnUsageMonitor.d.ts +0 -1
- package/lib/monitors/TurnUsageMonitor.d.ts.map +0 -1
- package/lib/monitors/TurnUsageMonitor.js +0 -146
- package/lib/schema/ClientEventTypes.d.ts +0 -228
- package/lib/schema/ClientEventTypes.d.ts.map +0 -1
- package/lib/schema/ClientEventTypes.js +0 -41
- package/lib/schema/ClientMetaTypes.d.ts +0 -34
- package/lib/schema/ClientMetaTypes.d.ts.map +0 -1
- package/lib/schema/ClientMetaTypes.js +0 -16
- package/lib/schema/ClientSample.d.ts +0 -1333
- package/lib/schema/ClientSample.d.ts.map +0 -1
- package/lib/schema/ClientSample.js +0 -4
- package/lib/scores/CalculatedScore.d.ts +0 -6
- package/lib/scores/CalculatedScore.d.ts.map +0 -1
- package/lib/scores/CalculatedScore.js +0 -2
- package/lib/scores/DefaultCallScoreCalculator.d.ts +0 -7
- package/lib/scores/DefaultCallScoreCalculator.d.ts.map +0 -1
- package/lib/scores/DefaultCallScoreCalculator.js +0 -21
- package/lib/scores/ScoreCalculator.d.ts +0 -4
- package/lib/scores/ScoreCalculator.d.ts.map +0 -1
- package/lib/scores/ScoreCalculator.js +0 -2
- package/lib/updaters/CallUpdater.d.ts +0 -5
- package/lib/updaters/CallUpdater.d.ts.map +0 -1
- package/lib/updaters/CallUpdater.js +0 -2
- package/lib/updaters/ObserverUpdater.d.ts +0 -5
- package/lib/updaters/ObserverUpdater.d.ts.map +0 -1
- package/lib/updaters/ObserverUpdater.js +0 -2
- package/lib/updaters/OnAllCallObserverUpdater.d.ts +0 -15
- package/lib/updaters/OnAllCallObserverUpdater.d.ts.map +0 -1
- package/lib/updaters/OnAllCallObserverUpdater.js +0 -50
- package/lib/updaters/OnAllClientCallUpdater.d.ts +0 -15
- package/lib/updaters/OnAllClientCallUpdater.d.ts.map +0 -1
- package/lib/updaters/OnAllClientCallUpdater.js +0 -53
- package/lib/updaters/OnAnyCallObserverUpdater.d.ts +0 -12
- package/lib/updaters/OnAnyCallObserverUpdater.d.ts.map +0 -1
- package/lib/updaters/OnAnyCallObserverUpdater.js +0 -37
- package/lib/updaters/OnAnyClientCallUpdater.d.ts +0 -12
- package/lib/updaters/OnAnyClientCallUpdater.d.ts.map +0 -1
- package/lib/updaters/OnAnyClientCallUpdater.js +0 -36
- package/lib/updaters/OnIntervalUpdater.d.ts +0 -10
- package/lib/updaters/OnIntervalUpdater.d.ts.map +0 -1
- package/lib/updaters/OnIntervalUpdater.js +0 -17
- package/lib/updaters/Updater.d.ts +0 -6
- package/lib/updaters/Updater.d.ts.map +0 -1
- package/lib/updaters/Updater.js +0 -2
- package/lib/utils/MediasoupRemoteTrackResolver.d.ts +0 -25
- package/lib/utils/MediasoupRemoteTrackResolver.d.ts.map +0 -1
- package/lib/utils/MediasoupRemoteTrackResolver.js +0 -110
- package/lib/utils/RemoteTrackResolver.d.ts +0 -7
- package/lib/utils/RemoteTrackResolver.d.ts.map +0 -1
- package/lib/utils/RemoteTrackResolver.js +0 -2
- package/src/ObservedCall.ts +0 -308
- package/src/ObservedCallEventMonitor.ts +0 -402
- package/src/ObservedCallSummary.ts +0 -22
- package/src/ObservedCertificate.ts +0 -43
- package/src/ObservedClient.ts +0 -883
- package/src/ObservedClientEventMonitor.ts +0 -309
- package/src/ObservedClientSummary.ts +0 -24
- package/src/ObservedCodec.ts +0 -49
- package/src/ObservedDataChannel.ts +0 -85
- package/src/ObservedIceCandidate.ts +0 -64
- package/src/ObservedIceCandidatePair.ts +0 -134
- package/src/ObservedIceTransport.ts +0 -99
- package/src/ObservedInboundRtp.ts +0 -205
- package/src/ObservedInboundTrack.ts +0 -105
- package/src/ObservedMediaPlayout.ts +0 -49
- package/src/ObservedMediaSource.ts +0 -60
- package/src/ObservedOutboundRtp.ts +0 -156
- package/src/ObservedOutboundTrack.ts +0 -82
- package/src/ObservedPeerConnection.ts +0 -1104
- package/src/ObservedPeerConnectionTransport.ts +0 -38
- package/src/ObservedRemoteInboundRtp.ts +0 -64
- package/src/ObservedRemoteOutboundRtp.ts +0 -65
- package/src/ObservedTURN.ts +0 -86
- package/src/ObservedTurnServer.ts +0 -72
- package/src/Observer.ts +0 -248
- package/src/ObserverEventMonitor.ts +0 -561
- package/src/ObserverSummary.ts +0 -15
- package/src/Reports.ts +0 -87
- package/src/common/Middleware.ts +0 -84
- package/src/common/SingleExecutor.ts +0 -36
- package/src/common/logger.ts +0 -82
- package/src/common/types.ts +0 -4
- package/src/common/utils.ts +0 -69
- package/src/detectors/Detector.ts +0 -6
- package/src/detectors/Detectors.ts +0 -38
- package/src/index.ts +0 -32
- package/src/mediasoup/ObservedMediaRouter.ts +0 -10
- package/src/monitors/TurnUsageMonitor.ts +0 -187
- package/src/schema/ClientEventTypes.ts +0 -280
- package/src/schema/ClientMetaTypes.ts +0 -41
- package/src/schema/ClientSample.ts +0 -1682
- package/src/scores/CalculatedScore.ts +0 -6
- package/src/scores/DefaultCallScoreCalculator.ts +0 -23
- package/src/scores/ScoreCalculator.ts +0 -3
- package/src/updaters/CallUpdater.ts +0 -5
- package/src/updaters/ObserverUpdater.ts +0 -5
- package/src/updaters/OnAllCallObserverUpdater.ts +0 -59
- package/src/updaters/OnAllClientCallUpdater.ts +0 -61
- package/src/updaters/OnAnyCallObserverUpdater.ts +0 -41
- package/src/updaters/OnAnyClientCallUpdater.ts +0 -39
- package/src/updaters/OnIntervalUpdater.ts +0 -19
- package/src/updaters/Updater.ts +0 -5
- package/src/utils/MediasoupRemoteTrackResolver.ts +0 -155
- package/src/utils/RemoteTrackResolver.ts +0 -12
- package/tsconfig.json +0 -19
- package/tslint.json +0 -6
package/src/common/Middleware.ts
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
export type Middleware<T> = (
|
|
2
|
-
input: T,
|
|
3
|
-
next: (nextInput: T) => void
|
|
4
|
-
) => void;
|
|
5
|
-
|
|
6
|
-
export interface Processor<T> {
|
|
7
|
-
finalCallback?: Callback<T>;
|
|
8
|
-
process(value: T): void;
|
|
9
|
-
addMiddleware(...middlewares: Middleware<T>[]): Processor<T>;
|
|
10
|
-
removeMiddleware(...middlewares: Middleware<T>[]): Processor<T>;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
type Callback<T> = (input: T) => void;
|
|
14
|
-
|
|
15
|
-
class Executor<T> {
|
|
16
|
-
public done = false;
|
|
17
|
-
private index = 0;
|
|
18
|
-
private prevIndex = -1;
|
|
19
|
-
|
|
20
|
-
constructor(
|
|
21
|
-
private readonly stack: Middleware<T>[],
|
|
22
|
-
private readonly finalCallback?: Callback<T>
|
|
23
|
-
) {
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
// Executes the middleware stack
|
|
27
|
-
public execute(input: T): void {
|
|
28
|
-
if (this.index <= this.prevIndex) {
|
|
29
|
-
throw new Error('Middleware must call next() only once!');
|
|
30
|
-
} else if (this.done) {
|
|
31
|
-
throw new Error('Middleware stack has already been executed!');
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
this.prevIndex = this.index;
|
|
35
|
-
|
|
36
|
-
const middleware = this.stack[this.index];
|
|
37
|
-
|
|
38
|
-
this.index++;
|
|
39
|
-
|
|
40
|
-
if (middleware) {
|
|
41
|
-
return middleware(input, (nextInput: T) => this.execute(nextInput));
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
this.done = true;
|
|
45
|
-
this.finalCallback?.(input);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export class MiddlewareProcessor<T> implements Processor<T> {
|
|
50
|
-
private stack: Middleware<T>[] = [];
|
|
51
|
-
public finalCallback?: Callback<T>;
|
|
52
|
-
|
|
53
|
-
public addMiddleware(...middlewares: Middleware<T>[]): Processor<T> {
|
|
54
|
-
if (middlewares && middlewares.length > 0) {
|
|
55
|
-
this.stack.push(...middlewares);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
return this;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
public removeMiddleware(...middlewares: Middleware<T>[]): Processor<T> {
|
|
62
|
-
if (middlewares && middlewares.length > 0) {
|
|
63
|
-
for (const middleware of middlewares) {
|
|
64
|
-
const index = this.stack.indexOf(middleware);
|
|
65
|
-
|
|
66
|
-
if (index >= 0) {
|
|
67
|
-
this.stack.splice(index, 1);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
return this;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
public process(value: T): void {
|
|
76
|
-
if (this.stack.length === 0) {
|
|
77
|
-
return this.finalCallback?.(value);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
const executor = new Executor(this.stack, this.finalCallback);
|
|
81
|
-
|
|
82
|
-
executor.execute(value);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
export type SingleExecutor = ReturnType<typeof createSingleExecutor>;
|
|
2
|
-
|
|
3
|
-
export function createSingleExecutor() {
|
|
4
|
-
let semaphore = 1;
|
|
5
|
-
const tasks: (() => Promise<unknown>)[] = [];
|
|
6
|
-
|
|
7
|
-
const execute = <T = unknown>(task: () => Promise<T>) => {
|
|
8
|
-
return new Promise<T>((resolve, reject) => {
|
|
9
|
-
tasks.push(() => task().then(resolve)
|
|
10
|
-
.catch(reject));
|
|
11
|
-
run();
|
|
12
|
-
});
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
const run = () => {
|
|
16
|
-
if (semaphore < 1) return;
|
|
17
|
-
|
|
18
|
-
const task = tasks.shift();
|
|
19
|
-
|
|
20
|
-
if (!task) return;
|
|
21
|
-
|
|
22
|
-
const postProcess = () => {
|
|
23
|
-
++semaphore;
|
|
24
|
-
run();
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
--semaphore;
|
|
28
|
-
|
|
29
|
-
task()
|
|
30
|
-
.then(postProcess)
|
|
31
|
-
.catch(postProcess);
|
|
32
|
-
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
return execute;
|
|
36
|
-
}
|
package/src/common/logger.ts
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
export interface Logger {
|
|
2
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
-
trace(...args: any[]): void;
|
|
4
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
5
|
-
debug(...args: any[]): void;
|
|
6
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
7
|
-
info(...args: any[]): void;
|
|
8
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
9
|
-
warn(...args: any[]): void;
|
|
10
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
11
|
-
error(...args: any[]): void;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export interface ObserverLogger {
|
|
15
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
16
|
-
trace(module: string, ...args: any[]): void;
|
|
17
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
18
|
-
debug(module: string, ...args: any[]): void;
|
|
19
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
20
|
-
info(module: string, ...args: any[]): void;
|
|
21
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
22
|
-
warn(module: string, ...args: any[]): void;
|
|
23
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
24
|
-
error(module: string, ...args: any[]): void;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
let mainLogger: ObserverLogger = new class implements ObserverLogger {
|
|
28
|
-
trace = () => void 0;
|
|
29
|
-
// trace(module: string, ...args: any[]) {
|
|
30
|
-
// // eslint-disable-next-line no-console
|
|
31
|
-
// console.log(`[TRACE] ${module}`, ...args);
|
|
32
|
-
// }
|
|
33
|
-
|
|
34
|
-
debug(module: string, ...args: any[]) {
|
|
35
|
-
// eslint-disable-next-line no-console
|
|
36
|
-
console.log(`[DEBUG] ${module}`, ...args);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
info(module: string, ...args: any[]) {
|
|
40
|
-
// eslint-disable-next-line no-console
|
|
41
|
-
console.info(`[INFO] ${module}`, ...args);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
warn(module: string, ...args: any[]) {
|
|
45
|
-
// eslint-disable-next-line no-console
|
|
46
|
-
console.warn(`[WARN] ${module}`, ...args);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
error(module: string, ...args: any[]) {
|
|
50
|
-
// eslint-disable-next-line no-console
|
|
51
|
-
console.error(`[ERROR] ${module}`, ...args);
|
|
52
|
-
}
|
|
53
|
-
}();
|
|
54
|
-
|
|
55
|
-
export function createLogger(moduleName: string): Logger {
|
|
56
|
-
return new class implements Logger {
|
|
57
|
-
trace(...args: any[]) {
|
|
58
|
-
mainLogger.trace(moduleName, ...args);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
debug(...args: any[]) {
|
|
62
|
-
mainLogger.debug(moduleName, ...args);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
info(...args: any[]) {
|
|
66
|
-
mainLogger.info(moduleName, ...args);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
warn(...args: any[]) {
|
|
70
|
-
mainLogger.warn(moduleName, ...args);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
error(...args: any[]) {
|
|
74
|
-
mainLogger.error(moduleName, ...args);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
}();
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export function setObserverLogger(logger: ObserverLogger) {
|
|
81
|
-
mainLogger = logger;
|
|
82
|
-
}
|
package/src/common/types.ts
DELETED
package/src/common/utils.ts
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
export type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
2
|
-
|
|
3
|
-
export type Writable<T> = T extends object ? { -readonly [K in keyof T]: Writable<T[K]> } : T;
|
|
4
|
-
|
|
5
|
-
export function iteratorConverter<T>(generator: Generator<T, void, undefined>): IterableIterator<T> {
|
|
6
|
-
return {
|
|
7
|
-
[Symbol.iterator](): IterableIterator<T> {
|
|
8
|
-
return this;
|
|
9
|
-
},
|
|
10
|
-
next(): IteratorResult<T> {
|
|
11
|
-
return generator.next();
|
|
12
|
-
},
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export function asyncIteratorConverter<T>(generator: AsyncGenerator<T, void, undefined>): AsyncIterableIterator<T> {
|
|
17
|
-
return {
|
|
18
|
-
[Symbol.asyncIterator](): AsyncIterableIterator<T> {
|
|
19
|
-
return this;
|
|
20
|
-
},
|
|
21
|
-
next(): Promise<IteratorResult<T>> {
|
|
22
|
-
return generator.next();
|
|
23
|
-
},
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export function isValidUuid(str: string): boolean {
|
|
28
|
-
const regexp = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
29
|
-
|
|
30
|
-
return regexp.test(str);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export function getAverage(arr: number[], defaultAvgIfArrLengthIs0 = 0): number {
|
|
34
|
-
if (arr.length === 0) return defaultAvgIfArrLengthIs0;
|
|
35
|
-
|
|
36
|
-
return arr.reduce((a, b) => a + b, 0) / arr.length;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export function getMedian(arr: number[], copyArrayForSorting = true): number {
|
|
40
|
-
// Sort the array in ascending order
|
|
41
|
-
const sortedArr = copyArrayForSorting
|
|
42
|
-
? arr.slice().sort((a, b) => a - b)
|
|
43
|
-
: arr.sort((a, b) => a-b)
|
|
44
|
-
|
|
45
|
-
;
|
|
46
|
-
|
|
47
|
-
// Calculate the middle index
|
|
48
|
-
const mid = Math.floor(sortedArr.length / 2);
|
|
49
|
-
|
|
50
|
-
// If the array length is odd, return the middle element
|
|
51
|
-
if (sortedArr.length % 2 !== 0) {
|
|
52
|
-
return sortedArr[mid];
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// If the array length is even, return the average of the two middle elements
|
|
56
|
-
return (sortedArr[mid - 1] + sortedArr[mid]) / 2;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export function parseJsonAs<T>(json?: string): T | undefined {
|
|
60
|
-
if (!json) {
|
|
61
|
-
return undefined;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
try {
|
|
65
|
-
return JSON.parse(json) as T;
|
|
66
|
-
} catch (error) {
|
|
67
|
-
return undefined;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { createLogger } from '../common/logger';
|
|
2
|
-
import { Detector } from './Detector';
|
|
3
|
-
|
|
4
|
-
const logger = createLogger('Detectors');
|
|
5
|
-
|
|
6
|
-
export class Detectors {
|
|
7
|
-
private _detectors: Detector[];
|
|
8
|
-
|
|
9
|
-
public constructor(...detectors: Detector[]) {
|
|
10
|
-
this._detectors = detectors;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
public add(detector: Detector) {
|
|
14
|
-
this._detectors.push(detector);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
public remove(detector: Detector) {
|
|
18
|
-
this._detectors = this._detectors.filter((d) => d !== detector);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
get listOfNames() {
|
|
22
|
-
return this._detectors.map((d) => d.name);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
public update() {
|
|
26
|
-
for (const detector of this._detectors) {
|
|
27
|
-
try {
|
|
28
|
-
detector.update();
|
|
29
|
-
} catch (err) {
|
|
30
|
-
logger.warn(`Error updating detector ${detector?.constructor?.name}`, err);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
public clear() {
|
|
36
|
-
this._detectors = [];
|
|
37
|
-
}
|
|
38
|
-
}
|
package/src/index.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
export type { ObserverEvents } from './Observer';
|
|
2
|
-
|
|
3
|
-
export { Observer } from './Observer';
|
|
4
|
-
export { ObservedCall } from './ObservedCall';
|
|
5
|
-
export { ObservedInboundTrack } from './ObservedInboundTrack';
|
|
6
|
-
export { ObservedOutboundTrack } from './ObservedOutboundTrack';
|
|
7
|
-
export { ObservedClient } from './ObservedClient';
|
|
8
|
-
export { ObservedPeerConnection } from './ObservedPeerConnection';
|
|
9
|
-
export { ObservedMediaSource } from './ObservedMediaSource';
|
|
10
|
-
export { ObservedMediaPlayout } from './ObservedMediaPlayout';
|
|
11
|
-
export { ObservedCodec } from './ObservedCodec';
|
|
12
|
-
export { ObservedCertificate } from './ObservedCertificate';
|
|
13
|
-
export { ObservedDataChannel } from './ObservedDataChannel';
|
|
14
|
-
export { ObservedInboundRtp } from './ObservedInboundRtp';
|
|
15
|
-
export { ObservedOutboundRtp } from './ObservedOutboundRtp';
|
|
16
|
-
export { ObservedRemoteInboundRtp } from './ObservedRemoteInboundRtp';
|
|
17
|
-
export { ObservedRemoteOutboundRtp } from './ObservedRemoteOutboundRtp';
|
|
18
|
-
export { ObservedIceCandidatePair } from './ObservedIceCandidatePair';
|
|
19
|
-
export { ObservedIceCandidate } from './ObservedIceCandidate';
|
|
20
|
-
export { ObservedIceTransport } from './ObservedIceTransport';
|
|
21
|
-
export { ObservedPeerConnectionTransport } from './ObservedPeerConnectionTransport';
|
|
22
|
-
export { ClientEventTypes } from './schema/ClientEventTypes';
|
|
23
|
-
export { ClientMetaTypes } from './schema/ClientMetaTypes';
|
|
24
|
-
export { ClientSample, ClientIssue, ClientEvent, ClientMetaData } from './schema/ClientSample';
|
|
25
|
-
export { ScoreCalculator } from './scores/ScoreCalculator';
|
|
26
|
-
export { ObservedClientEventMonitor } from './ObservedClientEventMonitor';
|
|
27
|
-
export { ObserverEventMonitor } from './ObserverEventMonitor';
|
|
28
|
-
export { Middleware } from './common/Middleware';
|
|
29
|
-
export type {
|
|
30
|
-
TrackReport,
|
|
31
|
-
ClientReport,
|
|
32
|
-
} from './Reports';
|
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
// import { EventEmitter } from 'events';
|
|
2
|
-
// import { ObservedPeerConnection } from '../ObservedPeerConnection';
|
|
3
|
-
// import { ObservedICEEvents } from '../ObservedICE';
|
|
4
|
-
// import { ObservedClient } from '../ObservedClient';
|
|
5
|
-
|
|
6
|
-
// export type TurnUsageMonitorEvents = {
|
|
7
|
-
// close: [],
|
|
8
|
-
// 'newturnip': [string],
|
|
9
|
-
// update: [TurnUsage],
|
|
10
|
-
// addpeerconnection: [ObservedPeerConnection],
|
|
11
|
-
// removepeerconnection: [ObservedPeerConnection],
|
|
12
|
-
// }
|
|
13
|
-
|
|
14
|
-
// export type TurnUsage = {
|
|
15
|
-
// turnIp: string;
|
|
16
|
-
// totalBytesSent: number;
|
|
17
|
-
// totalBytesReceived: number;
|
|
18
|
-
// totalPacketsSent: number;
|
|
19
|
-
// totalPacketsReceived: number;
|
|
20
|
-
// }
|
|
21
|
-
|
|
22
|
-
// export type TurnStats = {
|
|
23
|
-
// turnIp: string;
|
|
24
|
-
// totalBytesSent: number;
|
|
25
|
-
// totalBytesReceived: number;
|
|
26
|
-
// totalPacketsSent: number;
|
|
27
|
-
// totalPacketsReceived: number;
|
|
28
|
-
// deltaBytesSent: number;
|
|
29
|
-
// deltaBytesReceived: number;
|
|
30
|
-
// timestamp: number;
|
|
31
|
-
// outboundBitrate: number;
|
|
32
|
-
// inboundBitrate: number;
|
|
33
|
-
// }
|
|
34
|
-
|
|
35
|
-
// type ObservedConnection = {
|
|
36
|
-
// peerConnection: ObservedPeerConnection,
|
|
37
|
-
// onUpdate: (...e: ObservedICEEvents['update']) => void;
|
|
38
|
-
|
|
39
|
-
// }
|
|
40
|
-
|
|
41
|
-
// export declare interface TurnUsageMonitor {
|
|
42
|
-
// on<U extends keyof TurnUsageMonitorEvents>(event: U, listener: (...args: TurnUsageMonitorEvents[U]) => void): this;
|
|
43
|
-
// off<U extends keyof TurnUsageMonitorEvents>(event: U, listener: (...args: TurnUsageMonitorEvents[U]) => void): this;
|
|
44
|
-
// once<U extends keyof TurnUsageMonitorEvents>(event: U, listener: (...args: TurnUsageMonitorEvents[U]) => void): this;
|
|
45
|
-
// emit<U extends keyof TurnUsageMonitorEvents>(event: U, ...args: TurnUsageMonitorEvents[U]): boolean;
|
|
46
|
-
// }
|
|
47
|
-
|
|
48
|
-
// export class TurnUsageMonitor extends EventEmitter {
|
|
49
|
-
// private readonly _connections = new Map<string, ObservedConnection>();
|
|
50
|
-
// private readonly _turnUsage = new Map<string, TurnUsage>();
|
|
51
|
-
// private readonly _stats = new Map<string, TurnStats>();
|
|
52
|
-
|
|
53
|
-
// private _closed = false;
|
|
54
|
-
// public constructor() {
|
|
55
|
-
// super();
|
|
56
|
-
// this.setMaxListeners(Infinity);
|
|
57
|
-
// }
|
|
58
|
-
|
|
59
|
-
// public get stats(): TurnStats[] {
|
|
60
|
-
// const result: TurnStats[] = [];
|
|
61
|
-
|
|
62
|
-
// for (const [ turnIp, usage ] of this._turnUsage) {
|
|
63
|
-
// const stats = this._stats.get(turnIp) ?? {
|
|
64
|
-
// turnIp,
|
|
65
|
-
// totalBytesSent: 0,
|
|
66
|
-
// totalBytesReceived: 0,
|
|
67
|
-
// totalPacketsSent: 0,
|
|
68
|
-
// totalPacketsReceived: 0,
|
|
69
|
-
// deltaBytesSent: 0,
|
|
70
|
-
// deltaBytesReceived: 0,
|
|
71
|
-
// timestamp: Date.now(),
|
|
72
|
-
// outboundBitrate: 0,
|
|
73
|
-
// inboundBitrate: 0,
|
|
74
|
-
// };
|
|
75
|
-
|
|
76
|
-
// stats.deltaBytesSent = usage.totalBytesSent - stats.totalBytesSent;
|
|
77
|
-
// stats.deltaBytesReceived = usage.totalBytesReceived - stats.totalBytesReceived;
|
|
78
|
-
// stats.timestamp = Date.now();
|
|
79
|
-
// stats.outboundBitrate = (stats.deltaBytesSent * 8) / ((stats.timestamp - stats.timestamp) / 1000.0);
|
|
80
|
-
// stats.inboundBitrate = (stats.deltaBytesReceived * 8) / ((stats.timestamp - stats.timestamp) / 1000.0);
|
|
81
|
-
// stats.totalBytesSent = usage.totalBytesSent;
|
|
82
|
-
// stats.totalBytesReceived = usage.totalBytesReceived;
|
|
83
|
-
// stats.totalPacketsSent = usage.totalPacketsSent;
|
|
84
|
-
// stats.totalPacketsReceived = usage.totalPacketsReceived;
|
|
85
|
-
|
|
86
|
-
// this._stats.set(turnIp, stats);
|
|
87
|
-
|
|
88
|
-
// result.push(stats);
|
|
89
|
-
// }
|
|
90
|
-
|
|
91
|
-
// return result;
|
|
92
|
-
// }
|
|
93
|
-
|
|
94
|
-
// public addPeerConnection(peerConnection: ObservedPeerConnection) {
|
|
95
|
-
// if (this.closed) return;
|
|
96
|
-
// if (this._connections.has(peerConnection.peerConnectionId)) return;
|
|
97
|
-
|
|
98
|
-
// const ice = peerConnection.ICE;
|
|
99
|
-
|
|
100
|
-
// const onUpdate = () => {
|
|
101
|
-
// const turnIp = ice?.selectedRemoteCandidate?.address;
|
|
102
|
-
|
|
103
|
-
// if (!peerConnection.usingTURN || !turnIp) return;
|
|
104
|
-
|
|
105
|
-
// let usage = this._turnUsage.get(turnIp);
|
|
106
|
-
|
|
107
|
-
// if (!usage) {
|
|
108
|
-
// usage = {
|
|
109
|
-
// turnIp,
|
|
110
|
-
// totalBytesSent: 0,
|
|
111
|
-
// totalBytesReceived: 0,
|
|
112
|
-
// totalPacketsSent: 0,
|
|
113
|
-
// totalPacketsReceived: 0,
|
|
114
|
-
// };
|
|
115
|
-
// this._turnUsage.set(turnIp, usage);
|
|
116
|
-
|
|
117
|
-
// this.emit('newturnip', turnIp);
|
|
118
|
-
// }
|
|
119
|
-
|
|
120
|
-
// usage.totalBytesSent += ice.deltaBytesSent;
|
|
121
|
-
// usage.totalBytesReceived += ice.deltaBytesReceived;
|
|
122
|
-
// usage.totalPacketsSent += ice.deltaPacketsSent;
|
|
123
|
-
// usage.totalPacketsReceived += ice.deltaPacketsReceived;
|
|
124
|
-
|
|
125
|
-
// this.emit('update', usage);
|
|
126
|
-
// };
|
|
127
|
-
|
|
128
|
-
// peerConnection.ICE.on('update', onUpdate);
|
|
129
|
-
|
|
130
|
-
// this._connections.set(peerConnection.peerConnectionId, {
|
|
131
|
-
// peerConnection,
|
|
132
|
-
// onUpdate
|
|
133
|
-
// });
|
|
134
|
-
|
|
135
|
-
// this.emit('addpeerconnection', peerConnection);
|
|
136
|
-
// }
|
|
137
|
-
|
|
138
|
-
// public removePeerConnection(peerConnection: ObservedPeerConnection) {
|
|
139
|
-
// if (this.closed) return;
|
|
140
|
-
// if (!this._connections.has(peerConnection.peerConnectionId)) return;
|
|
141
|
-
|
|
142
|
-
// const { onUpdate } = this._connections.get(peerConnection.peerConnectionId) ?? {};
|
|
143
|
-
|
|
144
|
-
// if (!onUpdate) return;
|
|
145
|
-
|
|
146
|
-
// peerConnection.ICE.off('update', onUpdate);
|
|
147
|
-
|
|
148
|
-
// this._connections.delete(peerConnection.peerConnectionId);
|
|
149
|
-
|
|
150
|
-
// this.emit('removepeerconnection', peerConnection);
|
|
151
|
-
// }
|
|
152
|
-
|
|
153
|
-
// public get turnIps() {
|
|
154
|
-
// return Array.from(this._turnUsage.keys());
|
|
155
|
-
// }
|
|
156
|
-
|
|
157
|
-
// public get peerConnections() {
|
|
158
|
-
// return Array.from(this._connections.values()).map(({ peerConnection }) => peerConnection);
|
|
159
|
-
// }
|
|
160
|
-
|
|
161
|
-
// public getUsage(turnIp: string) {
|
|
162
|
-
// return this._turnUsage.get(turnIp);
|
|
163
|
-
// }
|
|
164
|
-
|
|
165
|
-
// public get clients(): ReadonlyMap<string, ObservedClient> {
|
|
166
|
-
// const result = new Map<string, ObservedClient>();
|
|
167
|
-
|
|
168
|
-
// for (const pc of this.peerConnections) {
|
|
169
|
-
// if (result.has(pc.clientId)) continue;
|
|
170
|
-
|
|
171
|
-
// result.set(pc.clientId, pc.client);
|
|
172
|
-
// }
|
|
173
|
-
|
|
174
|
-
// return result;
|
|
175
|
-
// }
|
|
176
|
-
|
|
177
|
-
// public get closed() {
|
|
178
|
-
// return this._closed;
|
|
179
|
-
// }
|
|
180
|
-
|
|
181
|
-
// public close() {
|
|
182
|
-
// if (this._closed) return;
|
|
183
|
-
// this._closed = true;
|
|
184
|
-
|
|
185
|
-
// this.emit('close');
|
|
186
|
-
// }
|
|
187
|
-
// }
|