@litert/televoke 1.1.0 → 1.3.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/CHANGES.md +25 -0
- package/docs/README.md +6 -0
- package/docs/Televoke_v2.1.md +499 -0
- package/docs/Televoke_v2.md +1 -1
- package/lib/client/Client.Constants.d.ts +5 -0
- package/lib/client/Client.Constants.d.ts.map +1 -0
- package/lib/client/Client.Constants.js +9 -0
- package/lib/client/Client.Constants.js.map +1 -0
- package/lib/client/Client.decl.d.ts +32 -2
- package/lib/client/Client.decl.d.ts.map +1 -1
- package/lib/client/Client.decl.js +1 -1
- package/lib/client/JsonApiClient.impl.d.ts +1 -1
- package/lib/client/JsonApiClient.impl.d.ts.map +1 -1
- package/lib/client/JsonApiClient.impl.js +30 -5
- package/lib/client/JsonApiClient.impl.js.map +1 -1
- package/lib/client/index.d.ts +1 -1
- package/lib/client/index.js +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/server/LegacyServerChannel.impl.d.ts +2 -2
- package/lib/server/LegacyServerChannel.impl.d.ts.map +1 -1
- package/lib/server/LegacyServerChannel.impl.js +1 -1
- package/lib/server/Server.decl.d.ts +18 -3
- package/lib/server/Server.decl.d.ts.map +1 -1
- package/lib/server/Server.decl.js +1 -1
- package/lib/server/Server.impl.d.ts +1 -1
- package/lib/server/Server.impl.d.ts.map +1 -1
- package/lib/server/Server.impl.js +5 -4
- package/lib/server/Server.impl.js.map +1 -1
- package/lib/server/ServerChannel.d.ts +1 -1
- package/lib/server/ServerChannel.js +1 -1
- package/lib/server/SimpleJsonApiRouter.d.ts +2 -2
- package/lib/server/SimpleJsonApiRouter.d.ts.map +1 -1
- package/lib/server/SimpleJsonApiRouter.js +9 -4
- package/lib/server/SimpleJsonApiRouter.js.map +1 -1
- package/lib/server/index.d.ts +1 -1
- package/lib/server/index.js +1 -1
- package/lib/shared/BinaryStream.d.ts +1 -1
- package/lib/shared/BinaryStream.js +1 -1
- package/lib/shared/BinaryStreamManager.d.ts +1 -1
- package/lib/shared/BinaryStreamManager.js +1 -1
- package/lib/shared/Channel.impl.d.ts +2 -2
- package/lib/shared/Channel.impl.d.ts.map +1 -1
- package/lib/shared/Channel.impl.js +23 -11
- package/lib/shared/Channel.impl.js.map +1 -1
- package/lib/shared/Constants.d.ts +1 -1
- package/lib/shared/Constants.js +1 -1
- package/lib/shared/Encodings/index.d.ts +1 -1
- package/lib/shared/Encodings/index.js +1 -1
- package/lib/shared/Encodings/v1/EncoderV1.d.ts +1 -1
- package/lib/shared/Encodings/v1/EncoderV1.js +1 -1
- package/lib/shared/Encodings/v1/Protocol.v1.decls.d.ts +1 -1
- package/lib/shared/Encodings/v1/Protocol.v1.decls.js +1 -1
- package/lib/shared/Encodings/v1/index.d.ts +1 -1
- package/lib/shared/Encodings/v1/index.js +1 -1
- package/lib/shared/Encodings/v2/Constants.v2.d.ts +14 -1
- package/lib/shared/Encodings/v2/Constants.v2.d.ts.map +1 -1
- package/lib/shared/Encodings/v2/Constants.v2.js +17 -2
- package/lib/shared/Encodings/v2/Constants.v2.js.map +1 -1
- package/lib/shared/Encodings/v2/DecoderV2.d.ts +1 -1
- package/lib/shared/Encodings/v2/DecoderV2.d.ts.map +1 -1
- package/lib/shared/Encodings/v2/DecoderV2.js +81 -7
- package/lib/shared/Encodings/v2/DecoderV2.js.map +1 -1
- package/lib/shared/Encodings/v2/EncoderV2.d.ts +3 -2
- package/lib/shared/Encodings/v2/EncoderV2.d.ts.map +1 -1
- package/lib/shared/Encodings/v2/EncoderV2.js +104 -25
- package/lib/shared/Encodings/v2/EncoderV2.js.map +1 -1
- package/lib/shared/Encodings/v2/Encoding.v2.decl.d.ts +70 -40
- package/lib/shared/Encodings/v2/Encoding.v2.decl.d.ts.map +1 -1
- package/lib/shared/Encodings/v2/Encoding.v2.decl.js +1 -1
- package/lib/shared/Encodings/v2/index.d.ts +1 -1
- package/lib/shared/Encodings/v2/index.js +1 -1
- package/lib/shared/Errors.d.ts +2 -1
- package/lib/shared/Errors.d.ts.map +1 -1
- package/lib/shared/Errors.js +2 -1
- package/lib/shared/Errors.js.map +1 -1
- package/lib/shared/Shared.decl.d.ts +17 -17
- package/lib/shared/Shared.decl.d.ts.map +1 -1
- package/lib/shared/Shared.decl.js +1 -1
- package/lib/shared/Utils.d.ts +2 -2
- package/lib/shared/Utils.d.ts.map +1 -1
- package/lib/shared/Utils.js +1 -1
- package/lib/shared/Utils.js.map +1 -1
- package/lib/shared/index.d.ts +1 -1
- package/lib/shared/index.js +1 -1
- package/lib/transporters/Transporter.decl.d.ts +1 -1
- package/lib/transporters/Transporter.decl.js +1 -1
- package/lib/transporters/http-listener/AbstractHttpListener.d.ts +2 -2
- package/lib/transporters/http-listener/AbstractHttpListener.d.ts.map +1 -1
- package/lib/transporters/http-listener/AbstractHttpListener.js +10 -6
- package/lib/transporters/http-listener/AbstractHttpListener.js.map +1 -1
- package/lib/transporters/http-listener/Http.Decl.d.ts +1 -5
- package/lib/transporters/http-listener/Http.Decl.d.ts.map +1 -1
- package/lib/transporters/http-listener/Http.Decl.js +2 -22
- package/lib/transporters/http-listener/Http.Decl.js.map +1 -1
- package/lib/transporters/http-listener/HttpListener.d.ts +1 -1
- package/lib/transporters/http-listener/HttpListener.d.ts.map +1 -1
- package/lib/transporters/http-listener/HttpListener.js +4 -2
- package/lib/transporters/http-listener/HttpListener.js.map +1 -1
- package/lib/transporters/http-listener/HttpUnixSocketListener.d.ts +1 -1
- package/lib/transporters/http-listener/HttpUnixSocketListener.d.ts.map +1 -1
- package/lib/transporters/http-listener/HttpUnixSocketListener.js +4 -2
- package/lib/transporters/http-listener/HttpUnixSocketListener.js.map +1 -1
- package/lib/transporters/http-listener/HttpsListener.d.ts +1 -1
- package/lib/transporters/http-listener/HttpsListener.d.ts.map +1 -1
- package/lib/transporters/http-listener/HttpsListener.js +6 -4
- package/lib/transporters/http-listener/HttpsListener.js.map +1 -1
- package/lib/transporters/http-listener/index.d.ts +1 -1
- package/lib/transporters/http-listener/index.js +1 -1
- package/lib/transporters/index.d.ts +1 -1
- package/lib/transporters/index.js +1 -1
- package/lib/transporters/legacy-http/LegacyHttp.Client.Native.d.ts +12 -2
- package/lib/transporters/legacy-http/LegacyHttp.Client.Native.d.ts.map +1 -1
- package/lib/transporters/legacy-http/LegacyHttp.Client.Native.js +33 -7
- package/lib/transporters/legacy-http/LegacyHttp.Client.Native.js.map +1 -1
- package/lib/transporters/legacy-http/LegacyHttp.Server.d.ts +29 -1
- package/lib/transporters/legacy-http/LegacyHttp.Server.d.ts.map +1 -1
- package/lib/transporters/legacy-http/LegacyHttp.Server.js +35 -10
- package/lib/transporters/legacy-http/LegacyHttp.Server.js.map +1 -1
- package/lib/transporters/legacy-http/LegacyHttp.Transporter.d.ts +1 -1
- package/lib/transporters/legacy-http/LegacyHttp.Transporter.js +1 -1
- package/lib/transporters/legacy-http/index.d.ts +1 -1
- package/lib/transporters/legacy-http/index.js +1 -1
- package/lib/transporters/lwdfx/LwDFX.Tcp.Client.d.ts +1 -1
- package/lib/transporters/lwdfx/LwDFX.Tcp.Client.js +1 -1
- package/lib/transporters/lwdfx/LwDFX.Tcp.Server.d.ts +1 -1
- package/lib/transporters/lwdfx/LwDFX.Tcp.Server.js +1 -1
- package/lib/transporters/lwdfx/LwDFX.Tls.Client.d.ts +1 -1
- package/lib/transporters/lwdfx/LwDFX.Tls.Client.js +1 -1
- package/lib/transporters/lwdfx/LwDFX.Tls.Server.d.ts +1 -1
- package/lib/transporters/lwdfx/LwDFX.Tls.Server.js +1 -1
- package/lib/transporters/lwdfx/LwDFX.Transporter.d.ts +1 -1
- package/lib/transporters/lwdfx/LwDFX.Transporter.js +1 -1
- package/lib/transporters/lwdfx/LwDFX.UnixSocket.Client.d.ts +1 -1
- package/lib/transporters/lwdfx/LwDFX.UnixSocket.Client.js +1 -1
- package/lib/transporters/lwdfx/LwDFX.UnixSocket.Server.d.ts +1 -1
- package/lib/transporters/lwdfx/LwDFX.UnixSocket.Server.js +1 -1
- package/lib/transporters/lwdfx/LwDFX.decl.d.ts +1 -1
- package/lib/transporters/lwdfx/LwDFX.decl.js +1 -1
- package/lib/transporters/lwdfx/index.d.ts +1 -1
- package/lib/transporters/lwdfx/index.js +1 -1
- package/lib/transporters/memory/Memory.Impl.d.ts +1 -1
- package/lib/transporters/memory/Memory.Impl.js +1 -1
- package/lib/transporters/memory/Memory.Impl.js.map +1 -1
- package/lib/transporters/memory/index.d.ts +1 -1
- package/lib/transporters/memory/index.js +1 -1
- package/lib/transporters/websocket/WebSocket.Client.d.ts +18 -3
- package/lib/transporters/websocket/WebSocket.Client.d.ts.map +1 -1
- package/lib/transporters/websocket/WebSocket.Client.js +21 -1
- package/lib/transporters/websocket/WebSocket.Client.js.map +1 -1
- package/lib/transporters/websocket/WebSocket.Server.d.ts +24 -2
- package/lib/transporters/websocket/WebSocket.Server.d.ts.map +1 -1
- package/lib/transporters/websocket/WebSocket.Server.js +29 -10
- package/lib/transporters/websocket/WebSocket.Server.js.map +1 -1
- package/lib/transporters/websocket/WebSocket.Transporter.d.ts +1 -1
- package/lib/transporters/websocket/WebSocket.Transporter.js +1 -1
- package/lib/transporters/websocket/WebSocket.decl.d.ts +1 -1
- package/lib/transporters/websocket/WebSocket.decl.js +1 -1
- package/lib/transporters/websocket/index.d.ts +1 -1
- package/lib/transporters/websocket/index.js +1 -1
- package/lib/transporters/worker-thread/WorkerThread.Client.d.ts +1 -1
- package/lib/transporters/worker-thread/WorkerThread.Client.js +1 -1
- package/lib/transporters/worker-thread/WorkerThread.Constants.d.ts +1 -1
- package/lib/transporters/worker-thread/WorkerThread.Constants.js +1 -1
- package/lib/transporters/worker-thread/WorkerThread.Errors.d.ts +1 -1
- package/lib/transporters/worker-thread/WorkerThread.Errors.d.ts.map +1 -1
- package/lib/transporters/worker-thread/WorkerThread.Errors.js +1 -1
- package/lib/transporters/worker-thread/WorkerThread.Server.d.ts +1 -1
- package/lib/transporters/worker-thread/WorkerThread.Server.js +1 -1
- package/lib/transporters/worker-thread/WorkerThread.Transporter.d.ts +1 -1
- package/lib/transporters/worker-thread/WorkerThread.Transporter.js +1 -1
- package/lib/transporters/worker-thread/index.d.ts +1 -1
- package/lib/transporters/worker-thread/index.js +1 -1
- package/package.json +5 -5
- package/src/lib/client/Client.Constants.ts +4 -0
- package/src/lib/client/Client.decl.ts +42 -2
- package/src/lib/client/JsonApiClient.impl.ts +59 -8
- package/src/lib/client/index.ts +1 -1
- package/src/lib/index.ts +1 -1
- package/src/lib/server/LegacyServerChannel.impl.ts +2 -2
- package/src/lib/server/Server.decl.ts +23 -2
- package/src/lib/server/Server.impl.ts +5 -4
- package/src/lib/server/ServerChannel.ts +1 -1
- package/src/lib/server/SimpleJsonApiRouter.ts +17 -4
- package/src/lib/server/index.ts +1 -1
- package/src/lib/shared/BinaryStream.ts +1 -1
- package/src/lib/shared/BinaryStreamManager.ts +1 -1
- package/src/lib/shared/Channel.impl.ts +43 -23
- package/src/lib/shared/Constants.ts +1 -1
- package/src/lib/shared/Encodings/index.ts +1 -1
- package/src/lib/shared/Encodings/v1/EncoderV1.ts +1 -1
- package/src/lib/shared/Encodings/v1/Protocol.v1.decls.ts +1 -1
- package/src/lib/shared/Encodings/v1/index.ts +1 -1
- package/src/lib/shared/Encodings/v2/Constants.v2.ts +20 -1
- package/src/lib/shared/Encodings/v2/DecoderV2.ts +137 -15
- package/src/lib/shared/Encodings/v2/EncoderV2.ts +160 -36
- package/src/lib/shared/Encodings/v2/Encoding.v2.decl.ts +96 -44
- package/src/lib/shared/Encodings/v2/index.ts +1 -1
- package/src/lib/shared/Errors.ts +2 -1
- package/src/lib/shared/Shared.decl.ts +23 -18
- package/src/lib/shared/Utils.ts +3 -3
- package/src/lib/shared/index.ts +1 -1
- package/src/lib/transporters/Transporter.decl.ts +1 -1
- package/src/lib/transporters/http-listener/AbstractHttpListener.ts +14 -6
- package/src/lib/transporters/http-listener/Http.Decl.ts +1 -27
- package/src/lib/transporters/http-listener/HttpListener.ts +10 -2
- package/src/lib/transporters/http-listener/HttpUnixSocketListener.ts +10 -2
- package/src/lib/transporters/http-listener/HttpsListener.ts +12 -4
- package/src/lib/transporters/http-listener/index.ts +1 -1
- package/src/lib/transporters/index.ts +1 -1
- package/src/lib/transporters/legacy-http/LegacyHttp.Client.Native.ts +60 -10
- package/src/lib/transporters/legacy-http/LegacyHttp.Server.ts +58 -10
- package/src/lib/transporters/legacy-http/LegacyHttp.Transporter.ts +1 -1
- package/src/lib/transporters/legacy-http/index.ts +1 -1
- package/src/lib/transporters/lwdfx/LwDFX.Tcp.Client.ts +1 -1
- package/src/lib/transporters/lwdfx/LwDFX.Tcp.Server.ts +1 -1
- package/src/lib/transporters/lwdfx/LwDFX.Tls.Client.ts +1 -1
- package/src/lib/transporters/lwdfx/LwDFX.Tls.Server.ts +1 -1
- package/src/lib/transporters/lwdfx/LwDFX.Transporter.ts +1 -1
- package/src/lib/transporters/lwdfx/LwDFX.UnixSocket.Client.ts +1 -1
- package/src/lib/transporters/lwdfx/LwDFX.UnixSocket.Server.ts +1 -1
- package/src/lib/transporters/lwdfx/LwDFX.decl.ts +1 -1
- package/src/lib/transporters/lwdfx/index.ts +1 -1
- package/src/lib/transporters/memory/Memory.Impl.ts +4 -4
- package/src/lib/transporters/memory/index.ts +1 -1
- package/src/lib/transporters/websocket/WebSocket.Client.ts +52 -7
- package/src/lib/transporters/websocket/WebSocket.Server.ts +59 -12
- package/src/lib/transporters/websocket/WebSocket.Transporter.ts +1 -1
- package/src/lib/transporters/websocket/WebSocket.decl.ts +1 -1
- package/src/lib/transporters/websocket/index.ts +1 -1
- package/src/lib/transporters/worker-thread/WorkerThread.Client.ts +1 -1
- package/src/lib/transporters/worker-thread/WorkerThread.Constants.ts +1 -1
- package/src/lib/transporters/worker-thread/WorkerThread.Errors.ts +1 -1
- package/src/lib/transporters/worker-thread/WorkerThread.Server.ts +1 -1
- package/src/lib/transporters/worker-thread/WorkerThread.Transporter.ts +1 -1
- package/src/lib/transporters/worker-thread/index.ts +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright
|
|
2
|
+
* Copyright 2025 Angus.Fenying <fenying@litert.org>
|
|
3
3
|
*
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
@@ -17,122 +17,174 @@
|
|
|
17
17
|
import type * as CS from './Constants.v2';
|
|
18
18
|
import type { TelevokeError } from '../../Errors';
|
|
19
19
|
|
|
20
|
-
export type
|
|
20
|
+
export type IBinLike = Buffer | string;
|
|
21
21
|
|
|
22
|
-
export type
|
|
22
|
+
export type IBinLikeArray = IBinLike[];
|
|
23
|
+
|
|
24
|
+
export type IDecBinItem = Buffer[];
|
|
25
|
+
|
|
26
|
+
export type IEncBinItem = IBinLike | IBinLikeArray;
|
|
23
27
|
|
|
24
28
|
export interface ICommandPacket {
|
|
25
29
|
|
|
26
30
|
/**
|
|
27
31
|
* The command of this packet.
|
|
28
32
|
*/
|
|
29
|
-
|
|
33
|
+
cmd: CS.ECommand;
|
|
30
34
|
|
|
31
35
|
/**
|
|
32
36
|
* The type of this packet.
|
|
33
37
|
*/
|
|
34
|
-
|
|
38
|
+
typ: CS.EPacketType;
|
|
35
39
|
|
|
36
40
|
/**
|
|
37
41
|
* The sequence number of this packet.
|
|
38
42
|
*/
|
|
39
|
-
|
|
43
|
+
seq: number;
|
|
40
44
|
|
|
41
45
|
/**
|
|
42
46
|
* The content of this packet.
|
|
43
47
|
*/
|
|
44
|
-
|
|
48
|
+
ct: unknown;
|
|
45
49
|
}
|
|
46
50
|
|
|
47
51
|
export interface IRequestPacket extends ICommandPacket {
|
|
48
52
|
|
|
49
|
-
|
|
53
|
+
typ: CS.EPacketType.REQUEST;
|
|
50
54
|
}
|
|
51
55
|
|
|
52
|
-
export interface
|
|
56
|
+
export interface IErrorReplyPacket extends ICommandPacket {
|
|
53
57
|
|
|
54
|
-
|
|
58
|
+
typ: CS.EPacketType.ERROR_RESPONSE;
|
|
55
59
|
|
|
56
|
-
|
|
60
|
+
ct: TelevokeError;
|
|
57
61
|
}
|
|
58
62
|
|
|
59
|
-
export interface
|
|
63
|
+
export interface IOkReplyPacket extends ICommandPacket {
|
|
60
64
|
|
|
61
|
-
|
|
65
|
+
typ: CS.EPacketType.SUCCESS_RESPONSE;
|
|
62
66
|
}
|
|
63
67
|
|
|
64
|
-
export interface IApiRequestPacket extends IRequestPacket {
|
|
68
|
+
export interface IApiRequestPacket<TIsReq extends boolean> extends IRequestPacket {
|
|
65
69
|
|
|
66
|
-
|
|
70
|
+
cmd: CS.ECommand.API_CALL;
|
|
67
71
|
|
|
68
|
-
|
|
72
|
+
ct: {
|
|
69
73
|
|
|
70
74
|
/**
|
|
71
75
|
* The name of the API to be invoked.
|
|
72
76
|
*/
|
|
73
|
-
|
|
77
|
+
name: string;
|
|
74
78
|
|
|
75
79
|
/**
|
|
76
80
|
* The arguments of the API to be invoked.
|
|
77
81
|
*/
|
|
78
|
-
|
|
82
|
+
body: TIsReq extends true ? IEncBinItem : Buffer[];
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* The encoding identifier of the body.
|
|
86
|
+
*
|
|
87
|
+
* @default 0 which means JSON
|
|
88
|
+
*/
|
|
89
|
+
bodyEnc?: number;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* The extension binary chunks of the API to be invoked.
|
|
93
|
+
*/
|
|
94
|
+
binChunks?: TIsReq extends true ? IEncBinItem[] : Buffer[][];
|
|
79
95
|
};
|
|
80
96
|
}
|
|
81
97
|
|
|
82
|
-
export
|
|
98
|
+
export type IApiRequestPacketEncoding = IApiRequestPacket<true>;
|
|
99
|
+
|
|
100
|
+
export type IApiRequestPacketDecoded = IApiRequestPacket<false>;
|
|
101
|
+
|
|
102
|
+
export interface IApiReplyPacket<TIsReq extends boolean> extends IOkReplyPacket {
|
|
83
103
|
|
|
84
|
-
|
|
104
|
+
cmd: CS.ECommand.API_CALL;
|
|
85
105
|
|
|
86
|
-
|
|
106
|
+
ct: {
|
|
107
|
+
|
|
108
|
+
body: TIsReq extends true ? IEncBinItem : Buffer[];
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* The extension binary chunks of the API to be invoked.
|
|
112
|
+
*/
|
|
113
|
+
binChunks?: TIsReq extends true ? IEncBinItem[] : Buffer[][];
|
|
114
|
+
};
|
|
87
115
|
}
|
|
88
116
|
|
|
89
|
-
export
|
|
117
|
+
export type IApiReplyPacketEncoding = IApiReplyPacket<true>;
|
|
90
118
|
|
|
91
|
-
|
|
119
|
+
export type IApiReplyPacketDecoded = IApiReplyPacket<false>;
|
|
92
120
|
|
|
93
|
-
|
|
121
|
+
// PING Command
|
|
122
|
+
|
|
123
|
+
export interface IPingRequestPacket<TIsReq extends boolean> extends IRequestPacket {
|
|
124
|
+
|
|
125
|
+
cmd: CS.ECommand.PING;
|
|
126
|
+
|
|
127
|
+
ct: TIsReq extends true ? IEncBinItem : IDecBinItem;
|
|
94
128
|
}
|
|
95
129
|
|
|
130
|
+
export type IPingRequestPacketEncoding = IPingRequestPacket<true>;
|
|
131
|
+
|
|
132
|
+
export type IPingRequestPacketDecoded = IPingRequestPacket<false>;
|
|
133
|
+
|
|
134
|
+
export interface IPingReplyPacket<TIsReq extends boolean> extends IOkReplyPacket {
|
|
135
|
+
|
|
136
|
+
cmd: CS.ECommand.PING;
|
|
137
|
+
|
|
138
|
+
ct: TIsReq extends true ? IEncBinItem : Buffer[];
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export type IPingReplyPacketEncoding = IPingReplyPacket<true>;
|
|
142
|
+
|
|
143
|
+
export type IPingReplyPacketDecoded = IPingReplyPacket<false>;
|
|
144
|
+
|
|
145
|
+
// PUSH_MESSAGE Command
|
|
146
|
+
|
|
147
|
+
export interface IPushMessageRequestPacket<TIsReq extends boolean> extends IRequestPacket {
|
|
148
|
+
|
|
149
|
+
cmd: CS.ECommand.PUSH_MESSAGE;
|
|
150
|
+
|
|
151
|
+
ct: TIsReq extends true ? IEncBinItem : Buffer[];
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export type IPushMessageRequestPacketEncoding = IPushMessageRequestPacket<true>;
|
|
155
|
+
|
|
156
|
+
export type IPushMessageRequestPacketDecoded = IPushMessageRequestPacket<false>;
|
|
157
|
+
|
|
96
158
|
export interface ICloseRequestPacket extends IRequestPacket {
|
|
97
159
|
|
|
98
|
-
|
|
160
|
+
cmd: CS.ECommand.CLOSE;
|
|
99
161
|
|
|
100
|
-
|
|
162
|
+
ct: null;
|
|
101
163
|
}
|
|
102
164
|
|
|
103
|
-
export interface IBinaryChunkRequestPacket extends IRequestPacket {
|
|
165
|
+
export interface IBinaryChunkRequestPacket<TIsReq extends boolean> extends IRequestPacket {
|
|
104
166
|
|
|
105
|
-
|
|
167
|
+
cmd: CS.ECommand.BINARY_CHUNK;
|
|
106
168
|
|
|
107
|
-
|
|
169
|
+
ct: {
|
|
108
170
|
|
|
109
171
|
/**
|
|
110
172
|
* The stream ID of this chunk should be sent to.
|
|
111
173
|
*/
|
|
112
|
-
|
|
174
|
+
streamId: number;
|
|
113
175
|
|
|
114
176
|
/**
|
|
115
177
|
* The index of this chunk in the stream.
|
|
116
178
|
*/
|
|
117
|
-
|
|
179
|
+
index: number;
|
|
118
180
|
|
|
119
181
|
/**
|
|
120
182
|
* The chunk data.
|
|
121
183
|
*/
|
|
122
|
-
|
|
184
|
+
body: TIsReq extends true ? IEncBinItem : Buffer[];
|
|
123
185
|
};
|
|
124
186
|
}
|
|
125
187
|
|
|
126
|
-
export
|
|
188
|
+
export type IBinaryChunkRequestPacketEncoding = IBinaryChunkRequestPacket<true>;
|
|
127
189
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
readonly ct: IDataChunkField;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
export interface IPingResponsePacket extends ISuccessResponsePacket {
|
|
134
|
-
|
|
135
|
-
readonly cmd: CS.ECommand.PING;
|
|
136
|
-
|
|
137
|
-
readonly ct: IDataChunkField;
|
|
138
|
-
}
|
|
190
|
+
export type IBinaryChunkRequestPacketDecoded = IBinaryChunkRequestPacket<false>;
|
package/src/lib/shared/Errors.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright
|
|
2
|
+
* Copyright 2025 Angus.Fenying <fenying@litert.org>
|
|
3
3
|
*
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
@@ -69,6 +69,7 @@ const errorCtors = {
|
|
|
69
69
|
...defineProtocolError('channel_inactive'),
|
|
70
70
|
...defineProtocolError('channel_closed'),
|
|
71
71
|
...defineProtocolError('api_not_found'),
|
|
72
|
+
...defineProtocolError('unk_api_enc'),
|
|
72
73
|
...defineProtocolError('cmd_not_impl'),
|
|
73
74
|
...defineProtocolError('network_error'),
|
|
74
75
|
...defineProtocolError('stream_not_found'),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright
|
|
2
|
+
* Copyright 2025 Angus.Fenying <fenying@litert.org>
|
|
3
3
|
*
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
@@ -14,18 +14,23 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import { Readable } from 'node:stream';
|
|
17
|
+
import type { Readable } from 'node:stream';
|
|
18
18
|
|
|
19
|
-
export type IFn<TArgs extends
|
|
19
|
+
export type IFn<TArgs extends unknown[], TRet> = (...args: TArgs) => TRet;
|
|
20
20
|
|
|
21
|
-
export type IVoidFn<TArgs extends any[]> = IFn<TArgs, void>;
|
|
21
|
+
export type IVoidFn<TArgs extends any[] = any[]> = IFn<TArgs, void>;
|
|
22
22
|
|
|
23
|
-
// eslint-disable-next-line @typescript-eslint/
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-restricted-types, @typescript-eslint/consistent-type-definitions
|
|
24
24
|
export type IObject = {};
|
|
25
25
|
|
|
26
|
-
export type IfIsFn<T, TTrue = T, TFalse = never> = T extends IFn<any[],
|
|
26
|
+
export type IfIsFn<T, TTrue = T, TFalse = never> = T extends IFn<any[], unknown> ? TTrue : TFalse;
|
|
27
27
|
|
|
28
|
-
export type IfIsOfFn<
|
|
28
|
+
export type IfIsOfFn<
|
|
29
|
+
T,
|
|
30
|
+
TFn extends IFn<unknown[], unknown>,
|
|
31
|
+
TTrue = T,
|
|
32
|
+
TFalse = never
|
|
33
|
+
> = T extends TFn ? TTrue : TFalse;
|
|
29
34
|
|
|
30
35
|
export interface IEventListener<T extends IDefaultEvents> {
|
|
31
36
|
|
|
@@ -37,7 +42,7 @@ export interface IEventListener<T extends IDefaultEvents> {
|
|
|
37
42
|
* @param event The event name.
|
|
38
43
|
* @param listener The listener function.
|
|
39
44
|
*/
|
|
40
|
-
on<TKey extends keyof T>(event: TKey, listener: IfIsOfFn<T[TKey], IVoidFn
|
|
45
|
+
on<TKey extends keyof T>(event: TKey, listener: IfIsOfFn<T[TKey], IVoidFn>): this;
|
|
41
46
|
|
|
42
47
|
/**
|
|
43
48
|
* Register a listener for the given event.
|
|
@@ -47,7 +52,7 @@ export interface IEventListener<T extends IDefaultEvents> {
|
|
|
47
52
|
* @param event The event name.
|
|
48
53
|
* @param listener The listener function.
|
|
49
54
|
*/
|
|
50
|
-
on(event: string | symbol, listener: IVoidFn
|
|
55
|
+
on(event: string | symbol, listener: IVoidFn): this;
|
|
51
56
|
|
|
52
57
|
/**
|
|
53
58
|
* Register a one-time listener for the given event.
|
|
@@ -57,7 +62,7 @@ export interface IEventListener<T extends IDefaultEvents> {
|
|
|
57
62
|
* @param event The event name.
|
|
58
63
|
* @param listener The listener function.
|
|
59
64
|
*/
|
|
60
|
-
once<TKey extends keyof T>(event: TKey, listener: IfIsOfFn<T[TKey], IVoidFn
|
|
65
|
+
once<TKey extends keyof T>(event: TKey, listener: IfIsOfFn<T[TKey], IVoidFn>): this;
|
|
61
66
|
|
|
62
67
|
/**
|
|
63
68
|
* Register a one-time listener for the given event.
|
|
@@ -67,7 +72,7 @@ export interface IEventListener<T extends IDefaultEvents> {
|
|
|
67
72
|
* @param event The event name.
|
|
68
73
|
* @param listener The listener function.
|
|
69
74
|
*/
|
|
70
|
-
once(event: string | symbol, listener: IVoidFn
|
|
75
|
+
once(event: string | symbol, listener: IVoidFn): this;
|
|
71
76
|
|
|
72
77
|
/**
|
|
73
78
|
* Register a listener for the given event.
|
|
@@ -77,7 +82,7 @@ export interface IEventListener<T extends IDefaultEvents> {
|
|
|
77
82
|
* @param event The event name.
|
|
78
83
|
* @param listener The listener function.
|
|
79
84
|
*/
|
|
80
|
-
addListener<TKey extends keyof T>(event: TKey, listener: IfIsOfFn<T[TKey], IVoidFn
|
|
85
|
+
addListener<TKey extends keyof T>(event: TKey, listener: IfIsOfFn<T[TKey], IVoidFn>): this;
|
|
81
86
|
|
|
82
87
|
/**
|
|
83
88
|
* Register a listener for the given event.
|
|
@@ -87,7 +92,7 @@ export interface IEventListener<T extends IDefaultEvents> {
|
|
|
87
92
|
* @param event The event name.
|
|
88
93
|
* @param listener The listener function.
|
|
89
94
|
*/
|
|
90
|
-
addListener(event: string | symbol, listener: IVoidFn
|
|
95
|
+
addListener(event: string | symbol, listener: IVoidFn): this;
|
|
91
96
|
|
|
92
97
|
/**
|
|
93
98
|
* Remove the given listener for the given event.
|
|
@@ -97,7 +102,7 @@ export interface IEventListener<T extends IDefaultEvents> {
|
|
|
97
102
|
* @param event The event name.
|
|
98
103
|
* @param listener The listener function.
|
|
99
104
|
*/
|
|
100
|
-
removeListener<TKey extends keyof T>(event: TKey, listener: IVoidFn
|
|
105
|
+
removeListener<TKey extends keyof T>(event: TKey, listener: IVoidFn): this;
|
|
101
106
|
|
|
102
107
|
/**
|
|
103
108
|
* Remove the given listener for the given event.
|
|
@@ -107,7 +112,7 @@ export interface IEventListener<T extends IDefaultEvents> {
|
|
|
107
112
|
* @param event The event name.
|
|
108
113
|
* @param listener The listener function.
|
|
109
114
|
*/
|
|
110
|
-
removeListener(event: string | symbol, listener: IVoidFn
|
|
115
|
+
removeListener(event: string | symbol, listener: IVoidFn): this;
|
|
111
116
|
|
|
112
117
|
/**
|
|
113
118
|
* Remove the given listener for the given event.
|
|
@@ -117,7 +122,7 @@ export interface IEventListener<T extends IDefaultEvents> {
|
|
|
117
122
|
* @param event The event name.
|
|
118
123
|
* @param listener The listener function.
|
|
119
124
|
*/
|
|
120
|
-
off<TKey extends keyof T>(event: TKey, listener: IVoidFn
|
|
125
|
+
off<TKey extends keyof T>(event: TKey, listener: IVoidFn): this;
|
|
121
126
|
|
|
122
127
|
/**
|
|
123
128
|
* Remove the given listener for the given event.
|
|
@@ -127,7 +132,7 @@ export interface IEventListener<T extends IDefaultEvents> {
|
|
|
127
132
|
* @param event The event name.
|
|
128
133
|
* @param listener The listener function.
|
|
129
134
|
*/
|
|
130
|
-
off(event: string | symbol, listener: IVoidFn
|
|
135
|
+
off(event: string | symbol, listener: IVoidFn): this;
|
|
131
136
|
|
|
132
137
|
/**
|
|
133
138
|
* Remove all listeners for the given event.
|
|
@@ -372,5 +377,5 @@ export interface IChannelBase<TEvents extends IDefaultEvents> extends IEventList
|
|
|
372
377
|
/**
|
|
373
378
|
* Close the channel.
|
|
374
379
|
*/
|
|
375
|
-
close(): void
|
|
380
|
+
close(): void | Promise<void>;
|
|
376
381
|
}
|
package/src/lib/shared/Utils.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright
|
|
2
|
+
* Copyright 2025 Angus.Fenying <fenying@litert.org>
|
|
3
3
|
*
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
@@ -20,10 +20,10 @@
|
|
|
20
20
|
* @param fn The function to call.
|
|
21
21
|
* @returns The wrapped function.
|
|
22
22
|
*/
|
|
23
|
-
export function once<T extends (...args: any[]) =>
|
|
23
|
+
export function once<T extends (...args: any[]) => unknown>(fn: T): T {
|
|
24
24
|
|
|
25
25
|
let called = false;
|
|
26
|
-
let result:
|
|
26
|
+
let result: unknown;
|
|
27
27
|
|
|
28
28
|
return function(...args: any[]) {
|
|
29
29
|
|
package/src/lib/shared/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright
|
|
2
|
+
* Copyright 2025 Angus.Fenying <fenying@litert.org>
|
|
3
3
|
*
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
@@ -24,7 +24,7 @@ export abstract class AbstractHttpListener extends EventEmitter implements dH.IH
|
|
|
24
24
|
|
|
25
25
|
public port: number = 0;
|
|
26
26
|
|
|
27
|
-
protected _upgradeProcessor: dH.IUpgradeProcessor =
|
|
27
|
+
protected _upgradeProcessor: dH.IUpgradeProcessor | null = null;
|
|
28
28
|
|
|
29
29
|
protected _apiProcessor: dH.ILegacyHttpApiProcessor = dH.DEFAULT_LEGACY_HTTP_API_PROCESSOR;
|
|
30
30
|
|
|
@@ -39,11 +39,19 @@ export abstract class AbstractHttpListener extends EventEmitter implements dH.IH
|
|
|
39
39
|
|
|
40
40
|
public setUpgradeProcessor(processor: dH.IUpgradeProcessor | null): void {
|
|
41
41
|
|
|
42
|
-
this._upgradeProcessor = processor
|
|
42
|
+
this._upgradeProcessor = processor;
|
|
43
43
|
|
|
44
|
-
this._gateway
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
if (!this._gateway) {
|
|
45
|
+
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
this._gateway.removeAllListeners('upgrade');
|
|
50
|
+
|
|
51
|
+
if (this._upgradeProcessor !== null) {
|
|
52
|
+
|
|
53
|
+
this._gateway.addListener('upgrade', this._upgradeProcessor);
|
|
54
|
+
}
|
|
47
55
|
}
|
|
48
56
|
|
|
49
57
|
public get running(): boolean {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright
|
|
2
|
+
* Copyright 2025 Angus.Fenying <fenying@litert.org>
|
|
3
3
|
*
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
@@ -67,7 +67,6 @@ const DEFAULT_REFUSE_STATUS_CODE = 400;
|
|
|
67
67
|
*/
|
|
68
68
|
export const DEFAULT_LEGACY_HTTP_API_PROCESSOR: ILegacyHttpApiProcessor = function(_req, resp): void {
|
|
69
69
|
|
|
70
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
71
70
|
resp.writeHead(DEFAULT_REFUSE_STATUS_CODE, {
|
|
72
71
|
'Content-Type': 'text/plain',
|
|
73
72
|
'Content-Length': DEFAULT_REFUSE_PAYLOAD.byteLength,
|
|
@@ -75,31 +74,6 @@ export const DEFAULT_LEGACY_HTTP_API_PROCESSOR: ILegacyHttpApiProcessor = functi
|
|
|
75
74
|
resp.end(DEFAULT_REFUSE_PAYLOAD);
|
|
76
75
|
};
|
|
77
76
|
|
|
78
|
-
/**
|
|
79
|
-
* The default upgrade processor, it will destroy the socket.
|
|
80
|
-
*/
|
|
81
|
-
export const DEFAULT_UPGRADE_PROCESSOR: IUpgradeProcessor = function(req): void {
|
|
82
|
-
|
|
83
|
-
const socket = req.socket;
|
|
84
|
-
|
|
85
|
-
const header: Http.OutgoingHttpHeaders = {
|
|
86
|
-
'Content-Type': 'text/plain',
|
|
87
|
-
'Content-Length': DEFAULT_REFUSE_PAYLOAD.byteLength,
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
socket.write([
|
|
91
|
-
`HTTP/1.1 ${DEFAULT_REFUSE_STATUS_CODE}`,
|
|
92
|
-
...Object.entries(header).map(([k, v]) => `${k}: ${v as string}`),
|
|
93
|
-
''
|
|
94
|
-
].join('\r\n'));
|
|
95
|
-
|
|
96
|
-
socket.write(DEFAULT_REFUSE_PAYLOAD);
|
|
97
|
-
|
|
98
|
-
socket.write('\r\n');
|
|
99
|
-
|
|
100
|
-
socket.end();
|
|
101
|
-
};
|
|
102
|
-
|
|
103
77
|
export interface IHttpListenerOptions {
|
|
104
78
|
|
|
105
79
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright
|
|
2
|
+
* Copyright 2025 Angus.Fenying <fenying@litert.org>
|
|
3
3
|
*
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
@@ -46,13 +46,21 @@ class HttpListener extends AbstractHttpListener {
|
|
|
46
46
|
}).on('listening', () => {
|
|
47
47
|
|
|
48
48
|
gateway.removeAllListeners('error');
|
|
49
|
+
|
|
49
50
|
this._gateway = gateway;
|
|
51
|
+
|
|
50
52
|
if (this.port === 0) {
|
|
51
53
|
|
|
52
54
|
this.port = (gateway.address() as $Net.AddressInfo).port;
|
|
53
55
|
}
|
|
56
|
+
|
|
54
57
|
gateway.on('error', (e) => this.emit('error', e));
|
|
55
|
-
|
|
58
|
+
|
|
59
|
+
if (this._upgradeProcessor !== null) {
|
|
60
|
+
|
|
61
|
+
gateway.on('upgrade', this._upgradeProcessor);
|
|
62
|
+
}
|
|
63
|
+
|
|
56
64
|
resolve();
|
|
57
65
|
});
|
|
58
66
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright
|
|
2
|
+
* Copyright 2025 Angus.Fenying <fenying@litert.org>
|
|
3
3
|
*
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
@@ -45,13 +45,21 @@ class HttpUnixSocketListener extends AbstractHttpListener {
|
|
|
45
45
|
}).on('listening', () => {
|
|
46
46
|
|
|
47
47
|
gateway.removeAllListeners('error');
|
|
48
|
+
|
|
48
49
|
this._gateway = gateway;
|
|
50
|
+
|
|
49
51
|
if (this.port === 0) {
|
|
50
52
|
|
|
51
53
|
this.port = (gateway.address() as $Net.AddressInfo).port;
|
|
52
54
|
}
|
|
55
|
+
|
|
53
56
|
gateway.on('error', (e) => this.emit('error', e));
|
|
54
|
-
|
|
57
|
+
|
|
58
|
+
if (this._upgradeProcessor !== null) {
|
|
59
|
+
|
|
60
|
+
gateway.on('upgrade', this._upgradeProcessor);
|
|
61
|
+
}
|
|
62
|
+
|
|
55
63
|
resolve();
|
|
56
64
|
});
|
|
57
65
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright
|
|
2
|
+
* Copyright 2025 Angus.Fenying <fenying@litert.org>
|
|
3
3
|
*
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
@@ -46,13 +46,21 @@ class HttpsListener extends AbstractHttpListener {
|
|
|
46
46
|
}).on('listening', () => {
|
|
47
47
|
|
|
48
48
|
gateway.removeAllListeners('error');
|
|
49
|
+
|
|
49
50
|
this._gateway = gateway;
|
|
50
|
-
if (this._opts.port === 0) {
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
if (this.port === 0) {
|
|
53
|
+
|
|
54
|
+
this.port = (gateway.address() as $Net.AddressInfo).port;
|
|
53
55
|
}
|
|
56
|
+
|
|
54
57
|
gateway.on('error', (e) => this.emit('error', e));
|
|
55
|
-
|
|
58
|
+
|
|
59
|
+
if (this._upgradeProcessor !== null) {
|
|
60
|
+
|
|
61
|
+
gateway.on('upgrade', this._upgradeProcessor);
|
|
62
|
+
}
|
|
63
|
+
|
|
56
64
|
resolve();
|
|
57
65
|
});
|
|
58
66
|
});
|