@litert/televoke 0.4.5 → 0.4.7

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 (78) hide show
  1. package/CHANGES.md +11 -0
  2. package/lib/Client/Common.d.ts +1 -1
  3. package/lib/Client/Common.d.ts.map +1 -1
  4. package/lib/Client/HttpClient.d.ts.map +1 -1
  5. package/lib/Client/HttpClient.js +17 -9
  6. package/lib/Client/HttpClient.js.map +1 -1
  7. package/lib/Client/HttpsClient.d.ts.map +1 -1
  8. package/lib/Client/HttpsClient.js +17 -9
  9. package/lib/Client/HttpsClient.js.map +1 -1
  10. package/lib/Client/TCPClient.d.ts +5 -0
  11. package/lib/Client/TCPClient.d.ts.map +1 -1
  12. package/lib/Client/TCPClient.js +8 -4
  13. package/lib/Client/TCPClient.js.map +1 -1
  14. package/lib/Client/TLSClient.d.ts.map +1 -1
  15. package/lib/Client/TLSClient.js +3 -4
  16. package/lib/Client/TLSClient.js.map +1 -1
  17. package/lib/Client/index.js +5 -1
  18. package/lib/Client/index.js.map +1 -1
  19. package/lib/Common/API.d.ts +1 -1
  20. package/lib/Common/API.d.ts.map +1 -1
  21. package/lib/Common/Request.d.ts +1 -1
  22. package/lib/Common/Request.d.ts.map +1 -1
  23. package/lib/Common/Response.js +1 -1
  24. package/lib/Common/Response.js.map +1 -1
  25. package/lib/Common/index.js +5 -1
  26. package/lib/Common/index.js.map +1 -1
  27. package/lib/Encoder/Decoder.d.ts.map +1 -1
  28. package/lib/Encoder/Decoder.js +23 -13
  29. package/lib/Encoder/Decoder.js.map +1 -1
  30. package/lib/Encoder/Encoder.d.ts.map +1 -1
  31. package/lib/Encoder/Encoder.js +4 -4
  32. package/lib/Encoder/Encoder.js.map +1 -1
  33. package/lib/Server/Common/Gateway.d.ts +3 -1
  34. package/lib/Server/Common/Gateway.d.ts.map +1 -1
  35. package/lib/Server/Common/Request.d.ts +1 -1
  36. package/lib/Server/Common/Request.d.ts.map +1 -1
  37. package/lib/Server/Common/Router.d.ts +2 -2
  38. package/lib/Server/Common/Router.d.ts.map +1 -1
  39. package/lib/Server/Common/Server.d.ts +6 -0
  40. package/lib/Server/Common/Server.d.ts.map +1 -1
  41. package/lib/Server/Common/index.js +5 -1
  42. package/lib/Server/Common/index.js.map +1 -1
  43. package/lib/Server/Errors.d.ts +1 -0
  44. package/lib/Server/Errors.d.ts.map +1 -1
  45. package/lib/Server/Errors.js +7 -1
  46. package/lib/Server/Errors.js.map +1 -1
  47. package/lib/Server/Gateways/Http.d.ts.map +1 -1
  48. package/lib/Server/Gateways/Http.js +30 -11
  49. package/lib/Server/Gateways/Http.js.map +1 -1
  50. package/lib/Server/Gateways/TCP.d.ts +5 -0
  51. package/lib/Server/Gateways/TCP.d.ts.map +1 -1
  52. package/lib/Server/Gateways/TCP.js +15 -7
  53. package/lib/Server/Gateways/TCP.js.map +1 -1
  54. package/lib/Server/Server.d.ts.map +1 -1
  55. package/lib/Server/Server.js +30 -16
  56. package/lib/Server/Server.js.map +1 -1
  57. package/lib/Server/index.js +5 -1
  58. package/lib/Server/index.js.map +1 -1
  59. package/lib/index.js +5 -1
  60. package/lib/index.js.map +1 -1
  61. package/package.json +7 -9
  62. package/src/lib/Client/Common.ts +2 -1
  63. package/src/lib/Client/HttpClient.ts +19 -16
  64. package/src/lib/Client/HttpsClient.ts +19 -16
  65. package/src/lib/Client/TCPClient.ts +16 -12
  66. package/src/lib/Client/TLSClient.ts +12 -13
  67. package/src/lib/Common/Request.ts +1 -1
  68. package/src/lib/Encoder/Decoder.ts +28 -13
  69. package/src/lib/Encoder/Encoder.ts +4 -5
  70. package/src/lib/Server/Common/Gateway.ts +4 -0
  71. package/src/lib/Server/Common/Request.ts +1 -1
  72. package/src/lib/Server/Common/Router.ts +7 -2
  73. package/src/lib/Server/Common/Server.ts +7 -0
  74. package/src/lib/Server/Errors.ts +7 -0
  75. package/src/lib/Server/Gateways/Http.ts +40 -12
  76. package/src/lib/Server/Gateways/TCP.ts +16 -7
  77. package/src/lib/Server/Server.ts +38 -16
  78. package/src/lib/Server/SimpleRouter.ts +1 -1
@@ -48,7 +48,7 @@ interface IClient {
48
48
 
49
49
  class TCPGateway implements C.IGateway {
50
50
 
51
- private _socket: $Net.Server = $Net.createServer(this._onConnect.bind(this));
51
+ private readonly _socket: $Net.Server = $Net.createServer(this._onConnect.bind(this));
52
52
 
53
53
  private _status: EStatus = EStatus.IDLE;
54
54
 
@@ -64,10 +64,10 @@ class TCPGateway implements C.IGateway {
64
64
  ) => void;
65
65
 
66
66
  public constructor(
67
- private _host: string,
68
- private _port: number,
69
- private _backlog?: number,
70
- ) { }
67
+ public host: string,
68
+ public port: number,
69
+ private readonly _backlog?: number,
70
+ ) {}
71
71
 
72
72
  private _onConnect(socket: $Net.Socket): void {
73
73
 
@@ -143,11 +143,15 @@ class TCPGateway implements C.IGateway {
143
143
 
144
144
  return new Promise((resolve, reject) => {
145
145
 
146
- this._socket.listen(this._port, this._host, this._backlog)
146
+ this._socket.listen(this.port, this.host, this._backlog)
147
147
  .once('listening', () => {
148
148
 
149
149
  this._socket.removeAllListeners('error');
150
150
  this._status = EStatus.WORKING;
151
+ if (this.port === 0) {
152
+
153
+ this.port = (this._socket.address() as $Net.AddressInfo).port;
154
+ }
151
155
  resolve();
152
156
  })
153
157
  .once('error', (e) => {
@@ -180,7 +184,7 @@ class TCPGateway implements C.IGateway {
180
184
  case EStatus.WORKING:
181
185
  return new Promise((resolve) => {
182
186
 
183
- this._socket.close(() => resolve());
187
+ this._socket.close(() => { resolve(); });
184
188
 
185
189
  for (const clientId in this._clients) {
186
190
 
@@ -206,6 +210,11 @@ class TCPGateway implements C.IGateway {
206
210
  }
207
211
  }
208
212
 
213
+ /**
214
+ * Create a gateway of TCP-base televoke/1 protocol.
215
+ *
216
+ * @deprecated This legacy TCP-based televoke/1 protocol is no longer maintained, and will be removed in v2.0.0
217
+ */
209
218
  export function createTCPGateway(host: string, port: number, backlog?: number): C.IGateway {
210
219
 
211
220
  return new TCPGateway(host, port, backlog);
@@ -35,6 +35,18 @@ class Server extends Events.EventEmitter<C.IServerEvents> implements C.IServer {
35
35
 
36
36
  private _status: EStatus = EStatus.IDLE;
37
37
 
38
+ public getGateway(name: string): C.IGateway {
39
+
40
+ const ret = this._gateways[name];
41
+
42
+ if (!ret) {
43
+
44
+ throw new E.E_GATEWAY_NOT_FOUND({ name });
45
+ }
46
+
47
+ return ret;
48
+ }
49
+
38
50
  public addGateway(name: string, gateway: C.IGateway): this {
39
51
 
40
52
  if (this._status !== EStatus.IDLE) {
@@ -44,7 +56,7 @@ class Server extends Events.EventEmitter<C.IServerEvents> implements C.IServer {
44
56
 
45
57
  this._gateways[name] = gateway;
46
58
 
47
- if (gateway.onError || gateway.onRequest) {
59
+ if (gateway.onError ?? gateway.onRequest) {
48
60
 
49
61
  throw new E.E_GATEWAY_BUSY();
50
62
  }
@@ -60,24 +72,26 @@ class Server extends Events.EventEmitter<C.IServerEvents> implements C.IServer {
60
72
 
61
73
  if (!handler) {
62
74
 
63
- return reply({
75
+ reply({
64
76
  rid: req.rid,
65
77
  srt: req.srt,
66
78
  sst: Date.now(),
67
79
  code: G.EResponseCode.API_NOT_FOUND,
68
80
  body: null
69
81
  });
82
+ return;
70
83
  }
71
84
 
72
85
  if (!this._router.validate(req, handler)) {
73
86
 
74
- return reply({
87
+ reply({
75
88
  rid: req.rid,
76
89
  srt: req.srt,
77
90
  sst: Date.now(),
78
91
  code: G.EResponseCode.MALFORMED_ARGUMENTS,
79
92
  body: null
80
93
  });
94
+ return;
81
95
  }
82
96
 
83
97
  let resultPr: any;
@@ -101,21 +115,29 @@ class Server extends Events.EventEmitter<C.IServerEvents> implements C.IServer {
101
115
 
102
116
  if (resultPr instanceof Promise) {
103
117
 
104
- resultPr.then((body) => reply({
105
- rid: req.rid,
106
- srt: req.srt,
107
- sst: Date.now(),
108
- code: G.EResponseCode.OK,
109
- body: body ?? null
110
- }), (body) => reply({
111
- rid: req.rid,
112
- srt: req.srt,
113
- sst: Date.now(),
114
- code: G.EResponseCode.FAILURE,
115
- body: body ?? null
116
- }));
118
+ resultPr.then(
119
+ (body) => {
120
+ reply({
121
+ rid: req.rid,
122
+ srt: req.srt,
123
+ sst: Date.now(),
124
+ code: G.EResponseCode.OK,
125
+ body: body ?? null
126
+ });
127
+ },
128
+ (err) => {
129
+ reply({
130
+ rid: req.rid,
131
+ srt: req.srt,
132
+ sst: Date.now(),
133
+ code: G.EResponseCode.FAILURE,
134
+ body: err ?? null
135
+ });
136
+ }
137
+ );
117
138
  }
118
139
  else {
140
+
119
141
  reply({
120
142
  rid: req.rid,
121
143
  srt: req.srt,
@@ -66,7 +66,7 @@ class SimpleRouter implements ISimpleRouter {
66
66
  return this;
67
67
  }
68
68
 
69
- public route(name: string): [any, boolean] | void {
69
+ public route(name: string): [any, boolean] | null {
70
70
 
71
71
  return this._handlers[name];
72
72
  }