stelar-time-real 3.2.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +429 -429
- package/package.json +1 -1
- package/src/client.d.ts +47 -59
- package/src/client.d.ts.map +1 -1
- package/src/client.js +406 -728
- package/src/client.ts +317 -908
- package/src/index.d.ts +84 -124
- package/src/index.d.ts.map +1 -1
- package/src/index.js +740 -1165
- package/src/index.ts +552 -1574
- package/src/logger.d.ts +12 -17
- package/src/logger.d.ts.map +1 -1
- package/src/logger.js +34 -90
- package/src/logger.ts +31 -98
- package/src/protocol.d.ts +16 -34
- package/src/protocol.d.ts.map +1 -1
- package/src/protocol.js +56 -148
- package/src/protocol.ts +66 -188
- package/src/websocket.d.ts +21 -43
- package/src/websocket.d.ts.map +1 -1
- package/src/websocket.js +106 -216
- package/src/websocket.ts +78 -279
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stelar-time-real",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
4
4
|
"description": "Zero-dependency production real-time library. Custom binary TCP + manual WebSocket. No ws package. Rate limiting (custom/per-event/per-client), hooks, custom IP tracker, custom health check, runtime config, rooms, ACKs, middleware, TLS/SSL.",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"types": "./src/index.d.ts",
|
package/src/client.d.ts
CHANGED
|
@@ -1,44 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @stelar-time-real Client
|
|
3
|
-
*
|
|
4
|
-
* Dual-environment: Browser (native WebSocket) + Node.js (manual WS or TCP binary).
|
|
5
|
-
* No external dependencies.
|
|
2
|
+
* @stelar-time-real Client — Browser WS / Node WS / binary TCP
|
|
6
3
|
*/
|
|
7
4
|
import { Logger, type LogLevel } from './logger.js';
|
|
8
5
|
export interface StelarClientHooks {
|
|
9
|
-
|
|
10
|
-
onBeforeEmit?: (info: {
|
|
6
|
+
onBeforeEmit?: (i: {
|
|
11
7
|
event: string;
|
|
12
8
|
data: unknown;
|
|
13
9
|
}) => boolean | void;
|
|
14
|
-
|
|
15
|
-
onMessage?: (info: {
|
|
10
|
+
onMessage?: (i: {
|
|
16
11
|
event: string;
|
|
17
12
|
data: unknown;
|
|
18
13
|
isBinary: boolean;
|
|
19
14
|
}) => void;
|
|
20
|
-
|
|
21
|
-
onStateChange?: (info: {
|
|
15
|
+
onStateChange?: (i: {
|
|
22
16
|
from: ConnectionState;
|
|
23
17
|
to: ConnectionState;
|
|
24
18
|
}) => void;
|
|
25
|
-
|
|
26
|
-
onReconnectDelay?: (info: {
|
|
19
|
+
onReconnectDelay?: (i: {
|
|
27
20
|
attempt: number;
|
|
28
21
|
defaultDelay: number;
|
|
29
22
|
}) => number | void;
|
|
30
|
-
|
|
31
|
-
onMessageQueued?: (info: {
|
|
23
|
+
onMessageQueued?: (i: {
|
|
32
24
|
event: string;
|
|
33
25
|
data: unknown;
|
|
34
26
|
queueSize: number;
|
|
35
27
|
}) => void;
|
|
36
|
-
|
|
37
|
-
onQueueDrained?: (info: {
|
|
28
|
+
onQueueDrained?: (i: {
|
|
38
29
|
count: number;
|
|
39
30
|
}) => void;
|
|
40
|
-
|
|
41
|
-
onError?: (info: {
|
|
31
|
+
onError?: (i: {
|
|
42
32
|
error: Error;
|
|
43
33
|
context: string;
|
|
44
34
|
}) => void;
|
|
@@ -58,39 +48,40 @@ export interface StelarClientOptions {
|
|
|
58
48
|
tls?: boolean;
|
|
59
49
|
rejectUnauthorized?: boolean;
|
|
60
50
|
headers?: Record<string, string>;
|
|
61
|
-
/** Custom backoff function: (attempt, baseDelay, maxDelay) => delayMs */
|
|
62
51
|
customReconnectDelay?: (attempt: number, baseDelay: number, maxDelay: number) => number;
|
|
63
52
|
hooks?: StelarClientHooks;
|
|
64
53
|
}
|
|
65
54
|
export interface StelarEmitOptions {
|
|
66
55
|
ack?: string;
|
|
56
|
+
_correlationId?: string;
|
|
67
57
|
}
|
|
68
58
|
export type StelarEventHandler = (data: unknown) => void;
|
|
69
59
|
export type ConnectionState = 'disconnected' | 'connecting' | 'connected' | 'reconnecting';
|
|
70
60
|
declare class StelarClient {
|
|
71
61
|
private url;
|
|
72
|
-
private
|
|
62
|
+
private opts;
|
|
73
63
|
private events;
|
|
74
|
-
private
|
|
64
|
+
private _wild;
|
|
75
65
|
private _acks;
|
|
76
66
|
private _state;
|
|
77
|
-
private
|
|
78
|
-
private
|
|
79
|
-
private
|
|
67
|
+
private _reconnAttempts;
|
|
68
|
+
private _hb;
|
|
69
|
+
private _manualClose;
|
|
80
70
|
private id;
|
|
81
|
-
private
|
|
82
|
-
private
|
|
83
|
-
private
|
|
84
|
-
private
|
|
85
|
-
private
|
|
86
|
-
private
|
|
71
|
+
private _mq;
|
|
72
|
+
private _reconnTimer;
|
|
73
|
+
private _ackCounter;
|
|
74
|
+
private _sent;
|
|
75
|
+
private _recv;
|
|
76
|
+
private _connTime;
|
|
77
|
+
private _lastErr;
|
|
87
78
|
private _ws;
|
|
88
|
-
private
|
|
79
|
+
private _nodeSock;
|
|
89
80
|
private _wsParser;
|
|
90
|
-
private
|
|
81
|
+
private _tcpSock;
|
|
91
82
|
private _tcpParser;
|
|
92
83
|
private log;
|
|
93
|
-
constructor(urlOrPort?: string | number,
|
|
84
|
+
constructor(urlOrPort?: string | number, o?: StelarClientOptions);
|
|
94
85
|
getState(): ConnectionState;
|
|
95
86
|
getId(): string | null;
|
|
96
87
|
getUrl(): string;
|
|
@@ -99,10 +90,8 @@ declare class StelarClient {
|
|
|
99
90
|
getLastError(): Error | null;
|
|
100
91
|
getQueueSize(): number;
|
|
101
92
|
getConnectTime(): number;
|
|
102
|
-
setUrl(
|
|
103
|
-
|
|
104
|
-
updateOptions(options: Partial<StelarClientOptions>): this;
|
|
105
|
-
/** Read-only snapshot of current client options. */
|
|
93
|
+
setUrl(u: string): this;
|
|
94
|
+
updateOptions(o: Partial<StelarClientOptions>): this;
|
|
106
95
|
getOptions(): Readonly<{
|
|
107
96
|
reconnection: boolean;
|
|
108
97
|
reconnectionAttempts: number;
|
|
@@ -110,50 +99,49 @@ declare class StelarClient {
|
|
|
110
99
|
maxReconnectionDelay: number;
|
|
111
100
|
heartbeatInterval: number;
|
|
112
101
|
ackTimeout: number;
|
|
113
|
-
mode:
|
|
102
|
+
mode: "ws" | "tcp";
|
|
114
103
|
maxPayloadSize: number;
|
|
115
104
|
messageQueueSize: number;
|
|
116
105
|
hasCustomReconnectDelay: boolean;
|
|
117
106
|
hooks: string[];
|
|
118
107
|
}>;
|
|
119
|
-
on(
|
|
120
|
-
off(
|
|
121
|
-
once(
|
|
122
|
-
onAll(
|
|
108
|
+
on(ev: string, h: StelarEventHandler): this;
|
|
109
|
+
off(ev: string, h: StelarEventHandler): this;
|
|
110
|
+
once(ev: string, h: StelarEventHandler): this;
|
|
111
|
+
onAll(h: (d: {
|
|
123
112
|
event: string;
|
|
124
113
|
data: unknown;
|
|
125
114
|
isBinary?: boolean;
|
|
126
115
|
buffer?: ArrayBuffer;
|
|
127
116
|
}) => void): this;
|
|
128
|
-
onAck(name: string,
|
|
129
|
-
removeAllListeners(
|
|
117
|
+
onAck(name: string, h: StelarEventHandler): this;
|
|
118
|
+
removeAllListeners(ev?: string): this;
|
|
130
119
|
emit(event: string, data?: unknown, opts?: StelarEmitOptions): this;
|
|
131
120
|
emitBinary(event: string, data: ArrayBuffer): this;
|
|
132
|
-
sendFile(
|
|
133
|
-
sendImage(
|
|
134
|
-
/** Send a request and wait for an ACK response. Rejects on timeout. */
|
|
121
|
+
sendFile(f: ArrayBuffer): this;
|
|
122
|
+
sendImage(b: ArrayBuffer): this;
|
|
135
123
|
request(event: string, data: unknown, ackName: string): Promise<unknown>;
|
|
136
124
|
joinRoom(room: string): this;
|
|
137
125
|
leaveRoom(room: string): this;
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
private _drainQueue;
|
|
126
|
+
connect(cb?: () => void): this;
|
|
127
|
+
disconnect(): this;
|
|
128
|
+
isConnected(): boolean;
|
|
142
129
|
private _setState;
|
|
130
|
+
private _startHB;
|
|
131
|
+
private _stopHB;
|
|
132
|
+
private _getDelay;
|
|
133
|
+
private _drain;
|
|
143
134
|
private _cleanupAcks;
|
|
144
135
|
private _fullCleanup;
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
isConnected(): boolean;
|
|
136
|
+
private _tryReconnect;
|
|
137
|
+
private _onConnected;
|
|
148
138
|
private _connectBrowser;
|
|
149
|
-
private
|
|
139
|
+
private _handleBrowserMsg;
|
|
150
140
|
private _connectNodeWS;
|
|
151
|
-
private
|
|
152
|
-
private
|
|
153
|
-
/** TCP mode: connects to WS port + 1 by convention. */
|
|
141
|
+
private _processNodeWS;
|
|
142
|
+
private _handleNodeFrame;
|
|
154
143
|
private _connectTCP;
|
|
155
144
|
private _handleTCPFrame;
|
|
156
|
-
private _tryReconnect;
|
|
157
145
|
}
|
|
158
146
|
export default StelarClient;
|
|
159
147
|
//# sourceMappingURL=client.d.ts.map
|
package/src/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["client.ts"],"names":[],"mappings":"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"}
|