@socket-mesh/server 17.3.1

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.
@@ -0,0 +1,181 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { ChannelOptions } from "@socket-mesh/channel";
4
+ import { AuthState, AuthToken, SignedAuthToken } from "@socket-mesh/auth";
5
+ import { AuthTokenOptions } from "@socket-mesh/server-auth";
6
+ import { WritableConsumableStream } from "@socket-mesh/writable-consumable-stream";
7
+ import { AsyncStreamEmitter } from "@socket-mesh/async-stream-emitter";
8
+ import { DemuxedConsumableStream, StreamDemuxWrapper } from "@socket-mesh/stream-demux";
9
+ import { IncomingMessage } from 'http';
10
+ import { SocketState } from "./socket-state";
11
+ import { AuthInfo } from "./action";
12
+ import { AuthStateChanged, AuthTokenSigned, Authenticated, BadAuthToken, Closed, ConnectAborted, Connected, Deauthenticated, Disconnected, ErrorOccurred, RawMessage, ServerSocketEvents, Subscribed, Unsubscribed } from './events';
13
+ import { MiddlewareStream } from './middleware-stream';
14
+ import { ProtocolVersions } from './server-options';
15
+ import ws from "ws";
16
+ import { Server } from "./server";
17
+ import { OutboundPacket, OutboundPacketOptions } from './outbound-packet';
18
+ import { InboundRequest } from './request';
19
+ export type WebSocket = ws.WebSocket & {
20
+ bytesReceived: number;
21
+ upgradeReq: IncomingMessage;
22
+ };
23
+ interface SendOptions {
24
+ mask?: boolean;
25
+ binary?: boolean;
26
+ compress?: boolean;
27
+ fin?: boolean;
28
+ }
29
+ interface EventObject {
30
+ event: string;
31
+ data?: any;
32
+ cid?: number;
33
+ }
34
+ export declare class ServerSocket<T> extends AsyncStreamEmitter<ServerSocketEvents> {
35
+ authState: AuthState;
36
+ authToken: AuthToken | null;
37
+ batchInterval: number;
38
+ batchOnHandshake: boolean;
39
+ batchOnHandshakeDuration: number;
40
+ cloneData: boolean;
41
+ channelSubscriptionsCount: number;
42
+ inboundReceivedMessageCount: number;
43
+ inboundProcessedMessageCount: number;
44
+ isBatching: boolean;
45
+ isBufferingBatch: boolean;
46
+ request: IncomingMessage;
47
+ readonly id: string;
48
+ readonly socket: WebSocket;
49
+ readonly protocolVersion: ProtocolVersions;
50
+ readonly channelSubscriptions: {
51
+ [channel: string]: boolean;
52
+ };
53
+ readonly inboundMessageStream: WritableConsumableStream<string | ArrayBuffer | Buffer[]>;
54
+ readonly outboundPacketStream: WritableConsumableStream<OutboundPacket<T>>;
55
+ readonly server: Server<T>;
56
+ readonly middlewareHandshakeStream: MiddlewareStream<void>;
57
+ readonly middlewareInboundRawStream: MiddlewareStream<string | ArrayBuffer | Buffer[]>;
58
+ readonly middlewareInboundStream: MiddlewareStream<ChannelOptions | T | void>;
59
+ readonly middlewareOutboundStream: MiddlewareStream<T>;
60
+ readonly remoteAddress?: string;
61
+ readonly remoteFamily?: string;
62
+ readonly remotePort?: number;
63
+ outboundPreparedMessageCount: number;
64
+ outboundSentMessageCount: number;
65
+ signedAuthToken: SignedAuthToken | null;
66
+ state: SocketState;
67
+ readonly receiver: StreamDemuxWrapper<string | void | T | ArrayBuffer | Buffer[] | AuthInfo | ChannelOptions>;
68
+ readonly procedure: StreamDemuxWrapper<InboundRequest<T>>;
69
+ private _cid;
70
+ private _handshakeTimeoutRef;
71
+ private _pingIntervalTicker;
72
+ private _pingTimeoutTicker;
73
+ private _batchBuffer;
74
+ private _batchingIntervalId;
75
+ private _callbackMap;
76
+ private readonly _receiverDemux;
77
+ private readonly _procedureDemux;
78
+ private readonly _sendPing;
79
+ constructor(id: string, server: Server<T>, socket: WebSocket, protocolVersion: ProtocolVersions);
80
+ getBackpressure(): number;
81
+ getInboundBackpressure(): number;
82
+ getOutboundBackpressure(): number;
83
+ private _startBatchOnHandshake;
84
+ private _handleInboundMessageStream;
85
+ private _handleHandshakeTimeout;
86
+ private _processHandshakeRequest;
87
+ private _processAuthenticateRequest;
88
+ private _subscribeSocket;
89
+ private _processSubscribeRequest;
90
+ private _unsubscribeFromAllChannels;
91
+ private _unsubscribe;
92
+ private _processUnsubscribePacket;
93
+ private _processUnsubscribeRequest;
94
+ private _processInboundPublishPacket;
95
+ private _processInboundPublishRequest;
96
+ private _processInboundPacket;
97
+ private _resetPongTimeout;
98
+ private _nextCallId;
99
+ getState(): SocketState;
100
+ getBytesReceived(): number;
101
+ emitError(error: Error): void;
102
+ private _abortAllPendingEventsDueToBadConnection;
103
+ closeAllMiddlewares(): void;
104
+ closeInput(): void;
105
+ closeOutput(): void;
106
+ closeIO(): void;
107
+ closeAllStreams(): void;
108
+ killAllMiddlewares(): void;
109
+ killInput(): void;
110
+ killOutput(): void;
111
+ killIO(): void;
112
+ killAllStreams(): void;
113
+ private _destroy;
114
+ disconnect(code: number, reason?: string): void;
115
+ terminate(): void;
116
+ send(data: string, options?: SendOptions): void;
117
+ decode(message: string): any;
118
+ encode(object: any): string;
119
+ startBatch(): void;
120
+ flushBatch(): void;
121
+ cancelBatch(): void;
122
+ private _startBatching;
123
+ startBatching(): void;
124
+ private _stopBatching;
125
+ stopBatching(): void;
126
+ private _cancelBatching;
127
+ cancelBatching(): void;
128
+ serializeObject(object: any): string | null;
129
+ sendObject(object: EventObject): void;
130
+ private _handleOutboundPacketStream;
131
+ private _transmit;
132
+ transmit(event: string, data: any, options?: OutboundPacketOptions): void;
133
+ invoke(event: string, data?: any, options?: OutboundPacketOptions): Promise<unknown>;
134
+ emit(eventName: 'message' | 'raw', data: RawMessage): void;
135
+ emit(eventName: 'error', data: ErrorOccurred): void;
136
+ emit(eventName: 'authStateChange', data: AuthStateChanged): void;
137
+ emit(eventName: 'authenticate', data: Authenticated): void;
138
+ emit(eventName: 'authTokenSigned', data: AuthTokenSigned): void;
139
+ emit(eventName: 'deauthenticate', data: Deauthenticated): void;
140
+ emit(eventName: 'badAuthToken', data: BadAuthToken): void;
141
+ emit(eventName: 'connect', data: Connected): void;
142
+ emit(eventName: 'subscribe', data: Subscribed): void;
143
+ emit(eventName: 'unsubscribe', data: Unsubscribed): void;
144
+ emit(eventName: 'connectAbort', data: ConnectAborted): void;
145
+ emit(eventName: 'disconnect', data: Disconnected): void;
146
+ emit(eventName: 'close', data: Closed): void;
147
+ emit(eventName: 'end'): void;
148
+ listen(eventName: 'message' | 'raw'): DemuxedConsumableStream<RawMessage>;
149
+ listen(eventName: 'error'): DemuxedConsumableStream<ErrorOccurred>;
150
+ listen(eventName: 'authStateChange'): DemuxedConsumableStream<AuthStateChanged>;
151
+ listen(eventName: 'authenticate'): DemuxedConsumableStream<Authenticated>;
152
+ listen(eventName: 'authTokenSigned'): DemuxedConsumableStream<AuthTokenSigned>;
153
+ listen(eventName: 'deauthenticate'): DemuxedConsumableStream<Deauthenticated>;
154
+ listen(eventName: 'badAuthToken'): DemuxedConsumableStream<BadAuthToken>;
155
+ listen(eventName: 'connect'): DemuxedConsumableStream<Connected>;
156
+ listen(eventName: 'subscribe'): DemuxedConsumableStream<Subscribed>;
157
+ listen(eventName: 'unsubscribe'): DemuxedConsumableStream<Unsubscribed>;
158
+ listen(eventName: 'connectAbort'): DemuxedConsumableStream<ConnectAborted>;
159
+ listen(eventName: 'disconnect'): DemuxedConsumableStream<Disconnected>;
160
+ listen(eventName: 'close'): DemuxedConsumableStream<Closed>;
161
+ listen(event: 'end'): DemuxedConsumableStream<void>;
162
+ private _processTransmit;
163
+ private _invoke;
164
+ triggerAuthenticationEvents(oldAuthState: AuthState): void;
165
+ setAuthToken(data: AuthToken, options: AuthTokenOptions): Promise<void>;
166
+ getAuthToken(): AuthToken | null;
167
+ deauthenticateSelf(): void;
168
+ deauthenticate(options?: {
169
+ rejectOnFailedDelivery: boolean;
170
+ }): Promise<void>;
171
+ kickOut(channel: string, message: string): Promise<void[]>;
172
+ subscriptions(): string[];
173
+ isSubscribed(channel: string): boolean;
174
+ private _processAuthTokenExpiry;
175
+ isAuthTokenExpired(token: AuthToken | null): boolean;
176
+ private _processTokenError;
177
+ private _emitBadAuthTokenError;
178
+ private _validateAuthToken;
179
+ private _processAuthentication;
180
+ }
181
+ export {};