UNPKG

@skyway-sdk/core

Version:

The official Next Generation JavaScript SDK for SkyWay

248 lines 10.9 kB
import type { Event } from '@skyway-sdk/common'; import type model from '@skyway-sdk/model'; import type { ChannelImpl, ChannelInit, ChannelQuery, MemberInit, PublicationInit } from '@skyway-sdk/rtc-api-client'; import type { LocalMemberConfig, MemberInternalConfig } from '../config'; import type { SkyWayContext } from '../context'; import type { Member, MemberImpl } from '../member'; import { type LocalPerson, type LocalPersonImpl } from '../member/localPerson'; import type { RemoteMember } from '../member/remoteMember'; import type { Publication, PublicationImpl } from '../publication'; import type { Subscription, SubscriptionImpl } from '../subscription'; import type { ChannelClosedEvent, ChannelMetadataUpdatedEvent, ListChangedEvent, MemberJoinedEvent, MemberLeftEvent, MemberMetadataUpdatedEvent, PublicationDisabledEvent, PublicationEnabledEvent, PublicationMetadataUpdatedEvent, StreamPublishedEvent, StreamSubscribedEvent, StreamUnpublishedEvent, StreamUnsubscribedEvent } from './event'; export type { ChannelInit, ChannelQuery, MemberInit }; export interface Channel { readonly id: string; readonly name?: string; readonly appId: string; metadata?: string; state: ChannelState; /** * @description [japanese] このChannelが閉じられた時に発生するイベント */ readonly onClosed: Event<ChannelClosedEvent>; /** * @description [japanese] このChannelのMetadataが更新された時に発生するイベント */ readonly onMetadataUpdated: Event<ChannelMetadataUpdatedEvent>; /**@description [japanese] このChannelのMemberの数が変化した時に発生するイベント */ readonly onMemberListChanged: Event<ListChangedEvent>; /** * @description [japanese] ChannelにMemberが参加した時に発生するイベント */ readonly onMemberJoined: Event<MemberJoinedEvent>; /** * @description [japanese] ChannelからMemberが退出した時に発生するイベント */ readonly onMemberLeft: Event<MemberLeftEvent>; /** * @description [japanese] MemberのMetadataが更新された時に発生するイベント */ readonly onMemberMetadataUpdated: Event<MemberMetadataUpdatedEvent>; /** * @description [japanese] ChannelにStreamがPublishされた時に発生するイベント */ readonly onStreamPublished: Event<StreamPublishedEvent>; /** * @description [japanese] ChannelからStreamがUnpublishされた時に発生するイベント */ readonly onStreamUnpublished: Event<StreamUnpublishedEvent>; /**@description [japanese] このChannelのPublicationの数が変化した時に発生するイベント */ readonly onPublicationListChanged: Event<ListChangedEvent>; /** * @description [japanese] StreamのPublicationのMetadataが更新された時に発生するイベント */ readonly onPublicationMetadataUpdated: Event<PublicationMetadataUpdatedEvent>; /**@description [japanese] このChannelのPublicationが有効化された時に発生するイベント */ readonly onPublicationEnabled: Event<PublicationEnabledEvent>; /**@description [japanese] このChannelのPublicationが無効化された時に発生するイベント */ readonly onPublicationDisabled: Event<PublicationDisabledEvent>; /** * @description [japanese] ChannelのPublicationがSubscribeされた時に発生するイベント */ readonly onPublicationSubscribed: Event<StreamSubscribedEvent>; /** * @description [japanese] ChannelのPublicationがUnsubscribeされた時に発生するイベント */ readonly onPublicationUnsubscribed: Event<StreamUnsubscribedEvent>; /**@description [japanese] このChannelのSubscriptionの数が変化した時に発生するイベント */ readonly onSubscriptionListChanged: Event<ListChangedEvent>; /** * @description [japanese] Channel中のMemberの一覧を取得する */ members: Member[]; /** * @description [japanese] Channel中のLocalPersonを取得する */ localPerson?: LocalPerson; /** * @description [japanese] Channel中のBotの一覧を取得する */ bots: RemoteMember[]; /** * @description [japanese] Channel中のPublicationの一覧を取得する */ publications: Publication[]; /** * @description [japanese] Channel中のSubscriptionの一覧を取得する */ subscriptions: Subscription[]; /** * @description [japanese] ChannelにMemberを追加する */ join: (memberInit?: { name?: MemberInit['name']; metadata?: MemberInit['metadata']; } & Partial<LocalMemberConfig>) => Promise<LocalPerson>; /** * @description [japanese] ChannelからMemberを退出させる */ leave: (member: Member) => Promise<void>; /** * @description [japanese] ChannelのMetadataを更新する */ updateMetadata: (metadata: string) => Promise<void>; /** * @description [japanese] Channelを閉じる。 */ close: () => Promise<void>; /** * @description [japanese] Channelを閉じずにChannelインスタンスの利用を終了し次のリソースを解放する。 * - サーバとの通信 * - イベントリスナー * - LocalPersonのインスタンス */ dispose: () => void; } /**@internal */ export declare class SkyWayChannelImpl implements Channel { /**@private */ readonly _context: SkyWayContext; /**@private */ private readonly _channelImpl; readonly id: model.Channel['id']; readonly name: model.Channel['name']; readonly appId: string; _localPerson?: LocalPersonImpl; disposed: boolean; readonly config: import("../config").ContextConfig; private _state; private readonly _api; private _members; /**@private */ _getMember: (id: string) => MemberImpl; private _addLocalPerson; private _addRemoteMember; private _removeMember; private _publications; /**@private */ _getPublication: (id: string) => PublicationImpl<import("..").LocalStream>; /**@private */ _addPublication(p: model.Publication): PublicationImpl<import("..").LocalStream>; private _removePublication; private _subscriptions; /**@private */ _getSubscription: (id: string) => SubscriptionImpl<import("..").RemoteStream>; /**@private */ _addSubscription(s: model.Subscription): SubscriptionImpl<import("..").RemoteStream>; private _removeSubscription; private readonly _events; readonly onClosed: Event<ChannelClosedEvent>; readonly onMetadataUpdated: Event<ChannelMetadataUpdatedEvent>; readonly onMemberListChanged: Event<ListChangedEvent>; readonly onMemberJoined: Event<MemberJoinedEvent>; readonly onMemberLeft: Event<MemberLeftEvent>; readonly onMemberMetadataUpdated: Event<MemberMetadataUpdatedEvent>; readonly onPublicationListChanged: Event<ListChangedEvent>; readonly onStreamPublished: Event<StreamPublishedEvent>; readonly onStreamUnpublished: Event<StreamUnpublishedEvent>; readonly onPublicationMetadataUpdated: Event<PublicationMetadataUpdatedEvent>; readonly onPublicationEnabled: Event<PublicationEnabledEvent>; readonly onPublicationDisabled: Event<PublicationDisabledEvent>; readonly onSubscriptionListChanged: Event<ListChangedEvent>; readonly onPublicationSubscribed: Event<StreamSubscribedEvent>; readonly onPublicationUnsubscribed: Event<StreamUnsubscribedEvent>; /**@private */ readonly _onDisposed: Event<void>; constructor( /**@private */ _context: SkyWayContext, /**@private */ _channelImpl: ChannelImpl); get localPerson(): LocalPersonImpl | undefined; get members(): MemberImpl[]; get bots(): RemoteMember[]; get publications(): Publication[]; get subscriptions(): Subscription[]; get metadata(): string | undefined; get state(): ChannelState; toJSON(): { id: string; name: string; appId: string; metadata: string | undefined; members: MemberImpl[]; publications: Publication<import("..").LocalStream>[]; subscriptions: Subscription<import("..").RemoteStream>[]; }; private _setupPropertiesFromChannel; private _setupListenChannelEvent; private _handleOnChannelClose; private _handleOnChannelMetadataUpdate; private _handleOnMemberJoin; private _handleOnMemberLeft; private _handleOnMemberMetadataUpdate; private _handleOnStreamPublish; private _handleOnStreamUnpublish; private _handleOnPublicationMetadataUpdate; private _handleOnPublicationEnabled; private _handleOnPublicationDisabled; private _handleOnStreamSubscribe; private _handleOnStreamUnsubscribe; join(options?: PersonInit): Promise<LocalPerson>; readonly leave: (member: Member) => Promise<void>; readonly updateMetadata: (metadata: string) => Promise<void>; readonly close: () => Promise<void>; /**@private */ readonly _updateMemberTtl: (memberId: string, ttlSec: number) => Promise<void>; /**@private */ readonly _updateMemberMetadata: (memberId: string, metadata: string) => Promise<void>; /**@private */ /**@throws {SkyWayError} */ readonly _publish: (init: PublicationInit) => Promise<model.Publication>; /**@private */ readonly _unpublish: (publicationId: string) => Promise<void>; /**@private * @throws {@link SkyWayError} */ readonly _subscribe: (subscriberId: string, publicationId: string) => Promise<model.Subscription>; /**@private */ readonly _unsubscribe: (subscriptionId: string) => Promise<void>; /**@private */ readonly _updatePublicationMetadata: (publicationId: string, metadata: string) => Promise<void>; /**@private */ readonly _disablePublication: (publicationId: string) => Promise<void>; /**@private */ readonly _enablePublication: (publicationId: string) => Promise<void>; dispose(): void; } export declare class SkyWayChannel { /** * @description [japanese] Channelの作成 */ static Create(context: SkyWayContext, init?: ChannelInit): Promise<Channel>; /** * @description [japanese] 既存のChannelの取得 */ static Find(context: SkyWayContext, query: ChannelQuery): Promise<Channel>; /** * @description [japanese] Channelの取得を試み、存在しなければ作成する */ static FindOrCreate(context: SkyWayContext, query: ChannelInit): Promise<Channel>; private constructor(); } export declare type ChannelState = 'opened' | 'closed'; export declare type PersonInit = { name?: MemberInit['name']; metadata?: MemberInit['metadata']; } & Partial<LocalMemberConfig> & MemberInternalConfig; //# sourceMappingURL=index.d.ts.map