@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.
Files changed (236) hide show
  1. package/CHANGES.md +25 -0
  2. package/docs/README.md +6 -0
  3. package/docs/Televoke_v2.1.md +499 -0
  4. package/docs/Televoke_v2.md +1 -1
  5. package/lib/client/Client.Constants.d.ts +5 -0
  6. package/lib/client/Client.Constants.d.ts.map +1 -0
  7. package/lib/client/Client.Constants.js +9 -0
  8. package/lib/client/Client.Constants.js.map +1 -0
  9. package/lib/client/Client.decl.d.ts +32 -2
  10. package/lib/client/Client.decl.d.ts.map +1 -1
  11. package/lib/client/Client.decl.js +1 -1
  12. package/lib/client/JsonApiClient.impl.d.ts +1 -1
  13. package/lib/client/JsonApiClient.impl.d.ts.map +1 -1
  14. package/lib/client/JsonApiClient.impl.js +30 -5
  15. package/lib/client/JsonApiClient.impl.js.map +1 -1
  16. package/lib/client/index.d.ts +1 -1
  17. package/lib/client/index.js +1 -1
  18. package/lib/index.d.ts +1 -1
  19. package/lib/index.js +1 -1
  20. package/lib/server/LegacyServerChannel.impl.d.ts +2 -2
  21. package/lib/server/LegacyServerChannel.impl.d.ts.map +1 -1
  22. package/lib/server/LegacyServerChannel.impl.js +1 -1
  23. package/lib/server/Server.decl.d.ts +18 -3
  24. package/lib/server/Server.decl.d.ts.map +1 -1
  25. package/lib/server/Server.decl.js +1 -1
  26. package/lib/server/Server.impl.d.ts +1 -1
  27. package/lib/server/Server.impl.d.ts.map +1 -1
  28. package/lib/server/Server.impl.js +5 -4
  29. package/lib/server/Server.impl.js.map +1 -1
  30. package/lib/server/ServerChannel.d.ts +1 -1
  31. package/lib/server/ServerChannel.js +1 -1
  32. package/lib/server/SimpleJsonApiRouter.d.ts +2 -2
  33. package/lib/server/SimpleJsonApiRouter.d.ts.map +1 -1
  34. package/lib/server/SimpleJsonApiRouter.js +9 -4
  35. package/lib/server/SimpleJsonApiRouter.js.map +1 -1
  36. package/lib/server/index.d.ts +1 -1
  37. package/lib/server/index.js +1 -1
  38. package/lib/shared/BinaryStream.d.ts +1 -1
  39. package/lib/shared/BinaryStream.js +1 -1
  40. package/lib/shared/BinaryStreamManager.d.ts +1 -1
  41. package/lib/shared/BinaryStreamManager.js +1 -1
  42. package/lib/shared/Channel.impl.d.ts +2 -2
  43. package/lib/shared/Channel.impl.d.ts.map +1 -1
  44. package/lib/shared/Channel.impl.js +23 -11
  45. package/lib/shared/Channel.impl.js.map +1 -1
  46. package/lib/shared/Constants.d.ts +1 -1
  47. package/lib/shared/Constants.js +1 -1
  48. package/lib/shared/Encodings/index.d.ts +1 -1
  49. package/lib/shared/Encodings/index.js +1 -1
  50. package/lib/shared/Encodings/v1/EncoderV1.d.ts +1 -1
  51. package/lib/shared/Encodings/v1/EncoderV1.js +1 -1
  52. package/lib/shared/Encodings/v1/Protocol.v1.decls.d.ts +1 -1
  53. package/lib/shared/Encodings/v1/Protocol.v1.decls.js +1 -1
  54. package/lib/shared/Encodings/v1/index.d.ts +1 -1
  55. package/lib/shared/Encodings/v1/index.js +1 -1
  56. package/lib/shared/Encodings/v2/Constants.v2.d.ts +14 -1
  57. package/lib/shared/Encodings/v2/Constants.v2.d.ts.map +1 -1
  58. package/lib/shared/Encodings/v2/Constants.v2.js +17 -2
  59. package/lib/shared/Encodings/v2/Constants.v2.js.map +1 -1
  60. package/lib/shared/Encodings/v2/DecoderV2.d.ts +1 -1
  61. package/lib/shared/Encodings/v2/DecoderV2.d.ts.map +1 -1
  62. package/lib/shared/Encodings/v2/DecoderV2.js +81 -7
  63. package/lib/shared/Encodings/v2/DecoderV2.js.map +1 -1
  64. package/lib/shared/Encodings/v2/EncoderV2.d.ts +3 -2
  65. package/lib/shared/Encodings/v2/EncoderV2.d.ts.map +1 -1
  66. package/lib/shared/Encodings/v2/EncoderV2.js +104 -25
  67. package/lib/shared/Encodings/v2/EncoderV2.js.map +1 -1
  68. package/lib/shared/Encodings/v2/Encoding.v2.decl.d.ts +70 -40
  69. package/lib/shared/Encodings/v2/Encoding.v2.decl.d.ts.map +1 -1
  70. package/lib/shared/Encodings/v2/Encoding.v2.decl.js +1 -1
  71. package/lib/shared/Encodings/v2/index.d.ts +1 -1
  72. package/lib/shared/Encodings/v2/index.js +1 -1
  73. package/lib/shared/Errors.d.ts +2 -1
  74. package/lib/shared/Errors.d.ts.map +1 -1
  75. package/lib/shared/Errors.js +2 -1
  76. package/lib/shared/Errors.js.map +1 -1
  77. package/lib/shared/Shared.decl.d.ts +17 -17
  78. package/lib/shared/Shared.decl.d.ts.map +1 -1
  79. package/lib/shared/Shared.decl.js +1 -1
  80. package/lib/shared/Utils.d.ts +2 -2
  81. package/lib/shared/Utils.d.ts.map +1 -1
  82. package/lib/shared/Utils.js +1 -1
  83. package/lib/shared/Utils.js.map +1 -1
  84. package/lib/shared/index.d.ts +1 -1
  85. package/lib/shared/index.js +1 -1
  86. package/lib/transporters/Transporter.decl.d.ts +1 -1
  87. package/lib/transporters/Transporter.decl.js +1 -1
  88. package/lib/transporters/http-listener/AbstractHttpListener.d.ts +2 -2
  89. package/lib/transporters/http-listener/AbstractHttpListener.d.ts.map +1 -1
  90. package/lib/transporters/http-listener/AbstractHttpListener.js +10 -6
  91. package/lib/transporters/http-listener/AbstractHttpListener.js.map +1 -1
  92. package/lib/transporters/http-listener/Http.Decl.d.ts +1 -5
  93. package/lib/transporters/http-listener/Http.Decl.d.ts.map +1 -1
  94. package/lib/transporters/http-listener/Http.Decl.js +2 -22
  95. package/lib/transporters/http-listener/Http.Decl.js.map +1 -1
  96. package/lib/transporters/http-listener/HttpListener.d.ts +1 -1
  97. package/lib/transporters/http-listener/HttpListener.d.ts.map +1 -1
  98. package/lib/transporters/http-listener/HttpListener.js +4 -2
  99. package/lib/transporters/http-listener/HttpListener.js.map +1 -1
  100. package/lib/transporters/http-listener/HttpUnixSocketListener.d.ts +1 -1
  101. package/lib/transporters/http-listener/HttpUnixSocketListener.d.ts.map +1 -1
  102. package/lib/transporters/http-listener/HttpUnixSocketListener.js +4 -2
  103. package/lib/transporters/http-listener/HttpUnixSocketListener.js.map +1 -1
  104. package/lib/transporters/http-listener/HttpsListener.d.ts +1 -1
  105. package/lib/transporters/http-listener/HttpsListener.d.ts.map +1 -1
  106. package/lib/transporters/http-listener/HttpsListener.js +6 -4
  107. package/lib/transporters/http-listener/HttpsListener.js.map +1 -1
  108. package/lib/transporters/http-listener/index.d.ts +1 -1
  109. package/lib/transporters/http-listener/index.js +1 -1
  110. package/lib/transporters/index.d.ts +1 -1
  111. package/lib/transporters/index.js +1 -1
  112. package/lib/transporters/legacy-http/LegacyHttp.Client.Native.d.ts +12 -2
  113. package/lib/transporters/legacy-http/LegacyHttp.Client.Native.d.ts.map +1 -1
  114. package/lib/transporters/legacy-http/LegacyHttp.Client.Native.js +33 -7
  115. package/lib/transporters/legacy-http/LegacyHttp.Client.Native.js.map +1 -1
  116. package/lib/transporters/legacy-http/LegacyHttp.Server.d.ts +29 -1
  117. package/lib/transporters/legacy-http/LegacyHttp.Server.d.ts.map +1 -1
  118. package/lib/transporters/legacy-http/LegacyHttp.Server.js +35 -10
  119. package/lib/transporters/legacy-http/LegacyHttp.Server.js.map +1 -1
  120. package/lib/transporters/legacy-http/LegacyHttp.Transporter.d.ts +1 -1
  121. package/lib/transporters/legacy-http/LegacyHttp.Transporter.js +1 -1
  122. package/lib/transporters/legacy-http/index.d.ts +1 -1
  123. package/lib/transporters/legacy-http/index.js +1 -1
  124. package/lib/transporters/lwdfx/LwDFX.Tcp.Client.d.ts +1 -1
  125. package/lib/transporters/lwdfx/LwDFX.Tcp.Client.js +1 -1
  126. package/lib/transporters/lwdfx/LwDFX.Tcp.Server.d.ts +1 -1
  127. package/lib/transporters/lwdfx/LwDFX.Tcp.Server.js +1 -1
  128. package/lib/transporters/lwdfx/LwDFX.Tls.Client.d.ts +1 -1
  129. package/lib/transporters/lwdfx/LwDFX.Tls.Client.js +1 -1
  130. package/lib/transporters/lwdfx/LwDFX.Tls.Server.d.ts +1 -1
  131. package/lib/transporters/lwdfx/LwDFX.Tls.Server.js +1 -1
  132. package/lib/transporters/lwdfx/LwDFX.Transporter.d.ts +1 -1
  133. package/lib/transporters/lwdfx/LwDFX.Transporter.js +1 -1
  134. package/lib/transporters/lwdfx/LwDFX.UnixSocket.Client.d.ts +1 -1
  135. package/lib/transporters/lwdfx/LwDFX.UnixSocket.Client.js +1 -1
  136. package/lib/transporters/lwdfx/LwDFX.UnixSocket.Server.d.ts +1 -1
  137. package/lib/transporters/lwdfx/LwDFX.UnixSocket.Server.js +1 -1
  138. package/lib/transporters/lwdfx/LwDFX.decl.d.ts +1 -1
  139. package/lib/transporters/lwdfx/LwDFX.decl.js +1 -1
  140. package/lib/transporters/lwdfx/index.d.ts +1 -1
  141. package/lib/transporters/lwdfx/index.js +1 -1
  142. package/lib/transporters/memory/Memory.Impl.d.ts +1 -1
  143. package/lib/transporters/memory/Memory.Impl.js +1 -1
  144. package/lib/transporters/memory/Memory.Impl.js.map +1 -1
  145. package/lib/transporters/memory/index.d.ts +1 -1
  146. package/lib/transporters/memory/index.js +1 -1
  147. package/lib/transporters/websocket/WebSocket.Client.d.ts +18 -3
  148. package/lib/transporters/websocket/WebSocket.Client.d.ts.map +1 -1
  149. package/lib/transporters/websocket/WebSocket.Client.js +21 -1
  150. package/lib/transporters/websocket/WebSocket.Client.js.map +1 -1
  151. package/lib/transporters/websocket/WebSocket.Server.d.ts +24 -2
  152. package/lib/transporters/websocket/WebSocket.Server.d.ts.map +1 -1
  153. package/lib/transporters/websocket/WebSocket.Server.js +29 -10
  154. package/lib/transporters/websocket/WebSocket.Server.js.map +1 -1
  155. package/lib/transporters/websocket/WebSocket.Transporter.d.ts +1 -1
  156. package/lib/transporters/websocket/WebSocket.Transporter.js +1 -1
  157. package/lib/transporters/websocket/WebSocket.decl.d.ts +1 -1
  158. package/lib/transporters/websocket/WebSocket.decl.js +1 -1
  159. package/lib/transporters/websocket/index.d.ts +1 -1
  160. package/lib/transporters/websocket/index.js +1 -1
  161. package/lib/transporters/worker-thread/WorkerThread.Client.d.ts +1 -1
  162. package/lib/transporters/worker-thread/WorkerThread.Client.js +1 -1
  163. package/lib/transporters/worker-thread/WorkerThread.Constants.d.ts +1 -1
  164. package/lib/transporters/worker-thread/WorkerThread.Constants.js +1 -1
  165. package/lib/transporters/worker-thread/WorkerThread.Errors.d.ts +1 -1
  166. package/lib/transporters/worker-thread/WorkerThread.Errors.d.ts.map +1 -1
  167. package/lib/transporters/worker-thread/WorkerThread.Errors.js +1 -1
  168. package/lib/transporters/worker-thread/WorkerThread.Server.d.ts +1 -1
  169. package/lib/transporters/worker-thread/WorkerThread.Server.js +1 -1
  170. package/lib/transporters/worker-thread/WorkerThread.Transporter.d.ts +1 -1
  171. package/lib/transporters/worker-thread/WorkerThread.Transporter.js +1 -1
  172. package/lib/transporters/worker-thread/index.d.ts +1 -1
  173. package/lib/transporters/worker-thread/index.js +1 -1
  174. package/package.json +5 -5
  175. package/src/lib/client/Client.Constants.ts +4 -0
  176. package/src/lib/client/Client.decl.ts +42 -2
  177. package/src/lib/client/JsonApiClient.impl.ts +59 -8
  178. package/src/lib/client/index.ts +1 -1
  179. package/src/lib/index.ts +1 -1
  180. package/src/lib/server/LegacyServerChannel.impl.ts +2 -2
  181. package/src/lib/server/Server.decl.ts +23 -2
  182. package/src/lib/server/Server.impl.ts +5 -4
  183. package/src/lib/server/ServerChannel.ts +1 -1
  184. package/src/lib/server/SimpleJsonApiRouter.ts +17 -4
  185. package/src/lib/server/index.ts +1 -1
  186. package/src/lib/shared/BinaryStream.ts +1 -1
  187. package/src/lib/shared/BinaryStreamManager.ts +1 -1
  188. package/src/lib/shared/Channel.impl.ts +43 -23
  189. package/src/lib/shared/Constants.ts +1 -1
  190. package/src/lib/shared/Encodings/index.ts +1 -1
  191. package/src/lib/shared/Encodings/v1/EncoderV1.ts +1 -1
  192. package/src/lib/shared/Encodings/v1/Protocol.v1.decls.ts +1 -1
  193. package/src/lib/shared/Encodings/v1/index.ts +1 -1
  194. package/src/lib/shared/Encodings/v2/Constants.v2.ts +20 -1
  195. package/src/lib/shared/Encodings/v2/DecoderV2.ts +137 -15
  196. package/src/lib/shared/Encodings/v2/EncoderV2.ts +160 -36
  197. package/src/lib/shared/Encodings/v2/Encoding.v2.decl.ts +96 -44
  198. package/src/lib/shared/Encodings/v2/index.ts +1 -1
  199. package/src/lib/shared/Errors.ts +2 -1
  200. package/src/lib/shared/Shared.decl.ts +23 -18
  201. package/src/lib/shared/Utils.ts +3 -3
  202. package/src/lib/shared/index.ts +1 -1
  203. package/src/lib/transporters/Transporter.decl.ts +1 -1
  204. package/src/lib/transporters/http-listener/AbstractHttpListener.ts +14 -6
  205. package/src/lib/transporters/http-listener/Http.Decl.ts +1 -27
  206. package/src/lib/transporters/http-listener/HttpListener.ts +10 -2
  207. package/src/lib/transporters/http-listener/HttpUnixSocketListener.ts +10 -2
  208. package/src/lib/transporters/http-listener/HttpsListener.ts +12 -4
  209. package/src/lib/transporters/http-listener/index.ts +1 -1
  210. package/src/lib/transporters/index.ts +1 -1
  211. package/src/lib/transporters/legacy-http/LegacyHttp.Client.Native.ts +60 -10
  212. package/src/lib/transporters/legacy-http/LegacyHttp.Server.ts +58 -10
  213. package/src/lib/transporters/legacy-http/LegacyHttp.Transporter.ts +1 -1
  214. package/src/lib/transporters/legacy-http/index.ts +1 -1
  215. package/src/lib/transporters/lwdfx/LwDFX.Tcp.Client.ts +1 -1
  216. package/src/lib/transporters/lwdfx/LwDFX.Tcp.Server.ts +1 -1
  217. package/src/lib/transporters/lwdfx/LwDFX.Tls.Client.ts +1 -1
  218. package/src/lib/transporters/lwdfx/LwDFX.Tls.Server.ts +1 -1
  219. package/src/lib/transporters/lwdfx/LwDFX.Transporter.ts +1 -1
  220. package/src/lib/transporters/lwdfx/LwDFX.UnixSocket.Client.ts +1 -1
  221. package/src/lib/transporters/lwdfx/LwDFX.UnixSocket.Server.ts +1 -1
  222. package/src/lib/transporters/lwdfx/LwDFX.decl.ts +1 -1
  223. package/src/lib/transporters/lwdfx/index.ts +1 -1
  224. package/src/lib/transporters/memory/Memory.Impl.ts +4 -4
  225. package/src/lib/transporters/memory/index.ts +1 -1
  226. package/src/lib/transporters/websocket/WebSocket.Client.ts +52 -7
  227. package/src/lib/transporters/websocket/WebSocket.Server.ts +59 -12
  228. package/src/lib/transporters/websocket/WebSocket.Transporter.ts +1 -1
  229. package/src/lib/transporters/websocket/WebSocket.decl.ts +1 -1
  230. package/src/lib/transporters/websocket/index.ts +1 -1
  231. package/src/lib/transporters/worker-thread/WorkerThread.Client.ts +1 -1
  232. package/src/lib/transporters/worker-thread/WorkerThread.Constants.ts +1 -1
  233. package/src/lib/transporters/worker-thread/WorkerThread.Errors.ts +1 -1
  234. package/src/lib/transporters/worker-thread/WorkerThread.Server.ts +1 -1
  235. package/src/lib/transporters/worker-thread/WorkerThread.Transporter.ts +1 -1
  236. package/src/lib/transporters/worker-thread/index.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
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 IDataChunkArray = Array<string | Buffer>;
20
+ export type IBinLike = Buffer | string;
21
21
 
22
- export type IDataChunkField = string | Buffer | IDataChunkArray;
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
- readonly cmd: CS.ECommand;
33
+ cmd: CS.ECommand;
30
34
 
31
35
  /**
32
36
  * The type of this packet.
33
37
  */
34
- readonly typ: CS.EPacketType;
38
+ typ: CS.EPacketType;
35
39
 
36
40
  /**
37
41
  * The sequence number of this packet.
38
42
  */
39
- readonly seq: number;
43
+ seq: number;
40
44
 
41
45
  /**
42
46
  * The content of this packet.
43
47
  */
44
- readonly ct: unknown;
48
+ ct: unknown;
45
49
  }
46
50
 
47
51
  export interface IRequestPacket extends ICommandPacket {
48
52
 
49
- readonly typ: CS.EPacketType.REQUEST;
53
+ typ: CS.EPacketType.REQUEST;
50
54
  }
51
55
 
52
- export interface IErrorResponsePacket extends ICommandPacket {
56
+ export interface IErrorReplyPacket extends ICommandPacket {
53
57
 
54
- readonly typ: CS.EPacketType.ERROR_RESPONSE;
58
+ typ: CS.EPacketType.ERROR_RESPONSE;
55
59
 
56
- readonly ct: TelevokeError;
60
+ ct: TelevokeError;
57
61
  }
58
62
 
59
- export interface ISuccessResponsePacket extends ICommandPacket {
63
+ export interface IOkReplyPacket extends ICommandPacket {
60
64
 
61
- readonly typ: CS.EPacketType.SUCCESS_RESPONSE;
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
- readonly cmd: CS.ECommand.API_CALL;
70
+ cmd: CS.ECommand.API_CALL;
67
71
 
68
- readonly ct: {
72
+ ct: {
69
73
 
70
74
  /**
71
75
  * The name of the API to be invoked.
72
76
  */
73
- readonly name: string;
77
+ name: string;
74
78
 
75
79
  /**
76
80
  * The arguments of the API to be invoked.
77
81
  */
78
- readonly body: IDataChunkField;
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 interface IPingRequestPacket extends IRequestPacket {
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
- readonly cmd: CS.ECommand.PING;
104
+ cmd: CS.ECommand.API_CALL;
85
105
 
86
- readonly ct: IDataChunkField;
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 interface IPushMessageRequestPacket extends IRequestPacket {
117
+ export type IApiReplyPacketEncoding = IApiReplyPacket<true>;
90
118
 
91
- readonly cmd: CS.ECommand.PUSH_MESSAGE;
119
+ export type IApiReplyPacketDecoded = IApiReplyPacket<false>;
92
120
 
93
- readonly ct: IDataChunkField;
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
- readonly cmd: CS.ECommand.CLOSE;
160
+ cmd: CS.ECommand.CLOSE;
99
161
 
100
- readonly ct: null;
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
- readonly cmd: CS.ECommand.BINARY_CHUNK;
167
+ cmd: CS.ECommand.BINARY_CHUNK;
106
168
 
107
- readonly ct: {
169
+ ct: {
108
170
 
109
171
  /**
110
172
  * The stream ID of this chunk should be sent to.
111
173
  */
112
- readonly streamId: number;
174
+ streamId: number;
113
175
 
114
176
  /**
115
177
  * The index of this chunk in the stream.
116
178
  */
117
- readonly index: number;
179
+ index: number;
118
180
 
119
181
  /**
120
182
  * The chunk data.
121
183
  */
122
- readonly body: IDataChunkField;
184
+ body: TIsReq extends true ? IEncBinItem : Buffer[];
123
185
  };
124
186
  }
125
187
 
126
- export interface IApiResponsePacket extends ISuccessResponsePacket {
188
+ export type IBinaryChunkRequestPacketEncoding = IBinaryChunkRequestPacket<true>;
127
189
 
128
- readonly cmd: CS.ECommand.API_CALL;
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>;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
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 2024 Angus.Fenying <fenying@litert.org>
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 any[], TRet> = (...args: TArgs) => TRet;
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/ban-types, @typescript-eslint/consistent-type-definitions
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[], any> ? TTrue : TFalse;
26
+ export type IfIsFn<T, TTrue = T, TFalse = never> = T extends IFn<any[], unknown> ? TTrue : TFalse;
27
27
 
28
- export type IfIsOfFn<T, TFn extends IFn<any[], any>, TTrue = T, TFalse = never> = T extends TFn ? TTrue : TFalse;
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<any[]>>): this;
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<any[]>): this;
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<any[]>>): this;
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<any[]>): this;
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<any[]>>): this;
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<any[]>): this;
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<any[]>): this;
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<any[]>): this;
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<any[]>): this;
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<any[]>): this;
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
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
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[]) => any>(fn: T): T {
23
+ export function once<T extends (...args: any[]) => unknown>(fn: T): T {
24
24
 
25
25
  let called = false;
26
- let result: any;
26
+ let result: unknown;
27
27
 
28
28
  return function(...args: any[]) {
29
29
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
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 = dH.DEFAULT_UPGRADE_PROCESSOR;
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 ?? dH.DEFAULT_UPGRADE_PROCESSOR;
42
+ this._upgradeProcessor = processor;
43
43
 
44
- this._gateway
45
- ?.removeAllListeners('upgrade')
46
- .addListener('upgrade', this._upgradeProcessor);
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 2024 Angus.Fenying <fenying@litert.org>
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 2024 Angus.Fenying <fenying@litert.org>
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
- gateway.on('upgrade', this._upgradeProcessor);
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 2024 Angus.Fenying <fenying@litert.org>
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
- gateway.on('upgrade', this._upgradeProcessor);
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 2024 Angus.Fenying <fenying@litert.org>
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
- this._opts.port = (gateway.address() as $Net.AddressInfo).port;
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
- gateway.on('upgrade', this._upgradeProcessor);
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 2024 Angus.Fenying <fenying@litert.org>
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright 2024 Angus.Fenying <fenying@litert.org>
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.