@litert/televoke 1.0.3 → 1.2.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 (254) hide show
  1. package/CHANGES.md +17 -0
  2. package/lib/client/Client.decl.d.ts +1 -2
  3. package/lib/client/Client.decl.d.ts.map +1 -1
  4. package/lib/client/Client.decl.js +1 -1
  5. package/lib/client/JsonApiClient.impl.d.ts +1 -1
  6. package/lib/client/JsonApiClient.impl.js +2 -3
  7. package/lib/client/JsonApiClient.impl.js.map +1 -1
  8. package/lib/client/index.d.ts +1 -1
  9. package/lib/client/index.js +1 -1
  10. package/lib/index.d.ts +1 -1
  11. package/lib/index.js +1 -1
  12. package/lib/server/LegacyServerChannel.impl.d.ts +3 -3
  13. package/lib/server/LegacyServerChannel.impl.d.ts.map +1 -1
  14. package/lib/server/LegacyServerChannel.impl.js +3 -1
  15. package/lib/server/LegacyServerChannel.impl.js.map +1 -1
  16. package/lib/server/Server.decl.d.ts +1 -2
  17. package/lib/server/Server.decl.d.ts.map +1 -1
  18. package/lib/server/Server.decl.js +1 -1
  19. package/lib/server/Server.impl.d.ts +1 -2
  20. package/lib/server/Server.impl.d.ts.map +1 -1
  21. package/lib/server/Server.impl.js +1 -1
  22. package/lib/server/ServerChannel.d.ts +1 -1
  23. package/lib/server/ServerChannel.js +1 -1
  24. package/lib/server/SimpleJsonApiRouter.d.ts +1 -3
  25. package/lib/server/SimpleJsonApiRouter.d.ts.map +1 -1
  26. package/lib/server/SimpleJsonApiRouter.js +1 -1
  27. package/lib/server/index.d.ts +1 -1
  28. package/lib/server/index.js +1 -1
  29. package/lib/shared/BinaryStream.d.ts +1 -3
  30. package/lib/shared/BinaryStream.d.ts.map +1 -1
  31. package/lib/shared/BinaryStream.js +1 -1
  32. package/lib/shared/BinaryStreamManager.d.ts +1 -1
  33. package/lib/shared/BinaryStreamManager.js +5 -5
  34. package/lib/shared/BinaryStreamManager.js.map +1 -1
  35. package/lib/shared/Channel.impl.d.ts +3 -4
  36. package/lib/shared/Channel.impl.d.ts.map +1 -1
  37. package/lib/shared/Channel.impl.js +3 -1
  38. package/lib/shared/Channel.impl.js.map +1 -1
  39. package/lib/shared/Constants.d.ts +1 -1
  40. package/lib/shared/Constants.js +1 -1
  41. package/lib/shared/Encodings/index.d.ts +1 -1
  42. package/lib/shared/Encodings/index.js +1 -1
  43. package/lib/shared/Encodings/v1/EncoderV1.d.ts +1 -1
  44. package/lib/shared/Encodings/v1/EncoderV1.js +1 -1
  45. package/lib/shared/Encodings/v1/Protocol.v1.decls.d.ts +1 -1
  46. package/lib/shared/Encodings/v1/Protocol.v1.decls.js +1 -1
  47. package/lib/shared/Encodings/v1/index.d.ts +1 -1
  48. package/lib/shared/Encodings/v1/index.js +1 -1
  49. package/lib/shared/Encodings/v2/Constants.v2.d.ts +1 -1
  50. package/lib/shared/Encodings/v2/Constants.v2.js +1 -1
  51. package/lib/shared/Encodings/v2/DecoderV2.d.ts +1 -2
  52. package/lib/shared/Encodings/v2/DecoderV2.d.ts.map +1 -1
  53. package/lib/shared/Encodings/v2/DecoderV2.js +15 -4
  54. package/lib/shared/Encodings/v2/DecoderV2.js.map +1 -1
  55. package/lib/shared/Encodings/v2/EncoderV2.d.ts +1 -2
  56. package/lib/shared/Encodings/v2/EncoderV2.d.ts.map +1 -1
  57. package/lib/shared/Encodings/v2/EncoderV2.js +1 -1
  58. package/lib/shared/Encodings/v2/Encoding.v2.decl.d.ts +1 -2
  59. package/lib/shared/Encodings/v2/Encoding.v2.decl.d.ts.map +1 -1
  60. package/lib/shared/Encodings/v2/Encoding.v2.decl.js +1 -1
  61. package/lib/shared/Encodings/v2/index.d.ts +1 -1
  62. package/lib/shared/Encodings/v2/index.js +1 -1
  63. package/lib/shared/Errors.d.ts +5 -5
  64. package/lib/shared/Errors.d.ts.map +1 -1
  65. package/lib/shared/Errors.js +4 -4
  66. package/lib/shared/Errors.js.map +1 -1
  67. package/lib/shared/Shared.decl.d.ts +10 -4
  68. package/lib/shared/Shared.decl.d.ts.map +1 -1
  69. package/lib/shared/Shared.decl.js +1 -1
  70. package/lib/shared/Utils.d.ts +1 -2
  71. package/lib/shared/Utils.d.ts.map +1 -1
  72. package/lib/shared/Utils.js +3 -4
  73. package/lib/shared/Utils.js.map +1 -1
  74. package/lib/shared/index.d.ts +1 -1
  75. package/lib/shared/index.js +1 -1
  76. package/lib/transporters/Transporter.decl.d.ts +3 -4
  77. package/lib/transporters/Transporter.decl.d.ts.map +1 -1
  78. package/lib/transporters/Transporter.decl.js +1 -1
  79. package/lib/transporters/http-listener/AbstractHttpListener.d.ts +2 -4
  80. package/lib/transporters/http-listener/AbstractHttpListener.d.ts.map +1 -1
  81. package/lib/transporters/http-listener/AbstractHttpListener.js +10 -6
  82. package/lib/transporters/http-listener/AbstractHttpListener.js.map +1 -1
  83. package/lib/transporters/http-listener/Http.Decl.d.ts +1 -9
  84. package/lib/transporters/http-listener/Http.Decl.d.ts.map +1 -1
  85. package/lib/transporters/http-listener/Http.Decl.js +2 -21
  86. package/lib/transporters/http-listener/Http.Decl.js.map +1 -1
  87. package/lib/transporters/http-listener/HttpListener.d.ts +1 -1
  88. package/lib/transporters/http-listener/HttpListener.d.ts.map +1 -1
  89. package/lib/transporters/http-listener/HttpListener.js +5 -4
  90. package/lib/transporters/http-listener/HttpListener.js.map +1 -1
  91. package/lib/transporters/http-listener/HttpUnixSocketListener.d.ts +1 -1
  92. package/lib/transporters/http-listener/HttpUnixSocketListener.d.ts.map +1 -1
  93. package/lib/transporters/http-listener/HttpUnixSocketListener.js +5 -4
  94. package/lib/transporters/http-listener/HttpUnixSocketListener.js.map +1 -1
  95. package/lib/transporters/http-listener/HttpsListener.d.ts +1 -1
  96. package/lib/transporters/http-listener/HttpsListener.d.ts.map +1 -1
  97. package/lib/transporters/http-listener/HttpsListener.js +7 -6
  98. package/lib/transporters/http-listener/HttpsListener.js.map +1 -1
  99. package/lib/transporters/http-listener/index.d.ts +1 -1
  100. package/lib/transporters/http-listener/index.js +1 -1
  101. package/lib/transporters/index.d.ts +1 -1
  102. package/lib/transporters/index.js +1 -1
  103. package/lib/transporters/legacy-http/LegacyHttp.Client.Native.d.ts +12 -3
  104. package/lib/transporters/legacy-http/LegacyHttp.Client.Native.d.ts.map +1 -1
  105. package/lib/transporters/legacy-http/LegacyHttp.Client.Native.js +12 -3
  106. package/lib/transporters/legacy-http/LegacyHttp.Client.Native.js.map +1 -1
  107. package/lib/transporters/legacy-http/LegacyHttp.Server.d.ts +29 -1
  108. package/lib/transporters/legacy-http/LegacyHttp.Server.d.ts.map +1 -1
  109. package/lib/transporters/legacy-http/LegacyHttp.Server.js +43 -12
  110. package/lib/transporters/legacy-http/LegacyHttp.Server.js.map +1 -1
  111. package/lib/transporters/legacy-http/LegacyHttp.Transporter.d.ts +1 -2
  112. package/lib/transporters/legacy-http/LegacyHttp.Transporter.d.ts.map +1 -1
  113. package/lib/transporters/legacy-http/LegacyHttp.Transporter.js +1 -1
  114. package/lib/transporters/legacy-http/index.d.ts +1 -1
  115. package/lib/transporters/legacy-http/index.js +1 -1
  116. package/lib/transporters/lwdfx/LwDFX.Tcp.Client.d.ts +1 -1
  117. package/lib/transporters/lwdfx/LwDFX.Tcp.Client.js +2 -3
  118. package/lib/transporters/lwdfx/LwDFX.Tcp.Client.js.map +1 -1
  119. package/lib/transporters/lwdfx/LwDFX.Tcp.Server.d.ts +1 -1
  120. package/lib/transporters/lwdfx/LwDFX.Tcp.Server.js +2 -3
  121. package/lib/transporters/lwdfx/LwDFX.Tcp.Server.js.map +1 -1
  122. package/lib/transporters/lwdfx/LwDFX.Tls.Client.d.ts +1 -1
  123. package/lib/transporters/lwdfx/LwDFX.Tls.Client.js +2 -3
  124. package/lib/transporters/lwdfx/LwDFX.Tls.Client.js.map +1 -1
  125. package/lib/transporters/lwdfx/LwDFX.Tls.Server.d.ts +1 -1
  126. package/lib/transporters/lwdfx/LwDFX.Tls.Server.js +2 -3
  127. package/lib/transporters/lwdfx/LwDFX.Tls.Server.js.map +1 -1
  128. package/lib/transporters/lwdfx/LwDFX.Transporter.d.ts +3 -5
  129. package/lib/transporters/lwdfx/LwDFX.Transporter.d.ts.map +1 -1
  130. package/lib/transporters/lwdfx/LwDFX.Transporter.js +2 -5
  131. package/lib/transporters/lwdfx/LwDFX.Transporter.js.map +1 -1
  132. package/lib/transporters/lwdfx/LwDFX.UnixSocket.Client.d.ts +1 -1
  133. package/lib/transporters/lwdfx/LwDFX.UnixSocket.Client.js +2 -3
  134. package/lib/transporters/lwdfx/LwDFX.UnixSocket.Client.js.map +1 -1
  135. package/lib/transporters/lwdfx/LwDFX.UnixSocket.Server.d.ts +1 -1
  136. package/lib/transporters/lwdfx/LwDFX.UnixSocket.Server.js +2 -3
  137. package/lib/transporters/lwdfx/LwDFX.UnixSocket.Server.js.map +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 -2
  143. package/lib/transporters/memory/Memory.Impl.d.ts.map +1 -1
  144. package/lib/transporters/memory/Memory.Impl.js +4 -11
  145. package/lib/transporters/memory/Memory.Impl.js.map +1 -1
  146. package/lib/transporters/memory/index.d.ts +1 -1
  147. package/lib/transporters/memory/index.js +1 -1
  148. package/lib/transporters/websocket/WebSocket.Client.d.ts +18 -3
  149. package/lib/transporters/websocket/WebSocket.Client.d.ts.map +1 -1
  150. package/lib/transporters/websocket/WebSocket.Client.js +23 -4
  151. package/lib/transporters/websocket/WebSocket.Client.js.map +1 -1
  152. package/lib/transporters/websocket/WebSocket.Server.d.ts +24 -2
  153. package/lib/transporters/websocket/WebSocket.Server.d.ts.map +1 -1
  154. package/lib/transporters/websocket/WebSocket.Server.js +30 -12
  155. package/lib/transporters/websocket/WebSocket.Server.js.map +1 -1
  156. package/lib/transporters/websocket/WebSocket.Transporter.d.ts +3 -5
  157. package/lib/transporters/websocket/WebSocket.Transporter.d.ts.map +1 -1
  158. package/lib/transporters/websocket/WebSocket.Transporter.js +2 -10
  159. package/lib/transporters/websocket/WebSocket.Transporter.js.map +1 -1
  160. package/lib/transporters/websocket/WebSocket.decl.d.ts +1 -1
  161. package/lib/transporters/websocket/WebSocket.decl.js +1 -1
  162. package/lib/transporters/websocket/index.d.ts +1 -1
  163. package/lib/transporters/websocket/index.js +1 -1
  164. package/lib/transporters/worker-thread/WorkerThread.Client.d.ts +30 -0
  165. package/lib/transporters/worker-thread/WorkerThread.Client.d.ts.map +1 -0
  166. package/lib/transporters/worker-thread/WorkerThread.Client.js +70 -0
  167. package/lib/transporters/worker-thread/WorkerThread.Client.js.map +1 -0
  168. package/lib/transporters/worker-thread/WorkerThread.Constants.d.ts +18 -0
  169. package/lib/transporters/worker-thread/WorkerThread.Constants.d.ts.map +1 -0
  170. package/lib/transporters/worker-thread/WorkerThread.Constants.js +21 -0
  171. package/lib/transporters/worker-thread/WorkerThread.Constants.js.map +1 -0
  172. package/lib/transporters/worker-thread/WorkerThread.Errors.d.ts +49 -0
  173. package/lib/transporters/worker-thread/WorkerThread.Errors.d.ts.map +1 -0
  174. package/lib/transporters/worker-thread/WorkerThread.Errors.js +38 -0
  175. package/lib/transporters/worker-thread/WorkerThread.Errors.js.map +1 -0
  176. package/lib/transporters/worker-thread/WorkerThread.Server.d.ts +42 -0
  177. package/lib/transporters/worker-thread/WorkerThread.Server.d.ts.map +1 -0
  178. package/lib/transporters/worker-thread/WorkerThread.Server.js +94 -0
  179. package/lib/transporters/worker-thread/WorkerThread.Server.js.map +1 -0
  180. package/lib/transporters/worker-thread/WorkerThread.Transporter.d.ts +49 -0
  181. package/lib/transporters/worker-thread/WorkerThread.Transporter.d.ts.map +1 -0
  182. package/lib/transporters/worker-thread/WorkerThread.Transporter.js +140 -0
  183. package/lib/transporters/worker-thread/WorkerThread.Transporter.js.map +1 -0
  184. package/lib/transporters/worker-thread/index.d.ts +19 -0
  185. package/lib/transporters/worker-thread/index.d.ts.map +1 -0
  186. package/lib/transporters/worker-thread/index.js +35 -0
  187. package/lib/transporters/worker-thread/index.js.map +1 -0
  188. package/package.json +5 -5
  189. package/src/lib/client/Client.decl.ts +1 -1
  190. package/src/lib/client/JsonApiClient.impl.ts +1 -1
  191. package/src/lib/client/index.ts +1 -1
  192. package/src/lib/index.ts +1 -1
  193. package/src/lib/server/LegacyServerChannel.impl.ts +5 -1
  194. package/src/lib/server/Server.decl.ts +1 -1
  195. package/src/lib/server/Server.impl.ts +1 -1
  196. package/src/lib/server/ServerChannel.ts +1 -1
  197. package/src/lib/server/SimpleJsonApiRouter.ts +1 -1
  198. package/src/lib/server/index.ts +1 -1
  199. package/src/lib/shared/BinaryStream.ts +1 -1
  200. package/src/lib/shared/BinaryStreamManager.ts +1 -1
  201. package/src/lib/shared/Channel.impl.ts +5 -1
  202. package/src/lib/shared/Constants.ts +1 -1
  203. package/src/lib/shared/Encodings/index.ts +1 -1
  204. package/src/lib/shared/Encodings/v1/EncoderV1.ts +1 -1
  205. package/src/lib/shared/Encodings/v1/Protocol.v1.decls.ts +1 -1
  206. package/src/lib/shared/Encodings/v1/index.ts +1 -1
  207. package/src/lib/shared/Encodings/v2/Constants.v2.ts +1 -1
  208. package/src/lib/shared/Encodings/v2/DecoderV2.ts +22 -4
  209. package/src/lib/shared/Encodings/v2/EncoderV2.ts +1 -1
  210. package/src/lib/shared/Encodings/v2/Encoding.v2.decl.ts +1 -1
  211. package/src/lib/shared/Encodings/v2/index.ts +1 -1
  212. package/src/lib/shared/Errors.ts +4 -3
  213. package/src/lib/shared/Shared.decl.ts +13 -3
  214. package/src/lib/shared/Utils.ts +1 -1
  215. package/src/lib/shared/index.ts +1 -1
  216. package/src/lib/transporters/Transporter.decl.ts +3 -3
  217. package/src/lib/transporters/http-listener/AbstractHttpListener.ts +14 -6
  218. package/src/lib/transporters/http-listener/Http.Decl.ts +1 -26
  219. package/src/lib/transporters/http-listener/HttpListener.ts +10 -2
  220. package/src/lib/transporters/http-listener/HttpUnixSocketListener.ts +10 -2
  221. package/src/lib/transporters/http-listener/HttpsListener.ts +12 -4
  222. package/src/lib/transporters/http-listener/index.ts +1 -1
  223. package/src/lib/transporters/index.ts +1 -1
  224. package/src/lib/transporters/legacy-http/LegacyHttp.Client.Native.ts +30 -3
  225. package/src/lib/transporters/legacy-http/LegacyHttp.Server.ts +70 -9
  226. package/src/lib/transporters/legacy-http/LegacyHttp.Transporter.ts +1 -1
  227. package/src/lib/transporters/legacy-http/README.md +13 -0
  228. package/src/lib/transporters/legacy-http/index.ts +1 -1
  229. package/src/lib/transporters/lwdfx/LwDFX.Tcp.Client.ts +1 -1
  230. package/src/lib/transporters/lwdfx/LwDFX.Tcp.Server.ts +1 -1
  231. package/src/lib/transporters/lwdfx/LwDFX.Tls.Client.ts +1 -1
  232. package/src/lib/transporters/lwdfx/LwDFX.Tls.Server.ts +1 -1
  233. package/src/lib/transporters/lwdfx/LwDFX.Transporter.ts +3 -8
  234. package/src/lib/transporters/lwdfx/LwDFX.UnixSocket.Client.ts +1 -1
  235. package/src/lib/transporters/lwdfx/LwDFX.UnixSocket.Server.ts +1 -1
  236. package/src/lib/transporters/lwdfx/LwDFX.decl.ts +1 -1
  237. package/src/lib/transporters/lwdfx/README.md +12 -0
  238. package/src/lib/transporters/lwdfx/index.ts +1 -1
  239. package/src/lib/transporters/memory/Memory.Impl.ts +3 -13
  240. package/src/lib/transporters/memory/README.md +7 -0
  241. package/src/lib/transporters/memory/index.ts +1 -1
  242. package/src/lib/transporters/websocket/README.md +14 -0
  243. package/src/lib/transporters/websocket/WebSocket.Client.ts +52 -7
  244. package/src/lib/transporters/websocket/WebSocket.Server.ts +55 -9
  245. package/src/lib/transporters/websocket/WebSocket.Transporter.ts +3 -15
  246. package/src/lib/transporters/websocket/WebSocket.decl.ts +1 -1
  247. package/src/lib/transporters/websocket/index.ts +1 -1
  248. package/src/lib/transporters/worker-thread/README.md +18 -0
  249. package/src/lib/transporters/worker-thread/WorkerThread.Client.ts +88 -0
  250. package/src/lib/transporters/worker-thread/WorkerThread.Constants.ts +19 -0
  251. package/src/lib/transporters/worker-thread/WorkerThread.Errors.ts +53 -0
  252. package/src/lib/transporters/worker-thread/WorkerThread.Server.ts +136 -0
  253. package/src/lib/transporters/worker-thread/WorkerThread.Transporter.ts +204 -0
  254. package/src/lib/transporters/worker-thread/index.ts +19 -0
@@ -0,0 +1,204 @@
1
+ /**
2
+ * Copyright 2025 Angus.Fenying <fenying@litert.org>
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import * as NodeWorker from 'node:worker_threads';
18
+ import * as Shared from '../../shared';
19
+ import type * as dT from '../Transporter.decl';
20
+ import * as eWT from './WorkerThread.Errors';
21
+ import { EventEmitter } from 'node:events';
22
+
23
+ const PROPERTY_NAMES = ['remoteAddress', 'remotePort', 'localAddress', 'localPort', 'threadId'];
24
+
25
+ const MSG_PREFIX = 'televoke2://';
26
+
27
+ abstract class AbstractThreadTransporter extends EventEmitter {
28
+
29
+ public constructor(
30
+ public readonly protocol: string
31
+ ) {
32
+
33
+ super();
34
+ }
35
+
36
+ public getPropertyNames(): string[] {
37
+
38
+ return PROPERTY_NAMES;
39
+ }
40
+
41
+ public getAllProperties(): Record<string, unknown> {
42
+
43
+ return {
44
+ 'remoteAddress': '127.0.0.1',
45
+ 'remotePort': 0,
46
+ 'localAddress': '127.0.0.1',
47
+ 'localPort': 0,
48
+ 'threadId': NodeWorker.threadId,
49
+ };
50
+ }
51
+
52
+ public getProperty(name: string): unknown {
53
+
54
+ switch (name) {
55
+ case 'localPort':
56
+ return 0;
57
+ case 'localAddress':
58
+ return '127.0.0.1';
59
+ case 'remotePort':
60
+ return 0;
61
+ case 'remoteAddress':
62
+ return '127.0.0.1';
63
+ case 'threadId':
64
+ return NodeWorker.threadId;
65
+ default:
66
+ return undefined;
67
+ }
68
+ }
69
+
70
+ public abstract destroy(): void;
71
+
72
+ public end(): void {
73
+
74
+ this.destroy();
75
+ }
76
+
77
+ protected _write(
78
+ worker: NodeWorker.MessagePort | NodeWorker.Worker,
79
+ frame: Array<string | Buffer>
80
+ ): void {
81
+
82
+ for (let i = 0; i < frame.length; i++) {
83
+
84
+ const f = frame[i];
85
+
86
+ if (!(f instanceof Buffer)) {
87
+
88
+ frame[i] = Buffer.from(f);
89
+ }
90
+ }
91
+
92
+ try {
93
+
94
+ worker.postMessage(MSG_PREFIX + Buffer.concat(frame as Buffer[]).toString('base64'));
95
+ }
96
+ catch (e) {
97
+
98
+ throw new Shared.errors.network_error({ reason: 'conn_lost', cause: e });
99
+ }
100
+ }
101
+
102
+ protected _onMessage = (frame: unknown): void => {
103
+
104
+ if (typeof frame !== 'string' || !frame.startsWith(MSG_PREFIX)) {
105
+
106
+ return;
107
+ }
108
+
109
+ this.emit('frame', [Buffer.from(frame.slice(MSG_PREFIX.length), 'base64')]);
110
+ };
111
+ }
112
+
113
+ export class MainThreadTransporter extends AbstractThreadTransporter implements dT.ITransporter, Shared.ITransporter {
114
+
115
+ private _closed: boolean = false;
116
+
117
+ public constructor(
118
+ protocol: string,
119
+ protected readonly _worker: NodeWorker.Worker
120
+ ) {
121
+
122
+ super(protocol);
123
+
124
+ this._worker
125
+ .on('message', this._onMessage)
126
+ .on('error', this._onError)
127
+ .on('exit', this._onExit);
128
+ }
129
+
130
+ private readonly _onError = (e: unknown): void => { this.emit('error', e); };
131
+
132
+ private readonly _onExit = (): void => { this.destroy(); };
133
+
134
+ public destroy(): void {
135
+
136
+ this._closed = true;
137
+
138
+ this._worker.removeListener('message', this._onMessage);
139
+ this._worker.removeListener('error', this._onError);
140
+ this._worker.removeListener('exit', this._onExit);
141
+
142
+ this.emit('close');
143
+ }
144
+
145
+ public get writable(): boolean {
146
+
147
+ return !this._closed;
148
+ }
149
+
150
+ public write(frame: Array<string | Buffer>): void {
151
+
152
+ if (this._closed) {
153
+
154
+ throw new Shared.errors.network_error({ reason: 'conn_lost' });
155
+ }
156
+
157
+ this._write(this._worker, frame);
158
+ }
159
+ }
160
+
161
+ export class WorkerThreadTransporter extends AbstractThreadTransporter implements dT.ITransporter, Shared.ITransporter {
162
+
163
+ private _hold: NodeJS.Timeout | null = setInterval(() => { return; }, 3600_000);
164
+
165
+ public constructor(protocol: string) {
166
+
167
+ super(protocol);
168
+
169
+ if (NodeWorker.isMainThread) {
170
+
171
+ throw new eWT.E_WORKER_THREAD_ONLY();
172
+ }
173
+
174
+ NodeWorker.parentPort!.on('message', this._onMessage);
175
+ }
176
+
177
+ public destroy(): void {
178
+
179
+ if (this._hold) {
180
+
181
+ clearInterval(this._hold);
182
+ this._hold = null;
183
+
184
+ NodeWorker.parentPort!.removeListener('message', this._onMessage);
185
+
186
+ this.emit('close');
187
+ }
188
+ }
189
+
190
+ public get writable(): boolean {
191
+
192
+ return !!this._hold;
193
+ }
194
+
195
+ public write(frame: Array<string | Buffer>): void {
196
+
197
+ if (!this._hold) {
198
+
199
+ throw new Shared.errors.network_error({ reason: 'conn_lost' });
200
+ }
201
+
202
+ super._write(NodeWorker.parentPort!, frame);
203
+ }
204
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Copyright 2025 Angus.Fenying <fenying@litert.org>
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ export * from './WorkerThread.Client';
18
+ export * from './WorkerThread.Server';
19
+ export * from './WorkerThread.Constants';