@litert/televoke 1.0.0-1 → 1.0.0-11

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 (59) hide show
  1. package/docs/Televoke_v2.md +378 -0
  2. package/lib/client/JsonApiClient.impl.js.map +1 -1
  3. package/lib/client/LegacyHttpClient.impl.d.ts +17 -16
  4. package/lib/client/LegacyHttpClient.impl.d.ts.map +1 -1
  5. package/lib/client/LegacyHttpClient.impl.js +36 -12
  6. package/lib/client/LegacyHttpClient.impl.js.map +1 -1
  7. package/lib/server/Server.decl.d.ts +2 -1
  8. package/lib/server/Server.decl.d.ts.map +1 -1
  9. package/lib/server/Server.impl.d.ts +1 -0
  10. package/lib/server/Server.impl.d.ts.map +1 -1
  11. package/lib/server/Server.impl.js +8 -1
  12. package/lib/server/Server.impl.js.map +1 -1
  13. package/lib/server/SimpleJsonApiRouter.d.ts +3 -1
  14. package/lib/server/SimpleJsonApiRouter.d.ts.map +1 -1
  15. package/lib/server/SimpleJsonApiRouter.js +18 -8
  16. package/lib/server/SimpleJsonApiRouter.js.map +1 -1
  17. package/lib/shared/BinaryStream.js.map +1 -1
  18. package/lib/shared/BinaryStreamManager.js.map +1 -1
  19. package/lib/shared/Channel.impl.js.map +1 -1
  20. package/lib/shared/Encodings/v1/EncoderV1.js.map +1 -1
  21. package/lib/shared/Encodings/v2/DecoderV2.js +1 -1
  22. package/lib/shared/Encodings/v2/DecoderV2.js.map +1 -1
  23. package/lib/shared/Encodings/v2/EncoderV2.js +3 -3
  24. package/lib/shared/Encodings/v2/EncoderV2.js.map +1 -1
  25. package/lib/shared/Errors.d.ts +2 -0
  26. package/lib/shared/Errors.d.ts.map +1 -1
  27. package/lib/shared/Errors.js +2 -0
  28. package/lib/shared/Errors.js.map +1 -1
  29. package/lib/shared/Utils.js.map +1 -1
  30. package/lib/transporters/http-listener/HttpListener.d.ts.map +1 -1
  31. package/lib/transporters/http-listener/HttpListener.js +1 -0
  32. package/lib/transporters/http-listener/HttpListener.js.map +1 -1
  33. package/lib/transporters/http-listener/HttpUnixSocketListener.js.map +1 -1
  34. package/lib/transporters/http-listener/HttpsListener.js.map +1 -1
  35. package/lib/transporters/legacy-http/LegacyHttp.Server.d.ts.map +1 -1
  36. package/lib/transporters/legacy-http/LegacyHttp.Server.js +22 -15
  37. package/lib/transporters/legacy-http/LegacyHttp.Server.js.map +1 -1
  38. package/lib/transporters/legacy-http/LegacyHttp.Transporter.js.map +1 -1
  39. package/lib/transporters/lwdfx/LwDFX.Tcp.Server.js.map +1 -1
  40. package/lib/transporters/lwdfx/LwDFX.Tls.Server.js.map +1 -1
  41. package/lib/transporters/lwdfx/LwDFX.Transporter.js.map +1 -1
  42. package/lib/transporters/lwdfx/LwDFX.UnixSocket.Server.js.map +1 -1
  43. package/lib/transporters/memory/Memory.Impl.js.map +1 -1
  44. package/lib/transporters/websocket/WebSocket.Server.d.ts +11 -1
  45. package/lib/transporters/websocket/WebSocket.Server.d.ts.map +1 -1
  46. package/lib/transporters/websocket/WebSocket.Server.js +4 -3
  47. package/lib/transporters/websocket/WebSocket.Server.js.map +1 -1
  48. package/lib/transporters/websocket/WebSocket.Transporter.js.map +1 -1
  49. package/package.json +8 -8
  50. package/src/lib/client/LegacyHttpClient.impl.ts +64 -32
  51. package/src/lib/server/Server.decl.ts +3 -1
  52. package/src/lib/server/Server.impl.ts +10 -1
  53. package/src/lib/server/SimpleJsonApiRouter.ts +22 -10
  54. package/src/lib/shared/Encodings/v2/DecoderV2.ts +1 -1
  55. package/src/lib/shared/Encodings/v2/EncoderV2.ts +3 -3
  56. package/src/lib/shared/Errors.ts +2 -0
  57. package/src/lib/transporters/http-listener/HttpListener.ts +1 -0
  58. package/src/lib/transporters/legacy-http/LegacyHttp.Server.ts +38 -21
  59. package/src/lib/transporters/websocket/WebSocket.Server.ts +16 -1
@@ -27,7 +27,7 @@ const encoder = new v1.TvEncoderV1();
27
27
  const INVALID_REQUEST_RESPONSE = Buffer.from(encoder.encodeApiErrorResponse(
28
28
  'null',
29
29
  Shared.Encodings.v1.EResponseCode.MALFORMED_ARGUMENTS,
30
- 'INVALID REQUEST',
30
+ '"INVALID REQUEST"',
31
31
  0
32
32
  ));
33
33
 
@@ -76,6 +76,19 @@ class LegacyHttpGateway extends EventEmitter implements dT.IGateway {
76
76
  .setLegacyApiProcessor(this._onRequest);
77
77
  }
78
78
 
79
+ private _sendResponse(resp: Http.ServerResponse, data: string): void {
80
+
81
+ try {
82
+
83
+ resp.setHeader('content-length', Buffer.byteLength(data));
84
+ resp.end(data);
85
+ }
86
+ catch (e) {
87
+
88
+ this.emit('error', e);
89
+ }
90
+ }
91
+
79
92
  public get running(): boolean {
80
93
 
81
94
  return this._listener.running;
@@ -159,7 +172,6 @@ class LegacyHttpGateway extends EventEmitter implements dT.IGateway {
159
172
  refuseBadRequest(resp);
160
173
  this.emit('error', new Shared.errors.invalid_packet({
161
174
  reason: 'invalid_json',
162
- data: buf,
163
175
  }, e));
164
176
  return;
165
177
  }
@@ -169,7 +181,6 @@ class LegacyHttpGateway extends EventEmitter implements dT.IGateway {
169
181
  refuseBadRequest(resp);
170
182
  this.emit('error', new Shared.errors.invalid_packet({
171
183
  reason: 'malformed_json',
172
- data: input,
173
184
  }));
174
185
  return;
175
186
  }
@@ -185,48 +196,54 @@ class LegacyHttpGateway extends EventEmitter implements dT.IGateway {
185
196
 
186
197
  if (result instanceof Shared.errors.app_error) {
187
198
 
188
- const data = encoder.encodeApiErrorResponse(
199
+ this._sendResponse(resp, encoder.encodeApiErrorResponse(
189
200
  input.rid,
190
201
  v1.EResponseCode.FAILURE,
191
202
  result.message,
192
203
  recvAt
193
- );
194
-
195
- resp.setHeader('content-length', Buffer.byteLength(data));
196
- resp.end(data);
204
+ ));
197
205
  }
198
206
  else if (result instanceof Shared.errors.api_not_found) {
199
207
 
200
- const data = encoder.encodeApiErrorResponse(
208
+ this._sendResponse(resp, encoder.encodeApiErrorResponse(
201
209
  input.rid,
202
210
  v1.EResponseCode.API_NOT_FOUND,
203
211
  'null',
204
212
  recvAt
205
- );
206
-
207
- resp.setHeader('content-length', Buffer.byteLength(data));
208
- resp.end(data);
213
+ ));
209
214
  }
210
215
  else {
211
216
 
212
- const data = encoder.encodeApiErrorResponse(
217
+ this._sendResponse(resp, encoder.encodeApiErrorResponse(
213
218
  input.rid,
214
219
  v1.EResponseCode.SYSTEM_ERROR,
215
220
  'null',
216
221
  recvAt
217
- );
218
-
219
- resp.setHeader('content-length', Buffer.byteLength(data));
220
- resp.end(data);
222
+ ));
221
223
  }
222
224
 
223
225
  return;
224
226
  }
225
227
 
226
- const data = encoder.encodeApiOkResponse(input.rid, result ?? null, recvAt);
228
+ let data: string;
229
+
230
+ try {
231
+
232
+ data = encoder.encodeApiOkResponse(input.rid, result ?? null, recvAt);
233
+ }
234
+ catch (e) {
235
+
236
+ data = encoder.encodeApiErrorResponse(
237
+ input.rid,
238
+ v1.EResponseCode.SYSTEM_ERROR,
239
+ 'null',
240
+ recvAt
241
+ );
242
+
243
+ this.emit('error', new Shared.errors.unprocessable_error({ api: input.api }, e));
244
+ }
227
245
 
228
- resp.setHeader('content-length', Buffer.byteLength(data));
229
- resp.end(data);
246
+ this._sendResponse(resp, data);
230
247
 
231
248
  }, input.api, input.args, new LegacyHttpTransporter(req));
232
249
  });
@@ -28,6 +28,7 @@ class WebSocketGateway extends EventEmitter implements dT.IGateway {
28
28
  public constructor(
29
29
  private readonly _listener: Listener.IHttpListener,
30
30
  private readonly _server: dT.IServer,
31
+ timeout?: number,
31
32
  ) {
32
33
 
33
34
  super();
@@ -38,6 +39,7 @@ class WebSocketGateway extends EventEmitter implements dT.IGateway {
38
39
 
39
40
  this._wsServer = LibWS.createServer({
40
41
  liteFrameMode: true,
42
+ timeout,
41
43
  });
42
44
  }
43
45
 
@@ -103,6 +105,18 @@ class WebSocketGateway extends EventEmitter implements dT.IGateway {
103
105
  }
104
106
  }
105
107
 
108
+ export interface IWebSocketGatewayOptions {
109
+
110
+ /**
111
+ * The timeout of WebSocket connections.
112
+ *
113
+ * > Set to 0 to disable timeout.
114
+ *
115
+ * @default 60000
116
+ */
117
+ timeout?: number;
118
+ }
119
+
106
120
  /**
107
121
  * Create a WebSocket gateway.
108
122
  *
@@ -112,7 +126,8 @@ class WebSocketGateway extends EventEmitter implements dT.IGateway {
112
126
  export function createWebsocketGateway(
113
127
  listener: Listener.IHttpListener,
114
128
  server: dT.IServer,
129
+ options: IWebSocketGatewayOptions = {}
115
130
  ): dT.IGateway {
116
131
 
117
- return new WebSocketGateway(listener, server);
132
+ return new WebSocketGateway(listener, server, options.timeout);
118
133
  }