@aegis-fluxion/core 0.8.0 → 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/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
  }
@@ -80,6 +103,7 @@ interface SecureServerClient {
80
103
  request: IncomingMessage;
81
104
  metadata: ReadonlyMap<string, unknown>;
82
105
  emit: (event: string, data: unknown, callbackOrOptions?: SecureAckCallback | SecureAckOptions, maybeCallback?: SecureAckCallback) => boolean | Promise<unknown>;
106
+ emitStream: (event: string, source: SecureChunkedStreamSource, options?: SecureChunkedStreamOptions) => Promise<SecureStreamSendResult>;
83
107
  join: (room: string) => boolean;
84
108
  leave: (room: string) => boolean;
85
109
  leaveAll: () => number;
@@ -138,6 +162,7 @@ declare class SecureServer {
138
162
  private readonly clientsById;
139
163
  private readonly clientIdBySocket;
140
164
  private readonly customEventHandlers;
165
+ private readonly streamEventHandlers;
141
166
  private readonly connectionHandlers;
142
167
  private readonly disconnectHandlers;
143
168
  private readonly readyHandlers;
@@ -148,6 +173,7 @@ declare class SecureServer {
148
173
  private readonly sharedSecretBySocket;
149
174
  private readonly encryptionKeyBySocket;
150
175
  private readonly pendingPayloadsBySocket;
176
+ private readonly incomingStreamsBySocket;
151
177
  private readonly pendingRpcRequestsBySocket;
152
178
  private readonly heartbeatStateBySocket;
153
179
  private readonly roomMembersByName;
@@ -172,12 +198,15 @@ declare class SecureServer {
172
198
  off(event: "ready", handler: SecureServerReadyHandler): this;
173
199
  off(event: "error", handler: SecureErrorHandler): this;
174
200
  off(event: string, handler: SecureServerEventHandler): this;
201
+ onStream(event: string, handler: SecureServerStreamHandler): this;
202
+ offStream(event: string, handler: SecureServerStreamHandler): this;
175
203
  use(middleware: SecureServerMiddleware): this;
176
204
  emit(event: string, data: unknown): this;
177
205
  emitTo(clientId: string, event: string, data: unknown): boolean;
178
206
  emitTo(clientId: string, event: string, data: unknown, callback: SecureAckCallback): boolean;
179
207
  emitTo(clientId: string, event: string, data: unknown, options: SecureAckOptions): Promise<unknown>;
180
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>;
181
210
  to(room: string): SecureServerRoomOperator;
182
211
  close(code?: number, reason?: string): void;
183
212
  private resolveHeartbeatConfig;
@@ -205,6 +234,15 @@ declare class SecureServer {
205
234
  private handleIncomingMessage;
206
235
  private handleDisconnection;
207
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;
208
246
  private executeServerMiddleware;
209
247
  private applyMessageMiddleware;
210
248
  private resolveClientBySocket;
@@ -246,6 +284,7 @@ declare class SecureClient {
246
284
  private reconnectTimer;
247
285
  private isManualDisconnectRequested;
248
286
  private readonly customEventHandlers;
287
+ private readonly streamEventHandlers;
249
288
  private readonly connectHandlers;
250
289
  private readonly disconnectHandlers;
251
290
  private readonly readyHandlers;
@@ -253,6 +292,7 @@ declare class SecureClient {
253
292
  private handshakeState;
254
293
  private pendingPayloadQueue;
255
294
  private readonly pendingRpcRequests;
295
+ private readonly incomingStreams;
256
296
  private sessionTicket;
257
297
  constructor(url: string, options?: SecureClientOptions);
258
298
  get readyState(): number | null;
@@ -269,10 +309,13 @@ declare class SecureClient {
269
309
  off(event: "ready", handler: SecureClientReadyHandler): this;
270
310
  off(event: "error", handler: SecureErrorHandler): this;
271
311
  off(event: string, handler: SecureClientEventHandler): this;
312
+ onStream(event: string, handler: SecureClientStreamHandler): this;
313
+ offStream(event: string, handler: SecureClientStreamHandler): this;
272
314
  emit(event: string, data: unknown): boolean;
273
315
  emit(event: string, data: unknown, callback: SecureAckCallback): boolean;
274
316
  emit(event: string, data: unknown, options: SecureAckOptions): Promise<unknown>;
275
317
  emit(event: string, data: unknown, options: SecureAckOptions, callback: SecureAckCallback): boolean;
318
+ emitStream(event: string, source: SecureChunkedStreamSource, options?: SecureChunkedStreamOptions): Promise<SecureStreamSendResult>;
276
319
  private resolveReconnectConfig;
277
320
  private resolveSessionResumptionConfig;
278
321
  private scheduleReconnect;
@@ -283,6 +326,14 @@ declare class SecureClient {
283
326
  private handleIncomingMessage;
284
327
  private handleDisconnect;
285
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;
286
337
  private notifyConnect;
287
338
  private notifyReady;
288
339
  private notifyError;
@@ -306,4 +357,4 @@ declare class SecureClient {
306
357
  private flushPendingPayloadQueue;
307
358
  }
308
359
 
309
- 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 SecureClientSessionResumptionOptions, 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, type SecureServerSessionResumptionOptions, 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
  }
@@ -80,6 +103,7 @@ interface SecureServerClient {
80
103
  request: IncomingMessage;
81
104
  metadata: ReadonlyMap<string, unknown>;
82
105
  emit: (event: string, data: unknown, callbackOrOptions?: SecureAckCallback | SecureAckOptions, maybeCallback?: SecureAckCallback) => boolean | Promise<unknown>;
106
+ emitStream: (event: string, source: SecureChunkedStreamSource, options?: SecureChunkedStreamOptions) => Promise<SecureStreamSendResult>;
83
107
  join: (room: string) => boolean;
84
108
  leave: (room: string) => boolean;
85
109
  leaveAll: () => number;
@@ -138,6 +162,7 @@ declare class SecureServer {
138
162
  private readonly clientsById;
139
163
  private readonly clientIdBySocket;
140
164
  private readonly customEventHandlers;
165
+ private readonly streamEventHandlers;
141
166
  private readonly connectionHandlers;
142
167
  private readonly disconnectHandlers;
143
168
  private readonly readyHandlers;
@@ -148,6 +173,7 @@ declare class SecureServer {
148
173
  private readonly sharedSecretBySocket;
149
174
  private readonly encryptionKeyBySocket;
150
175
  private readonly pendingPayloadsBySocket;
176
+ private readonly incomingStreamsBySocket;
151
177
  private readonly pendingRpcRequestsBySocket;
152
178
  private readonly heartbeatStateBySocket;
153
179
  private readonly roomMembersByName;
@@ -172,12 +198,15 @@ declare class SecureServer {
172
198
  off(event: "ready", handler: SecureServerReadyHandler): this;
173
199
  off(event: "error", handler: SecureErrorHandler): this;
174
200
  off(event: string, handler: SecureServerEventHandler): this;
201
+ onStream(event: string, handler: SecureServerStreamHandler): this;
202
+ offStream(event: string, handler: SecureServerStreamHandler): this;
175
203
  use(middleware: SecureServerMiddleware): this;
176
204
  emit(event: string, data: unknown): this;
177
205
  emitTo(clientId: string, event: string, data: unknown): boolean;
178
206
  emitTo(clientId: string, event: string, data: unknown, callback: SecureAckCallback): boolean;
179
207
  emitTo(clientId: string, event: string, data: unknown, options: SecureAckOptions): Promise<unknown>;
180
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>;
181
210
  to(room: string): SecureServerRoomOperator;
182
211
  close(code?: number, reason?: string): void;
183
212
  private resolveHeartbeatConfig;
@@ -205,6 +234,15 @@ declare class SecureServer {
205
234
  private handleIncomingMessage;
206
235
  private handleDisconnection;
207
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;
208
246
  private executeServerMiddleware;
209
247
  private applyMessageMiddleware;
210
248
  private resolveClientBySocket;
@@ -246,6 +284,7 @@ declare class SecureClient {
246
284
  private reconnectTimer;
247
285
  private isManualDisconnectRequested;
248
286
  private readonly customEventHandlers;
287
+ private readonly streamEventHandlers;
249
288
  private readonly connectHandlers;
250
289
  private readonly disconnectHandlers;
251
290
  private readonly readyHandlers;
@@ -253,6 +292,7 @@ declare class SecureClient {
253
292
  private handshakeState;
254
293
  private pendingPayloadQueue;
255
294
  private readonly pendingRpcRequests;
295
+ private readonly incomingStreams;
256
296
  private sessionTicket;
257
297
  constructor(url: string, options?: SecureClientOptions);
258
298
  get readyState(): number | null;
@@ -269,10 +309,13 @@ declare class SecureClient {
269
309
  off(event: "ready", handler: SecureClientReadyHandler): this;
270
310
  off(event: "error", handler: SecureErrorHandler): this;
271
311
  off(event: string, handler: SecureClientEventHandler): this;
312
+ onStream(event: string, handler: SecureClientStreamHandler): this;
313
+ offStream(event: string, handler: SecureClientStreamHandler): this;
272
314
  emit(event: string, data: unknown): boolean;
273
315
  emit(event: string, data: unknown, callback: SecureAckCallback): boolean;
274
316
  emit(event: string, data: unknown, options: SecureAckOptions): Promise<unknown>;
275
317
  emit(event: string, data: unknown, options: SecureAckOptions, callback: SecureAckCallback): boolean;
318
+ emitStream(event: string, source: SecureChunkedStreamSource, options?: SecureChunkedStreamOptions): Promise<SecureStreamSendResult>;
276
319
  private resolveReconnectConfig;
277
320
  private resolveSessionResumptionConfig;
278
321
  private scheduleReconnect;
@@ -283,6 +326,14 @@ declare class SecureClient {
283
326
  private handleIncomingMessage;
284
327
  private handleDisconnect;
285
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;
286
337
  private notifyConnect;
287
338
  private notifyReady;
288
339
  private notifyError;
@@ -306,4 +357,4 @@ declare class SecureClient {
306
357
  private flushPendingPayloadQueue;
307
358
  }
308
359
 
309
- 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 SecureClientSessionResumptionOptions, 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, type SecureServerSessionResumptionOptions, 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 };