mudvault-mesh
Version:
Node.js client library for connecting to MudVault Mesh network
123 lines • 3.02 kB
TypeScript
export interface MeshMessage {
version: string;
id: string;
timestamp: string;
type: MessageType;
from: MessageEndpoint;
to: MessageEndpoint;
payload: MessagePayload;
signature?: string;
metadata: MessageMetadata;
}
export interface MessageEndpoint {
mud: string;
user?: string;
displayName?: string;
channel?: string;
}
export interface MessageMetadata {
priority: number;
ttl: number;
encoding: string;
language: string;
retry?: boolean;
}
export type MessageType = 'tell' | 'emote' | 'emoteto' | 'channel' | 'who' | 'finger' | 'locate' | 'presence' | 'auth' | 'ping' | 'pong' | 'error';
export type MessagePayload = TellPayload | EmotePayload | ChannelPayload | WhoPayload | FingerPayload | LocatePayload | PresencePayload | AuthPayload | PingPayload | ErrorPayload;
export interface TellPayload {
message: string;
formatted?: string;
}
export interface EmotePayload {
action: string;
target?: string;
formatted?: string;
}
export interface ChannelPayload {
channel: string;
message: string;
action?: 'join' | 'leave' | 'message' | 'list';
formatted?: string;
}
export interface WhoPayload {
users?: UserInfo[];
request?: boolean;
}
export interface FingerPayload {
user: string;
info?: UserInfo;
request?: boolean;
}
export interface LocatePayload {
user: string;
locations?: UserLocation[];
request?: boolean;
}
export interface PresencePayload {
status: 'online' | 'offline' | 'away' | 'busy';
activity?: string;
location?: string;
}
export interface AuthPayload {
token?: string;
mudName?: string;
challenge?: string;
response?: string;
}
export interface PingPayload {
timestamp: number;
}
export interface ErrorPayload {
code: number;
message: string;
details?: any;
}
export interface UserInfo {
username: string;
displayName?: string;
idleTime?: number;
location?: string;
level?: number;
race?: string;
class?: string;
guild?: string;
lastLogin?: string;
email?: string;
realName?: string;
plan?: string;
}
export interface UserLocation {
mud: string;
room?: string;
area?: string;
online: boolean;
}
export interface ConnectionState {
connected: boolean;
authenticated: boolean;
reconnectAttempts: number;
lastPing?: number;
lastPong?: number;
}
export interface MeshClientOptions {
mudName: string;
autoReconnect?: boolean;
reconnectInterval?: number;
maxReconnectAttempts?: number;
heartbeatInterval?: number;
timeout?: number;
}
export declare enum ErrorCodes {
INVALID_MESSAGE = 1000,
AUTHENTICATION_FAILED = 1001,
UNAUTHORIZED = 1002,
MUD_NOT_FOUND = 1003,
USER_NOT_FOUND = 1004,
CHANNEL_NOT_FOUND = 1005,
RATE_LIMITED = 1006,
INTERNAL_ERROR = 1007,
PROTOCOL_ERROR = 1008,
UNSUPPORTED_VERSION = 1009,
MESSAGE_TOO_LARGE = 1010
}
//# sourceMappingURL=types.d.ts.map