livekit-client
Version:
JavaScript/TypeScript client SDK for LiveKit
151 lines (131 loc) • 2.97 kB
text/typescript
import type { LogLevel } from '../logger';
import type { VideoCodec } from '../room/track/options';
import type { BaseKeyProvider } from './KeyProvider';
export interface BaseMessage {
kind: string;
data?: unknown;
}
export interface InitMessage extends BaseMessage {
kind: 'init';
data: {
keyProviderOptions: KeyProviderOptions;
loglevel: LogLevel;
};
}
export interface SetKeyMessage extends BaseMessage {
kind: 'setKey';
data: {
participantIdentity?: string;
isPublisher: boolean;
key: CryptoKey;
keyIndex?: number;
};
}
export interface RTPVideoMapMessage extends BaseMessage {
kind: 'setRTPMap';
data: {
map: Map<number, VideoCodec>;
participantIdentity: string;
};
}
export interface SifTrailerMessage extends BaseMessage {
kind: 'setSifTrailer';
data: {
trailer: Uint8Array;
};
}
export interface EncodeMessage extends BaseMessage {
kind: 'decode' | 'encode';
data: {
participantIdentity: string;
readableStream: ReadableStream;
writableStream: WritableStream;
trackId: string;
codec?: VideoCodec;
};
}
export interface RemoveTransformMessage extends BaseMessage {
kind: 'removeTransform';
data: {
participantIdentity: string;
trackId: string;
};
}
export interface UpdateCodecMessage extends BaseMessage {
kind: 'updateCodec';
data: {
participantIdentity: string;
trackId: string;
codec: VideoCodec;
};
}
export interface RatchetRequestMessage extends BaseMessage {
kind: 'ratchetRequest';
data: {
participantIdentity?: string;
keyIndex?: number;
};
}
export interface RatchetMessage extends BaseMessage {
kind: 'ratchetKey';
data: {
participantIdentity: string;
keyIndex?: number;
material: CryptoKey;
};
}
export interface ErrorMessage extends BaseMessage {
kind: 'error';
data: {
error: Error;
};
}
export interface EnableMessage extends BaseMessage {
kind: 'enable';
data: {
participantIdentity: string;
enabled: boolean;
};
}
export interface InitAck extends BaseMessage {
kind: 'initAck';
data: {
enabled: boolean;
};
}
export type E2EEWorkerMessage =
| InitMessage
| SetKeyMessage
| EncodeMessage
| ErrorMessage
| EnableMessage
| RemoveTransformMessage
| RTPVideoMapMessage
| UpdateCodecMessage
| RatchetRequestMessage
| RatchetMessage
| SifTrailerMessage
| InitAck;
export type KeySet = { material: CryptoKey; encryptionKey: CryptoKey };
export type KeyProviderOptions = {
sharedKey: boolean;
ratchetSalt: string;
ratchetWindowSize: number;
failureTolerance: number;
keyringSize: number;
};
export type KeyInfo = {
key: CryptoKey;
participantIdentity?: string;
keyIndex?: number;
};
export type E2EEOptions = {
keyProvider: BaseKeyProvider;
worker: Worker;
};
export type DecodeRatchetOptions = {
/** attempts */
ratchetCount: number;
/** ratcheted key to try */
encryptionKey?: CryptoKey;
};