@socket-mesh/server 18.1.4 → 19.0.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/broker/broker-events.d.ts +4 -4
- package/dist/broker/broker.d.ts +10 -10
- package/dist/broker/broker.js +2 -1
- package/dist/broker/exchange-client.d.ts +1 -1
- package/dist/broker/exchange.d.ts +6 -1
- package/dist/broker/exchange.js +6 -1
- package/dist/broker/index.d.ts +5 -0
- package/dist/broker/index.js +5 -0
- package/dist/broker/simple-broker.d.ts +8 -8
- package/dist/broker/simple-broker.js +26 -23
- package/dist/broker/simple-exchange.d.ts +6 -7
- package/dist/broker/simple-exchange.js +18 -14
- package/dist/events/index.d.ts +49 -0
- package/dist/handlers/authenticate.d.ts +11 -11
- package/dist/handlers/authenticate.js +31 -28
- package/dist/handlers/handshake.d.ts +2 -2
- package/dist/handlers/handshake.js +21 -16
- package/dist/handlers/index.d.ts +7 -0
- package/dist/handlers/index.js +7 -0
- package/dist/handlers/publish.d.ts +3 -3
- package/dist/handlers/publish.js +2 -2
- package/dist/handlers/remove-auth-token.d.ts +4 -4
- package/dist/handlers/server-request-handler.d.ts +6 -7
- package/dist/handlers/subscribe.d.ts +3 -3
- package/dist/handlers/subscribe.js +3 -3
- package/dist/handlers/unsubscribe.d.ts +2 -2
- package/dist/handlers/unsubscribe.js +2 -2
- package/dist/index.d.ts +20 -18
- package/dist/index.js +19 -20
- package/dist/plugin/server-plugin.d.ts +23 -25
- package/dist/server-options.d.ts +14 -11
- package/dist/server-socket.d.ts +68 -19
- package/dist/server-socket.js +27 -8
- package/dist/server-transport.d.ts +33 -23
- package/dist/server-transport.js +59 -50
- package/dist/server.d.ts +89 -90
- package/dist/server.js +110 -79
- package/package.json +46 -17
- package/dist/server-event.d.ts +0 -49
- /package/dist/{server-event.js → events/index.js} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ServerRequestHandlerArgs } from
|
|
2
|
-
export declare function unsubscribeHandler({
|
|
1
|
+
import { ServerRequestHandlerArgs } from './server-request-handler.js';
|
|
2
|
+
export declare function unsubscribeHandler({ options: channel, transport }: ServerRequestHandlerArgs<string>): Promise<void>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BrokerError } from
|
|
2
|
-
export async function unsubscribeHandler({
|
|
1
|
+
import { BrokerError } from '@socket-mesh/errors';
|
|
2
|
+
export async function unsubscribeHandler({ options: channel, transport }) {
|
|
3
3
|
try {
|
|
4
4
|
await transport.unsubscribe(channel);
|
|
5
5
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,30 +1,32 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
1
|
+
import { ChannelMap } from '@socket-mesh/channels';
|
|
2
|
+
import { PrivateMethodMap, PublicMethodMap, ServiceMap } from '@socket-mesh/core';
|
|
3
|
+
import http from 'http';
|
|
4
|
+
import { ServerOptions } from './server-options.js';
|
|
5
|
+
import { Server } from './server.js';
|
|
6
|
+
export type { ServerRequestHandlerArgs } from './handlers/server-request-handler.js';
|
|
7
|
+
export type { ServerOptions } from './server-options.js';
|
|
8
|
+
export type { ServerSocketState } from './server-socket-state.js';
|
|
9
|
+
export { ServerSocket } from './server-socket.js';
|
|
10
|
+
export { Server } from './server.js';
|
|
11
|
+
export type { PluginType } from '@socket-mesh/core';
|
|
10
12
|
/**
|
|
11
|
-
*
|
|
13
|
+
* Captures upgrade requests for a http.Server.
|
|
12
14
|
*
|
|
13
|
-
* @param {
|
|
14
|
-
* @param {Function} callback
|
|
15
|
+
* @param {http.Server} server
|
|
15
16
|
* @param {Object} options
|
|
16
17
|
* @return {AGServer} websocket cluster server
|
|
17
18
|
* @api public
|
|
18
19
|
*/
|
|
19
|
-
export declare function
|
|
20
|
-
export declare function listen<TIncoming extends PublicMethodMap = {}, TChannel extends ChannelMap = {}, TService extends ServiceMap = {}, TOutgoing extends PublicMethodMap = {}, TPrivateIncoming extends PrivateMethodMap = {}, TPrivateOutgoing extends PrivateMethodMap = {}, TServerState extends object = {}, TState extends object = {}>(port: number, options: ServerOptions<TIncoming, TChannel, TService, TOutgoing, TPrivateIncoming, TPrivateOutgoing, TServerState, TState>): Server<TIncoming, TChannel, TService, TOutgoing, TPrivateIncoming, TPrivateOutgoing, TServerState, TState>;
|
|
21
|
-
export declare function listen<TIncoming extends PublicMethodMap = {}, TChannel extends ChannelMap = {}, TService extends ServiceMap = {}, TOutgoing extends PublicMethodMap = {}, TPrivateIncoming extends PrivateMethodMap = {}, TPrivateOutgoing extends PrivateMethodMap = {}, TServerState extends object = {}, TState extends object = {}>(port: number, options: ServerOptions<TIncoming, TChannel, TService, TOutgoing, TPrivateIncoming, TPrivateOutgoing, TServerState, TState>, fn: () => void): Server<TIncoming, TChannel, TService, TOutgoing, TPrivateIncoming, TPrivateOutgoing, TServerState, TState>;
|
|
20
|
+
export declare function attach<TIncoming extends PublicMethodMap = {}, TOutgoing extends PublicMethodMap = {}, TChannel extends ChannelMap = {}, TService extends ServiceMap = {}, TState extends object = {}, TPrivateIncoming extends PrivateMethodMap = {}, TPrivateOutgoing extends PrivateMethodMap = {}, TServerState extends object = {}>(server: http.Server, options?: ServerOptions<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>): Server<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>;
|
|
22
21
|
/**
|
|
23
|
-
*
|
|
22
|
+
* Creates an http.Server exclusively used for WS upgrades.
|
|
24
23
|
*
|
|
25
|
-
* @param {
|
|
24
|
+
* @param {Number} port
|
|
25
|
+
* @param {Function} callback
|
|
26
26
|
* @param {Object} options
|
|
27
27
|
* @return {AGServer} websocket cluster server
|
|
28
28
|
* @api public
|
|
29
29
|
*/
|
|
30
|
-
export declare function
|
|
30
|
+
export declare function listen<TIncoming extends PublicMethodMap = {}, TOutgoing extends PublicMethodMap = {}, TChannel extends ChannelMap = {}, TService extends ServiceMap = {}, TState extends object = {}, TPrivateIncoming extends PrivateMethodMap = {}, TPrivateOutgoing extends PrivateMethodMap = {}, TServerState extends object = {}>(): Server<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>;
|
|
31
|
+
export declare function listen<TIncoming extends PublicMethodMap = {}, TOutgoing extends PublicMethodMap = {}, TChannel extends ChannelMap = {}, TService extends ServiceMap = {}, TState extends object = {}, TPrivateIncoming extends PrivateMethodMap = {}, TPrivateOutgoing extends PrivateMethodMap = {}, TServerState extends object = {}>(port: number, options: ServerOptions<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>): Server<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>;
|
|
32
|
+
export declare function listen<TIncoming extends PublicMethodMap = {}, TOutgoing extends PublicMethodMap = {}, TChannel extends ChannelMap = {}, TService extends ServiceMap = {}, TState extends object = {}, TPrivateIncoming extends PrivateMethodMap = {}, TPrivateOutgoing extends PrivateMethodMap = {}, TServerState extends object = {}>(port: number, options: ServerOptions<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>, fn: () => void): Server<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>;
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,22 @@
|
|
|
1
|
-
import http from
|
|
2
|
-
import { Server } from
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
1
|
+
import http from 'http';
|
|
2
|
+
import { Server } from './server.js';
|
|
3
|
+
export { ServerSocket } from './server-socket.js';
|
|
4
|
+
export { Server } from './server.js';
|
|
5
|
+
/**
|
|
6
|
+
* Captures upgrade requests for a http.Server.
|
|
7
|
+
*
|
|
8
|
+
* @param {http.Server} server
|
|
9
|
+
* @param {Object} options
|
|
10
|
+
* @return {AGServer} websocket cluster server
|
|
11
|
+
* @api public
|
|
12
|
+
*/
|
|
13
|
+
export function attach(server, options) {
|
|
14
|
+
if (options == null) {
|
|
15
|
+
options = {};
|
|
16
|
+
}
|
|
17
|
+
options.server = server;
|
|
18
|
+
return new Server(options);
|
|
19
|
+
}
|
|
5
20
|
export function listen(port, options, fn) {
|
|
6
21
|
if (typeof options === 'function') {
|
|
7
22
|
fn = options;
|
|
@@ -20,19 +35,3 @@ export function listen(port, options, fn) {
|
|
|
20
35
|
return socketClusterServer;
|
|
21
36
|
}
|
|
22
37
|
;
|
|
23
|
-
/**
|
|
24
|
-
* Captures upgrade requests for a http.Server.
|
|
25
|
-
*
|
|
26
|
-
* @param {http.Server} server
|
|
27
|
-
* @param {Object} options
|
|
28
|
-
* @return {AGServer} websocket cluster server
|
|
29
|
-
* @api public
|
|
30
|
-
*/
|
|
31
|
-
export function attach(server, options) {
|
|
32
|
-
if (options == null) {
|
|
33
|
-
options = {};
|
|
34
|
-
}
|
|
35
|
-
options.server = server;
|
|
36
|
-
return new Server(options);
|
|
37
|
-
}
|
|
38
|
-
;
|
|
@@ -1,33 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Plugin, PrivateMethodMap, PublicMethodMap, ServiceMap } from
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
import { ServerSocketState } from "../server-socket-state.js";
|
|
9
|
-
export interface HandshakePluginArgs<TChannel extends ChannelMap, TService extends ServiceMap, TIncoming extends PublicMethodMap, TOutgoing extends PublicMethodMap, TPrivateIncoming extends PrivateMethodMap, TPrivateOutgoing extends PrivateMethodMap, TServerState extends object, TState extends object> {
|
|
10
|
-
socket: ServerSocket<TIncoming, TChannel, TService, TOutgoing, TPrivateIncoming, TPrivateOutgoing, TServerState, TState>;
|
|
11
|
-
transport: ServerTransport<TIncoming, TChannel, TService, TOutgoing, TPrivateIncoming, TPrivateOutgoing, TServerState, TState>;
|
|
1
|
+
import { ChannelMap, ChannelOptions } from '@socket-mesh/channels';
|
|
2
|
+
import { Plugin, PrivateMethodMap, PublicMethodMap, ServiceMap } from '@socket-mesh/core';
|
|
3
|
+
import { IncomingMessage } from 'http';
|
|
4
|
+
import { AuthInfo } from '../handlers/authenticate.js';
|
|
5
|
+
import { ServerSocket } from '../server-socket.js';
|
|
6
|
+
import { ServerTransport } from '../server-transport.js';
|
|
7
|
+
export interface HandshakePluginArgs<TIncoming extends PublicMethodMap, TOutgoing extends PublicMethodMap, TChannel extends ChannelMap, TService extends ServiceMap, TState extends object, TPrivateIncoming extends PrivateMethodMap, TPrivateOutgoing extends PrivateMethodMap, TServerState extends object> {
|
|
12
8
|
authInfo: AuthInfo;
|
|
9
|
+
socket: ServerSocket<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>;
|
|
10
|
+
transport: ServerTransport<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>;
|
|
13
11
|
}
|
|
14
|
-
export interface PublishPluginArgs<
|
|
12
|
+
export interface PublishPluginArgs<TIncoming extends PublicMethodMap, TOutgoing extends PublicMethodMap, TChannel extends ChannelMap, TService extends ServiceMap, TState extends object, TPrivateIncoming extends PrivateMethodMap, TPrivateOutgoing extends PrivateMethodMap, TServerState extends object> {
|
|
15
13
|
channel: string;
|
|
16
14
|
data: any;
|
|
17
|
-
socket: ServerSocket<TIncoming, TChannel, TService,
|
|
18
|
-
transport: ServerTransport<TIncoming, TChannel, TService,
|
|
15
|
+
socket: ServerSocket<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>;
|
|
16
|
+
transport: ServerTransport<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>;
|
|
19
17
|
}
|
|
20
|
-
export interface
|
|
21
|
-
channel: string;
|
|
22
|
-
options: ChannelOptions;
|
|
23
|
-
socket: ServerSocket<TIncoming, TChannel, TService, TOutgoing, TPrivateIncoming, TPrivateOutgoing, TServerState, TState>;
|
|
24
|
-
transport: ServerTransport<TIncoming, TChannel, TService, TOutgoing, TPrivateIncoming, TPrivateOutgoing, TServerState, TState>;
|
|
25
|
-
}
|
|
26
|
-
export interface ServerPlugin<TIncoming extends PublicMethodMap, TChannel extends ChannelMap, TService extends ServiceMap, TOutgoing extends PublicMethodMap, TPrivateIncoming extends PrivateMethodMap, TPrivateOutgoing extends PrivateMethodMap, TServerState extends object, TState extends object> extends Plugin<TIncoming & TPrivateIncoming & ServerPrivateMap, TOutgoing, TPrivateOutgoing & ClientPrivateMap, TService, TState & ServerSocketState> {
|
|
18
|
+
export interface ServerPlugin<TIncoming extends PublicMethodMap, TOutgoing extends PublicMethodMap, TChannel extends ChannelMap, TService extends ServiceMap, TState extends object, TPrivateIncoming extends PrivateMethodMap, TPrivateOutgoing extends PrivateMethodMap, TServerState extends object> extends Plugin<ServerSocket<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>, ServerTransport<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>> {
|
|
27
19
|
onAuthenticate?: (authInfo: AuthInfo) => void;
|
|
28
20
|
onConnection?: (request: IncomingMessage) => Promise<void>;
|
|
29
|
-
onHandshake?: (options: HandshakePluginArgs<TChannel, TService,
|
|
30
|
-
onPublishIn?: (options: PublishPluginArgs<TChannel, TService,
|
|
31
|
-
onPublishOut?: (options: PublishPluginArgs<TChannel, TService,
|
|
32
|
-
onSubscribe?: (options: SubscribePluginArgs<TChannel, TService,
|
|
21
|
+
onHandshake?: (options: HandshakePluginArgs<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>) => Promise<void>;
|
|
22
|
+
onPublishIn?: (options: PublishPluginArgs<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>) => Promise<any>;
|
|
23
|
+
onPublishOut?: (options: PublishPluginArgs<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>) => Promise<any>;
|
|
24
|
+
onSubscribe?: (options: SubscribePluginArgs<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>) => Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
export interface SubscribePluginArgs<TIncoming extends PublicMethodMap, TOutgoing extends PublicMethodMap, TChannel extends ChannelMap, TService extends ServiceMap, TState extends object, TPrivateIncoming extends PrivateMethodMap, TPrivateOutgoing extends PrivateMethodMap, TServerState extends object> {
|
|
27
|
+
channel: string;
|
|
28
|
+
options: ChannelOptions;
|
|
29
|
+
socket: ServerSocket<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>;
|
|
30
|
+
transport: ServerTransport<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>;
|
|
33
31
|
}
|
package/dist/server-options.d.ts
CHANGED
|
@@ -1,25 +1,28 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
1
|
+
import { AuthEngine, AuthOptions } from '@socket-mesh/auth-engine';
|
|
2
|
+
import { ChannelMap } from '@socket-mesh/channels';
|
|
3
|
+
import { ServerPrivateMap } from '@socket-mesh/client';
|
|
4
|
+
import { CallIdGenerator, HandlerMap, PrivateMethodMap, PublicMethodMap, ServiceMap, StreamCleanupMode } from '@socket-mesh/core';
|
|
5
|
+
import { CodecEngine } from '@socket-mesh/formatter';
|
|
6
|
+
import { ServerOptions as WebSocketServerOptions } from 'ws';
|
|
7
|
+
import { Broker } from './broker/broker.js';
|
|
8
|
+
import { ServerPlugin } from './plugin/server-plugin.js';
|
|
9
|
+
import { ServerSocketState } from './server-socket-state.js';
|
|
10
|
+
import { ServerSocket } from './server-socket.js';
|
|
11
|
+
import { ServerTransport } from './server-transport.js';
|
|
12
|
+
export interface ServerOptions<TIncoming extends PublicMethodMap = {}, TOutgoing extends PublicMethodMap = {}, TChannel extends ChannelMap = {}, TService extends ServiceMap = {}, TState extends object = {}, TPrivateIncoming extends PrivateMethodMap = {}, TPrivateOutgoing extends PrivateMethodMap = {}, TServerState extends object = {}> extends WebSocketServerOptions {
|
|
10
13
|
ackTimeoutMs?: number;
|
|
11
14
|
allowClientPublish?: boolean;
|
|
12
15
|
authEngine?: AuthEngine | AuthOptions;
|
|
13
16
|
brokerEngine?: Broker<TChannel>;
|
|
14
17
|
callIdGenerator?: CallIdGenerator;
|
|
15
18
|
codecEngine?: CodecEngine;
|
|
19
|
+
handlers?: HandlerMap<TIncoming & TPrivateIncoming & ServerPrivateMap, TState & ServerSocketState, ServerSocket<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>, ServerTransport<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>>;
|
|
16
20
|
handshakeTimeoutMs?: number;
|
|
17
|
-
handlers?: HandlerMap<TIncoming & TPrivateIncoming & ServerPrivateMap, TOutgoing, TPrivateOutgoing & ClientPrivateMap, TService, TState>;
|
|
18
21
|
isPingTimeoutDisabled?: boolean;
|
|
19
|
-
plugins?: ServerPlugin<TIncoming, TChannel, TService, TOutgoing, TPrivateIncoming, TPrivateOutgoing, TServerState, TState>[];
|
|
20
22
|
origins?: string;
|
|
21
23
|
pingIntervalMs?: number;
|
|
22
24
|
pingTimeoutMs?: number;
|
|
25
|
+
plugins?: ServerPlugin<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>[];
|
|
23
26
|
socketChannelLimit?: number;
|
|
24
27
|
socketStreamCleanupMode?: StreamCleanupMode;
|
|
25
28
|
strictHandshake?: boolean;
|
package/dist/server-socket.d.ts
CHANGED
|
@@ -1,29 +1,78 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { IncomingMessage } from
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { ChannelMap } from '@socket-mesh/channels';
|
|
2
|
+
import { ClientPrivateMap, ServerPrivateMap } from '@socket-mesh/client';
|
|
3
|
+
import { AuthenticateEvent, AuthStateChangeEvent, BadAuthTokenEvent, BaseSocket, BaseSocketOptions, CloseEvent, ConnectEvent, ConnectingEvent, DeauthenticateEvent, DisconnectEvent, ErrorEvent, FunctionReturnType, InvokeMethodOptions, InvokeServiceOptions, LooseHandlerMap, MessageEvent, PingEvent, PongEvent, PrivateMethodMap, PublicMethodMap, RemoveAuthTokenEvent, RequestEvent, ResponseEvent, ServiceMap, ServiceMethodName, ServiceName, Socket, TypedRequestEvent, TypedResponseEvent, TypedSocketEvent } from '@socket-mesh/core';
|
|
4
|
+
import { DemuxedConsumableStream, StreamEvent } from '@socket-mesh/stream-demux';
|
|
5
|
+
import { IncomingMessage } from 'http';
|
|
6
|
+
import { WebSocket } from 'ws';
|
|
7
|
+
import { Exchange } from './broker/exchange.js';
|
|
8
|
+
import { ServerPlugin } from './plugin/server-plugin.js';
|
|
9
|
+
import { ServerSocketState } from './server-socket-state.js';
|
|
10
|
+
import { Server } from './server.js';
|
|
11
|
+
export interface ServerSocketOptions<TIncoming extends PublicMethodMap, TOutgoing extends PublicMethodMap, TChannel extends ChannelMap, TService extends ServiceMap, TState extends object, TPrivateIncoming extends PrivateMethodMap, TPrivateOutgoing extends PrivateMethodMap, TServerState extends object> extends BaseSocketOptions<TState & ServerSocketState> {
|
|
12
|
+
handlers: LooseHandlerMap;
|
|
13
13
|
id?: string;
|
|
14
|
-
|
|
15
|
-
server: Server<TIncoming, TChannel, TService, TOutgoing, TPrivateIncoming, TPrivateOutgoing, TServerState, TState>;
|
|
14
|
+
plugins?: ServerPlugin<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>[];
|
|
16
15
|
request: IncomingMessage;
|
|
17
|
-
|
|
16
|
+
server: Server<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>;
|
|
17
|
+
service?: string;
|
|
18
|
+
socket: WebSocket;
|
|
18
19
|
}
|
|
19
|
-
export declare class ServerSocket<TIncoming extends PublicMethodMap = {}, TChannel extends ChannelMap = {}, TService extends ServiceMap = {},
|
|
20
|
-
readonly server: Server<TIncoming, TChannel, TService, TOutgoing, TPrivateIncoming, TPrivateOutgoing, TServerState, TState>;
|
|
20
|
+
export declare class ServerSocket<TIncoming extends PublicMethodMap = {}, TOutgoing extends PublicMethodMap = {}, TChannel extends ChannelMap = {}, TService extends ServiceMap = {}, TState extends object = {}, TPrivateIncoming extends PrivateMethodMap = {}, TPrivateOutgoing extends PrivateMethodMap = {}, TServerState extends object = {}> extends BaseSocket<TState & ServerSocketState> implements Socket<TIncoming & TPrivateIncoming & ServerPrivateMap, TOutgoing, TState & ServerSocketState, TService, {}, TPrivateOutgoing & ClientPrivateMap> {
|
|
21
21
|
private _serverTransport;
|
|
22
|
-
|
|
22
|
+
readonly server: Server<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>;
|
|
23
|
+
constructor(options: ServerSocketOptions<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>);
|
|
23
24
|
deauthenticate(rejectOnFailedDelivery?: boolean): Promise<boolean>;
|
|
25
|
+
emit(event: 'request', data: TypedRequestEvent<TIncoming & TPrivateIncoming & ServerPrivateMap, TService>): void;
|
|
26
|
+
emit(event: 'response', data: TypedResponseEvent<TOutgoing, TPrivateOutgoing & ClientPrivateMap, TService>): void;
|
|
27
|
+
emit(event: 'authStateChange', data: AuthStateChangeEvent): void;
|
|
28
|
+
emit(event: 'authenticate', data: AuthenticateEvent): void;
|
|
29
|
+
emit(event: 'badAuthToken', data: BadAuthTokenEvent): void;
|
|
30
|
+
emit(event: 'close', data: CloseEvent): void;
|
|
31
|
+
emit(event: 'connect', data: ConnectEvent): void;
|
|
32
|
+
emit(event: 'connectAbort', data: DisconnectEvent): void;
|
|
33
|
+
emit(event: 'connecting', data: ConnectingEvent): void;
|
|
34
|
+
emit(event: 'deauthenticate', data: DeauthenticateEvent): void;
|
|
35
|
+
emit(event: 'disconnect', data: DisconnectEvent): void;
|
|
36
|
+
emit(event: 'end'): void;
|
|
37
|
+
emit(event: 'error', data: ErrorEvent): void;
|
|
38
|
+
emit(event: 'message', data: MessageEvent): void;
|
|
39
|
+
emit(event: 'ping', data: PingEvent): void;
|
|
40
|
+
emit(event: 'pong', data: PongEvent): void;
|
|
41
|
+
emit(event: 'removeAuthToken', data: RemoveAuthTokenEvent): void;
|
|
42
|
+
emit(event: 'request', data: RequestEvent): void;
|
|
43
|
+
emit(event: 'response', data: ResponseEvent): void;
|
|
24
44
|
get exchange(): Exchange<TChannel>;
|
|
45
|
+
get id(): string;
|
|
46
|
+
invoke<TMethod extends keyof TOutgoing & string>(method: TMethod, arg?: Parameters<TOutgoing[TMethod]>[0]): Promise<FunctionReturnType<TOutgoing[TMethod]>>;
|
|
47
|
+
invoke<TServiceName extends ServiceName<TService>, TMethod extends ServiceMethodName<TService, TServiceName>>(options: [TServiceName, TMethod, (false | number)?], arg?: Parameters<TService[TServiceName][TMethod]>[0]): Promise<FunctionReturnType<TService[TServiceName][TMethod]>>;
|
|
48
|
+
invoke<TServiceName extends ServiceName<TService>, TMethod extends ServiceMethodName<TService, TServiceName>>(options: InvokeServiceOptions<TService, TServiceName, TMethod>, arg?: Parameters<TService[TServiceName][TMethod]>[0]): Promise<FunctionReturnType<TService[TServiceName][TMethod]>>;
|
|
49
|
+
invoke<TMethod extends keyof TOutgoing & string>(options: InvokeMethodOptions<TOutgoing, TMethod>, arg?: Parameters<TOutgoing[TMethod]>[0]): Promise<FunctionReturnType<TOutgoing[TMethod]>>;
|
|
50
|
+
invoke<TMethod extends keyof (TPrivateOutgoing & ClientPrivateMap) & string>(method: TMethod, arg: Parameters<(TPrivateOutgoing & ClientPrivateMap)[TMethod]>[0]): Promise<FunctionReturnType<(TPrivateOutgoing & ClientPrivateMap)[TMethod]>>;
|
|
51
|
+
invoke<TMethod extends keyof (TPrivateOutgoing & ClientPrivateMap) & string>(options: InvokeMethodOptions<(TPrivateOutgoing & ClientPrivateMap), TMethod>, arg?: Parameters<(TPrivateOutgoing & ClientPrivateMap)[TMethod]>[0]): Promise<FunctionReturnType<(TPrivateOutgoing & ClientPrivateMap)[TMethod]>>;
|
|
25
52
|
kickOut(channel: string, message: string): Promise<void[]>;
|
|
53
|
+
listen(): DemuxedConsumableStream<StreamEvent<TypedSocketEvent<TIncoming & TPrivateIncoming & ServerPrivateMap, TOutgoing, TPrivateOutgoing & ClientPrivateMap, TService>>>;
|
|
54
|
+
listen(event: 'authStateChange'): DemuxedConsumableStream<AuthStateChangeEvent>;
|
|
55
|
+
listen(event: 'authenticate'): DemuxedConsumableStream<AuthenticateEvent>;
|
|
56
|
+
listen(event: 'badAuthToken'): DemuxedConsumableStream<BadAuthTokenEvent>;
|
|
57
|
+
listen(event: 'close'): DemuxedConsumableStream<CloseEvent>;
|
|
58
|
+
listen(event: 'connect'): DemuxedConsumableStream<ConnectEvent>;
|
|
59
|
+
listen(event: 'connectAbort'): DemuxedConsumableStream<DisconnectEvent>;
|
|
60
|
+
listen(event: 'connecting'): DemuxedConsumableStream<ConnectingEvent>;
|
|
61
|
+
listen(event: 'deauthenticate'): DemuxedConsumableStream<DeauthenticateEvent>;
|
|
62
|
+
listen(event: 'disconnect'): DemuxedConsumableStream<DisconnectEvent>;
|
|
63
|
+
listen(event: 'end'): DemuxedConsumableStream<void>;
|
|
64
|
+
listen(event: 'error'): DemuxedConsumableStream<ErrorEvent>;
|
|
65
|
+
listen(event: 'message'): DemuxedConsumableStream<MessageEvent>;
|
|
66
|
+
listen(event: 'ping'): DemuxedConsumableStream<PingEvent>;
|
|
67
|
+
listen(event: 'pong'): DemuxedConsumableStream<PongEvent>;
|
|
68
|
+
listen(event: 'removeAuthToken'): DemuxedConsumableStream<RemoveAuthTokenEvent>;
|
|
69
|
+
listen(event: 'request'): DemuxedConsumableStream<TypedRequestEvent<TIncoming & TPrivateIncoming & ServerPrivateMap, TService>>;
|
|
70
|
+
listen(event: 'response'): DemuxedConsumableStream<TypedResponseEvent<TOutgoing, TPrivateOutgoing & ClientPrivateMap, TService>>;
|
|
71
|
+
listen<U extends TypedSocketEvent<TIncoming & TPrivateIncoming & ServerPrivateMap, TOutgoing, TPrivateOutgoing & ClientPrivateMap, TService>, V = U>(event: string): DemuxedConsumableStream<V>;
|
|
26
72
|
ping(): Promise<void>;
|
|
27
|
-
get service(): string;
|
|
73
|
+
get service(): string | undefined;
|
|
74
|
+
transmit<TMethod extends keyof TOutgoing & string>(method: TMethod, arg?: Parameters<TOutgoing[TMethod]>[0]): Promise<void>;
|
|
75
|
+
transmit<TServiceName extends ServiceName<TService>, TMethod extends ServiceMethodName<TService, TServiceName>>(options: [TServiceName, TMethod], arg?: Parameters<TService[TServiceName][TMethod]>[0]): Promise<void>;
|
|
76
|
+
transmit<TMethod extends keyof (TPrivateOutgoing & ClientPrivateMap) & string>(method: TMethod, arg?: Parameters<(TPrivateOutgoing & ClientPrivateMap)[TMethod]>[0]): Promise<void>;
|
|
28
77
|
get type(): 'server';
|
|
29
78
|
}
|
package/dist/server-socket.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ServerTransport } from
|
|
3
|
-
export class ServerSocket extends
|
|
1
|
+
import { BaseSocket, toError } from '@socket-mesh/core';
|
|
2
|
+
import { ServerTransport } from './server-transport.js';
|
|
3
|
+
export class ServerSocket extends BaseSocket {
|
|
4
|
+
_serverTransport;
|
|
5
|
+
server;
|
|
4
6
|
constructor(options) {
|
|
5
7
|
const transport = new ServerTransport(options);
|
|
6
8
|
super(transport, options);
|
|
@@ -8,42 +10,59 @@ export class ServerSocket extends Socket {
|
|
|
8
10
|
this._serverTransport = transport;
|
|
9
11
|
}
|
|
10
12
|
async deauthenticate(rejectOnFailedDelivery) {
|
|
11
|
-
await super.deauthenticate();
|
|
13
|
+
const result = await super.deauthenticate();
|
|
12
14
|
if (rejectOnFailedDelivery) {
|
|
13
15
|
try {
|
|
14
16
|
await this._serverTransport.invoke('#removeAuthToken', undefined)[0];
|
|
15
17
|
}
|
|
16
|
-
catch (
|
|
18
|
+
catch (err) {
|
|
19
|
+
const error = toError(err);
|
|
17
20
|
this._serverTransport.onError(error);
|
|
18
21
|
throw error;
|
|
19
22
|
}
|
|
20
|
-
return;
|
|
23
|
+
return result;
|
|
21
24
|
}
|
|
22
25
|
try {
|
|
23
26
|
await this.transmit('#removeAuthToken');
|
|
24
27
|
}
|
|
25
28
|
catch (err) {
|
|
26
|
-
if (err.name !== 'BadConnectionError') {
|
|
29
|
+
if (toError(err).name !== 'BadConnectionError') {
|
|
27
30
|
throw err;
|
|
28
31
|
}
|
|
29
32
|
}
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
emit(event, data) {
|
|
36
|
+
super.emit(event, data);
|
|
30
37
|
}
|
|
31
38
|
get exchange() {
|
|
32
39
|
return this.server.exchange;
|
|
33
40
|
}
|
|
41
|
+
get id() {
|
|
42
|
+
return this._serverTransport.id;
|
|
43
|
+
}
|
|
44
|
+
invoke(methodOptions, arg) {
|
|
45
|
+
return super.invoke(methodOptions, arg);
|
|
46
|
+
}
|
|
34
47
|
kickOut(channel, message) {
|
|
35
|
-
const channels = channel ? [channel] : Object.keys(this.state.channelSubscriptions);
|
|
48
|
+
const channels = channel ? [channel] : Object.keys(this.state.channelSubscriptions || {});
|
|
36
49
|
return Promise.all(channels.map((channelName) => {
|
|
37
50
|
this.transmit('#kickOut', { channel: channelName, message });
|
|
38
51
|
return this._serverTransport.unsubscribe(channelName);
|
|
39
52
|
}));
|
|
40
53
|
}
|
|
54
|
+
listen(event) {
|
|
55
|
+
return super.listen(event ?? '');
|
|
56
|
+
}
|
|
41
57
|
ping() {
|
|
42
58
|
return this._serverTransport.ping();
|
|
43
59
|
}
|
|
44
60
|
get service() {
|
|
45
61
|
return this._serverTransport.service;
|
|
46
62
|
}
|
|
63
|
+
transmit(serviceAndMethod, arg) {
|
|
64
|
+
return super.transmit(serviceAndMethod, arg);
|
|
65
|
+
}
|
|
47
66
|
get type() {
|
|
48
67
|
return this._serverTransport.type;
|
|
49
68
|
}
|
|
@@ -1,37 +1,47 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { AnyPacket, AnyResponse,
|
|
6
|
-
import { IncomingMessage } from
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
export declare class ServerTransport<TIncoming extends PublicMethodMap = {}, TChannel extends ChannelMap = {}, TService extends ServiceMap = {},
|
|
12
|
-
|
|
13
|
-
readonly
|
|
1
|
+
import { AuthToken, SignedAuthToken } from '@socket-mesh/auth';
|
|
2
|
+
import { AuthTokenOptions } from '@socket-mesh/auth-engine';
|
|
3
|
+
import { ChannelMap, PublishOptions } from '@socket-mesh/channels';
|
|
4
|
+
import { ClientPrivateMap, ServerPrivateMap } from '@socket-mesh/client';
|
|
5
|
+
import { AnyPacket, AnyRequest, AnyResponse, BaseSocketTransport, FunctionReturnType, InboundMessage, InvokeMethodOptions, InvokeServiceOptions, PrivateMethodMap, PublicMethodMap, ServiceMap, ServiceMethodName, ServiceName, SocketStatus, SocketTransport } from '@socket-mesh/core';
|
|
6
|
+
import { IncomingMessage } from 'http';
|
|
7
|
+
import { Data } from 'ws';
|
|
8
|
+
import { ServerPlugin } from './plugin/server-plugin.js';
|
|
9
|
+
import { ServerSocketState } from './server-socket-state.js';
|
|
10
|
+
import { ServerSocket, ServerSocketOptions } from './server-socket.js';
|
|
11
|
+
export declare class ServerTransport<TIncoming extends PublicMethodMap = {}, TOutgoing extends PublicMethodMap = {}, TChannel extends ChannelMap = {}, TService extends ServiceMap = {}, TState extends object = {}, TPrivateIncoming extends PrivateMethodMap = {}, TPrivateOutgoing extends PrivateMethodMap = {}, TServerState extends object = {}> extends BaseSocketTransport<TState & ServerSocketState> implements SocketTransport<TIncoming & TPrivateIncoming & ServerPrivateMap, TOutgoing, TState & ServerSocketState, TService, {}, TPrivateOutgoing & ClientPrivateMap> {
|
|
12
|
+
id: string;
|
|
13
|
+
readonly plugins: ServerPlugin<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>[];
|
|
14
14
|
readonly request: IncomingMessage;
|
|
15
|
-
|
|
15
|
+
readonly service?: string;
|
|
16
|
+
type: 'server';
|
|
17
|
+
constructor(options: ServerSocketOptions<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>);
|
|
16
18
|
changeToUnauthenticatedState(): Promise<boolean>;
|
|
17
|
-
protected handleInboudMessage({ packet, timestamp }: InboundMessage
|
|
18
|
-
|
|
19
|
+
protected handleInboudMessage({ packet, timestamp }: InboundMessage): Promise<void>;
|
|
20
|
+
invoke<TMethod extends keyof TOutgoing & string>(method: TMethod, arg?: Parameters<TOutgoing[TMethod]>[0]): [Promise<FunctionReturnType<TOutgoing[TMethod]>>, () => void];
|
|
21
|
+
invoke<TMethod extends keyof TOutgoing & string>(options: InvokeMethodOptions<TOutgoing, TMethod>, arg?: Parameters<TOutgoing[TMethod]>[0]): [Promise<FunctionReturnType<TOutgoing[TMethod]>>, () => void];
|
|
22
|
+
invoke<TServiceName extends ServiceName<TService>, TMethod extends ServiceMethodName<TService, TServiceName>>(options: [TServiceName, TMethod, (false | number)?], arg?: Parameters<TService[TServiceName][TMethod]>[0]): [Promise<FunctionReturnType<TService[TServiceName][TMethod]>>, () => void];
|
|
23
|
+
invoke<TServiceName extends ServiceName<TService>, TMethod extends ServiceMethodName<TService, TServiceName>>(options: InvokeServiceOptions<TService, TServiceName, TMethod>, arg?: Parameters<TService[TServiceName][TMethod]>[0]): [Promise<FunctionReturnType<TService[TServiceName][TMethod]>>, () => void];
|
|
24
|
+
invoke<TMethod extends keyof (TPrivateOutgoing & ClientPrivateMap) & string>(method: TMethod, arg: Parameters<(TPrivateOutgoing & ClientPrivateMap)[TMethod]>[0]): [Promise<FunctionReturnType<(TPrivateOutgoing & ClientPrivateMap)[TMethod]>>, () => void];
|
|
25
|
+
invoke<TMethod extends keyof (TPrivateOutgoing & ClientPrivateMap) & string>(options: InvokeMethodOptions<(TPrivateOutgoing & ClientPrivateMap), TMethod>, arg?: Parameters<(TPrivateOutgoing & ClientPrivateMap)[TMethod]>[0]): [Promise<FunctionReturnType<(TPrivateOutgoing & ClientPrivateMap)[TMethod]>>, () => void];
|
|
26
|
+
protected onClose(code: number, reason?: Buffer | string): void;
|
|
19
27
|
protected onDisconnect(status: SocketStatus, code: number, reason?: string): void;
|
|
20
28
|
onError(error: Error): void;
|
|
21
|
-
protected onInvoke
|
|
29
|
+
protected onInvoke(request: AnyRequest): void;
|
|
22
30
|
protected onMessage(data: Data, isBinary: boolean): void;
|
|
23
31
|
protected onPingPong(): void;
|
|
24
32
|
protected onPublish(options: PublishOptions): Promise<void>;
|
|
25
|
-
protected onRequest(packet: AnyPacket
|
|
26
|
-
protected onResponse(response: AnyResponse
|
|
27
|
-
protected onTransmit
|
|
33
|
+
protected onRequest(packet: AnyPacket, timestamp: Date, pluginError?: Error): Promise<boolean>;
|
|
34
|
+
protected onResponse(response: AnyResponse): void;
|
|
35
|
+
protected onTransmit(request: AnyRequest): void;
|
|
28
36
|
ping(): Promise<void>;
|
|
29
37
|
setAuthorization(authToken: AuthToken, options?: AuthTokenOptions): Promise<boolean>;
|
|
30
38
|
setAuthorization(signedAuthToken: SignedAuthToken, authToken?: AuthToken): Promise<boolean>;
|
|
31
39
|
setReadyStatus(pingTimeoutMs: number, authError?: Error): void;
|
|
32
|
-
get socket(): ServerSocket<TIncoming, TChannel, TService,
|
|
33
|
-
set socket(value: ServerSocket<TIncoming, TChannel, TService,
|
|
40
|
+
get socket(): ServerSocket<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>;
|
|
41
|
+
set socket(value: ServerSocket<TIncoming, TOutgoing, TChannel, TService, TState, TPrivateIncoming, TPrivateOutgoing, TServerState>);
|
|
42
|
+
transmit<TMethod extends keyof TOutgoing & string>(method: TMethod, arg?: Parameters<TOutgoing[TMethod]>[0]): Promise<void>;
|
|
43
|
+
transmit<TServiceName extends ServiceName<TService>, TMethod extends ServiceMethodName<TService, TServiceName>>(options: [TServiceName, TMethod], arg?: Parameters<TService[TServiceName][TMethod]>[0]): Promise<void>;
|
|
44
|
+
transmit<TMethod extends keyof (TPrivateOutgoing & ClientPrivateMap) & string>(method: TMethod, arg?: Parameters<(TPrivateOutgoing & ClientPrivateMap)[TMethod]>[0]): Promise<void>;
|
|
34
45
|
triggerAuthenticationEvents(wasSigned: boolean, wasAuthenticated: boolean): void;
|
|
35
|
-
type: 'server';
|
|
36
46
|
unsubscribe(channel: string): Promise<void>;
|
|
37
47
|
}
|