@observertc/observer-js 1.0.0-beta.8 → 1.0.0-beta.9

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.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { EventEmitter } from 'events';
2
+ import { types } from 'mediasoup';
2
3
 
3
4
  /**
4
5
  * The WebRTC app provided custom stats payload
@@ -2082,6 +2083,179 @@ type ClientSampleSinkFactory = (params: {
2082
2083
  observedCall: ObservedCall;
2083
2084
  }) => ClientSampleSink | undefined;
2084
2085
 
2086
+ /** mediasoup `TransportTuple` (the selected local/remote address pair of a transport). */
2087
+ type TransportTuple = {
2088
+ localAddress: string;
2089
+ localPort: number;
2090
+ remoteIp?: string;
2091
+ remotePort?: number;
2092
+ protocol: 'udp' | 'tcp';
2093
+ };
2094
+ /** mediasoup `RtpCodecParameters` (the negotiated codec of a producer/consumer). */
2095
+ type RtpCodecParameters = {
2096
+ mimeType: string;
2097
+ payloadType: number;
2098
+ clockRate: number;
2099
+ channels?: number;
2100
+ parameters?: Record<string, unknown>;
2101
+ rtcpFeedback?: {
2102
+ type: string;
2103
+ parameter?: string;
2104
+ }[];
2105
+ };
2106
+ type SampleHistoryItem<T extends string> = Record<string, unknown> & {
2107
+ type: T;
2108
+ timestamp: number;
2109
+ };
2110
+ type MediasoupRouterSample = Record<string, unknown> & {
2111
+ routerId: string;
2112
+ attachments: Record<string, unknown>;
2113
+ createdAt: number;
2114
+ closedAt?: number;
2115
+ producers: MediasoupProducerSample[];
2116
+ consumers: MediasoupConsumerSample[];
2117
+ dataProducers: MediasoupDataProducerSample[];
2118
+ dataConsumers: MediasoupDataConsumerSample[];
2119
+ transports: MediasoupTransportSample[];
2120
+ };
2121
+ type MediasoupWebRtcTransportSampleEventTypes = 'icestate-changed-to-new' | 'icestate-changed-to-connected' | 'icestate-changed-to-completed' | 'icestate-changed-to-disconnected' | 'icestate-changed-to-closed' | 'dtlsstate-changed-to-new' | 'dtlsstate-changed-to-connecting' | 'dtlsstate-changed-to-connected' | 'dtlsstate-changed-to-failed' | 'dtlsstate-changed-to-closed' | 'sctpstate-changed-to-new' | 'sctpstate-changed-to-connecting' | 'sctpstate-changed-to-connected' | 'sctpstate-changed-to-failed' | 'sctpstate-changed-to-closed' | 'iceselectedtuple-changed';
2122
+ type MediasoupWebRtcTransportSampleEventMap = {
2123
+ [K in MediasoupWebRtcTransportSampleEventTypes]: SampleHistoryItem<K>;
2124
+ }[MediasoupWebRtcTransportSampleEventTypes];
2125
+ type MediasoupWebRtcTransportSample = {
2126
+ type: 'webrtc';
2127
+ history: MediasoupWebRtcTransportSampleEventMap[];
2128
+ };
2129
+ type MediasoupPlainTransportSampleEventTypes = 'sctpstate-changed-to-new' | 'sctpstate-changed-to-connecting' | 'sctpstate-changed-to-connected' | 'sctpstate-changed-to-failed' | 'sctpstate-changed-to-closed' | 'tuple-changed' | 'rtcptuple-changed';
2130
+ type MediasoupPlainTransportSampleEventMap = {
2131
+ [K in MediasoupPlainTransportSampleEventTypes]: SampleHistoryItem<K>;
2132
+ }[MediasoupPlainTransportSampleEventTypes];
2133
+ type MediasoupPlainTransportSample = {
2134
+ type: 'plain';
2135
+ rtcpTuple?: TransportTuple;
2136
+ history: MediasoupPlainTransportSampleEventMap[];
2137
+ };
2138
+ type MediasoupPipeTransportSampleEventTypes = 'sctpstate-changed-to-new' | 'sctpstate-changed-to-connecting' | 'sctpstate-changed-to-connected' | 'sctpstate-changed-to-failed' | 'sctpstate-changed-to-closed';
2139
+ type MediasoupPipeTransportSampleEventMap = {
2140
+ [K in MediasoupPipeTransportSampleEventTypes]: SampleHistoryItem<K>;
2141
+ }[MediasoupPipeTransportSampleEventTypes];
2142
+ type MediasoupPipeTransportSample = {
2143
+ type: 'pipe';
2144
+ history: MediasoupPipeTransportSampleEventMap[];
2145
+ };
2146
+ type MediasoupDirectTransportSampleEventTypes = never;
2147
+ type MediasoupDirectTransportSampleEventMap = {
2148
+ [K in MediasoupDirectTransportSampleEventTypes]: SampleHistoryItem<K>;
2149
+ }[MediasoupDirectTransportSampleEventTypes];
2150
+ type MediasoupDirectTransportSample = {
2151
+ type: 'direct';
2152
+ history: MediasoupDirectTransportSampleEventMap[];
2153
+ };
2154
+ type MediasoupTransportSample = Record<string, unknown> & {
2155
+ id: string;
2156
+ createdAt: number;
2157
+ connectedAt?: number;
2158
+ closedAt?: number;
2159
+ tuple?: TransportTuple;
2160
+ } & (MediasoupWebRtcTransportSample | MediasoupPlainTransportSample | MediasoupPipeTransportSample | MediasoupDirectTransportSample);
2161
+ type MediasoupProducerSampleEventMap = {
2162
+ 'pause': undefined;
2163
+ 'resume': undefined;
2164
+ 'degraded': undefined;
2165
+ 'restored': undefined;
2166
+ };
2167
+ type MediasoupProducerSampleEvent = {
2168
+ [K in keyof MediasoupProducerSampleEventMap]: SampleHistoryItem<K>;
2169
+ }[keyof MediasoupProducerSampleEventMap];
2170
+ type MediasoupProducerSample = Record<string, unknown> & {
2171
+ id: string;
2172
+ transportId: string;
2173
+ createdAt: number;
2174
+ closedAt?: number;
2175
+ codecInfo: RtpCodecParameters;
2176
+ kind: 'audio' | 'video';
2177
+ ssrcs?: number[];
2178
+ rids?: string[];
2179
+ history: MediasoupProducerSampleEvent[];
2180
+ };
2181
+ type MediasoupConsumerSampleEventMap = {
2182
+ 'pause': undefined;
2183
+ 'resume': undefined;
2184
+ 'producerPaused': undefined;
2185
+ 'producerResumed': undefined;
2186
+ 'stopped': undefined;
2187
+ 'started': undefined;
2188
+ 'degraded': undefined;
2189
+ 'restored': undefined;
2190
+ };
2191
+ type MediasoupConsumerSampleEvent = {
2192
+ [K in keyof MediasoupConsumerSampleEventMap]: SampleHistoryItem<K>;
2193
+ }[keyof MediasoupConsumerSampleEventMap];
2194
+ type MediasoupConsumerSample = Record<string, unknown> & {
2195
+ id: string;
2196
+ producerId: string;
2197
+ transportId: string;
2198
+ createdAt: number;
2199
+ closedAt?: number;
2200
+ kind: 'audio' | 'video';
2201
+ history: MediasoupConsumerSampleEvent[];
2202
+ };
2203
+ type MediasoupDataProducerSample = Record<string, unknown> & {
2204
+ id: string;
2205
+ transportId: string;
2206
+ createdAt: number;
2207
+ closedAt?: number;
2208
+ label: string;
2209
+ protocol: string;
2210
+ };
2211
+ type MediasoupDataConsumerSample = Record<string, unknown> & {
2212
+ id: string;
2213
+ dataProducerId: string;
2214
+ transportId: string;
2215
+ createdAt: number;
2216
+ closedAt?: number;
2217
+ label: string;
2218
+ protocol: string;
2219
+ };
2220
+
2221
+ type ObservedMediasoupRouterSettings<AppData extends Record<string, unknown> = Record<string, unknown>> = {
2222
+ routerId: string;
2223
+ router: types.Router;
2224
+ appData?: AppData;
2225
+ attachments?: Record<string, unknown>;
2226
+ };
2227
+ type ObservedMediasoupRouterEvents = {
2228
+ close: [];
2229
+ };
2230
+ declare interface ObservedMediasoupRouter {
2231
+ on<U extends keyof ObservedMediasoupRouterEvents>(event: U, listener: (...args: ObservedMediasoupRouterEvents[U]) => void): this;
2232
+ off<U extends keyof ObservedMediasoupRouterEvents>(event: U, listener: (...args: ObservedMediasoupRouterEvents[U]) => void): this;
2233
+ once<U extends keyof ObservedMediasoupRouterEvents>(event: U, listener: (...args: ObservedMediasoupRouterEvents[U]) => void): this;
2234
+ emit<U extends keyof ObservedMediasoupRouterEvents>(event: U, ...args: ObservedMediasoupRouterEvents[U]): boolean;
2235
+ }
2236
+ declare class ObservedMediasoupRouter<AppData extends Record<string, unknown> = Record<string, unknown>> extends EventEmitter {
2237
+ readonly router: types.Router;
2238
+ readonly sample: MediasoupRouterSample;
2239
+ appData: AppData;
2240
+ readonly webrtcTransportIds: Set<string>;
2241
+ get attachments(): Record<string, unknown>;
2242
+ closed: boolean;
2243
+ constructor(settings: ObservedMediasoupRouterSettings<AppData>);
2244
+ get id(): string;
2245
+ addTransport: (transport: types.Transport) => void;
2246
+ addWebRtcTransport(transport: types.WebRtcTransport): void;
2247
+ addPlainTransport(transport: types.PlainTransport): void;
2248
+ addPipeTransport(transport: types.PipeTransport): void;
2249
+ addDirectTransport(transport: types.DirectTransport): void;
2250
+ addProducer(transport: types.Transport, producer: types.Producer): void;
2251
+ addConsumer(transport: types.Transport, consumer: types.Consumer): void;
2252
+ addDataProducer(transport: types.Transport, dataProducer: types.DataProducer): void;
2253
+ addDataConsumer(transport: types.Transport, dataConsumer: types.DataConsumer): void;
2254
+ close(): void;
2255
+ private attachRouterListeners;
2256
+ private _attachTransportObserverListeners;
2257
+ }
2258
+
2085
2259
  /**
2086
2260
  * The Observer is the single event bus for the whole hierarchy. Every event
2087
2261
  * worth subscribing to is emitted on the Observer with a payload object that
@@ -2109,6 +2283,9 @@ type ObservedClientScope = ObservedCallScope & {
2109
2283
  type ObservedPeerConnectionScope = ObservedClientScope & {
2110
2284
  observedPeerConnection: ObservedPeerConnection;
2111
2285
  };
2286
+ type ObservedMediasoupRouterScope = Omit<ObserverEventBase, 'context'> & {
2287
+ observedMediasoupRouter: ObservedMediasoupRouter;
2288
+ };
2112
2289
  type ObserverEvents = {
2113
2290
  'observer-updated': [ObserverEventBase];
2114
2291
  'observer-closed': [ObserverEventBase];
@@ -2116,6 +2293,9 @@ type ObserverEvents = {
2116
2293
  reason: SampleRejectedReason;
2117
2294
  sample: ClientSample;
2118
2295
  }];
2296
+ 'mediasoup-router-added': [ObservedMediasoupRouterScope];
2297
+ 'mediasoup-router-removed': [ObservedMediasoupRouterScope];
2298
+ 'mediasoup-router-matched-with-call': [ObservedMediasoupRouterScope & ObservedCallScope];
2119
2299
  'call-added': [ObservedCallScope];
2120
2300
  'call-updated': [ObservedCallScope];
2121
2301
  'call-closed': [ObservedCallScope];
@@ -2636,6 +2816,7 @@ declare class Observer<AppData extends Record<string, unknown> = Record<string,
2636
2816
  readonly config: ObserverConfig<AppData>;
2637
2817
  readonly observedTURN: ObservedTURN;
2638
2818
  readonly observedCalls: Map<string, ObservedCall<Record<string, unknown>>>;
2819
+ readonly observedMediasoupRouters: Map<string, ObservedMediasoupRouter<Record<string, unknown>>>;
2639
2820
  updater?: Updater;
2640
2821
  /** Ancestry base shared by all Observer-bus events originating at the observer. */
2641
2822
  readonly eventScope: ObserverEventBase;
@@ -2656,6 +2837,10 @@ declare class Observer<AppData extends Record<string, unknown> = Record<string,
2656
2837
  getObservedCall<T extends Record<string, unknown> = Record<string, unknown>>(callId: string): ObservedCall<T> | undefined;
2657
2838
  createObservedCall<T extends Record<string, unknown> = Record<string, unknown>>(settings: ObservedCallSettings<T>): ObservedCall<T> | undefined;
2658
2839
  getOrCreateObservedCall<T extends Record<string, unknown> = Record<string, unknown>>(settings: ObservedCallSettings<T>): ObservedCall<T> | undefined;
2840
+ createObservedMediasoupRouter<T extends Record<string, unknown> = Record<string, unknown>>(settings: ObservedMediasoupRouterSettings<T> & {
2841
+ callId?: string;
2842
+ bindCallByWebRtcTransportId?: boolean;
2843
+ }): ObservedMediasoupRouter<Record<string, unknown>> | undefined;
2659
2844
  close(): void;
2660
2845
  accept(sample: ClientSample, context?: AcceptContext): void;
2661
2846
  update(): void;
@@ -2768,4 +2953,4 @@ declare function createInMemorySink(samples?: ClientSample[]): InMemorySink;
2768
2953
  declare function createDefaultMediasoupRemoteTrackResolverFactory(): RemoteTrackResolverFactory;
2769
2954
  declare function createP2pRemoteTrackResolverFactory(): RemoteTrackResolverFactory;
2770
2955
 
2771
- export { type AcceptContext, type AcceptMiddleware, type AcceptMiddlewarePayload, type CallAppDataFactory, type ClientAppDataFactory, type ClientEvent, ClientEventTypes, type ClientIssue, type ClientMetaData, ClientMetaTypes, type ClientSample, ClientSampleSink, type ClientSampleSinkEvents, type ClientSampleSinkFactory, type Detector, Detectors, InMemorySink, JsonlFileSink, type JsonlFileSinkFactoryOptions, type JsonlFileSinkOptions, type Logger, type Middleware, ObservedCall, type ObservedCallScope, ObservedCertificate, ObservedClient, type ObservedClientScope, ObservedCodec, ObservedDataChannel, ObservedIceCandidate, ObservedIceCandidatePair, ObservedIceTransport, ObservedInboundRtp, ObservedInboundTrack, ObservedMediaPlayout, ObservedMediaSource, ObservedOutboundRtp, ObservedOutboundTrack, ObservedPeerConnection, type ObservedPeerConnectionScope, ObservedPeerConnectionTransport, ObservedRemoteInboundRtp, ObservedRemoteOutboundRtp, Observer, type ObserverEventBase, type ObserverEvents, type ObserverLogger, RemoteTrackResolver, type RemoteTrackResolverFactory, type RemoteTrackResolvers, type SampleRejectedReason, type ScoreCalculator, createDefaultMediasoupRemoteTrackResolverFactory, createInMemorySink, createJsonlFileSink, createJsonlFileSinkFactory, createLogger, createP2pRemoteTrackResolverFactory, setObserverLogger };
2956
+ export { type AcceptContext, type AcceptMiddleware, type AcceptMiddlewarePayload, type CallAppDataFactory, type ClientAppDataFactory, type ClientEvent, ClientEventTypes, type ClientIssue, type ClientMetaData, ClientMetaTypes, type ClientSample, ClientSampleSink, type ClientSampleSinkEvents, type ClientSampleSinkFactory, type Detector, Detectors, InMemorySink, JsonlFileSink, type JsonlFileSinkFactoryOptions, type JsonlFileSinkOptions, type Logger, type MediasoupConsumerSample, type MediasoupConsumerSampleEvent, type MediasoupDataConsumerSample, type MediasoupDataProducerSample, type MediasoupDirectTransportSample, type MediasoupDirectTransportSampleEventMap, type MediasoupPipeTransportSample, type MediasoupPipeTransportSampleEventMap, type MediasoupPlainTransportSample, type MediasoupPlainTransportSampleEventMap, type MediasoupProducerSample, type MediasoupProducerSampleEvent, type MediasoupRouterSample, type MediasoupTransportSample, type MediasoupWebRtcTransportSample, type MediasoupWebRtcTransportSampleEventMap, type Middleware, ObservedCall, type ObservedCallScope, ObservedCertificate, ObservedClient, type ObservedClientScope, ObservedCodec, ObservedDataChannel, ObservedIceCandidate, ObservedIceCandidatePair, ObservedIceTransport, ObservedInboundRtp, ObservedInboundTrack, ObservedMediaPlayout, ObservedMediaSource, ObservedMediasoupRouter, type ObservedMediasoupRouterEvents, type ObservedMediasoupRouterScope, type ObservedMediasoupRouterSettings, ObservedOutboundRtp, ObservedOutboundTrack, ObservedPeerConnection, type ObservedPeerConnectionScope, ObservedPeerConnectionTransport, ObservedRemoteInboundRtp, ObservedRemoteOutboundRtp, Observer, type ObserverEventBase, type ObserverEvents, type ObserverLogger, RemoteTrackResolver, type RemoteTrackResolverFactory, type RemoteTrackResolvers, type SampleRejectedReason, type ScoreCalculator, createDefaultMediasoupRemoteTrackResolverFactory, createInMemorySink, createJsonlFileSink, createJsonlFileSinkFactory, createLogger, createP2pRemoteTrackResolverFactory, setObserverLogger };