Add debugging console
This commit is contained in:
193
src/app/core/models/debugging.models.ts
Normal file
193
src/app/core/models/debugging.models.ts
Normal file
@@ -0,0 +1,193 @@
|
||||
import type { Room, User } from './index';
|
||||
|
||||
export type DebugLogLevel = 'event' | 'info' | 'warn' | 'error' | 'debug';
|
||||
export type DebugNetworkNodeKind = 'local-client' | 'remote-client' | 'signaling-server' | 'app-server';
|
||||
export type DebugNetworkEdgeKind = 'peer' | 'signaling' | 'membership';
|
||||
export type DebugNetworkMessageDirection = 'inbound' | 'outbound';
|
||||
export type DebugNetworkMessageScope = 'data-channel' | 'signaling';
|
||||
|
||||
export interface DebugLogEntry {
|
||||
id: number;
|
||||
timestamp: number;
|
||||
timeLabel: string;
|
||||
dateTimeLabel: string;
|
||||
level: DebugLogLevel;
|
||||
source: string;
|
||||
message: string;
|
||||
payload: unknown | null;
|
||||
payloadText: string | null;
|
||||
count: number;
|
||||
}
|
||||
|
||||
export interface DebugNetworkMessageGroup {
|
||||
id: string;
|
||||
scope: DebugNetworkMessageScope;
|
||||
direction: DebugNetworkMessageDirection;
|
||||
type: string;
|
||||
count: number;
|
||||
lastSeen: number;
|
||||
}
|
||||
|
||||
export interface DebugNetworkHandshakeStats {
|
||||
answersReceived: number;
|
||||
answersSent: number;
|
||||
iceReceived: number;
|
||||
iceSent: number;
|
||||
offersReceived: number;
|
||||
offersSent: number;
|
||||
}
|
||||
|
||||
export interface DebugNetworkTextStats {
|
||||
received: number;
|
||||
sent: number;
|
||||
}
|
||||
|
||||
export interface DebugNetworkStreamStats {
|
||||
audio: number;
|
||||
video: number;
|
||||
}
|
||||
|
||||
export interface DebugNetworkDownloadStats {
|
||||
audioMbps: number | null;
|
||||
fileMbps: number | null;
|
||||
videoMbps: number | null;
|
||||
}
|
||||
|
||||
export interface DebugNetworkNode {
|
||||
id: string;
|
||||
identity: string | null;
|
||||
userId: string | null;
|
||||
kind: DebugNetworkNodeKind;
|
||||
label: string;
|
||||
secondaryLabel: string;
|
||||
title: string;
|
||||
statuses: string[];
|
||||
isActive: boolean;
|
||||
isVoiceConnected: boolean;
|
||||
isTyping: boolean;
|
||||
isSpeaking: boolean;
|
||||
isMuted: boolean;
|
||||
isDeafened: boolean;
|
||||
isStreaming: boolean;
|
||||
connectionDrops: number;
|
||||
downloads: DebugNetworkDownloadStats;
|
||||
handshake: DebugNetworkHandshakeStats;
|
||||
pingMs: number | null;
|
||||
streams: DebugNetworkStreamStats;
|
||||
textMessages: DebugNetworkTextStats;
|
||||
lastSeen: number;
|
||||
}
|
||||
|
||||
export interface DebugNetworkEdge {
|
||||
id: string;
|
||||
kind: DebugNetworkEdgeKind;
|
||||
sourceId: string;
|
||||
targetId: string;
|
||||
sourceLabel: string;
|
||||
targetLabel: string;
|
||||
label: string;
|
||||
stateLabel: string;
|
||||
isActive: boolean;
|
||||
pingMs: number | null;
|
||||
lastSeen: number;
|
||||
messageTotal: number;
|
||||
messageGroups: DebugNetworkMessageGroup[];
|
||||
}
|
||||
|
||||
export interface DebugNetworkSummary {
|
||||
clientCount: number;
|
||||
serverCount: number;
|
||||
signalingServerCount: number;
|
||||
peerConnectionCount: number;
|
||||
membershipCount: number;
|
||||
messageCount: number;
|
||||
typingCount: number;
|
||||
speakingCount: number;
|
||||
streamingCount: number;
|
||||
}
|
||||
|
||||
export interface DebugNetworkSnapshot {
|
||||
nodes: DebugNetworkNode[];
|
||||
edges: DebugNetworkEdge[];
|
||||
summary: DebugNetworkSummary;
|
||||
generatedAt: number;
|
||||
}
|
||||
|
||||
export interface DebuggingSettingsState {
|
||||
enabled?: boolean;
|
||||
}
|
||||
|
||||
export interface PendingDebugEntry {
|
||||
level: DebugLogLevel;
|
||||
source: string;
|
||||
message: string;
|
||||
payload?: unknown;
|
||||
payloadText?: string | null;
|
||||
timestamp?: number;
|
||||
}
|
||||
|
||||
export type ConsoleMethodName = 'debug' | 'log' | 'info' | 'warn' | 'error';
|
||||
export type ConsoleMethod = (...args: unknown[]) => void;
|
||||
|
||||
export interface MutableDebugNetworkMessageGroup {
|
||||
id: string;
|
||||
scope: DebugNetworkMessageScope;
|
||||
direction: DebugNetworkMessageDirection;
|
||||
type: string;
|
||||
count: number;
|
||||
lastSeen: number;
|
||||
}
|
||||
|
||||
export interface MutableDebugNetworkNode {
|
||||
id: string;
|
||||
identity: string | null;
|
||||
userId: string | null;
|
||||
kind: DebugNetworkNodeKind;
|
||||
label: string;
|
||||
secondaryLabel: string;
|
||||
title: string;
|
||||
lastSeen: number;
|
||||
isActive: boolean;
|
||||
isVoiceConnected: boolean;
|
||||
typingExpiresAt: number | null;
|
||||
isSpeaking: boolean;
|
||||
isMuted: boolean;
|
||||
isDeafened: boolean;
|
||||
isStreaming: boolean;
|
||||
connectionDrops: number;
|
||||
downloads: DebugNetworkDownloadStats;
|
||||
downloadsUpdatedAt: number | null;
|
||||
fileTransferSamples: DebugNetworkTransferSample[];
|
||||
handshake: DebugNetworkHandshakeStats;
|
||||
pingMs: number | null;
|
||||
streams: DebugNetworkStreamStats;
|
||||
textMessages: DebugNetworkTextStats;
|
||||
}
|
||||
|
||||
export interface DebugNetworkTransferSample {
|
||||
bytes: number;
|
||||
timestamp: number;
|
||||
}
|
||||
|
||||
export interface MutableDebugNetworkEdge {
|
||||
id: string;
|
||||
kind: DebugNetworkEdgeKind;
|
||||
sourceId: string;
|
||||
targetId: string;
|
||||
stateLabel: string;
|
||||
isActive: boolean;
|
||||
pingMs: number | null;
|
||||
lastSeen: number;
|
||||
messageTotal: number;
|
||||
messageGroups: Map<string, MutableDebugNetworkMessageGroup>;
|
||||
}
|
||||
|
||||
export interface DebugNetworkBuildState {
|
||||
currentRoom: Room | null;
|
||||
currentUser: User | null;
|
||||
edges: Map<string, MutableDebugNetworkEdge>;
|
||||
localIds: Set<string>;
|
||||
nodes: Map<string, MutableDebugNetworkNode>;
|
||||
users: readonly User[];
|
||||
userLookup: Map<string, User>;
|
||||
}
|
||||
Reference in New Issue
Block a user