mirror of
https://github.com/m1k1o/neko.git
synced 2024-07-24 14:40:50 +12:00
271 lines
5.5 KiB
TypeScript
271 lines
5.5 KiB
TypeScript
import {
|
|
EVENT,
|
|
WebSocketEvents,
|
|
SystemEvents,
|
|
ControlEvents,
|
|
MemberEvents,
|
|
SignalEvents,
|
|
ChatEvents,
|
|
ScreenEvents,
|
|
AdminEvents,
|
|
FileTransferEvents,
|
|
} from './events'
|
|
import {
|
|
FileListItem,
|
|
Member,
|
|
ScreenConfigurations,
|
|
ScreenResolution
|
|
} from './types'
|
|
|
|
export type WebSocketMessages =
|
|
| WebSocketMessage
|
|
| SignalProvideMessage
|
|
| SignalOfferMessage
|
|
| SignalAnswerMessage
|
|
| SignalCandidateMessage
|
|
| MemberListMessage
|
|
| MemberConnectMessage
|
|
| MemberDisconnectMessage
|
|
| ControlMessage
|
|
| ScreenResolutionMessage
|
|
| ScreenConfigurationsMessage
|
|
| ChatMessage
|
|
|
|
export type WebSocketPayloads =
|
|
| SignalProvidePayload
|
|
| SignalOfferPayload
|
|
| SignalAnswerPayload
|
|
| SignalCandidatePayload
|
|
| MemberListPayload
|
|
| Member
|
|
| ControlPayload
|
|
| ControlClipboardPayload
|
|
| ControlKeyboardPayload
|
|
| ChatPayload
|
|
| ChatSendPayload
|
|
| EmojiSendPayload
|
|
| ScreenResolutionPayload
|
|
| ScreenConfigurationsPayload
|
|
| AdminPayload
|
|
| AdminLockPayload
|
|
| BroadcastStatusPayload
|
|
| BroadcastCreatePayload
|
|
|
|
export interface WebSocketMessage {
|
|
event: WebSocketEvents | string
|
|
}
|
|
|
|
/*
|
|
SYSTEM MESSAGES/PAYLOADS
|
|
*/
|
|
// system/init
|
|
export interface SystemInit extends WebSocketMessage, SystemInitPayload {
|
|
event: typeof EVENT.SYSTEM.INIT
|
|
}
|
|
export interface SystemInitPayload {
|
|
implicit_hosting: boolean
|
|
locks: Record<string, string>
|
|
}
|
|
|
|
// system/disconnect
|
|
// system/error
|
|
export interface SystemMessage extends WebSocketMessage, SystemMessagePayload {
|
|
event: typeof EVENT.SYSTEM.DISCONNECT | typeof EVENT.SYSTEM.ERROR
|
|
}
|
|
export interface SystemMessagePayload {
|
|
title: string
|
|
message: string
|
|
}
|
|
|
|
/*
|
|
SIGNAL MESSAGES/PAYLOADS
|
|
*/
|
|
// signal/provide
|
|
export interface SignalProvideMessage extends WebSocketMessage, SignalProvidePayload {
|
|
event: typeof EVENT.SIGNAL.PROVIDE
|
|
}
|
|
export interface SignalProvidePayload {
|
|
id: string
|
|
lite: boolean
|
|
ice: RTCIceServer[]
|
|
sdp: string
|
|
}
|
|
|
|
// signal/offer
|
|
export interface SignalOfferMessage extends WebSocketMessage, SignalOfferPayload {
|
|
event: typeof EVENT.SIGNAL.OFFER
|
|
}
|
|
export interface SignalOfferPayload {
|
|
sdp: string
|
|
}
|
|
|
|
// signal/answer
|
|
export interface SignalAnswerMessage extends WebSocketMessage, SignalAnswerPayload {
|
|
event: typeof EVENT.SIGNAL.ANSWER
|
|
}
|
|
export interface SignalAnswerPayload {
|
|
sdp: string
|
|
displayname: string
|
|
}
|
|
|
|
// signal/candidate
|
|
export interface SignalCandidateMessage extends WebSocketMessage, SignalCandidatePayload {
|
|
event: typeof EVENT.SIGNAL.CANDIDATE
|
|
}
|
|
export interface SignalCandidatePayload {
|
|
data: string
|
|
}
|
|
|
|
/*
|
|
MEMBER MESSAGES/PAYLOADS
|
|
*/
|
|
// member/list
|
|
export interface MemberListMessage extends WebSocketMessage, MemberListPayload {
|
|
event: typeof EVENT.MEMBER.LIST
|
|
}
|
|
export interface MemberListPayload {
|
|
members: Member[]
|
|
}
|
|
|
|
// member/connected
|
|
export interface MemberConnectMessage extends WebSocketMessage, MemberPayload {
|
|
event: typeof EVENT.MEMBER.CONNECTED
|
|
}
|
|
export type MemberPayload = Member
|
|
|
|
// member/disconnected
|
|
export interface MemberDisconnectMessage extends WebSocketMessage, MemberPayload {
|
|
event: typeof EVENT.MEMBER.DISCONNECTED
|
|
}
|
|
export interface MemberDisconnectPayload {
|
|
id: string
|
|
}
|
|
|
|
/*
|
|
CONTROL MESSAGES/PAYLOADS
|
|
*/
|
|
// control/locked & control/release & control/request
|
|
export interface ControlMessage extends WebSocketMessage, ControlPayload {
|
|
event: ControlEvents
|
|
}
|
|
export interface ControlPayload {
|
|
id: string
|
|
}
|
|
|
|
export interface ControlTargetPayload {
|
|
id: string
|
|
target: string
|
|
}
|
|
|
|
export interface ControlClipboardPayload {
|
|
text: string
|
|
}
|
|
|
|
export interface ControlKeyboardPayload {
|
|
layout?: string
|
|
capsLock?: boolean
|
|
numLock?: boolean
|
|
scrollLock?: boolean
|
|
}
|
|
|
|
/*
|
|
CHAT PAYLOADS
|
|
*/
|
|
// chat/message
|
|
export interface ChatMessage extends WebSocketMessage, ChatPayload {
|
|
event: typeof EVENT.CHAT.MESSAGE
|
|
}
|
|
|
|
export interface ChatSendPayload {
|
|
content: string
|
|
}
|
|
export interface ChatPayload {
|
|
id: string
|
|
content: string
|
|
}
|
|
|
|
// chat/emoji
|
|
export interface ChatEmoteMessage extends WebSocketMessage, EmotePayload {
|
|
event: typeof EVENT.CHAT.EMOTE
|
|
}
|
|
|
|
export interface EmotePayload {
|
|
id: string
|
|
emote: string
|
|
}
|
|
|
|
export interface EmojiSendPayload {
|
|
emote: string
|
|
}
|
|
|
|
// file transfer
|
|
export interface FileTransferMessage extends WebSocketMessage, FileTransferListPayload {
|
|
event: FileTransferEvents
|
|
}
|
|
export interface FileTransferListPayload {
|
|
cwd: string,
|
|
files: FileListItem[]
|
|
}
|
|
|
|
/*
|
|
SCREEN PAYLOADS
|
|
*/
|
|
export interface ScreenResolutionMessage extends WebSocketMessage, ScreenResolutionPayload {
|
|
event: ScreenEvents
|
|
}
|
|
|
|
export interface ScreenResolutionPayload extends ScreenResolution {
|
|
id?: string
|
|
}
|
|
|
|
export interface ScreenConfigurationsMessage extends WebSocketMessage, ScreenConfigurationsPayload {
|
|
event: ScreenEvents
|
|
}
|
|
|
|
export interface ScreenConfigurationsPayload {
|
|
configurations: ScreenConfigurations
|
|
}
|
|
|
|
/*
|
|
BROADCAST PAYLOADS
|
|
*/
|
|
export interface BroadcastCreatePayload {
|
|
url: string
|
|
}
|
|
|
|
export interface BroadcastStatusPayload {
|
|
url: string
|
|
isActive: boolean
|
|
}
|
|
|
|
/*
|
|
ADMIN PAYLOADS
|
|
*/
|
|
export interface AdminMessage extends WebSocketMessage, AdminPayload {
|
|
event: AdminEvents
|
|
}
|
|
|
|
export interface AdminPayload {
|
|
id: string
|
|
}
|
|
|
|
export interface AdminTargetMessage extends WebSocketMessage, AdminTargetPayload {
|
|
event: AdminEvents
|
|
}
|
|
|
|
export interface AdminTargetPayload {
|
|
id: string
|
|
target?: string
|
|
}
|
|
|
|
export interface AdminLockMessage extends WebSocketMessage, AdminLockPayload {
|
|
event: AdminEvents
|
|
id: string
|
|
}
|
|
|
|
export type AdminLockResource = 'login' | 'control'
|
|
|
|
export interface AdminLockPayload {
|
|
resource: AdminLockResource
|
|
}
|