aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2022-10-05 20:07:27 +0200
committermetamuffin <metamuffin@disroot.org>2022-10-05 20:07:27 +0200
commit0e8a807309bb65091b4170ba9da1768dbd109bc1 (patch)
tree949c1bef601e778930de99c3ba92de604ed6a8f2 /common
parent2449d977f1c0fe98bf022ce5608972ae3aef0bce (diff)
downloadkeks-meet-0e8a807309bb65091b4170ba9da1768dbd109bc1.tar
keks-meet-0e8a807309bb65091b4170ba9da1768dbd109bc1.tar.bz2
keks-meet-0e8a807309bb65091b4170ba9da1768dbd109bc1.tar.zst
protocol .d.ts uses sum types now
Diffstat (limited to 'common')
-rw-r--r--common/packets.d.ts55
1 files changed, 28 insertions, 27 deletions
diff --git a/common/packets.d.ts b/common/packets.d.ts
index cd7fb02..369d221 100644
--- a/common/packets.d.ts
+++ b/common/packets.d.ts
@@ -6,45 +6,46 @@
// copy pasted from dom.lib.d.ts because it can not be referenced in the server.
type Sdp = string
-interface F_RTCIceCandidateInit { candidate?: string; sdpMLineIndex?: number | null; sdpMid?: string | null; usernameFragment?: string | null; }
-
-export interface /* enum */ ClientboundPacket {
- init?: { your_id: number, version: string },
- client_join?: { id: number },
- client_leave?: { id: number },
- message?: { sender: number, message: string /* encrypted RelayMessageWrapper */ },
+interface F_RTCIceCandidateInit {
+ candidate?: string
+ sdpMLineIndex?: number | null
+ sdpMid?: string | null
+ usernameFragment?: string | null
}
-export interface /* enum */ ServerboundPacket {
- ping?: null,
- relay?: { recipient?: number, message: string /* encrypted RelayMessageWrapper */ },
-}
+export type ClientboundPacket =
+ { init: { your_id: number, version: string } }
+ | { client_join: { id: number } } // join: more like "appear" - also sent when you join for others that were there before you.
+ | { client_leave: { id: number } }
+ | { message: { sender: number, message: string /* encrypted RelayMessageWrapper */ } }
+
+export type ServerboundPacket =
+ { ping: null }
+ | { relay: { recipient?: number, message: string /* encrypted RelayMessageWrapper */ } }
export interface RelayMessageWrapper {
- sender: number, // redundant, but ensures the server didnt cheat
+ sender: number, // redundancy to ensure the server didn't cheat
inner: RelayMessage
}
-export interface /* enum */ RelayMessage {
- chat?: ChatMessage,
- identify?: { username: string }
+export type RelayMessage =
+ { chat: ChatMessage }
+ | { identify: { username: string } }
+ | { provide: ProvideInfo }
+ | { request: { id: string } }
+ | { provide_stop: { id: string } }
+ | { request_stop: { id: string } }
+ | { offer: Sdp }
+ | { answer: Sdp }
+ | { ice_candidate: F_RTCIceCandidateInit }
- provide?: ProvideInfo
- request?: { id: string }
- provide_stop?: { id: string }
- request_stop?: { id: string }
-
- offer?: Sdp,
- answer?: Sdp,
- ice_candidate?: F_RTCIceCandidateInit,
-}
export interface ChatMessage { text?: string, image?: string }
export type ResourceKind = "track" | "file"
export type TrackKind = "audio" | "video"
export interface ProvideInfo {
- id: string, // for datachannels this is `label`, for tracks this will be the `id` of the only associated stream.
+ id: string // for datachannels this is `label`, for tracks this will be the `id` of the only associated stream.
kind: ResourceKind
- track_kind?: TrackKind
+ track_kind?: TrackKind // used to indicate a/v for tracks only
label?: string
- size?: number
+ size?: number // size for file transfers
}