@observertc/observer-js 1.0.0-beta.11 → 1.0.0-beta.12
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 +76 -42
- package/dist/index.d.mts +16 -4
- package/dist/index.d.ts +16 -4
- package/dist/index.js +45 -117
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +45 -117
- package/dist/index.mjs.map +1 -1
- package/llms-full.txt +77 -43
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -3289,12 +3289,9 @@ import { EventEmitter as EventEmitter5 } from "events";
|
|
|
3289
3289
|
var logger6 = createLogger("ObservedMediasoupRouter");
|
|
3290
3290
|
var ObservedMediasoupRouter = class extends EventEmitter5 {
|
|
3291
3291
|
router;
|
|
3292
|
-
sample;
|
|
3293
3292
|
appData;
|
|
3293
|
+
sample;
|
|
3294
3294
|
webrtcTransportIds = /* @__PURE__ */ new Set();
|
|
3295
|
-
get attachments() {
|
|
3296
|
-
return this.sample.attachments;
|
|
3297
|
-
}
|
|
3298
3295
|
closed = false;
|
|
3299
3296
|
constructor(settings) {
|
|
3300
3297
|
super();
|
|
@@ -3315,6 +3312,15 @@ var ObservedMediasoupRouter = class extends EventEmitter5 {
|
|
|
3315
3312
|
get id() {
|
|
3316
3313
|
return this.router.id;
|
|
3317
3314
|
}
|
|
3315
|
+
get attachments() {
|
|
3316
|
+
return this.sample.attachments;
|
|
3317
|
+
}
|
|
3318
|
+
close() {
|
|
3319
|
+
if (this.closed) return;
|
|
3320
|
+
this.closed = true;
|
|
3321
|
+
if (this.sample.closedAt === void 0) this.sample.closedAt = Date.now();
|
|
3322
|
+
this.emit("close");
|
|
3323
|
+
}
|
|
3318
3324
|
addTransport = (transport) => {
|
|
3319
3325
|
let transportType = transport.type;
|
|
3320
3326
|
if (!transportType) {
|
|
@@ -3347,35 +3353,17 @@ var ObservedMediasoupRouter = class extends EventEmitter5 {
|
|
|
3347
3353
|
history
|
|
3348
3354
|
};
|
|
3349
3355
|
this.sample.transports.push(transportSample);
|
|
3350
|
-
|
|
3351
|
-
|
|
3352
|
-
type: `icestate-changed-to-${iceState}`,
|
|
3353
|
-
timestamp: Date.now()
|
|
3354
|
-
});
|
|
3355
|
-
};
|
|
3356
|
+
this.webrtcTransportIds.add(transport.id);
|
|
3357
|
+
const onIceStateChange = (iceState) => history.push({ type: `icestate-changed-to-${iceState}`, timestamp: Date.now() });
|
|
3356
3358
|
const onIceSelectedTupleChange = (tuple) => {
|
|
3357
3359
|
transportSample.tuple = tuple;
|
|
3358
|
-
history.push({
|
|
3359
|
-
type: "iceselectedtuple-changed",
|
|
3360
|
-
timestamp: Date.now(),
|
|
3361
|
-
...tuple
|
|
3362
|
-
});
|
|
3360
|
+
history.push({ type: "iceselectedtuple-changed", timestamp: Date.now(), ...tuple });
|
|
3363
3361
|
};
|
|
3364
3362
|
const onDtlsStateChange = (dtlsState) => {
|
|
3365
|
-
history.push({
|
|
3366
|
-
|
|
3367
|
-
timestamp: Date.now()
|
|
3368
|
-
});
|
|
3369
|
-
if (dtlsState === "connected" && transportSample.connectedAt === void 0) {
|
|
3370
|
-
transportSample.connectedAt = Date.now();
|
|
3371
|
-
}
|
|
3372
|
-
};
|
|
3373
|
-
const onSctpStateChange = (sctpState) => {
|
|
3374
|
-
history.push({
|
|
3375
|
-
type: `sctpstate-changed-to-${sctpState}`,
|
|
3376
|
-
timestamp: Date.now()
|
|
3377
|
-
});
|
|
3363
|
+
history.push({ type: `dtlsstate-changed-to-${dtlsState}`, timestamp: Date.now() });
|
|
3364
|
+
if (dtlsState === "connected" && transportSample.connectedAt === void 0) transportSample.connectedAt = Date.now();
|
|
3378
3365
|
};
|
|
3366
|
+
const onSctpStateChange = (sctpState) => history.push({ type: `sctpstate-changed-to-${sctpState}`, timestamp: Date.now() });
|
|
3379
3367
|
this._attachTransportObserverListeners(transport, transportSample, () => {
|
|
3380
3368
|
transport.observer.off("icestatechange", onIceStateChange);
|
|
3381
3369
|
transport.observer.off("iceselectedtuplechange", onIceSelectedTupleChange);
|
|
@@ -3387,7 +3375,6 @@ var ObservedMediasoupRouter = class extends EventEmitter5 {
|
|
|
3387
3375
|
transport.observer.on("iceselectedtuplechange", onIceSelectedTupleChange);
|
|
3388
3376
|
transport.observer.on("dtlsstatechange", onDtlsStateChange);
|
|
3389
3377
|
transport.observer.on("sctpstatechange", onSctpStateChange);
|
|
3390
|
-
this.webrtcTransportIds.add(transport.id);
|
|
3391
3378
|
}
|
|
3392
3379
|
addPlainTransport(transport) {
|
|
3393
3380
|
const history = [];
|
|
@@ -3410,13 +3397,8 @@ var ObservedMediasoupRouter = class extends EventEmitter5 {
|
|
|
3410
3397
|
history.push({ type: "rtcptuple-changed", timestamp: Date.now(), ...rtcpTuple });
|
|
3411
3398
|
};
|
|
3412
3399
|
const onSctpStateChange = (sctpState) => {
|
|
3413
|
-
if (sctpState === "connected" && transportSample.connectedAt === void 0)
|
|
3414
|
-
|
|
3415
|
-
}
|
|
3416
|
-
history.push({
|
|
3417
|
-
type: `sctpstate-changed-to-${sctpState}`,
|
|
3418
|
-
timestamp: Date.now()
|
|
3419
|
-
});
|
|
3400
|
+
if (sctpState === "connected" && transportSample.connectedAt === void 0) transportSample.connectedAt = Date.now();
|
|
3401
|
+
history.push({ type: `sctpstate-changed-to-${sctpState}`, timestamp: Date.now() });
|
|
3420
3402
|
};
|
|
3421
3403
|
this._attachTransportObserverListeners(transport, transportSample, () => {
|
|
3422
3404
|
transport.observer.off("tuple", onTuple);
|
|
@@ -3438,13 +3420,8 @@ var ObservedMediasoupRouter = class extends EventEmitter5 {
|
|
|
3438
3420
|
};
|
|
3439
3421
|
this.sample.transports.push(transportSample);
|
|
3440
3422
|
const onSctpStateChange = (sctpState) => {
|
|
3441
|
-
if (sctpState === "connected" && transportSample.connectedAt === void 0)
|
|
3442
|
-
|
|
3443
|
-
}
|
|
3444
|
-
history.push({
|
|
3445
|
-
type: `sctpstate-changed-to-${sctpState}`,
|
|
3446
|
-
timestamp: Date.now()
|
|
3447
|
-
});
|
|
3423
|
+
if (sctpState === "connected" && transportSample.connectedAt === void 0) transportSample.connectedAt = Date.now();
|
|
3424
|
+
history.push({ type: `sctpstate-changed-to-${sctpState}`, timestamp: Date.now() });
|
|
3448
3425
|
};
|
|
3449
3426
|
this._attachTransportObserverListeners(transport, transportSample, () => {
|
|
3450
3427
|
transport.observer.off("sctpstatechange", onSctpStateChange);
|
|
@@ -3457,7 +3434,6 @@ var ObservedMediasoupRouter = class extends EventEmitter5 {
|
|
|
3457
3434
|
id: transport.id,
|
|
3458
3435
|
type: "direct",
|
|
3459
3436
|
createdAt: now,
|
|
3460
|
-
// A DirectTransport has no network layer — it is connected the instant it exists.
|
|
3461
3437
|
connectedAt: now,
|
|
3462
3438
|
history: []
|
|
3463
3439
|
};
|
|
@@ -3466,37 +3442,26 @@ var ObservedMediasoupRouter = class extends EventEmitter5 {
|
|
|
3466
3442
|
}
|
|
3467
3443
|
addProducer(transport, producer) {
|
|
3468
3444
|
const firstCodec = producer.rtpParameters.codecs[0];
|
|
3469
|
-
const codecInfo = {
|
|
3470
|
-
mimeType: firstCodec?.mimeType ?? "unknown/unknown",
|
|
3471
|
-
payloadType: firstCodec?.payloadType ?? 0,
|
|
3472
|
-
clockRate: firstCodec?.clockRate ?? 0,
|
|
3473
|
-
channels: firstCodec?.channels,
|
|
3474
|
-
parameters: firstCodec?.parameters,
|
|
3475
|
-
rtcpFeedback: firstCodec?.rtcpFeedback
|
|
3476
|
-
};
|
|
3477
3445
|
const producerSample = {
|
|
3478
3446
|
id: producer.id,
|
|
3447
|
+
transportId: transport.id,
|
|
3479
3448
|
createdAt: Date.now(),
|
|
3480
3449
|
kind: producer.kind,
|
|
3481
|
-
codecInfo
|
|
3482
|
-
|
|
3483
|
-
|
|
3484
|
-
|
|
3485
|
-
|
|
3450
|
+
codecInfo: {
|
|
3451
|
+
mimeType: firstCodec?.mimeType ?? "unknown/unknown",
|
|
3452
|
+
payloadType: firstCodec?.payloadType ?? 0,
|
|
3453
|
+
clockRate: firstCodec?.clockRate ?? 0,
|
|
3454
|
+
channels: firstCodec?.channels,
|
|
3455
|
+
parameters: firstCodec?.parameters,
|
|
3456
|
+
rtcpFeedback: firstCodec?.rtcpFeedback
|
|
3457
|
+
},
|
|
3458
|
+
ssrcs: producer.rtpParameters.encodings?.map((e) => e.ssrc).filter((s) => typeof s === "number"),
|
|
3459
|
+
rids: producer.rtpParameters.encodings?.map((e) => e.rid).filter((r) => typeof r === "string"),
|
|
3460
|
+
history: []
|
|
3486
3461
|
};
|
|
3487
3462
|
this.sample.producers.push(producerSample);
|
|
3488
|
-
const onPause = () => {
|
|
3489
|
-
|
|
3490
|
-
type: "pause",
|
|
3491
|
-
timestamp: Date.now()
|
|
3492
|
-
});
|
|
3493
|
-
};
|
|
3494
|
-
const onResume = () => {
|
|
3495
|
-
producerSample.history.push({
|
|
3496
|
-
type: "resume",
|
|
3497
|
-
timestamp: Date.now()
|
|
3498
|
-
});
|
|
3499
|
-
};
|
|
3463
|
+
const onPause = () => producerSample.history.push({ type: "pause", timestamp: Date.now() });
|
|
3464
|
+
const onResume = () => producerSample.history.push({ type: "resume", timestamp: Date.now() });
|
|
3500
3465
|
producer.observer.once("close", () => {
|
|
3501
3466
|
producer.observer.off("pause", onPause);
|
|
3502
3467
|
producer.observer.off("resume", onResume);
|
|
@@ -3515,30 +3480,10 @@ var ObservedMediasoupRouter = class extends EventEmitter5 {
|
|
|
3515
3480
|
history: []
|
|
3516
3481
|
};
|
|
3517
3482
|
this.sample.consumers.push(consumerSample);
|
|
3518
|
-
const onPause = () => {
|
|
3519
|
-
|
|
3520
|
-
|
|
3521
|
-
|
|
3522
|
-
});
|
|
3523
|
-
};
|
|
3524
|
-
const onResume = () => {
|
|
3525
|
-
consumerSample.history.push({
|
|
3526
|
-
type: "resume",
|
|
3527
|
-
timestamp: Date.now()
|
|
3528
|
-
});
|
|
3529
|
-
};
|
|
3530
|
-
const onProducerPause = () => {
|
|
3531
|
-
consumerSample.history.push({
|
|
3532
|
-
type: "producerPaused",
|
|
3533
|
-
timestamp: Date.now()
|
|
3534
|
-
});
|
|
3535
|
-
};
|
|
3536
|
-
const onProducerResume = () => {
|
|
3537
|
-
consumerSample.history.push({
|
|
3538
|
-
type: "producerResumed",
|
|
3539
|
-
timestamp: Date.now()
|
|
3540
|
-
});
|
|
3541
|
-
};
|
|
3483
|
+
const onPause = () => consumerSample.history.push({ type: "pause", timestamp: Date.now() });
|
|
3484
|
+
const onResume = () => consumerSample.history.push({ type: "resume", timestamp: Date.now() });
|
|
3485
|
+
const onProducerPause = () => consumerSample.history.push({ type: "producerPaused", timestamp: Date.now() });
|
|
3486
|
+
const onProducerResume = () => consumerSample.history.push({ type: "producerResumed", timestamp: Date.now() });
|
|
3542
3487
|
consumer.observer.once("close", () => {
|
|
3543
3488
|
consumer.observer.off("pause", onPause);
|
|
3544
3489
|
consumer.observer.off("resume", onResume);
|
|
@@ -3560,9 +3505,7 @@ var ObservedMediasoupRouter = class extends EventEmitter5 {
|
|
|
3560
3505
|
protocol: dataProducer.protocol
|
|
3561
3506
|
};
|
|
3562
3507
|
this.sample.dataProducers.push(dataProducerSample);
|
|
3563
|
-
dataProducer.observer.once("close", () =>
|
|
3564
|
-
dataProducerSample.closedAt = Date.now();
|
|
3565
|
-
});
|
|
3508
|
+
dataProducer.observer.once("close", () => dataProducerSample.closedAt = Date.now());
|
|
3566
3509
|
}
|
|
3567
3510
|
addDataConsumer(transport, dataConsumer) {
|
|
3568
3511
|
const dataConsumerSample = {
|
|
@@ -3574,14 +3517,7 @@ var ObservedMediasoupRouter = class extends EventEmitter5 {
|
|
|
3574
3517
|
protocol: dataConsumer.protocol
|
|
3575
3518
|
};
|
|
3576
3519
|
this.sample.dataConsumers.push(dataConsumerSample);
|
|
3577
|
-
dataConsumer.observer.once("close", () =>
|
|
3578
|
-
dataConsumerSample.closedAt = Date.now();
|
|
3579
|
-
});
|
|
3580
|
-
}
|
|
3581
|
-
close() {
|
|
3582
|
-
if (this.closed) return;
|
|
3583
|
-
this.closed = true;
|
|
3584
|
-
this.emit("close");
|
|
3520
|
+
dataConsumer.observer.once("close", () => dataConsumerSample.closedAt = Date.now());
|
|
3585
3521
|
}
|
|
3586
3522
|
attachRouterListeners() {
|
|
3587
3523
|
this.router.observer.once("close", () => {
|
|
@@ -3592,18 +3528,10 @@ var ObservedMediasoupRouter = class extends EventEmitter5 {
|
|
|
3592
3528
|
this.router.observer.on("newtransport", this.addTransport);
|
|
3593
3529
|
}
|
|
3594
3530
|
_attachTransportObserverListeners(transport, transportSample, onClose) {
|
|
3595
|
-
const onNewProducer = (producer) =>
|
|
3596
|
-
|
|
3597
|
-
|
|
3598
|
-
const
|
|
3599
|
-
this.addConsumer(transport, consumer);
|
|
3600
|
-
};
|
|
3601
|
-
const onNewDataProducer = (dataProducer) => {
|
|
3602
|
-
this.addDataProducer(transport, dataProducer);
|
|
3603
|
-
};
|
|
3604
|
-
const onNewDataConsumer = (dataConsumer) => {
|
|
3605
|
-
this.addDataConsumer(transport, dataConsumer);
|
|
3606
|
-
};
|
|
3531
|
+
const onNewProducer = (producer) => this.addProducer(transport, producer);
|
|
3532
|
+
const onNewConsumer = (consumer) => this.addConsumer(transport, consumer);
|
|
3533
|
+
const onNewDataProducer = (dataProducer) => this.addDataProducer(transport, dataProducer);
|
|
3534
|
+
const onNewDataConsumer = (dataConsumer) => this.addDataConsumer(transport, dataConsumer);
|
|
3607
3535
|
transport.observer.once("close", () => {
|
|
3608
3536
|
transport.observer.off("newproducer", onNewProducer);
|
|
3609
3537
|
transport.observer.off("newconsumer", onNewConsumer);
|
|
@@ -3686,7 +3614,7 @@ var Observer = class extends EventEmitter6 {
|
|
|
3686
3614
|
appData: settings.appData ?? this.config.createCallAppData?.({ callId: settings.callId, observer: this })
|
|
3687
3615
|
};
|
|
3688
3616
|
const observedCall = new ObservedCall(callSettings, this);
|
|
3689
|
-
observedCall.remoteTrackResolver = this.config.
|
|
3617
|
+
observedCall.remoteTrackResolver = this.config.createRemoteTrackResolver?.(observedCall);
|
|
3690
3618
|
observedCall.once("close", () => {
|
|
3691
3619
|
this.observedCalls.delete(observedCall.callId);
|
|
3692
3620
|
++this.totalRemovedCall;
|