UNPKG

@skyway-sdk/core

Version:

The official Next Generation JavaScript SDK for SkyWay

212 lines 9.06 kB
import { Event } from '@skyway-sdk/common'; import type { Encoding } from '@skyway-sdk/model'; import type { SkyWayChannelImpl } from '../channel'; import type { StreamSubscribedEvent, StreamUnsubscribedEvent } from '../channel/event'; import type { AnalyticsSession } from '../external/analytics'; import type { Codec, EncodingParameters } from '../media'; import type { ContentType, WebRTCStats } from '../media/stream'; import type { LocalMediaStreamBase, LocalStream } from '../media/stream/local'; import type { LocalAudioStream } from '../media/stream/local/audio'; import type { LocalCustomVideoStream } from '../media/stream/local/customVideo'; import type { LocalVideoStream } from '../media/stream/local/video'; import type { Member } from '../member'; import type { RemoteMember, RemoteMemberImplInterface } from '../member/remoteMember'; import type { TransportConnectionState } from '../plugin/interface'; import type { Subscription } from '../subscription'; export * from './factory'; export interface Publication<T extends LocalStream = LocalStream> { readonly id: string; readonly contentType: ContentType; metadata?: string; readonly publisher: Member; readonly subscriptions: Subscription[]; readonly origin?: Publication; readonly codecCapabilities: Codec[]; readonly encodings: Encoding[]; readonly type: PublicationType; /** * @description [japanese] publishしたstreamの実体。 * ローカルで作られたPublicationでなければundefinedとなる */ stream?: T; state: PublicationState; /** @description [japanese] Subscribeされた時に発火するイベント */ onSubscribed: Event<StreamSubscribedEvent>; /** @description [japanese] このPublicationをSubscribeしたSubscriptionがUnsubscribeされた時に発火するイベント */ onUnsubscribed: Event<StreamUnsubscribedEvent>; /** @description [japanese] このPublicationをSubscribeしたSubscriptionの数が変化した時に発火するイベント */ onSubscriptionListChanged: Event<void>; /** @description [japanese] Metadataが変更された時に発火するイベント */ onMetadataUpdated: Event<{ metadata: string; }>; /** @description [japanese] 有効化された時に発火するイベント */ onEnabled: Event<void>; /** @description [japanese] 無効化された時に発火するイベント */ onDisabled: Event<void>; /** @description [japanese] stateが変化した時に発火するイベント */ onStateChanged: Event<void>; /** * @description [japanese] メディア通信の状態が変化した時に発火するイベント */ onConnectionStateChanged: Event<{ remoteMember: RemoteMember; state: TransportConnectionState; }>; /** * @description [japanese] Metadataの更新 */ updateMetadata: (metadata: string) => Promise<void>; /** * @description [japanese] Video|Audio Streamの場合、encoding設定を更新する */ updateEncodings: (encodings: EncodingParameters[]) => void; /** @description [japanese] 有効化する */ /**@throws {SkyWayError} */ enable: () => Promise<void>; /** @description [japanese] 無効化する */ disable: () => Promise<void>; /** * @description [japanese] Publicationのstreamを同じContentTypeの別のStreamに入れ替える。 * dataStreamを入れ替えることはできない。 * RemoteのPublication(streamがnull)では利用不可。 */ replaceStream: (stream: LocalAudioStream | LocalVideoStream | LocalCustomVideoStream, options?: ReplaceStreamOptions) => void; /** * @experimental * @description [japanese] 試験的なAPIです。今後インターフェースや仕様が変更される可能性があります * @description [japanese] StreamをSubscribeしているMemberとの通信の統計情報を取得する * @param selector [japanese] 接続相手 */ getStats(selector: Member | string): Promise<WebRTCStats>; /** * @experimental * @description [japanese] 試験的なAPIです。今後インターフェースや仕様が変更される可能性があります * @description [japanese] 対象のMemberとのRTCPeerConnectionを取得する。RTCPeerConnectionを直接操作すると SDK は正しく動作しなくなる可能性があります。 * @param selector [japanese] 接続相手 */ getRTCPeerConnection(selector: Member | string): RTCPeerConnection | undefined; /** * @description [japanese] メディア通信の状態を取得する * @param selector [japanese] 接続相手 */ getConnectionState(selector: Member | string): TransportConnectionState; } /**@internal */ export declare class PublicationImpl<T extends LocalStream = LocalStream> implements Publication { readonly id: string; readonly contentType: ContentType; readonly publisher: RemoteMemberImplInterface; private _codecCapabilities; get codecCapabilities(): Codec[]; setCodecCapabilities(_codecCapabilities: Codec[]): void; private _encodings; get encodings(): Encoding[]; setEncodings(_encodings: Encoding[]): void; private _stream?; get stream(): T | undefined; /**@internal */ _setStream(stream: LocalStream | undefined): void; /**@private */ readonly _channel: SkyWayChannelImpl; origin?: PublicationImpl; private _metadata?; get metadata(): string | undefined; private _state; get state(): PublicationState; get deviceName(): string | undefined; private readonly _events; readonly onSubscribed: Event<StreamSubscribedEvent>; readonly onUnsubscribed: Event<StreamUnsubscribedEvent>; readonly onSubscriptionListChanged: Event<void>; readonly onMetadataUpdated: Event<{ metadata: string; }>; readonly onEnabled: Event<void>; readonly onDisabled: Event<void>; readonly onStateChanged: Event<void>; readonly onConnectionStateChanged: Event<{ remoteMember: RemoteMember; state: TransportConnectionState; }>; /**@private */ readonly _onEncodingsChanged: Event<EncodingParameters[]>; /**@private */ readonly _onReplaceStream: Event<{ newStream: LocalMediaStreamBase; oldStream: LocalMediaStreamBase; }>; private readonly _onEnabled; private streamEventDisposer; /**@private */ readonly _analytics?: AnalyticsSession; readonly type: PublicationType; private _context; constructor(args: { channel: SkyWayChannelImpl; id: string; publisher: RemoteMemberImplInterface; contentType: ContentType; metadata?: string; origin?: PublicationImpl; codecCapabilities?: Codec[]; encodings?: EncodingParameters[]; stream?: T; isEnabled: boolean; type: PublicationType; }); get subscriptions(): Subscription[]; /**@private */ _updateMetadata(metadata: string): void; /**@private */ _disable(): Promise<void>; /**@private */ _enable(): void; /**@private */ _unpublished(): void; /**@private */ _subscribed(subscription: Subscription): void; /**@private */ _unsubscribed(subscription: Subscription): void; updateMetadata: (metadata: string) => Promise<void>; updateEncodings(encodings: EncodingParameters[]): void; disable: () => Promise<void>; private _disableStream; enable: () => Promise<void>; private _enableStream; replaceStream(stream: LocalAudioStream | LocalVideoStream | LocalCustomVideoStream, options?: ReplaceStreamOptions): void; getStats(selector: string | Member): Promise<WebRTCStats>; getRTCPeerConnection(selector: string | Member): RTCPeerConnection | undefined; getConnectionState(selector: string | Member): TransportConnectionState; /**@private */ toJSON(): { id: string; channelId: string; publisherId: string; origin: string | undefined; contentType: ContentType; metadata: string | undefined; codecCapabilities: Codec[]; encodings: Encoding[]; state: PublicationState; stream: T | undefined; type: PublicationType; }; private _dispose; } /** * @description [japanese] Publicationの状態 * - enabled : 配信中 * - disabled : 配信停止中 * - canceled : 配信終了 * */ export declare type PublicationState = 'enabled' | 'disabled' | 'canceled'; /**@internal */ export declare const normalizeEncodings: (encodings: EncodingParameters[]) => Encoding[]; export declare const sortEncodingParameters: (encodings: EncodingParameters[]) => EncodingParameters[]; export declare type ReplaceStreamOptions = { /**@description [japanese] 入れ替え前のstreamを開放する。デフォルトで有効 */ releaseOldStream?: boolean; }; export declare type PublicationType = 'p2p' | 'sfu'; //# sourceMappingURL=index.d.ts.map