@socket-mesh/core 1.0.3 → 2.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.
@@ -1,94 +1,97 @@
1
- import { CodecEngine } from "@socket-mesh/formatter";
2
- import ws from "isomorphic-ws";
3
- import { Plugin } from "./plugins/plugin.js";
4
- import { AnyRequest, InvokeMethodRequest, InvokeServiceRequest, TransmitMethodRequest, TransmitServiceRequest } from "./request.js";
5
- import { AnyPacket } from "./packet.js";
6
- import { FunctionReturnType, MethodMap, PrivateMethodMap, PublicMethodMap, ServiceMap } from "./maps/method-map.js";
7
- import { AnyResponse } from "./response.js";
8
- import { AuthToken, SignedAuthToken } from "@socket-mesh/auth";
9
- import { Socket, SocketOptions, SocketStatus, StreamCleanupMode } from "./socket.js";
1
+ import { AuthToken, SignedAuthToken } from '@socket-mesh/auth';
2
+ import { CodecEngine } from '@socket-mesh/formatter';
3
+ import ws from 'isomorphic-ws';
4
+ import { FunctionReturnType, MethodMap, PrivateMethodMap, PublicMethodMap, ServiceMap, ServiceMethodName, ServiceName } from './maps/method-map.js';
5
+ import { AnyPacket } from './packet.js';
6
+ import { AnyPlugin } from './plugins/plugin.js';
7
+ import { AnyRequest } from './request.js';
8
+ import { AnyResponse } from './response.js';
9
+ import { BaseSocket, BaseSocketOptions, Socket, SocketStatus, StreamCleanupMode } from './socket.js';
10
10
  export type CallIdGenerator = () => number;
11
- export interface InvokeMethodOptions<TMethodMap extends MethodMap, TMethod extends keyof TMethodMap> {
12
- method: TMethod;
13
- ackTimeoutMs?: number | false;
11
+ export interface InboundMessage {
12
+ packet: (AnyPacket | AnyResponse)[] | (AnyPacket | AnyResponse) | null;
13
+ timestamp: Date;
14
14
  }
15
- export interface InvokeServiceOptions<TServiceMap extends ServiceMap, TService extends keyof TServiceMap, TMethod extends keyof TServiceMap[TService]> {
16
- service: TService;
15
+ export interface InvokeMethodOptions<TMethodMap extends MethodMap = MethodMap, TMethod extends keyof TMethodMap & string = keyof TMethodMap & string> {
16
+ ackTimeoutMs?: false | number;
17
17
  method: TMethod;
18
- ackTimeoutMs?: number | false;
19
18
  }
20
- export interface InboundMessage<TIncoming extends MethodMap, TOutgoing extends PublicMethodMap, TPrivateOutgoing extends PrivateMethodMap, TService extends ServiceMap> {
21
- timestamp: Date;
22
- packet: (AnyPacket<TIncoming, TService> | AnyResponse<TOutgoing, TPrivateOutgoing, TService>) | (AnyPacket<TIncoming, TService> | AnyResponse<TOutgoing, TPrivateOutgoing, TService>)[];
19
+ export interface InvokeServiceOptions<TServiceMap extends ServiceMap = ServiceMap, TService extends keyof TServiceMap & string = keyof TServiceMap & string, TMethod extends keyof TServiceMap[TService] & string = keyof TServiceMap[TService] & string> {
20
+ ackTimeoutMs?: false | number;
21
+ method: TMethod;
22
+ service: TService;
23
23
  }
24
- export declare class SocketTransport<TIncoming extends MethodMap, TOutgoing extends PublicMethodMap, TPrivateOutgoing extends PrivateMethodMap, TService extends ServiceMap, TState extends object> {
25
- private _socket;
26
- private _webSocket;
24
+ export type SocketTransport<TIncoming extends PublicMethodMap = {}, TOutgoing extends PublicMethodMap = {}, TState extends object = {}, TService extends ServiceMap = {}, TPrivateIncoming extends PrivateMethodMap = {}, TPrivateOutgoing extends PrivateMethodMap = {}> = Omit<BaseSocketTransport<TState>, 'invoke' | 'socket' | 'transmit'> & {
25
+ invoke<TMethod extends keyof TOutgoing & string>(method: TMethod, arg?: Parameters<TOutgoing[TMethod]>[0]): [Promise<FunctionReturnType<TOutgoing[TMethod]>>, () => void];
26
+ invoke<TMethod extends keyof TOutgoing & string>(options: InvokeMethodOptions<TOutgoing, TMethod>, arg?: Parameters<TOutgoing[TMethod]>[0]): [Promise<FunctionReturnType<TOutgoing[TMethod]>>, () => void];
27
+ 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];
28
+ 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];
29
+ invoke<TMethod extends keyof TPrivateOutgoing & string>(method: TMethod, arg?: Parameters<TPrivateOutgoing[TMethod]>[0]): [Promise<FunctionReturnType<TPrivateOutgoing[TMethod]>>, () => void];
30
+ invoke<TMethod extends keyof TPrivateOutgoing & string>(options: InvokeMethodOptions<TPrivateOutgoing, TMethod>, arg?: Parameters<TPrivateOutgoing[TMethod]>[0]): [Promise<FunctionReturnType<TPrivateOutgoing[TMethod]>>, () => void];
31
+ readonly socket: Socket<TIncoming, TOutgoing, TState, TService, TPrivateIncoming, TPrivateOutgoing>;
32
+ transmit<TMethod extends keyof TOutgoing & string>(method: TMethod, arg?: Parameters<TOutgoing[TMethod]>[0]): Promise<void>;
33
+ transmit<TServiceName extends ServiceName<TService>, TMethod extends ServiceMethodName<TService, TServiceName>>(options: [TServiceName, TMethod], arg?: Parameters<TService[TServiceName][TMethod]>[0]): Promise<void>;
34
+ transmit<TMethod extends keyof TPrivateOutgoing & string>(method: TMethod, arg?: Parameters<TPrivateOutgoing[TMethod]>[0]): Promise<void>;
35
+ };
36
+ export declare class BaseSocketTransport<TState extends object = {}> {
37
+ private _authToken;
38
+ private readonly _callbackMap;
39
+ private readonly _callIdGenerator;
40
+ private readonly _handlers;
27
41
  private _inboundProcessedMessageCount;
28
42
  private _inboundReceivedMessageCount;
43
+ private _isReady;
29
44
  private _outboundPreparedMessageCount;
30
45
  private _outboundSentMessageCount;
31
- private _isReady;
32
- private _authToken?;
33
- private _signedAuthToken?;
34
- private readonly _callIdGenerator;
35
- private readonly _callbackMap;
36
- private readonly _handlers;
37
- private _onUnhandledRequest;
46
+ private _pingTimeoutRef;
47
+ private _signedAuthToken;
48
+ private _socket;
49
+ private _webSocket;
50
+ ackTimeoutMs: number;
38
51
  readonly codecEngine: CodecEngine;
39
- readonly plugins: Plugin<TIncoming, TOutgoing, TPrivateOutgoing, TService, TState>[];
52
+ id: null | string;
53
+ readonly plugins: AnyPlugin[];
40
54
  streamCleanupMode: StreamCleanupMode;
41
- id: string | null;
42
- ackTimeoutMs: number;
43
- private _pingTimeoutRef;
44
- protected constructor(options?: SocketOptions<TIncoming, TOutgoing, TPrivateOutgoing, TService, TState>);
55
+ protected constructor(options?: BaseSocketOptions<TState>);
45
56
  protected abortAllPendingCallbacksDueToBadConnection(status: SocketStatus): void;
46
- get authToken(): AuthToken;
57
+ get authToken(): AuthToken | null;
47
58
  changeToUnauthenticatedState(): Promise<boolean>;
48
59
  protected decode(data: string | ws.RawData): any;
49
60
  disconnect(code?: number, reason?: string): void;
50
61
  getBackpressure(): number;
51
62
  getInboundBackpressure(): number;
52
63
  getOutboundBackpressure(): number;
53
- protected handleInboudMessage({ packet, timestamp }: InboundMessage<TIncoming, TOutgoing, TPrivateOutgoing, TService>): Promise<void>;
64
+ protected handleInboudMessage({ packet, timestamp }: InboundMessage): Promise<void>;
65
+ invoke(methodOptions: [string, string, (false | number)?] | InvokeMethodOptions | InvokeServiceOptions | string, arg?: unknown): [Promise<unknown>, () => void];
54
66
  protected onClose(code: number, reason?: Buffer | string): void;
55
67
  protected onDisconnect(status: SocketStatus, code: number, reason?: string): void;
56
68
  onError(error: Error): void;
57
- protected onInvoke<TServiceName extends keyof TService, TServiceMethod extends keyof TService[TServiceName], TMethod extends keyof TOutgoing, TPrivateMethod extends keyof TPrivateOutgoing>(request: InvokeMethodRequest<TOutgoing, TMethod> | InvokeMethodRequest<TPrivateOutgoing, TPrivateMethod> | InvokeServiceRequest<TService, TServiceName, TServiceMethod>): void;
69
+ protected onInvoke(request: AnyRequest): void;
58
70
  protected onMessage(data: ws.Data, isBinary: boolean): void;
59
71
  protected onOpen(): void;
60
72
  protected onPingPong(): void;
61
- protected onRequest(packet: AnyPacket<TIncoming, TService>, timestamp: Date, pluginError?: Error): Promise<boolean>;
62
- protected onResponse(response: AnyResponse<TOutgoing, TPrivateOutgoing, TService>, pluginError?: Error): void;
73
+ protected onRequest(packet: AnyPacket, timestamp: Date, pluginError?: Error): Promise<boolean>;
74
+ protected onResponse(response: AnyResponse, pluginError?: Error): void;
63
75
  private onSocketClose;
64
76
  private onSocketError;
65
77
  private onSocketMessage;
66
- protected onTransmit<TServiceName extends keyof TService, TServiceMethod extends keyof TService[TServiceName], TMethod extends keyof TOutgoing>(request: TransmitMethodRequest<TOutgoing, TMethod> | TransmitServiceRequest<TService, TServiceName, TServiceMethod>): void;
67
- protected onUnhandledRequest(packet: AnyPacket<TIncoming, TService>): boolean;
68
- protected resetPingTimeout(timeoutMs: number | false, code: number): void;
78
+ protected onTransmit(request: AnyRequest): void;
79
+ protected onUnhandledRequest(_: AnyPacket): boolean;
80
+ protected resetPingTimeout(timeoutMs: false | number, code: number): void;
69
81
  send(data: Buffer | string): Promise<void>;
70
- protected sendRequest(requests: (AnyRequest<TOutgoing, TPrivateOutgoing, TService>)[]): void;
71
- protected sendRequest(index: number, requests: (AnyRequest<TOutgoing, TPrivateOutgoing, TService>)[]): void;
72
- protected sendResponse(responses: (AnyResponse<TOutgoing, TPrivateOutgoing, TService>)[]): void;
73
- protected sendResponse(index: number, responses: (AnyResponse<TOutgoing, TPrivateOutgoing, TService>)[]): void;
74
- setAuthorization(authToken: AuthToken): Promise<boolean>;
82
+ protected sendRequest(requests: AnyRequest[]): void;
83
+ protected sendRequest(index: number, requests: AnyRequest[]): void;
84
+ protected sendResponse(responses: AnyResponse[]): void;
85
+ protected sendResponse(index: number, responses: AnyResponse[]): void;
75
86
  setAuthorization(signedAuthToken: SignedAuthToken, authToken?: AuthToken): Promise<boolean>;
76
87
  setReadyStatus(pingTimeoutMs: number, authError?: Error): void;
77
- get signedAuthToken(): SignedAuthToken;
78
- get socket(): Socket<TIncoming, TOutgoing, TPrivateOutgoing, TService, TState>;
79
- set socket(value: Socket<TIncoming, TOutgoing, TPrivateOutgoing, TService, TState>);
88
+ get signedAuthToken(): null | SignedAuthToken;
89
+ get socket(): BaseSocket<TState>;
90
+ set socket(value: BaseSocket<TState>);
80
91
  get status(): SocketStatus;
92
+ transmit(serviceAndMethod: [string, string] | string, arg?: unknown): Promise<void>;
81
93
  triggerAuthenticationEvents(wasSigned: boolean, wasAuthenticated: boolean): void;
82
- transmit<TMethod extends keyof TOutgoing>(method: TMethod, arg?: Parameters<TOutgoing[TMethod]>[0]): Promise<void>;
83
- transmit<TServiceName extends keyof TService, TMethod extends keyof TService[TServiceName]>(options: [TServiceName, TMethod], arg?: Parameters<TService[TServiceName][TMethod]>[0]): Promise<void>;
84
- transmit<TMethod extends keyof TPrivateOutgoing>(method: TMethod, arg?: Parameters<TPrivateOutgoing[TMethod]>[0]): Promise<void>;
85
- invoke<TMethod extends keyof TOutgoing>(method: TMethod, arg?: Parameters<TOutgoing[TMethod]>[0]): [Promise<FunctionReturnType<TOutgoing[TMethod]>>, () => void];
86
- invoke<TServiceName extends keyof TService, TMethod extends keyof TService[TServiceName]>(options: [TServiceName, TMethod, (number | false)?], arg?: Parameters<TService[TServiceName][TMethod]>[0]): [Promise<FunctionReturnType<TService[TServiceName][TMethod]>>, () => void];
87
- invoke<TServiceName extends keyof TService, TMethod extends keyof TService[TServiceName]>(options: InvokeServiceOptions<TService, TServiceName, TMethod>, arg?: Parameters<TService[TServiceName][TMethod]>[0]): [Promise<FunctionReturnType<TService[TServiceName][TMethod]>>, () => void];
88
- invoke<TMethod extends keyof TOutgoing>(options: InvokeMethodOptions<TOutgoing, TMethod>, arg?: Parameters<TOutgoing[TMethod]>[0]): [Promise<FunctionReturnType<TOutgoing[TMethod]>>, () => void];
89
- invoke<TMethod extends keyof TPrivateOutgoing>(method: TMethod, arg: Parameters<TPrivateOutgoing[TMethod]>[0]): [Promise<FunctionReturnType<TPrivateOutgoing[TMethod]>>, () => void];
90
- invoke<TMethod extends keyof TPrivateOutgoing>(options: InvokeMethodOptions<TPrivateOutgoing, TMethod>, arg?: Parameters<TPrivateOutgoing[TMethod]>[0]): [Promise<FunctionReturnType<TPrivateOutgoing[TMethod]>>, () => void];
91
94
  get url(): string;
92
- protected get webSocket(): ws.WebSocket;
93
- protected set webSocket(value: ws.WebSocket | null);
95
+ protected get webSocket(): null | ws.WebSocket;
96
+ protected set webSocket(value: null | ws.WebSocket);
94
97
  }