@aegis-fluxion/core 0.7.2 → 0.9.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 +127 -1
- package/dist/index.cjs +1312 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +82 -1
- package/dist/index.d.ts +82 -1
- package/dist/index.js +1313 -21
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,12 +1,35 @@
|
|
|
1
1
|
import { IncomingMessage } from 'node:http';
|
|
2
|
+
import { Readable } from 'node:stream';
|
|
2
3
|
import WebSocket, { ClientOptions, ServerOptions } from 'ws';
|
|
3
4
|
|
|
4
5
|
declare const SECURE_SERVER_ADAPTER_MESSAGE_VERSION = 1;
|
|
6
|
+
type SecureChunkSourceValue = Buffer | Uint8Array | ArrayBuffer | string;
|
|
5
7
|
interface SecureEnvelope<TData = unknown> {
|
|
6
8
|
event: string;
|
|
7
9
|
data: TData;
|
|
8
10
|
}
|
|
9
11
|
type SecureBinaryPayload = Buffer | Uint8Array | Blob;
|
|
12
|
+
type SecureChunkedStreamSource = Buffer | Uint8Array | Readable | AsyncIterable<SecureChunkSourceValue>;
|
|
13
|
+
interface SecureChunkedStreamOptions {
|
|
14
|
+
chunkSizeBytes?: number;
|
|
15
|
+
metadata?: Record<string, unknown>;
|
|
16
|
+
totalBytes?: number;
|
|
17
|
+
signal?: AbortSignal;
|
|
18
|
+
}
|
|
19
|
+
interface SecureStreamSendResult {
|
|
20
|
+
streamId: string;
|
|
21
|
+
chunkCount: number;
|
|
22
|
+
totalBytes: number;
|
|
23
|
+
}
|
|
24
|
+
interface SecureIncomingStreamInfo {
|
|
25
|
+
streamId: string;
|
|
26
|
+
event: string;
|
|
27
|
+
metadata?: Record<string, unknown>;
|
|
28
|
+
totalBytes?: number;
|
|
29
|
+
startedAt: number;
|
|
30
|
+
}
|
|
31
|
+
type SecureServerStreamHandler = (stream: Readable, info: SecureIncomingStreamInfo, client: SecureServerClient) => void | Promise<void>;
|
|
32
|
+
type SecureClientStreamHandler = (stream: Readable, info: SecureIncomingStreamInfo) => void | Promise<void>;
|
|
10
33
|
interface SecureAckOptions {
|
|
11
34
|
timeoutMs?: number;
|
|
12
35
|
}
|
|
@@ -29,6 +52,11 @@ interface SecureServerRateLimitOptions {
|
|
|
29
52
|
disconnectCode?: number;
|
|
30
53
|
disconnectReason?: string;
|
|
31
54
|
}
|
|
55
|
+
interface SecureServerSessionResumptionOptions {
|
|
56
|
+
enabled?: boolean;
|
|
57
|
+
ticketTtlMs?: number;
|
|
58
|
+
maxCachedTickets?: number;
|
|
59
|
+
}
|
|
32
60
|
type SecureServerAdapterMessageScope = "broadcast" | "room";
|
|
33
61
|
interface SecureServerAdapterMessage {
|
|
34
62
|
version: typeof SECURE_SERVER_ADAPTER_MESSAGE_VERSION;
|
|
@@ -47,6 +75,7 @@ interface SecureServerAdapter {
|
|
|
47
75
|
interface SecureServerOptions extends ServerOptions {
|
|
48
76
|
heartbeat?: SecureServerHeartbeatOptions;
|
|
49
77
|
rateLimit?: SecureServerRateLimitOptions;
|
|
78
|
+
sessionResumption?: SecureServerSessionResumptionOptions;
|
|
50
79
|
adapter?: SecureServerAdapter;
|
|
51
80
|
}
|
|
52
81
|
interface SecureClientReconnectOptions {
|
|
@@ -57,11 +86,16 @@ interface SecureClientReconnectOptions {
|
|
|
57
86
|
jitterRatio?: number;
|
|
58
87
|
maxAttempts?: number | null;
|
|
59
88
|
}
|
|
89
|
+
interface SecureClientSessionResumptionOptions {
|
|
90
|
+
enabled?: boolean;
|
|
91
|
+
maxAcceptedTicketTtlMs?: number;
|
|
92
|
+
}
|
|
60
93
|
interface SecureClientOptions {
|
|
61
94
|
protocols?: string | string[];
|
|
62
95
|
wsOptions?: ClientOptions;
|
|
63
96
|
autoConnect?: boolean;
|
|
64
97
|
reconnect?: boolean | SecureClientReconnectOptions;
|
|
98
|
+
sessionResumption?: boolean | SecureClientSessionResumptionOptions;
|
|
65
99
|
}
|
|
66
100
|
interface SecureServerClient {
|
|
67
101
|
id: string;
|
|
@@ -69,6 +103,7 @@ interface SecureServerClient {
|
|
|
69
103
|
request: IncomingMessage;
|
|
70
104
|
metadata: ReadonlyMap<string, unknown>;
|
|
71
105
|
emit: (event: string, data: unknown, callbackOrOptions?: SecureAckCallback | SecureAckOptions, maybeCallback?: SecureAckCallback) => boolean | Promise<unknown>;
|
|
106
|
+
emitStream: (event: string, source: SecureChunkedStreamSource, options?: SecureChunkedStreamOptions) => Promise<SecureStreamSendResult>;
|
|
72
107
|
join: (room: string) => boolean;
|
|
73
108
|
leave: (room: string) => boolean;
|
|
74
109
|
leaveAll: () => number;
|
|
@@ -122,10 +157,12 @@ declare class SecureServer {
|
|
|
122
157
|
private adapter;
|
|
123
158
|
private readonly heartbeatConfig;
|
|
124
159
|
private readonly rateLimitConfig;
|
|
160
|
+
private readonly sessionResumptionConfig;
|
|
125
161
|
private heartbeatIntervalHandle;
|
|
126
162
|
private readonly clientsById;
|
|
127
163
|
private readonly clientIdBySocket;
|
|
128
164
|
private readonly customEventHandlers;
|
|
165
|
+
private readonly streamEventHandlers;
|
|
129
166
|
private readonly connectionHandlers;
|
|
130
167
|
private readonly disconnectHandlers;
|
|
131
168
|
private readonly readyHandlers;
|
|
@@ -136,6 +173,7 @@ declare class SecureServer {
|
|
|
136
173
|
private readonly sharedSecretBySocket;
|
|
137
174
|
private readonly encryptionKeyBySocket;
|
|
138
175
|
private readonly pendingPayloadsBySocket;
|
|
176
|
+
private readonly incomingStreamsBySocket;
|
|
139
177
|
private readonly pendingRpcRequestsBySocket;
|
|
140
178
|
private readonly heartbeatStateBySocket;
|
|
141
179
|
private readonly roomMembersByName;
|
|
@@ -143,6 +181,7 @@ declare class SecureServer {
|
|
|
143
181
|
private readonly clientIpByClientId;
|
|
144
182
|
private readonly rateLimitBucketsByClientId;
|
|
145
183
|
private readonly rateLimitBucketsByIp;
|
|
184
|
+
private readonly sessionTicketStore;
|
|
146
185
|
constructor(options: SecureServerOptions);
|
|
147
186
|
get clientCount(): number;
|
|
148
187
|
get serverId(): string;
|
|
@@ -159,16 +198,24 @@ declare class SecureServer {
|
|
|
159
198
|
off(event: "ready", handler: SecureServerReadyHandler): this;
|
|
160
199
|
off(event: "error", handler: SecureErrorHandler): this;
|
|
161
200
|
off(event: string, handler: SecureServerEventHandler): this;
|
|
201
|
+
onStream(event: string, handler: SecureServerStreamHandler): this;
|
|
202
|
+
offStream(event: string, handler: SecureServerStreamHandler): this;
|
|
162
203
|
use(middleware: SecureServerMiddleware): this;
|
|
163
204
|
emit(event: string, data: unknown): this;
|
|
164
205
|
emitTo(clientId: string, event: string, data: unknown): boolean;
|
|
165
206
|
emitTo(clientId: string, event: string, data: unknown, callback: SecureAckCallback): boolean;
|
|
166
207
|
emitTo(clientId: string, event: string, data: unknown, options: SecureAckOptions): Promise<unknown>;
|
|
167
208
|
emitTo(clientId: string, event: string, data: unknown, options: SecureAckOptions, callback: SecureAckCallback): boolean;
|
|
209
|
+
emitStreamTo(clientId: string, event: string, source: SecureChunkedStreamSource, options?: SecureChunkedStreamOptions): Promise<SecureStreamSendResult>;
|
|
168
210
|
to(room: string): SecureServerRoomOperator;
|
|
169
211
|
close(code?: number, reason?: string): void;
|
|
170
212
|
private resolveHeartbeatConfig;
|
|
171
213
|
private resolveRateLimitConfig;
|
|
214
|
+
private resolveSessionResumptionConfig;
|
|
215
|
+
private pruneExpiredSessionTickets;
|
|
216
|
+
private evictSessionTicketsIfNeeded;
|
|
217
|
+
private getSessionTicket;
|
|
218
|
+
private issueSessionTicket;
|
|
172
219
|
private createRateLimitBucket;
|
|
173
220
|
private getOrCreateRateLimitBucket;
|
|
174
221
|
private updateRateLimitBucket;
|
|
@@ -187,6 +234,15 @@ declare class SecureServer {
|
|
|
187
234
|
private handleIncomingMessage;
|
|
188
235
|
private handleDisconnection;
|
|
189
236
|
private dispatchCustomEvent;
|
|
237
|
+
private getOrCreateIncomingServerStreams;
|
|
238
|
+
private cleanupIncomingStreamsForSocket;
|
|
239
|
+
private abortIncomingServerStream;
|
|
240
|
+
private dispatchServerStreamEvent;
|
|
241
|
+
private handleIncomingStreamStartFrame;
|
|
242
|
+
private handleIncomingStreamChunkFrame;
|
|
243
|
+
private handleIncomingStreamEndFrame;
|
|
244
|
+
private handleIncomingStreamAbortFrame;
|
|
245
|
+
private handleIncomingStreamFrame;
|
|
190
246
|
private executeServerMiddleware;
|
|
191
247
|
private applyMessageMiddleware;
|
|
192
248
|
private resolveClientBySocket;
|
|
@@ -202,6 +258,8 @@ declare class SecureServer {
|
|
|
202
258
|
private notifyError;
|
|
203
259
|
private createServerHandshakeState;
|
|
204
260
|
private sendInternalHandshake;
|
|
261
|
+
private sendResumeAck;
|
|
262
|
+
private handleResumeHandshake;
|
|
205
263
|
private handleInternalHandshake;
|
|
206
264
|
private isClientHandshakeReady;
|
|
207
265
|
private sendOrQueuePayload;
|
|
@@ -221,10 +279,12 @@ declare class SecureClient {
|
|
|
221
279
|
private readonly options;
|
|
222
280
|
private socket;
|
|
223
281
|
private readonly reconnectConfig;
|
|
282
|
+
private readonly sessionResumptionConfig;
|
|
224
283
|
private reconnectAttemptCount;
|
|
225
284
|
private reconnectTimer;
|
|
226
285
|
private isManualDisconnectRequested;
|
|
227
286
|
private readonly customEventHandlers;
|
|
287
|
+
private readonly streamEventHandlers;
|
|
228
288
|
private readonly connectHandlers;
|
|
229
289
|
private readonly disconnectHandlers;
|
|
230
290
|
private readonly readyHandlers;
|
|
@@ -232,6 +292,8 @@ declare class SecureClient {
|
|
|
232
292
|
private handshakeState;
|
|
233
293
|
private pendingPayloadQueue;
|
|
234
294
|
private readonly pendingRpcRequests;
|
|
295
|
+
private readonly incomingStreams;
|
|
296
|
+
private sessionTicket;
|
|
235
297
|
constructor(url: string, options?: SecureClientOptions);
|
|
236
298
|
get readyState(): number | null;
|
|
237
299
|
isConnected(): boolean;
|
|
@@ -247,11 +309,15 @@ declare class SecureClient {
|
|
|
247
309
|
off(event: "ready", handler: SecureClientReadyHandler): this;
|
|
248
310
|
off(event: "error", handler: SecureErrorHandler): this;
|
|
249
311
|
off(event: string, handler: SecureClientEventHandler): this;
|
|
312
|
+
onStream(event: string, handler: SecureClientStreamHandler): this;
|
|
313
|
+
offStream(event: string, handler: SecureClientStreamHandler): this;
|
|
250
314
|
emit(event: string, data: unknown): boolean;
|
|
251
315
|
emit(event: string, data: unknown, callback: SecureAckCallback): boolean;
|
|
252
316
|
emit(event: string, data: unknown, options: SecureAckOptions): Promise<unknown>;
|
|
253
317
|
emit(event: string, data: unknown, options: SecureAckOptions, callback: SecureAckCallback): boolean;
|
|
318
|
+
emitStream(event: string, source: SecureChunkedStreamSource, options?: SecureChunkedStreamOptions): Promise<SecureStreamSendResult>;
|
|
254
319
|
private resolveReconnectConfig;
|
|
320
|
+
private resolveSessionResumptionConfig;
|
|
255
321
|
private scheduleReconnect;
|
|
256
322
|
private computeReconnectDelay;
|
|
257
323
|
private clearReconnectTimer;
|
|
@@ -260,6 +326,14 @@ declare class SecureClient {
|
|
|
260
326
|
private handleIncomingMessage;
|
|
261
327
|
private handleDisconnect;
|
|
262
328
|
private dispatchCustomEvent;
|
|
329
|
+
private cleanupIncomingStreams;
|
|
330
|
+
private abortIncomingClientStream;
|
|
331
|
+
private dispatchClientStreamEvent;
|
|
332
|
+
private handleIncomingClientStreamStartFrame;
|
|
333
|
+
private handleIncomingClientStreamChunkFrame;
|
|
334
|
+
private handleIncomingClientStreamEndFrame;
|
|
335
|
+
private handleIncomingClientStreamAbortFrame;
|
|
336
|
+
private handleIncomingStreamFrame;
|
|
263
337
|
private notifyConnect;
|
|
264
338
|
private notifyReady;
|
|
265
339
|
private notifyError;
|
|
@@ -269,11 +343,18 @@ declare class SecureClient {
|
|
|
269
343
|
private handleRpcRequest;
|
|
270
344
|
private executeRpcRequestHandler;
|
|
271
345
|
private rejectPendingRpcRequests;
|
|
346
|
+
private handleSessionTicket;
|
|
272
347
|
private createClientHandshakeState;
|
|
273
348
|
private sendInternalHandshake;
|
|
349
|
+
private shouldAttemptSessionResumption;
|
|
350
|
+
private sendResumeHandshake;
|
|
351
|
+
private completeFullHandshake;
|
|
352
|
+
private fallbackToFullHandshake;
|
|
353
|
+
private handleServerHelloHandshake;
|
|
354
|
+
private handleResumeAckHandshake;
|
|
274
355
|
private handleInternalHandshake;
|
|
275
356
|
private isHandshakeReady;
|
|
276
357
|
private flushPendingPayloadQueue;
|
|
277
358
|
}
|
|
278
359
|
|
|
279
|
-
export { type SecureAckCallback, type SecureAckOptions, type SecureBinaryPayload, SecureClient, type SecureClientConnectHandler, type SecureClientDisconnectHandler, type SecureClientEventHandler, type SecureClientEventMap, type SecureClientLifecycleEvent, type SecureClientOptions, type SecureClientReadyHandler, type SecureClientReconnectOptions, type SecureEnvelope, type SecureErrorHandler, SecureServer, type SecureServerAdapter, type SecureServerAdapterMessage, type SecureServerAdapterMessageScope, type SecureServerClient, type SecureServerConnectionHandler, type SecureServerConnectionMiddlewareContext, type SecureServerDisconnectHandler, type SecureServerEventHandler, type SecureServerEventMap, type SecureServerHeartbeatOptions, type SecureServerLifecycleEvent, type SecureServerMessageMiddlewareContext, type SecureServerMiddleware, type SecureServerMiddlewareContext, type SecureServerMiddlewareNext, type SecureServerOptions, type SecureServerRateLimitAction, type SecureServerRateLimitOptions, type SecureServerReadyHandler, type SecureServerRoomOperator, normalizeSecureServerAdapterMessage };
|
|
360
|
+
export { type SecureAckCallback, type SecureAckOptions, type SecureBinaryPayload, type SecureChunkedStreamOptions, type SecureChunkedStreamSource, SecureClient, type SecureClientConnectHandler, type SecureClientDisconnectHandler, type SecureClientEventHandler, type SecureClientEventMap, type SecureClientLifecycleEvent, type SecureClientOptions, type SecureClientReadyHandler, type SecureClientReconnectOptions, type SecureClientSessionResumptionOptions, type SecureClientStreamHandler, type SecureEnvelope, type SecureErrorHandler, type SecureIncomingStreamInfo, SecureServer, type SecureServerAdapter, type SecureServerAdapterMessage, type SecureServerAdapterMessageScope, type SecureServerClient, type SecureServerConnectionHandler, type SecureServerConnectionMiddlewareContext, type SecureServerDisconnectHandler, type SecureServerEventHandler, type SecureServerEventMap, type SecureServerHeartbeatOptions, type SecureServerLifecycleEvent, type SecureServerMessageMiddlewareContext, type SecureServerMiddleware, type SecureServerMiddlewareContext, type SecureServerMiddlewareNext, type SecureServerOptions, type SecureServerRateLimitAction, type SecureServerRateLimitOptions, type SecureServerReadyHandler, type SecureServerRoomOperator, type SecureServerSessionResumptionOptions, type SecureServerStreamHandler, type SecureStreamSendResult, normalizeSecureServerAdapterMessage };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,35 @@
|
|
|
1
1
|
import { IncomingMessage } from 'node:http';
|
|
2
|
+
import { Readable } from 'node:stream';
|
|
2
3
|
import WebSocket, { ClientOptions, ServerOptions } from 'ws';
|
|
3
4
|
|
|
4
5
|
declare const SECURE_SERVER_ADAPTER_MESSAGE_VERSION = 1;
|
|
6
|
+
type SecureChunkSourceValue = Buffer | Uint8Array | ArrayBuffer | string;
|
|
5
7
|
interface SecureEnvelope<TData = unknown> {
|
|
6
8
|
event: string;
|
|
7
9
|
data: TData;
|
|
8
10
|
}
|
|
9
11
|
type SecureBinaryPayload = Buffer | Uint8Array | Blob;
|
|
12
|
+
type SecureChunkedStreamSource = Buffer | Uint8Array | Readable | AsyncIterable<SecureChunkSourceValue>;
|
|
13
|
+
interface SecureChunkedStreamOptions {
|
|
14
|
+
chunkSizeBytes?: number;
|
|
15
|
+
metadata?: Record<string, unknown>;
|
|
16
|
+
totalBytes?: number;
|
|
17
|
+
signal?: AbortSignal;
|
|
18
|
+
}
|
|
19
|
+
interface SecureStreamSendResult {
|
|
20
|
+
streamId: string;
|
|
21
|
+
chunkCount: number;
|
|
22
|
+
totalBytes: number;
|
|
23
|
+
}
|
|
24
|
+
interface SecureIncomingStreamInfo {
|
|
25
|
+
streamId: string;
|
|
26
|
+
event: string;
|
|
27
|
+
metadata?: Record<string, unknown>;
|
|
28
|
+
totalBytes?: number;
|
|
29
|
+
startedAt: number;
|
|
30
|
+
}
|
|
31
|
+
type SecureServerStreamHandler = (stream: Readable, info: SecureIncomingStreamInfo, client: SecureServerClient) => void | Promise<void>;
|
|
32
|
+
type SecureClientStreamHandler = (stream: Readable, info: SecureIncomingStreamInfo) => void | Promise<void>;
|
|
10
33
|
interface SecureAckOptions {
|
|
11
34
|
timeoutMs?: number;
|
|
12
35
|
}
|
|
@@ -29,6 +52,11 @@ interface SecureServerRateLimitOptions {
|
|
|
29
52
|
disconnectCode?: number;
|
|
30
53
|
disconnectReason?: string;
|
|
31
54
|
}
|
|
55
|
+
interface SecureServerSessionResumptionOptions {
|
|
56
|
+
enabled?: boolean;
|
|
57
|
+
ticketTtlMs?: number;
|
|
58
|
+
maxCachedTickets?: number;
|
|
59
|
+
}
|
|
32
60
|
type SecureServerAdapterMessageScope = "broadcast" | "room";
|
|
33
61
|
interface SecureServerAdapterMessage {
|
|
34
62
|
version: typeof SECURE_SERVER_ADAPTER_MESSAGE_VERSION;
|
|
@@ -47,6 +75,7 @@ interface SecureServerAdapter {
|
|
|
47
75
|
interface SecureServerOptions extends ServerOptions {
|
|
48
76
|
heartbeat?: SecureServerHeartbeatOptions;
|
|
49
77
|
rateLimit?: SecureServerRateLimitOptions;
|
|
78
|
+
sessionResumption?: SecureServerSessionResumptionOptions;
|
|
50
79
|
adapter?: SecureServerAdapter;
|
|
51
80
|
}
|
|
52
81
|
interface SecureClientReconnectOptions {
|
|
@@ -57,11 +86,16 @@ interface SecureClientReconnectOptions {
|
|
|
57
86
|
jitterRatio?: number;
|
|
58
87
|
maxAttempts?: number | null;
|
|
59
88
|
}
|
|
89
|
+
interface SecureClientSessionResumptionOptions {
|
|
90
|
+
enabled?: boolean;
|
|
91
|
+
maxAcceptedTicketTtlMs?: number;
|
|
92
|
+
}
|
|
60
93
|
interface SecureClientOptions {
|
|
61
94
|
protocols?: string | string[];
|
|
62
95
|
wsOptions?: ClientOptions;
|
|
63
96
|
autoConnect?: boolean;
|
|
64
97
|
reconnect?: boolean | SecureClientReconnectOptions;
|
|
98
|
+
sessionResumption?: boolean | SecureClientSessionResumptionOptions;
|
|
65
99
|
}
|
|
66
100
|
interface SecureServerClient {
|
|
67
101
|
id: string;
|
|
@@ -69,6 +103,7 @@ interface SecureServerClient {
|
|
|
69
103
|
request: IncomingMessage;
|
|
70
104
|
metadata: ReadonlyMap<string, unknown>;
|
|
71
105
|
emit: (event: string, data: unknown, callbackOrOptions?: SecureAckCallback | SecureAckOptions, maybeCallback?: SecureAckCallback) => boolean | Promise<unknown>;
|
|
106
|
+
emitStream: (event: string, source: SecureChunkedStreamSource, options?: SecureChunkedStreamOptions) => Promise<SecureStreamSendResult>;
|
|
72
107
|
join: (room: string) => boolean;
|
|
73
108
|
leave: (room: string) => boolean;
|
|
74
109
|
leaveAll: () => number;
|
|
@@ -122,10 +157,12 @@ declare class SecureServer {
|
|
|
122
157
|
private adapter;
|
|
123
158
|
private readonly heartbeatConfig;
|
|
124
159
|
private readonly rateLimitConfig;
|
|
160
|
+
private readonly sessionResumptionConfig;
|
|
125
161
|
private heartbeatIntervalHandle;
|
|
126
162
|
private readonly clientsById;
|
|
127
163
|
private readonly clientIdBySocket;
|
|
128
164
|
private readonly customEventHandlers;
|
|
165
|
+
private readonly streamEventHandlers;
|
|
129
166
|
private readonly connectionHandlers;
|
|
130
167
|
private readonly disconnectHandlers;
|
|
131
168
|
private readonly readyHandlers;
|
|
@@ -136,6 +173,7 @@ declare class SecureServer {
|
|
|
136
173
|
private readonly sharedSecretBySocket;
|
|
137
174
|
private readonly encryptionKeyBySocket;
|
|
138
175
|
private readonly pendingPayloadsBySocket;
|
|
176
|
+
private readonly incomingStreamsBySocket;
|
|
139
177
|
private readonly pendingRpcRequestsBySocket;
|
|
140
178
|
private readonly heartbeatStateBySocket;
|
|
141
179
|
private readonly roomMembersByName;
|
|
@@ -143,6 +181,7 @@ declare class SecureServer {
|
|
|
143
181
|
private readonly clientIpByClientId;
|
|
144
182
|
private readonly rateLimitBucketsByClientId;
|
|
145
183
|
private readonly rateLimitBucketsByIp;
|
|
184
|
+
private readonly sessionTicketStore;
|
|
146
185
|
constructor(options: SecureServerOptions);
|
|
147
186
|
get clientCount(): number;
|
|
148
187
|
get serverId(): string;
|
|
@@ -159,16 +198,24 @@ declare class SecureServer {
|
|
|
159
198
|
off(event: "ready", handler: SecureServerReadyHandler): this;
|
|
160
199
|
off(event: "error", handler: SecureErrorHandler): this;
|
|
161
200
|
off(event: string, handler: SecureServerEventHandler): this;
|
|
201
|
+
onStream(event: string, handler: SecureServerStreamHandler): this;
|
|
202
|
+
offStream(event: string, handler: SecureServerStreamHandler): this;
|
|
162
203
|
use(middleware: SecureServerMiddleware): this;
|
|
163
204
|
emit(event: string, data: unknown): this;
|
|
164
205
|
emitTo(clientId: string, event: string, data: unknown): boolean;
|
|
165
206
|
emitTo(clientId: string, event: string, data: unknown, callback: SecureAckCallback): boolean;
|
|
166
207
|
emitTo(clientId: string, event: string, data: unknown, options: SecureAckOptions): Promise<unknown>;
|
|
167
208
|
emitTo(clientId: string, event: string, data: unknown, options: SecureAckOptions, callback: SecureAckCallback): boolean;
|
|
209
|
+
emitStreamTo(clientId: string, event: string, source: SecureChunkedStreamSource, options?: SecureChunkedStreamOptions): Promise<SecureStreamSendResult>;
|
|
168
210
|
to(room: string): SecureServerRoomOperator;
|
|
169
211
|
close(code?: number, reason?: string): void;
|
|
170
212
|
private resolveHeartbeatConfig;
|
|
171
213
|
private resolveRateLimitConfig;
|
|
214
|
+
private resolveSessionResumptionConfig;
|
|
215
|
+
private pruneExpiredSessionTickets;
|
|
216
|
+
private evictSessionTicketsIfNeeded;
|
|
217
|
+
private getSessionTicket;
|
|
218
|
+
private issueSessionTicket;
|
|
172
219
|
private createRateLimitBucket;
|
|
173
220
|
private getOrCreateRateLimitBucket;
|
|
174
221
|
private updateRateLimitBucket;
|
|
@@ -187,6 +234,15 @@ declare class SecureServer {
|
|
|
187
234
|
private handleIncomingMessage;
|
|
188
235
|
private handleDisconnection;
|
|
189
236
|
private dispatchCustomEvent;
|
|
237
|
+
private getOrCreateIncomingServerStreams;
|
|
238
|
+
private cleanupIncomingStreamsForSocket;
|
|
239
|
+
private abortIncomingServerStream;
|
|
240
|
+
private dispatchServerStreamEvent;
|
|
241
|
+
private handleIncomingStreamStartFrame;
|
|
242
|
+
private handleIncomingStreamChunkFrame;
|
|
243
|
+
private handleIncomingStreamEndFrame;
|
|
244
|
+
private handleIncomingStreamAbortFrame;
|
|
245
|
+
private handleIncomingStreamFrame;
|
|
190
246
|
private executeServerMiddleware;
|
|
191
247
|
private applyMessageMiddleware;
|
|
192
248
|
private resolveClientBySocket;
|
|
@@ -202,6 +258,8 @@ declare class SecureServer {
|
|
|
202
258
|
private notifyError;
|
|
203
259
|
private createServerHandshakeState;
|
|
204
260
|
private sendInternalHandshake;
|
|
261
|
+
private sendResumeAck;
|
|
262
|
+
private handleResumeHandshake;
|
|
205
263
|
private handleInternalHandshake;
|
|
206
264
|
private isClientHandshakeReady;
|
|
207
265
|
private sendOrQueuePayload;
|
|
@@ -221,10 +279,12 @@ declare class SecureClient {
|
|
|
221
279
|
private readonly options;
|
|
222
280
|
private socket;
|
|
223
281
|
private readonly reconnectConfig;
|
|
282
|
+
private readonly sessionResumptionConfig;
|
|
224
283
|
private reconnectAttemptCount;
|
|
225
284
|
private reconnectTimer;
|
|
226
285
|
private isManualDisconnectRequested;
|
|
227
286
|
private readonly customEventHandlers;
|
|
287
|
+
private readonly streamEventHandlers;
|
|
228
288
|
private readonly connectHandlers;
|
|
229
289
|
private readonly disconnectHandlers;
|
|
230
290
|
private readonly readyHandlers;
|
|
@@ -232,6 +292,8 @@ declare class SecureClient {
|
|
|
232
292
|
private handshakeState;
|
|
233
293
|
private pendingPayloadQueue;
|
|
234
294
|
private readonly pendingRpcRequests;
|
|
295
|
+
private readonly incomingStreams;
|
|
296
|
+
private sessionTicket;
|
|
235
297
|
constructor(url: string, options?: SecureClientOptions);
|
|
236
298
|
get readyState(): number | null;
|
|
237
299
|
isConnected(): boolean;
|
|
@@ -247,11 +309,15 @@ declare class SecureClient {
|
|
|
247
309
|
off(event: "ready", handler: SecureClientReadyHandler): this;
|
|
248
310
|
off(event: "error", handler: SecureErrorHandler): this;
|
|
249
311
|
off(event: string, handler: SecureClientEventHandler): this;
|
|
312
|
+
onStream(event: string, handler: SecureClientStreamHandler): this;
|
|
313
|
+
offStream(event: string, handler: SecureClientStreamHandler): this;
|
|
250
314
|
emit(event: string, data: unknown): boolean;
|
|
251
315
|
emit(event: string, data: unknown, callback: SecureAckCallback): boolean;
|
|
252
316
|
emit(event: string, data: unknown, options: SecureAckOptions): Promise<unknown>;
|
|
253
317
|
emit(event: string, data: unknown, options: SecureAckOptions, callback: SecureAckCallback): boolean;
|
|
318
|
+
emitStream(event: string, source: SecureChunkedStreamSource, options?: SecureChunkedStreamOptions): Promise<SecureStreamSendResult>;
|
|
254
319
|
private resolveReconnectConfig;
|
|
320
|
+
private resolveSessionResumptionConfig;
|
|
255
321
|
private scheduleReconnect;
|
|
256
322
|
private computeReconnectDelay;
|
|
257
323
|
private clearReconnectTimer;
|
|
@@ -260,6 +326,14 @@ declare class SecureClient {
|
|
|
260
326
|
private handleIncomingMessage;
|
|
261
327
|
private handleDisconnect;
|
|
262
328
|
private dispatchCustomEvent;
|
|
329
|
+
private cleanupIncomingStreams;
|
|
330
|
+
private abortIncomingClientStream;
|
|
331
|
+
private dispatchClientStreamEvent;
|
|
332
|
+
private handleIncomingClientStreamStartFrame;
|
|
333
|
+
private handleIncomingClientStreamChunkFrame;
|
|
334
|
+
private handleIncomingClientStreamEndFrame;
|
|
335
|
+
private handleIncomingClientStreamAbortFrame;
|
|
336
|
+
private handleIncomingStreamFrame;
|
|
263
337
|
private notifyConnect;
|
|
264
338
|
private notifyReady;
|
|
265
339
|
private notifyError;
|
|
@@ -269,11 +343,18 @@ declare class SecureClient {
|
|
|
269
343
|
private handleRpcRequest;
|
|
270
344
|
private executeRpcRequestHandler;
|
|
271
345
|
private rejectPendingRpcRequests;
|
|
346
|
+
private handleSessionTicket;
|
|
272
347
|
private createClientHandshakeState;
|
|
273
348
|
private sendInternalHandshake;
|
|
349
|
+
private shouldAttemptSessionResumption;
|
|
350
|
+
private sendResumeHandshake;
|
|
351
|
+
private completeFullHandshake;
|
|
352
|
+
private fallbackToFullHandshake;
|
|
353
|
+
private handleServerHelloHandshake;
|
|
354
|
+
private handleResumeAckHandshake;
|
|
274
355
|
private handleInternalHandshake;
|
|
275
356
|
private isHandshakeReady;
|
|
276
357
|
private flushPendingPayloadQueue;
|
|
277
358
|
}
|
|
278
359
|
|
|
279
|
-
export { type SecureAckCallback, type SecureAckOptions, type SecureBinaryPayload, SecureClient, type SecureClientConnectHandler, type SecureClientDisconnectHandler, type SecureClientEventHandler, type SecureClientEventMap, type SecureClientLifecycleEvent, type SecureClientOptions, type SecureClientReadyHandler, type SecureClientReconnectOptions, type SecureEnvelope, type SecureErrorHandler, SecureServer, type SecureServerAdapter, type SecureServerAdapterMessage, type SecureServerAdapterMessageScope, type SecureServerClient, type SecureServerConnectionHandler, type SecureServerConnectionMiddlewareContext, type SecureServerDisconnectHandler, type SecureServerEventHandler, type SecureServerEventMap, type SecureServerHeartbeatOptions, type SecureServerLifecycleEvent, type SecureServerMessageMiddlewareContext, type SecureServerMiddleware, type SecureServerMiddlewareContext, type SecureServerMiddlewareNext, type SecureServerOptions, type SecureServerRateLimitAction, type SecureServerRateLimitOptions, type SecureServerReadyHandler, type SecureServerRoomOperator, normalizeSecureServerAdapterMessage };
|
|
360
|
+
export { type SecureAckCallback, type SecureAckOptions, type SecureBinaryPayload, type SecureChunkedStreamOptions, type SecureChunkedStreamSource, SecureClient, type SecureClientConnectHandler, type SecureClientDisconnectHandler, type SecureClientEventHandler, type SecureClientEventMap, type SecureClientLifecycleEvent, type SecureClientOptions, type SecureClientReadyHandler, type SecureClientReconnectOptions, type SecureClientSessionResumptionOptions, type SecureClientStreamHandler, type SecureEnvelope, type SecureErrorHandler, type SecureIncomingStreamInfo, SecureServer, type SecureServerAdapter, type SecureServerAdapterMessage, type SecureServerAdapterMessageScope, type SecureServerClient, type SecureServerConnectionHandler, type SecureServerConnectionMiddlewareContext, type SecureServerDisconnectHandler, type SecureServerEventHandler, type SecureServerEventMap, type SecureServerHeartbeatOptions, type SecureServerLifecycleEvent, type SecureServerMessageMiddlewareContext, type SecureServerMiddleware, type SecureServerMiddlewareContext, type SecureServerMiddlewareNext, type SecureServerOptions, type SecureServerRateLimitAction, type SecureServerRateLimitOptions, type SecureServerReadyHandler, type SecureServerRoomOperator, type SecureServerSessionResumptionOptions, type SecureServerStreamHandler, type SecureStreamSendResult, normalizeSecureServerAdapterMessage };
|