stelar-time-real 3.2.1 → 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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stelar-time-real",
3
- "version": "3.2.1",
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
- /** Return false to cancel the emit. */
10
- onBeforeEmit?: (info: {
6
+ onBeforeEmit?: (i: {
11
7
  event: string;
12
8
  data: unknown;
13
9
  }) => boolean | void;
14
- /** Called on every incoming message. */
15
- onMessage?: (info: {
10
+ onMessage?: (i: {
16
11
  event: string;
17
12
  data: unknown;
18
13
  isBinary: boolean;
19
14
  }) => void;
20
- /** Called when connection state changes. */
21
- onStateChange?: (info: {
15
+ onStateChange?: (i: {
22
16
  from: ConnectionState;
23
17
  to: ConnectionState;
24
18
  }) => void;
25
- /** Return a custom delay (ms) to override built-in backoff. */
26
- onReconnectDelay?: (info: {
19
+ onReconnectDelay?: (i: {
27
20
  attempt: number;
28
21
  defaultDelay: number;
29
22
  }) => number | void;
30
- /** Called when a message is queued while disconnected. */
31
- onMessageQueued?: (info: {
23
+ onMessageQueued?: (i: {
32
24
  event: string;
33
25
  data: unknown;
34
26
  queueSize: number;
35
27
  }) => void;
36
- /** Called after queued messages are flushed on reconnection. */
37
- onQueueDrained?: (info: {
28
+ onQueueDrained?: (i: {
38
29
  count: number;
39
30
  }) => void;
40
- /** Called on any client-side error. */
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 options;
62
+ private opts;
73
63
  private events;
74
- private _wildcardHandler;
64
+ private _wild;
75
65
  private _acks;
76
66
  private _state;
77
- private _reconnectAttempts;
78
- private _hbTimer;
79
- private _isManualClose;
67
+ private _reconnAttempts;
68
+ private _hb;
69
+ private _manualClose;
80
70
  private id;
81
- private _messageQueue;
82
- private _reconnectTimer;
83
- private _messagesSent;
84
- private _messagesReceived;
85
- private _connectTime;
86
- private _lastError;
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 _nodeSocket;
79
+ private _nodeSock;
89
80
  private _wsParser;
90
- private _tcpSocket;
81
+ private _tcpSock;
91
82
  private _tcpParser;
92
83
  private log;
93
- constructor(urlOrPort?: string | number, options?: StelarClientOptions);
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(url: string): this;
103
- /** Update client options at runtime. Changes take effect immediately. */
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: string;
102
+ mode: "ws" | "tcp";
114
103
  maxPayloadSize: number;
115
104
  messageQueueSize: number;
116
105
  hasCustomReconnectDelay: boolean;
117
106
  hooks: string[];
118
107
  }>;
119
- on(event: string, handler: StelarEventHandler): this;
120
- off(event: string, handler: StelarEventHandler): this;
121
- once(event: string, handler: StelarEventHandler): this;
122
- onAll(handler: (data: {
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, handler: StelarEventHandler): this;
129
- removeAllListeners(event?: string): this;
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(file: ArrayBuffer): this;
133
- sendImage(blob: ArrayBuffer): this;
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
- private startHeartbeat;
139
- private stopHeartbeat;
140
- private _getReconnectDelay;
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
- connect(callback?: () => void): this;
146
- disconnect(): this;
147
- isConnected(): boolean;
136
+ private _tryReconnect;
137
+ private _onConnected;
148
138
  private _connectBrowser;
149
- private _handleBrowserMessage;
139
+ private _handleBrowserMsg;
150
140
  private _connectNodeWS;
151
- private _processNodeWSData;
152
- private _handleNodeWSFrame;
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
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["client.ts"],"names":[],"mappings":"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"}