This repository was archived by the owner on Jun 28, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstate.types.ts
62 lines (53 loc) · 2.39 KB
/
state.types.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import type { TrackEncoding, VadStatus, SimulcastConfig } from "@fishjam-dev/ts-client";
import type { UseUserMediaState } from "./types";
import type { UseCameraAndMicrophoneResult } from "./types";
import type { Client } from "./Client";
import type { DeviceManager } from "./DeviceManager";
import type { ScreenShareManager } from "./ScreenShareManager";
export type TrackId = string;
export type PeerId = string;
export type Track<TrackMetadata> = {
stream: MediaStream | null;
encoding: TrackEncoding | null;
trackId: TrackId;
metadata?: TrackMetadata;
rawMetadata: any; // eslint-disable-line @typescript-eslint/no-explicit-any
metadataParsingError?: any; // eslint-disable-line @typescript-eslint/no-explicit-any
simulcastConfig: SimulcastConfig | null;
vadStatus: VadStatus;
track: MediaStreamTrack | null;
};
export interface Origin<OriginMetadata> {
id: string;
type: string;
metadata?: OriginMetadata;
rawMetadata: any; // eslint-disable-line @typescript-eslint/no-explicit-any
metadataParsingError?: any; // eslint-disable-line @typescript-eslint/no-explicit-any
}
export type TrackWithOrigin<PeerMetadata, TrackMetadata> = Track<TrackMetadata> & {
origin: Origin<PeerMetadata>;
};
export type PeerState<PeerMetadata, TrackMetadata> = {
id: PeerId;
metadata?: PeerMetadata;
rawMetadata: any; // eslint-disable-line @typescript-eslint/no-explicit-any
metadataParsingError?: any; // eslint-disable-line @typescript-eslint/no-explicit-any
tracks: Record<TrackId, Track<TrackMetadata>>;
};
export type PeerStatus = "connecting" | "connected" | "authenticated" | "joined" | "error" | "closed" | null;
export type State<PeerMetadata, TrackMetadata> = {
local: PeerState<PeerMetadata, TrackMetadata> | null;
remote: Record<PeerId, PeerState<PeerMetadata, TrackMetadata>>;
tracks: Record<TrackId, TrackWithOrigin<PeerMetadata, TrackMetadata>>;
bandwidthEstimation: bigint;
status: PeerStatus;
media: UseUserMediaState | null;
devices: UseCameraAndMicrophoneResult<TrackMetadata>;
client: Client<PeerMetadata, TrackMetadata>;
deviceManager: DeviceManager;
screenShareManager: ScreenShareManager;
};
export type SetStore<PeerMetadata, TrackMetadata> = (
setter: (prevState: State<PeerMetadata, TrackMetadata>) => State<PeerMetadata, TrackMetadata>,
) => void;
export type Selector<PeerMetadata, TrackMetadata, Result> = (snapshot: State<PeerMetadata, TrackMetadata>) => Result;