@litert/televoke 1.2.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/CHANGES.md +22 -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 +31 -1
  10. package/lib/client/Client.decl.d.ts.map +1 -1
  11. package/lib/client/JsonApiClient.impl.d.ts.map +1 -1
  12. package/lib/client/JsonApiClient.impl.js +29 -4
  13. package/lib/client/JsonApiClient.impl.js.map +1 -1
  14. package/lib/server/LegacyServerChannel.impl.d.ts +1 -1
  15. package/lib/server/LegacyServerChannel.impl.d.ts.map +1 -1
  16. package/lib/server/Server.decl.d.ts +17 -2
  17. package/lib/server/Server.decl.d.ts.map +1 -1
  18. package/lib/server/Server.impl.d.ts.map +1 -1
  19. package/lib/server/Server.impl.js +4 -3
  20. package/lib/server/Server.impl.js.map +1 -1
  21. package/lib/server/SimpleJsonApiRouter.d.ts +1 -1
  22. package/lib/server/SimpleJsonApiRouter.d.ts.map +1 -1
  23. package/lib/server/SimpleJsonApiRouter.js +8 -3
  24. package/lib/server/SimpleJsonApiRouter.js.map +1 -1
  25. package/lib/shared/Channel.impl.d.ts +1 -1
  26. package/lib/shared/Channel.impl.d.ts.map +1 -1
  27. package/lib/shared/Channel.impl.js +22 -10
  28. package/lib/shared/Channel.impl.js.map +1 -1
  29. package/lib/shared/Encodings/v2/Constants.v2.d.ts +13 -0
  30. package/lib/shared/Encodings/v2/Constants.v2.d.ts.map +1 -1
  31. package/lib/shared/Encodings/v2/Constants.v2.js +16 -1
  32. package/lib/shared/Encodings/v2/Constants.v2.js.map +1 -1
  33. package/lib/shared/Encodings/v2/DecoderV2.d.ts.map +1 -1
  34. package/lib/shared/Encodings/v2/DecoderV2.js +80 -6
  35. package/lib/shared/Encodings/v2/DecoderV2.js.map +1 -1
  36. package/lib/shared/Encodings/v2/EncoderV2.d.ts +2 -1
  37. package/lib/shared/Encodings/v2/EncoderV2.d.ts.map +1 -1
  38. package/lib/shared/Encodings/v2/EncoderV2.js +103 -24
  39. package/lib/shared/Encodings/v2/EncoderV2.js.map +1 -1
  40. package/lib/shared/Encodings/v2/Encoding.v2.decl.d.ts +69 -39
  41. package/lib/shared/Encodings/v2/Encoding.v2.decl.d.ts.map +1 -1
  42. package/lib/shared/Errors.d.ts +1 -0
  43. package/lib/shared/Errors.d.ts.map +1 -1
  44. package/lib/shared/Errors.js +1 -0
  45. package/lib/shared/Errors.js.map +1 -1
  46. package/lib/shared/Shared.decl.d.ts +15 -15
  47. package/lib/shared/Shared.decl.d.ts.map +1 -1
  48. package/lib/shared/Utils.d.ts +1 -1
  49. package/lib/shared/Utils.d.ts.map +1 -1
  50. package/lib/shared/Utils.js.map +1 -1
  51. package/lib/transporters/http-listener/Http.Decl.d.ts.map +1 -1
  52. package/lib/transporters/http-listener/Http.Decl.js +0 -1
  53. package/lib/transporters/http-listener/Http.Decl.js.map +1 -1
  54. package/lib/transporters/legacy-http/LegacyHttp.Client.Native.d.ts.map +1 -1
  55. package/lib/transporters/legacy-http/LegacyHttp.Client.Native.js +22 -6
  56. package/lib/transporters/legacy-http/LegacyHttp.Client.Native.js.map +1 -1
  57. package/lib/transporters/legacy-http/LegacyHttp.Server.js.map +1 -1
  58. package/lib/transporters/memory/Memory.Impl.js.map +1 -1
  59. package/lib/transporters/websocket/WebSocket.Client.d.ts.map +1 -1
  60. package/lib/transporters/websocket/WebSocket.Client.js +6 -12
  61. package/lib/transporters/websocket/WebSocket.Client.js.map +1 -1
  62. package/lib/transporters/websocket/WebSocket.Server.d.ts.map +1 -1
  63. package/lib/transporters/websocket/WebSocket.Server.js.map +1 -1
  64. package/package.json +1 -1
  65. package/src/lib/client/Client.Constants.ts +4 -0
  66. package/src/lib/client/Client.decl.ts +41 -1
  67. package/src/lib/client/JsonApiClient.impl.ts +58 -7
  68. package/src/lib/server/LegacyServerChannel.impl.ts +1 -1
  69. package/src/lib/server/Server.decl.ts +22 -1
  70. package/src/lib/server/Server.impl.ts +4 -3
  71. package/src/lib/server/SimpleJsonApiRouter.ts +16 -3
  72. package/src/lib/shared/Channel.impl.ts +42 -22
  73. package/src/lib/shared/Encodings/v2/Constants.v2.ts +19 -0
  74. package/src/lib/shared/Encodings/v2/DecoderV2.ts +136 -14
  75. package/src/lib/shared/Encodings/v2/EncoderV2.ts +159 -35
  76. package/src/lib/shared/Encodings/v2/Encoding.v2.decl.ts +95 -43
  77. package/src/lib/shared/Errors.ts +1 -0
  78. package/src/lib/shared/Shared.decl.ts +20 -15
  79. package/src/lib/shared/Utils.ts +2 -2
  80. package/src/lib/transporters/http-listener/Http.Decl.ts +0 -1
  81. package/src/lib/transporters/legacy-http/LegacyHttp.Client.Native.ts +30 -7
  82. package/src/lib/transporters/legacy-http/LegacyHttp.Server.ts +1 -1
  83. package/src/lib/transporters/memory/Memory.Impl.ts +3 -3
  84. package/src/lib/transporters/websocket/WebSocket.Client.ts +6 -12
  85. package/src/lib/transporters/websocket/WebSocket.Server.ts +4 -3
@@ -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>;
@@ -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'),
@@ -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
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.
@@ -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
 
@@ -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,
@@ -21,8 +21,9 @@ import * as Shared from '../../shared';
21
21
  import * as v1 from '../../shared/Encodings/v1';
22
22
  import { EventEmitter } from 'node:events';
23
23
 
24
- const HTTP_HEADER_CONTENT_LENGTH = 'content-length';
25
- const HTTP_HEADER_TV_VER = 'x-tv-ver';
24
+ const H_HDR_NAME_CONTENT_LENGTH = 'content-length';
25
+ const H_HDR_NAME_CONTENT_TYPE = 'content-type';
26
+ const H_HDR_NAME_TV_VER = 'x-tv-ver';
26
27
 
27
28
  const DEFAULT_MAX_CONNECTIONS = 100;
28
29
  const DEFAULT_TIMEOUT = 30_000;
@@ -40,6 +41,8 @@ export interface ILegacyHttpClient<T extends Shared.IObject> extends C.IClient<T
40
41
  setHeaders(newHeaders: $Http.OutgoingHttpHeaders, append?: boolean): void;
41
42
  }
42
43
 
44
+ const H_HDR_VAL_JSON_MIME = 'application/json';
45
+
43
46
  class TvLegacyHttpClient extends EventEmitter implements ILegacyHttpClient<any> {
44
47
 
45
48
  public onError!: any;
@@ -121,6 +124,25 @@ class TvLegacyHttpClient extends EventEmitter implements ILegacyHttpClient<any>
121
124
  }
122
125
  }
123
126
 
127
+ public async callApi(api: any, args: any[]): Promise<any> {
128
+
129
+ try {
130
+
131
+ return await this._invoke(api, ...args);
132
+ }
133
+ catch (e) {
134
+
135
+ if (this._retryOnConnReset && (e as any)?.code === 'ECONNRESET') {
136
+
137
+ return this._invoke(api, ...args);
138
+ }
139
+ else {
140
+
141
+ throw e;
142
+ }
143
+ }
144
+ }
145
+
124
146
  private _invoke(api: any, ...args: any[]): Promise<any> {
125
147
 
126
148
  const CST = Date.now();
@@ -149,8 +171,9 @@ class TvLegacyHttpClient extends EventEmitter implements ILegacyHttpClient<any>
149
171
  method: 'POST',
150
172
  headers: {
151
173
  ...this._opts.headers,
152
- [HTTP_HEADER_CONTENT_LENGTH]: Buffer.byteLength(content),
153
- [HTTP_HEADER_TV_VER]: 1
174
+ [H_HDR_NAME_CONTENT_TYPE]: H_HDR_VAL_JSON_MIME,
175
+ [H_HDR_NAME_CONTENT_LENGTH]: Buffer.byteLength(content),
176
+ [H_HDR_NAME_TV_VER]: 1
154
177
  },
155
178
  }, (resp) => {
156
179
 
@@ -164,14 +187,14 @@ class TvLegacyHttpClient extends EventEmitter implements ILegacyHttpClient<any>
164
187
  return;
165
188
  }
166
189
 
167
- if (!resp.headers[HTTP_HEADER_CONTENT_LENGTH]) {
190
+ if (!resp.headers[H_HDR_NAME_CONTENT_LENGTH]) {
168
191
 
169
192
  resp.socket.destroy();
170
193
  reject(new Shared.errors.invalid_response({ reason: 'missing_content_length' }));
171
194
  return;
172
195
  }
173
196
 
174
- const length = parseInt(resp.headers[HTTP_HEADER_CONTENT_LENGTH]);
197
+ const length = parseInt(resp.headers[H_HDR_NAME_CONTENT_LENGTH]);
175
198
 
176
199
  if (!Number.isSafeInteger(length) || length > v1.MAX_PACKET_SIZE) { // Maximum request packet is 64MB
177
200
 
@@ -208,7 +231,7 @@ class TvLegacyHttpClient extends EventEmitter implements ILegacyHttpClient<any>
208
231
 
209
232
  try {
210
233
 
211
- data = JSON.parse(buf as any);
234
+ data = JSON.parse(buf as unknown as string);
212
235
  }
213
236
  catch (e) {
214
237
 
@@ -184,7 +184,7 @@ class LegacyHttpGateway extends EventEmitter implements dT.IGateway {
184
184
 
185
185
  try {
186
186
 
187
- input = JSON.parse(buf as any);
187
+ input = JSON.parse(buf as unknown as string);
188
188
  }
189
189
  catch (e) {
190
190
 
@@ -33,9 +33,9 @@ function createRandomName(): string {
33
33
 
34
34
  interface IMemoryExchangeEvents extends Shared.IDefaultEvents {
35
35
 
36
- ['data_a'](data: any): void;
36
+ ['data_a'](data: unknown): void;
37
37
 
38
- ['data_b'](data: any): void;
38
+ ['data_b'](data: unknown): void;
39
39
 
40
40
  ['end_a'](): void;
41
41
 
@@ -57,7 +57,7 @@ class MemoryExchange extends EventEmitter implements Shared.IEventListener<IMemo
57
57
  super();
58
58
  }
59
59
 
60
- public send(targetEndpoint: 'a' | 'b', data: any): void {
60
+ public send(targetEndpoint: 'a' | 'b', data: unknown): void {
61
61
 
62
62
  setImmediate(() => this.emit('data_' + targetEndpoint, data));
63
63
  }
@@ -42,12 +42,9 @@ class WsConnector implements IWsConnector {
42
42
 
43
43
  const ws = await LibWS.wsConnect({
44
44
  ...this._opts,
45
- headers: {
46
- ...this._opts?.headers,
47
- ...LibWS.createClientHandshakeHeaders({
48
- 'subProtocols': [dWS.WEBSOCKET_SUB_PROTOCOL]
49
- })
50
- }
45
+ 'wsHandshakeOpts': {
46
+ 'subProtocols': [dWS.WEBSOCKET_SUB_PROTOCOL],
47
+ },
51
48
  });
52
49
 
53
50
  ws.setMasking(false);
@@ -78,12 +75,9 @@ class WssConnector implements IWsConnector {
78
75
 
79
76
  const ws = await LibWS.wssConnect({
80
77
  ...this._opts,
81
- headers: {
82
- ...this._opts?.headers,
83
- ...LibWS.createClientHandshakeHeaders({
84
- 'subProtocols': [dWS.WEBSOCKET_SUB_PROTOCOL]
85
- })
86
- }
78
+ 'wsHandshakeOpts': {
79
+ 'subProtocols': [dWS.WEBSOCKET_SUB_PROTOCOL],
80
+ },
87
81
  });
88
82
 
89
83
  ws.setMasking(false);
@@ -16,6 +16,7 @@
16
16
 
17
17
  import * as LibWS from '@litert/websocket';
18
18
  import type * as NodeHttp from 'node:http';
19
+ import type * as NodeNet from 'node:net';
19
20
  import * as dWS from './WebSocket.decl';
20
21
  import type * as Listener from '../http-listener';
21
22
  import type * as dT from '../Transporter.decl';
@@ -71,7 +72,7 @@ class WebSocketGateway extends EventEmitter implements dT.IGateway {
71
72
 
72
73
  this._wsServer.reject({
73
74
  'request': req,
74
- 'socket': socket as any,
75
+ 'socket': socket as unknown as NodeNet.Socket,
75
76
  });
76
77
  return;
77
78
  }
@@ -85,14 +86,14 @@ class WebSocketGateway extends EventEmitter implements dT.IGateway {
85
86
 
86
87
  this._wsServer.reject({
87
88
  'request': req,
88
- 'socket': socket as any,
89
+ 'socket': socket as unknown as NodeNet.Socket,
89
90
  });
90
91
  return;
91
92
  }
92
93
 
93
94
  const ws = this._wsServer.accept({
94
95
  'request': req,
95
- 'socket': socket as any,
96
+ 'socket': socket as unknown as NodeNet.Socket,
96
97
  'subProtocol': dWS.WEBSOCKET_SUB_PROTOCOL,
97
98
  });
98
99