/
index.d.ts
89 lines (88 loc) · 2.67 KB
/
index.d.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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
export interface ISocket {
onmessage: (msg: any) => void;
send(msg: any): any;
}
export type TeventCallback = (...args: any[]) => void;
export type TeventCallbackList = TeventCallback[];
export interface IFrameData {
i: number;
a?: any[];
c?: number[];
t?: number;
}
export interface IFrameDataInitiation extends IFrameData {
e: string;
}
export interface IFrameDataResponse extends IFrameData {
r: number;
f: number;
}
export type FrameList = (IFrameDataInitiation | IFrameDataResponse)[];
export abstract class Frame {
static id: number;
static getNextId(): number;
static timeout: number;
data: IFrameDataInitiation | IFrameDataResponse;
id: number;
event: string;
args: any[];
callbacks: ((...args: any[]) => void)[];
rid: number;
func: number;
timeout: number;
hasCallbacks(): boolean;
isResponse(): boolean;
}
export class FrameOutgoing extends Frame {
static createResponse(request: Frame, cb_pos: number, args: any[]): FrameOutgoing;
constructor(args?: any[], event?: string);
processResponse(response: FrameIncoming): void;
serialize(): IFrameDataInitiation | IFrameDataResponse;
}
export class FrameIncoming extends Frame {
unserialize(data: any, onCallback: any): void;
}
export class Router {
latency: number;
protected frame: {
[id: number]: FrameOutgoing;
};
protected timer: {
[id: number]: any;
};
send: (data) => void;
onerror: (err) => void;
onevent: (event: string, args: any[]) => void;
onframe: (frame: FrameIncoming) => void;
api: Api;
protected subs: {
[event: string]: TeventCallback;
};
protected genCallack(frame: FrameIncoming, pos: number): (...args: any[]) => void;
protected pub(frame: Frame): void;
protected sendData(data: any): void;
protected dispatch(frame: FrameOutgoing): void;
protected processResponse(frame: FrameIncoming): void;
setApi(api: Api): this;
onmessage(msg: any): void;
on(event: string, callback: TeventCallback): this;
off(event: string): this;
emit(event: string, ...args: any[]): this;
}
export class RouterBuffered extends Router {
cycle: number;
protected cycleTimer: any;
protected buffer: FrameList;
protected flush(): void;
protected sendData(data: any): void;
protected startTimer(): void;
onmessage(msg: any): void;
}
export type TApiList = {
[method: string]: (...args: any[]) => void;
};
export class Api {
protected methods: TApiList;
add(list: TApiList): this;
get(method: string): (...args: any[]) => void;
}