@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/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
- const onIceStateChange = (iceState) => {
3351
- history.push({
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
- type: `dtlsstate-changed-to-${dtlsState}`,
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
- transportSample.connectedAt = Date.now();
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
- transportSample.connectedAt = Date.now();
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
- ssrcs: producer.rtpParameters.encodings?.map((encoding) => encoding.ssrc).filter((ssrc) => typeof ssrc === "number"),
3483
- rids: producer.rtpParameters.encodings?.map((encoding) => encoding.rid).filter((rid) => typeof rid === "string"),
3484
- history: [],
3485
- transportId: transport.id
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
- producerSample.history.push({
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
- consumerSample.history.push({
3520
- type: "pause",
3521
- timestamp: Date.now()
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
- this.addProducer(transport, producer);
3597
- };
3598
- const onNewConsumer = (consumer) => {
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.createTrackResolver?.(observedCall);
3617
+ observedCall.remoteTrackResolver = this.config.createRemoteTrackResolver?.(observedCall);
3690
3618
  observedCall.once("close", () => {
3691
3619
  this.observedCalls.delete(observedCall.callId);
3692
3620
  ++this.totalRemovedCall;