@litert/televoke 0.4.7 → 1.0.0-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.
- package/CHANGES.md +4 -2
- package/README.md +13 -8
- package/lib/client/Client.decl.d.ts +47 -0
- package/lib/client/Client.decl.d.ts.map +1 -0
- package/lib/client/Client.decl.js +18 -0
- package/lib/client/Client.decl.js.map +1 -0
- package/lib/client/JsonApiClient.impl.d.ts +28 -0
- package/lib/client/JsonApiClient.impl.d.ts.map +1 -0
- package/lib/client/JsonApiClient.impl.js +169 -0
- package/lib/client/JsonApiClient.impl.js.map +1 -0
- package/lib/client/LegacyHttpClient.impl.d.ts +62 -0
- package/lib/client/LegacyHttpClient.impl.d.ts.map +1 -0
- package/lib/client/LegacyHttpClient.impl.js +163 -0
- package/lib/client/LegacyHttpClient.impl.js.map +1 -0
- package/lib/client/index.d.ts +19 -0
- package/lib/client/index.d.ts.map +1 -0
- package/lib/client/index.js +35 -0
- package/lib/client/index.js.map +1 -0
- package/lib/index.d.ts +18 -20
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +19 -20
- package/lib/index.js.map +1 -1
- package/lib/server/LegacyServerChannel.impl.d.ts +38 -0
- package/lib/server/LegacyServerChannel.impl.d.ts.map +1 -0
- package/lib/server/LegacyServerChannel.impl.js +51 -0
- package/lib/server/LegacyServerChannel.impl.js.map +1 -0
- package/lib/server/Server.decl.d.ts +81 -0
- package/lib/server/Server.decl.d.ts.map +1 -0
- package/lib/server/Server.decl.js +18 -0
- package/lib/server/Server.decl.js.map +1 -0
- package/lib/server/Server.impl.d.ts +33 -0
- package/lib/server/Server.impl.d.ts.map +1 -0
- package/lib/server/Server.impl.js +58 -0
- package/lib/server/Server.impl.js.map +1 -0
- package/lib/server/ServerChannel.d.ts +20 -0
- package/lib/server/ServerChannel.d.ts.map +1 -0
- package/lib/server/ServerChannel.js +23 -0
- package/lib/server/ServerChannel.js.map +1 -0
- package/lib/server/SimpleJsonApiRouter.d.ts +28 -0
- package/lib/server/SimpleJsonApiRouter.d.ts.map +1 -0
- package/lib/server/SimpleJsonApiRouter.js +92 -0
- package/lib/server/SimpleJsonApiRouter.js.map +1 -0
- package/lib/server/index.d.ts +19 -0
- package/lib/server/index.d.ts.map +1 -0
- package/lib/server/index.js +35 -0
- package/lib/server/index.js.map +1 -0
- package/lib/shared/BinaryStream.d.ts +32 -0
- package/lib/shared/BinaryStream.d.ts.map +1 -0
- package/lib/shared/BinaryStream.js +93 -0
- package/lib/shared/BinaryStream.js.map +1 -0
- package/lib/shared/BinaryStreamManager.d.ts +52 -0
- package/lib/shared/BinaryStreamManager.d.ts.map +1 -0
- package/lib/shared/BinaryStreamManager.js +105 -0
- package/lib/shared/BinaryStreamManager.js.map +1 -0
- package/lib/shared/Channel.impl.d.ts +79 -0
- package/lib/shared/Channel.impl.d.ts.map +1 -0
- package/lib/shared/Channel.impl.js +433 -0
- package/lib/shared/Channel.impl.js.map +1 -0
- package/lib/shared/Constants.d.ts +32 -0
- package/lib/shared/Constants.d.ts.map +1 -0
- package/lib/shared/Constants.js +35 -0
- package/lib/shared/Constants.js.map +1 -0
- package/lib/shared/Encodings/index.d.ts +18 -0
- package/lib/shared/Encodings/index.d.ts.map +1 -0
- package/lib/shared/Encodings/index.js +21 -0
- package/lib/shared/Encodings/index.js.map +1 -0
- package/lib/shared/Encodings/v1/EncoderV1.d.ts +22 -0
- package/lib/shared/Encodings/v1/EncoderV1.d.ts.map +1 -0
- package/lib/shared/Encodings/v1/EncoderV1.js +47 -0
- package/lib/shared/Encodings/v1/EncoderV1.js.map +1 -0
- package/lib/shared/Encodings/v1/Protocol.v1.decls.d.ts +78 -0
- package/lib/shared/Encodings/v1/Protocol.v1.decls.d.ts.map +1 -0
- package/lib/shared/Encodings/v1/Protocol.v1.decls.js +53 -0
- package/lib/shared/Encodings/v1/Protocol.v1.decls.js.map +1 -0
- package/lib/shared/Encodings/v1/index.d.ts +18 -0
- package/lib/shared/Encodings/v1/index.d.ts.map +1 -0
- package/lib/shared/Encodings/v1/index.js +34 -0
- package/lib/shared/Encodings/v1/index.js.map +1 -0
- package/lib/shared/Encodings/v2/Constants.v2.d.ts +29 -0
- package/lib/shared/Encodings/v2/Constants.v2.d.ts.map +1 -0
- package/lib/shared/Encodings/v2/Constants.v2.js +34 -0
- package/lib/shared/Encodings/v2/Constants.v2.js.map +1 -0
- package/lib/shared/Encodings/v2/DecoderV2.d.ts +27 -0
- package/lib/shared/Encodings/v2/DecoderV2.d.ts.map +1 -0
- package/lib/shared/Encodings/v2/DecoderV2.js +279 -0
- package/lib/shared/Encodings/v2/DecoderV2.js.map +1 -0
- package/lib/shared/Encodings/v2/EncoderV2.d.ts +21 -0
- package/lib/shared/Encodings/v2/EncoderV2.d.ts.map +1 -0
- package/lib/shared/Encodings/v2/EncoderV2.js +176 -0
- package/lib/shared/Encodings/v2/EncoderV2.js.map +1 -0
- package/lib/shared/Encodings/v2/Encoding.v2.decl.d.ts +95 -0
- package/lib/shared/Encodings/v2/Encoding.v2.decl.d.ts.map +1 -0
- package/lib/shared/Encodings/v2/Encoding.v2.decl.js +18 -0
- package/lib/shared/Encodings/v2/Encoding.v2.decl.js.map +1 -0
- package/lib/shared/Encodings/v2/index.d.ts +20 -0
- package/lib/shared/Encodings/v2/index.d.ts.map +1 -0
- package/lib/shared/Encodings/v2/index.js +35 -0
- package/lib/shared/Encodings/v2/index.js.map +1 -0
- package/lib/shared/Errors.d.ts +60 -0
- package/lib/shared/Errors.d.ts.map +1 -0
- package/lib/shared/Errors.js +75 -0
- package/lib/shared/Errors.js.map +1 -0
- package/lib/shared/Shared.decl.d.ts +296 -0
- package/lib/shared/Shared.decl.d.ts.map +1 -0
- package/lib/shared/Shared.decl.js +18 -0
- package/lib/shared/Shared.decl.js.map +1 -0
- package/lib/shared/Utils.d.ts +25 -0
- package/lib/shared/Utils.d.ts.map +1 -0
- package/lib/shared/Utils.js +46 -0
- package/lib/shared/Utils.js.map +1 -0
- package/lib/shared/index.d.ts +23 -0
- package/lib/shared/index.d.ts.map +1 -0
- package/lib/shared/index.js +39 -0
- package/lib/shared/index.js.map +1 -0
- package/lib/transporters/Transporter.decl.d.ts +90 -0
- package/lib/transporters/Transporter.decl.d.ts.map +1 -0
- package/lib/transporters/Transporter.decl.js +18 -0
- package/lib/transporters/Transporter.decl.js.map +1 -0
- package/lib/transporters/http-listener/AbstractHttpListener.d.ts +32 -0
- package/lib/transporters/http-listener/AbstractHttpListener.d.ts.map +1 -0
- package/lib/transporters/http-listener/AbstractHttpListener.js +46 -0
- package/lib/transporters/http-listener/AbstractHttpListener.js.map +1 -0
- package/lib/transporters/http-listener/Http.Decl.d.ts +95 -0
- package/lib/transporters/http-listener/Http.Decl.d.ts.map +1 -0
- package/lib/transporters/http-listener/Http.Decl.js +52 -0
- package/lib/transporters/http-listener/Http.Decl.js.map +1 -0
- package/lib/transporters/http-listener/HttpListener.d.ts +18 -0
- package/lib/transporters/http-listener/HttpListener.d.ts.map +1 -0
- package/lib/transporters/http-listener/HttpListener.js +73 -0
- package/lib/transporters/http-listener/HttpListener.js.map +1 -0
- package/lib/transporters/http-listener/HttpUnixSocketListener.d.ts +18 -0
- package/lib/transporters/http-listener/HttpUnixSocketListener.d.ts.map +1 -0
- package/lib/transporters/http-listener/HttpUnixSocketListener.js +72 -0
- package/lib/transporters/http-listener/HttpUnixSocketListener.js.map +1 -0
- package/lib/transporters/http-listener/HttpsListener.d.ts +18 -0
- package/lib/transporters/http-listener/HttpsListener.d.ts.map +1 -0
- package/lib/transporters/http-listener/HttpsListener.js +73 -0
- package/lib/transporters/http-listener/HttpsListener.js.map +1 -0
- package/lib/transporters/http-listener/index.d.ts +20 -0
- package/lib/transporters/http-listener/index.d.ts.map +1 -0
- package/lib/transporters/http-listener/index.js +36 -0
- package/lib/transporters/http-listener/index.js.map +1 -0
- package/lib/transporters/index.d.ts +17 -0
- package/lib/transporters/index.d.ts.map +1 -0
- package/lib/transporters/index.js +18 -0
- package/lib/transporters/index.js.map +1 -0
- package/lib/transporters/legacy-http/LegacyHttp.Server.d.ts +24 -0
- package/lib/transporters/legacy-http/LegacyHttp.Server.d.ts.map +1 -0
- package/lib/transporters/legacy-http/LegacyHttp.Server.js +167 -0
- package/lib/transporters/legacy-http/LegacyHttp.Server.js.map +1 -0
- package/lib/transporters/legacy-http/LegacyHttp.Transporter.d.ts +28 -0
- package/lib/transporters/legacy-http/LegacyHttp.Transporter.d.ts.map +1 -0
- package/lib/transporters/legacy-http/LegacyHttp.Transporter.js +55 -0
- package/lib/transporters/legacy-http/LegacyHttp.Transporter.js.map +1 -0
- package/lib/transporters/legacy-http/index.d.ts +18 -0
- package/lib/transporters/legacy-http/index.d.ts.map +1 -0
- package/lib/transporters/legacy-http/index.js +34 -0
- package/lib/transporters/legacy-http/index.js.map +1 -0
- package/lib/transporters/lwdfx/LwDFX.Tcp.Client.d.ts +19 -0
- package/lib/transporters/lwdfx/LwDFX.Tcp.Client.d.ts.map +1 -0
- package/lib/transporters/lwdfx/LwDFX.Tcp.Client.js +33 -0
- package/lib/transporters/lwdfx/LwDFX.Tcp.Client.js.map +1 -0
- package/lib/transporters/lwdfx/LwDFX.Tcp.Server.d.ts +21 -0
- package/lib/transporters/lwdfx/LwDFX.Tcp.Server.d.ts.map +1 -0
- package/lib/transporters/lwdfx/LwDFX.Tcp.Server.js +64 -0
- package/lib/transporters/lwdfx/LwDFX.Tcp.Server.js.map +1 -0
- package/lib/transporters/lwdfx/LwDFX.Tls.Client.d.ts +19 -0
- package/lib/transporters/lwdfx/LwDFX.Tls.Client.d.ts.map +1 -0
- package/lib/transporters/lwdfx/LwDFX.Tls.Client.js +33 -0
- package/lib/transporters/lwdfx/LwDFX.Tls.Client.js.map +1 -0
- package/lib/transporters/lwdfx/LwDFX.Tls.Server.d.ts +21 -0
- package/lib/transporters/lwdfx/LwDFX.Tls.Server.d.ts.map +1 -0
- package/lib/transporters/lwdfx/LwDFX.Tls.Server.js +64 -0
- package/lib/transporters/lwdfx/LwDFX.Tls.Server.js.map +1 -0
- package/lib/transporters/lwdfx/LwDFX.Transporter.d.ts +34 -0
- package/lib/transporters/lwdfx/LwDFX.Transporter.d.ts.map +1 -0
- package/lib/transporters/lwdfx/LwDFX.Transporter.js +78 -0
- package/lib/transporters/lwdfx/LwDFX.Transporter.js.map +1 -0
- package/lib/transporters/lwdfx/LwDFX.UnixSocket.Client.d.ts +19 -0
- package/lib/transporters/lwdfx/LwDFX.UnixSocket.Client.d.ts.map +1 -0
- package/lib/transporters/lwdfx/LwDFX.UnixSocket.Client.js +33 -0
- package/lib/transporters/lwdfx/LwDFX.UnixSocket.Client.js.map +1 -0
- package/lib/transporters/lwdfx/LwDFX.UnixSocket.Server.d.ts +21 -0
- package/lib/transporters/lwdfx/LwDFX.UnixSocket.Server.d.ts.map +1 -0
- package/lib/transporters/lwdfx/LwDFX.UnixSocket.Server.js +64 -0
- package/lib/transporters/lwdfx/LwDFX.UnixSocket.Server.js.map +1 -0
- package/lib/transporters/lwdfx/LwDFX.decl.d.ts +18 -0
- package/lib/transporters/lwdfx/LwDFX.decl.d.ts.map +1 -0
- package/lib/transporters/lwdfx/LwDFX.decl.js +18 -0
- package/lib/transporters/lwdfx/LwDFX.decl.js.map +1 -0
- package/lib/transporters/lwdfx/index.d.ts +23 -0
- package/lib/transporters/lwdfx/index.d.ts.map +1 -0
- package/lib/transporters/lwdfx/index.js +39 -0
- package/lib/transporters/lwdfx/index.js.map +1 -0
- package/lib/transporters/memory/Memory.Impl.d.ts +43 -0
- package/lib/transporters/memory/Memory.Impl.d.ts.map +1 -0
- package/lib/transporters/memory/Memory.Impl.js +227 -0
- package/lib/transporters/memory/Memory.Impl.js.map +1 -0
- package/lib/transporters/memory/index.d.ts +17 -0
- package/lib/transporters/memory/index.d.ts.map +1 -0
- package/lib/transporters/memory/index.js +33 -0
- package/lib/transporters/memory/index.js.map +1 -0
- package/lib/transporters/websocket/WebSocket.Client.d.ts +20 -0
- package/lib/transporters/websocket/WebSocket.Client.d.ts.map +1 -0
- package/lib/transporters/websocket/WebSocket.Client.js +68 -0
- package/lib/transporters/websocket/WebSocket.Client.js.map +1 -0
- package/lib/transporters/websocket/WebSocket.Server.d.ts +25 -0
- package/lib/transporters/websocket/WebSocket.Server.d.ts.map +1 -0
- package/lib/transporters/websocket/WebSocket.Server.js +87 -0
- package/lib/transporters/websocket/WebSocket.Server.js.map +1 -0
- package/lib/transporters/websocket/WebSocket.Transporter.d.ts +34 -0
- package/lib/transporters/websocket/WebSocket.Transporter.d.ts.map +1 -0
- package/lib/transporters/websocket/WebSocket.Transporter.js +106 -0
- package/lib/transporters/websocket/WebSocket.Transporter.js.map +1 -0
- package/lib/transporters/websocket/WebSocket.decl.d.ts +19 -0
- package/lib/transporters/websocket/WebSocket.decl.d.ts.map +1 -0
- package/lib/transporters/websocket/WebSocket.decl.js +22 -0
- package/lib/transporters/websocket/WebSocket.decl.js.map +1 -0
- package/lib/transporters/websocket/index.d.ts +19 -0
- package/lib/transporters/websocket/index.d.ts.map +1 -0
- package/lib/transporters/websocket/index.js +35 -0
- package/lib/transporters/websocket/index.js.map +1 -0
- package/package.json +12 -12
- package/src/lib/client/Client.decl.ts +61 -0
- package/src/lib/client/JsonApiClient.impl.ts +258 -0
- package/src/lib/client/LegacyHttpClient.impl.ts +278 -0
- package/src/lib/client/index.ts +19 -0
- package/src/lib/index.ts +18 -20
- package/src/lib/server/LegacyServerChannel.impl.ts +71 -0
- package/src/lib/server/Server.decl.ts +109 -0
- package/src/lib/server/Server.impl.ts +90 -0
- package/src/lib/server/ServerChannel.ts +20 -0
- package/src/lib/server/SimpleJsonApiRouter.ts +135 -0
- package/src/lib/server/index.ts +19 -0
- package/src/lib/shared/BinaryStream.ts +131 -0
- package/src/lib/shared/BinaryStreamManager.ts +142 -0
- package/src/lib/shared/Channel.impl.ts +641 -0
- package/src/lib/shared/Constants.ts +35 -0
- package/src/lib/shared/Encodings/index.ts +18 -0
- package/src/lib/shared/Encodings/v1/EncoderV1.ts +66 -0
- package/src/lib/shared/Encodings/v1/Protocol.v1.decls.ts +96 -0
- package/src/lib/shared/Encodings/v1/index.ts +18 -0
- package/src/lib/shared/Encodings/v2/Constants.v2.ts +31 -0
- package/src/lib/shared/Encodings/v2/DecoderV2.ts +404 -0
- package/src/lib/shared/Encodings/v2/EncoderV2.ts +283 -0
- package/src/lib/shared/Encodings/v2/Encoding.v2.decl.ts +133 -0
- package/src/lib/shared/Encodings/v2/index.ts +20 -0
- package/src/lib/shared/Errors.ts +94 -0
- package/src/lib/shared/Shared.decl.ts +347 -0
- package/src/lib/shared/Utils.ts +51 -0
- package/src/lib/shared/index.ts +23 -0
- package/src/lib/transporters/Transporter.decl.ts +117 -0
- package/src/lib/transporters/http-listener/AbstractHttpListener.ts +57 -0
- package/src/lib/transporters/http-listener/Http.Decl.ts +141 -0
- package/src/lib/transporters/http-listener/HttpListener.ts +102 -0
- package/src/lib/transporters/http-listener/HttpUnixSocketListener.ts +97 -0
- package/src/lib/transporters/http-listener/HttpsListener.ts +102 -0
- package/src/lib/transporters/http-listener/index.ts +20 -0
- package/src/lib/transporters/index.ts +17 -0
- package/src/lib/transporters/legacy-http/LegacyHttp.Server.ts +262 -0
- package/src/lib/transporters/legacy-http/LegacyHttp.Transporter.ts +66 -0
- package/src/lib/transporters/legacy-http/index.ts +18 -0
- package/src/lib/transporters/lwdfx/LwDFX.Tcp.Client.ts +34 -0
- package/src/lib/transporters/lwdfx/LwDFX.Tcp.Server.ts +94 -0
- package/src/lib/transporters/lwdfx/LwDFX.Tls.Client.ts +34 -0
- package/src/lib/transporters/lwdfx/LwDFX.Tls.Server.ts +94 -0
- package/src/lib/transporters/lwdfx/LwDFX.Transporter.ts +100 -0
- package/src/lib/transporters/lwdfx/LwDFX.UnixSocket.Client.ts +34 -0
- package/src/lib/transporters/lwdfx/LwDFX.UnixSocket.Server.ts +94 -0
- package/src/lib/transporters/lwdfx/LwDFX.decl.ts +19 -0
- package/src/lib/transporters/lwdfx/index.ts +23 -0
- package/src/lib/transporters/memory/Memory.Impl.ts +363 -0
- package/src/lib/transporters/memory/index.ts +17 -0
- package/src/lib/transporters/websocket/WebSocket.Client.ts +76 -0
- package/src/lib/transporters/websocket/WebSocket.Server.ts +118 -0
- package/src/lib/transporters/websocket/WebSocket.Transporter.ts +132 -0
- package/src/lib/transporters/websocket/WebSocket.decl.ts +21 -0
- package/src/lib/transporters/websocket/index.ts +19 -0
- package/lib/Client/BuiltInRIDGenerator.d.ts +0 -4
- package/lib/Client/BuiltInRIDGenerator.d.ts.map +0 -1
- package/lib/Client/BuiltInRIDGenerator.js +0 -18
- package/lib/Client/BuiltInRIDGenerator.js.map +0 -1
- package/lib/Client/Common.d.ts +0 -47
- package/lib/Client/Common.d.ts.map +0 -1
- package/lib/Client/Common.js +0 -18
- package/lib/Client/Common.js.map +0 -1
- package/lib/Client/Errors.d.ts +0 -26
- package/lib/Client/Errors.d.ts.map +0 -1
- package/lib/Client/Errors.js +0 -80
- package/lib/Client/Errors.js.map +0 -1
- package/lib/Client/HttpClient.d.ts +0 -37
- package/lib/Client/HttpClient.d.ts.map +0 -1
- package/lib/Client/HttpClient.js +0 -148
- package/lib/Client/HttpClient.js.map +0 -1
- package/lib/Client/HttpsClient.d.ts +0 -40
- package/lib/Client/HttpsClient.d.ts.map +0 -1
- package/lib/Client/HttpsClient.js +0 -144
- package/lib/Client/HttpsClient.js.map +0 -1
- package/lib/Client/TCPClient.d.ts +0 -34
- package/lib/Client/TCPClient.d.ts.map +0 -1
- package/lib/Client/TCPClient.js +0 -271
- package/lib/Client/TCPClient.js.map +0 -1
- package/lib/Client/TLSClient.d.ts +0 -34
- package/lib/Client/TLSClient.d.ts.map +0 -1
- package/lib/Client/TLSClient.js +0 -265
- package/lib/Client/TLSClient.js.map +0 -1
- package/lib/Client/index.d.ts +0 -23
- package/lib/Client/index.d.ts.map +0 -1
- package/lib/Client/index.js +0 -39
- package/lib/Client/index.js.map +0 -1
- package/lib/Common/API.d.ts +0 -19
- package/lib/Common/API.d.ts.map +0 -1
- package/lib/Common/API.js +0 -18
- package/lib/Common/API.js.map +0 -1
- package/lib/Common/Encoding.d.ts +0 -32
- package/lib/Common/Encoding.d.ts.map +0 -1
- package/lib/Common/Encoding.js +0 -20
- package/lib/Common/Encoding.js.map +0 -1
- package/lib/Common/Request.d.ts +0 -23
- package/lib/Common/Request.d.ts.map +0 -1
- package/lib/Common/Request.js +0 -18
- package/lib/Common/Request.js.map +0 -1
- package/lib/Common/Response.d.ts +0 -60
- package/lib/Common/Response.d.ts.map +0 -1
- package/lib/Common/Response.js +0 -42
- package/lib/Common/Response.js.map +0 -1
- package/lib/Common/index.d.ts +0 -20
- package/lib/Common/index.d.ts.map +0 -1
- package/lib/Common/index.js +0 -36
- package/lib/Common/index.js.map +0 -1
- package/lib/Encoder/Decoder.d.ts +0 -18
- package/lib/Encoder/Decoder.d.ts.map +0 -1
- package/lib/Encoder/Decoder.js +0 -136
- package/lib/Encoder/Decoder.js.map +0 -1
- package/lib/Encoder/Encoder.d.ts +0 -18
- package/lib/Encoder/Encoder.d.ts.map +0 -1
- package/lib/Encoder/Encoder.js +0 -35
- package/lib/Encoder/Encoder.js.map +0 -1
- package/lib/Encoder/Errors.d.ts +0 -17
- package/lib/Encoder/Errors.d.ts.map +0 -1
- package/lib/Encoder/Errors.js +0 -26
- package/lib/Encoder/Errors.js.map +0 -1
- package/lib/Errors.d.ts +0 -20
- package/lib/Errors.d.ts.map +0 -1
- package/lib/Errors.js +0 -40
- package/lib/Errors.js.map +0 -1
- package/lib/Server/Common/Gateway.d.ts +0 -26
- package/lib/Server/Common/Gateway.d.ts.map +0 -1
- package/lib/Server/Common/Gateway.js +0 -18
- package/lib/Server/Common/Gateway.js.map +0 -1
- package/lib/Server/Common/Request.d.ts +0 -21
- package/lib/Server/Common/Request.d.ts.map +0 -1
- package/lib/Server/Common/Request.js +0 -18
- package/lib/Server/Common/Request.js.map +0 -1
- package/lib/Server/Common/Router.d.ts +0 -41
- package/lib/Server/Common/Router.d.ts.map +0 -1
- package/lib/Server/Common/Router.js +0 -18
- package/lib/Server/Common/Router.js.map +0 -1
- package/lib/Server/Common/Server.d.ts +0 -57
- package/lib/Server/Common/Server.d.ts.map +0 -1
- package/lib/Server/Common/Server.js +0 -18
- package/lib/Server/Common/Server.js.map +0 -1
- package/lib/Server/Common/index.d.ts +0 -20
- package/lib/Server/Common/index.d.ts.map +0 -1
- package/lib/Server/Common/index.js +0 -36
- package/lib/Server/Common/index.js.map +0 -1
- package/lib/Server/Errors.d.ts +0 -25
- package/lib/Server/Errors.d.ts.map +0 -1
- package/lib/Server/Errors.js +0 -74
- package/lib/Server/Errors.js.map +0 -1
- package/lib/Server/Gateways/Http.d.ts +0 -18
- package/lib/Server/Gateways/Http.d.ts.map +0 -1
- package/lib/Server/Gateways/Http.js +0 -148
- package/lib/Server/Gateways/Http.js.map +0 -1
- package/lib/Server/Gateways/TCP.d.ts +0 -23
- package/lib/Server/Gateways/TCP.d.ts.map +0 -1
- package/lib/Server/Gateways/TCP.js +0 -146
- package/lib/Server/Gateways/TCP.js.map +0 -1
- package/lib/Server/Server.d.ts +0 -18
- package/lib/Server/Server.d.ts.map +0 -1
- package/lib/Server/Server.js +0 -200
- package/lib/Server/Server.js.map +0 -1
- package/lib/Server/SimpleRouter.d.ts +0 -41
- package/lib/Server/SimpleRouter.d.ts.map +0 -1
- package/lib/Server/SimpleRouter.js +0 -54
- package/lib/Server/SimpleRouter.js.map +0 -1
- package/lib/Server/index.d.ts +0 -22
- package/lib/Server/index.d.ts.map +0 -1
- package/lib/Server/index.js +0 -38
- package/lib/Server/index.js.map +0 -1
- package/src/lib/Client/BuiltInRIDGenerator.ts +0 -21
- package/src/lib/Client/Common.ts +0 -63
- package/src/lib/Client/Errors.ts +0 -87
- package/src/lib/Client/HttpClient.ts +0 -232
- package/src/lib/Client/HttpsClient.ts +0 -238
- package/src/lib/Client/TCPClient.ts +0 -420
- package/src/lib/Client/TLSClient.ts +0 -422
- package/src/lib/Client/index.ts +0 -23
- package/src/lib/Common/API.ts +0 -20
- package/src/lib/Common/Encoding.ts +0 -42
- package/src/lib/Common/Request.ts +0 -28
- package/src/lib/Common/Response.ts +0 -67
- package/src/lib/Common/index.ts +0 -20
- package/src/lib/Encoder/Decoder.ts +0 -206
- package/src/lib/Encoder/Encoder.ts +0 -41
- package/src/lib/Encoder/Errors.ts +0 -24
- package/src/lib/Errors.ts +0 -40
- package/src/lib/Server/Common/Gateway.ts +0 -37
- package/src/lib/Server/Common/Request.ts +0 -24
- package/src/lib/Server/Common/Router.ts +0 -52
- package/src/lib/Server/Common/Server.ts +0 -68
- package/src/lib/Server/Common/index.ts +0 -20
- package/src/lib/Server/Errors.ts +0 -80
- package/src/lib/Server/Gateways/Http.ts +0 -209
- package/src/lib/Server/Gateways/TCP.ts +0 -221
- package/src/lib/Server/Server.ts +0 -268
- package/src/lib/Server/SimpleRouter.ts +0 -95
- package/src/lib/Server/index.ts +0 -22
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 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 LwDFX from '@litert/lwdfx';
|
|
18
|
+
import type * as dT from '../Transporter.decl';
|
|
19
|
+
import { LwDFXTransporter } from './LwDFX.Transporter';
|
|
20
|
+
|
|
21
|
+
class LwDfxUnixSocketConnector implements dT.IConnector {
|
|
22
|
+
|
|
23
|
+
public constructor(private readonly _opts: LwDFX.UnixSocket.IUnixSocketClientOptions) {}
|
|
24
|
+
|
|
25
|
+
public async connect(): Promise<dT.ITransporter> {
|
|
26
|
+
|
|
27
|
+
return new LwDFXTransporter('lwdfx/unix', await LwDFX.UnixSocket.connect(this._opts));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function createUnixSocketConnector(opts: LwDFX.UnixSocket.IUnixSocketClientOptions): dT.IConnector {
|
|
32
|
+
|
|
33
|
+
return new LwDfxUnixSocketConnector(opts);
|
|
34
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 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 LwDFX from '@litert/lwdfx';
|
|
18
|
+
import type * as dT from '../Transporter.decl';
|
|
19
|
+
import type * as dL from './LwDFX.decl';
|
|
20
|
+
import { EventEmitter } from 'node:events';
|
|
21
|
+
import { LwDFXTransporter } from './LwDFX.Transporter';
|
|
22
|
+
|
|
23
|
+
export type ILwDfxUnixSocketGatewayOptions = LwDFX.UnixSocket.IUnixSocketGatewayOptions;
|
|
24
|
+
|
|
25
|
+
class LwDfxUnixSocketGateway extends EventEmitter implements dT.IGateway {
|
|
26
|
+
|
|
27
|
+
private _gateway: LwDFX.UnixSocket.IUnixSocketGateway | null = null;
|
|
28
|
+
|
|
29
|
+
private readonly _lwdfxServer: LwDFX.IServer;
|
|
30
|
+
|
|
31
|
+
public constructor(
|
|
32
|
+
serverOpts: dL.ILwDfxServerOptions,
|
|
33
|
+
private readonly _gatewayOpts: ILwDfxUnixSocketGatewayOptions,
|
|
34
|
+
private readonly _server: dT.IServer,
|
|
35
|
+
) {
|
|
36
|
+
|
|
37
|
+
super();
|
|
38
|
+
|
|
39
|
+
this._lwdfxServer = LwDFX.createServer({
|
|
40
|
+
...serverOpts,
|
|
41
|
+
alpWhitelist: ['televoke2']
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
this._lwdfxServer.on('connection', (conn) => {
|
|
45
|
+
|
|
46
|
+
this._server.registerChannel(new LwDFXTransporter('lwdfx/unix', conn));
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
public get running(): boolean {
|
|
51
|
+
|
|
52
|
+
return !!this._gateway;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
public async start(): Promise<void> {
|
|
56
|
+
|
|
57
|
+
if (this._gateway) {
|
|
58
|
+
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
this._gateway = LwDFX.UnixSocket.createGateway(this._lwdfxServer, this._gatewayOpts);
|
|
63
|
+
|
|
64
|
+
try {
|
|
65
|
+
|
|
66
|
+
await this._gateway.start();
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
|
|
70
|
+
this._gateway = null;
|
|
71
|
+
throw e;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
public async stop(): Promise<void> {
|
|
76
|
+
|
|
77
|
+
if (!this._gateway) {
|
|
78
|
+
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
await this._gateway.stop();
|
|
83
|
+
this._gateway = null;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export function createUnixSocketGateway(
|
|
88
|
+
server: dT.IServer,
|
|
89
|
+
gatewayOpts: ILwDfxUnixSocketGatewayOptions,
|
|
90
|
+
serverOpts: dL.ILwDfxServerOptions = {},
|
|
91
|
+
): dT.IGateway {
|
|
92
|
+
|
|
93
|
+
return new LwDfxUnixSocketGateway(serverOpts, gatewayOpts, server);
|
|
94
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 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 LwDFX from '@litert/lwdfx';
|
|
18
|
+
|
|
19
|
+
export type ILwDfxServerOptions = Partial<Pick<LwDFX.IServer, 'maxConnections' | 'timeout' | 'handshakeTimeout' | 'maxFrameSize'>>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 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 './LwDFX.Tcp.Client';
|
|
18
|
+
export * from './LwDFX.Tls.Client';
|
|
19
|
+
export * from './LwDFX.Tcp.Server';
|
|
20
|
+
export * from './LwDFX.Tls.Server';
|
|
21
|
+
export * from './LwDFX.UnixSocket.Client';
|
|
22
|
+
export * from './LwDFX.UnixSocket.Server';
|
|
23
|
+
export * from './LwDFX.decl';
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 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 Shared from '../../shared';
|
|
18
|
+
import type * as dT from '../Transporter.decl';
|
|
19
|
+
import { EventEmitter } from 'node:events';
|
|
20
|
+
import * as Crypto from 'node:crypto';
|
|
21
|
+
|
|
22
|
+
export interface IGatewayOptions {
|
|
23
|
+
|
|
24
|
+
name?: string;
|
|
25
|
+
|
|
26
|
+
server: dT.IServer;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function createRandomName(): string {
|
|
30
|
+
|
|
31
|
+
return Crypto.randomBytes(8).toString('hex');
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
interface IMemoryExchangeEvents extends Shared.IDefaultEvents {
|
|
35
|
+
|
|
36
|
+
['data_a'](data: any): void;
|
|
37
|
+
|
|
38
|
+
['data_b'](data: any): void;
|
|
39
|
+
|
|
40
|
+
['end_a'](): void;
|
|
41
|
+
|
|
42
|
+
['end_b'](): void;
|
|
43
|
+
|
|
44
|
+
close(): void;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
class MemoryExchange extends EventEmitter implements Shared.IEventListener<IMemoryExchangeEvents> {
|
|
48
|
+
|
|
49
|
+
private _aEnded: boolean = false;
|
|
50
|
+
|
|
51
|
+
private _bEnded: boolean = false;
|
|
52
|
+
|
|
53
|
+
public constructor(
|
|
54
|
+
public readonly name: string
|
|
55
|
+
) {
|
|
56
|
+
|
|
57
|
+
super();
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
public send(targetEndpoint: 'a' | 'b', data: any): void {
|
|
61
|
+
|
|
62
|
+
setImmediate(() => this.emit('data_' + targetEndpoint, data));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
public isEnded(endpoint: 'a' | 'b'): boolean {
|
|
66
|
+
|
|
67
|
+
if (endpoint === 'a') {
|
|
68
|
+
|
|
69
|
+
return this._aEnded;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return this._bEnded;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
public end(endpoint: 'a' | 'b'): void {
|
|
76
|
+
|
|
77
|
+
if (this._aEnded && this._bEnded) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (endpoint === 'a') {
|
|
82
|
+
|
|
83
|
+
if (this._aEnded) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
this._aEnded = true;
|
|
88
|
+
setImmediate(() => this.emit('end_a'));
|
|
89
|
+
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
|
|
93
|
+
if (this._bEnded) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
this._bEnded = true;
|
|
98
|
+
setImmediate(() => this.emit('end_b'));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (this._aEnded && this._bEnded) {
|
|
102
|
+
|
|
103
|
+
setImmediate(() => this.emit('close'));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
public close(): void {
|
|
108
|
+
|
|
109
|
+
this.end('a');
|
|
110
|
+
this.end('b');
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
class MemorySocket extends EventEmitter implements dT.ITransporter, Shared.ITransporter {
|
|
115
|
+
|
|
116
|
+
private readonly _targetEndpoint: 'a' | 'b';
|
|
117
|
+
|
|
118
|
+
public readonly protocol: string = 'memory';
|
|
119
|
+
|
|
120
|
+
public constructor(
|
|
121
|
+
private readonly _exchange: MemoryExchange,
|
|
122
|
+
private readonly _endpoint: 'a' | 'b'
|
|
123
|
+
) {
|
|
124
|
+
super();
|
|
125
|
+
this._targetEndpoint = _endpoint === 'a' ? 'b' : 'a';
|
|
126
|
+
|
|
127
|
+
this._exchange
|
|
128
|
+
.on('end_' + this._targetEndpoint, () => {
|
|
129
|
+
try {
|
|
130
|
+
this.emit('end');
|
|
131
|
+
}
|
|
132
|
+
catch (e) {
|
|
133
|
+
this.emit('error', e);
|
|
134
|
+
}
|
|
135
|
+
})
|
|
136
|
+
.on('data_' + this._endpoint, (data) => {
|
|
137
|
+
try {
|
|
138
|
+
this.emit('frame', data);
|
|
139
|
+
}
|
|
140
|
+
catch (e) {
|
|
141
|
+
this.emit('error', e);
|
|
142
|
+
}
|
|
143
|
+
})
|
|
144
|
+
.on('error', (e) => this.emit('error', e))
|
|
145
|
+
.on('close', () => this.emit('close'));
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
public get writable(): boolean {
|
|
149
|
+
|
|
150
|
+
return !this._exchange.isEnded(this._endpoint);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
public getProperty(name: string): unknown {
|
|
154
|
+
|
|
155
|
+
switch (name) {
|
|
156
|
+
case 'remoteAddress': return 'localhost';
|
|
157
|
+
case 'remotePort': return 0;
|
|
158
|
+
case 'localAddress': return 'localhost';
|
|
159
|
+
case 'localPort': return 0;
|
|
160
|
+
default: return null;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
public getPropertyNames(): string[] {
|
|
165
|
+
|
|
166
|
+
return ['remoteAddress', 'remotePort', 'localAddress', 'localPort'];
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
public getAllProperties(): Record<string, unknown> {
|
|
170
|
+
|
|
171
|
+
return {
|
|
172
|
+
'remoteAddress': 'localhost',
|
|
173
|
+
'remotePort': 0,
|
|
174
|
+
'localAddress': 'localhost',
|
|
175
|
+
'localPort': 0,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
public write(data: string | Buffer | Array<string | Buffer>): void {
|
|
180
|
+
|
|
181
|
+
if (this._exchange.isEnded(this._endpoint)) {
|
|
182
|
+
|
|
183
|
+
throw new Shared.errors.network_error({ reason: 'conn_lost' });
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
if (!Array.isArray(data)) {
|
|
187
|
+
|
|
188
|
+
data = [data];
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
for (let i = 0; i < data.length; ++i) {
|
|
192
|
+
|
|
193
|
+
if (!(data[i] instanceof Buffer)) {
|
|
194
|
+
|
|
195
|
+
data[i] = Buffer.from(data[i]);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
this._exchange.send(this._targetEndpoint, data);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
public destroy(): void {
|
|
203
|
+
|
|
204
|
+
this._exchange.close();
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
public end(lastChunk?: any): void {
|
|
208
|
+
|
|
209
|
+
if (lastChunk !== undefined) {
|
|
210
|
+
|
|
211
|
+
this.write(lastChunk);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
this._exchange.end(this._endpoint);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
export interface IMemoryGateway extends dT.IGateway {
|
|
219
|
+
|
|
220
|
+
readonly running: boolean;
|
|
221
|
+
|
|
222
|
+
readonly name: string;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
class MemoryGateway extends EventEmitter implements IMemoryGateway {
|
|
226
|
+
|
|
227
|
+
private _running: boolean = false;
|
|
228
|
+
|
|
229
|
+
private readonly _exchanges: Record<string, MemoryExchange> = {};
|
|
230
|
+
|
|
231
|
+
public constructor(
|
|
232
|
+
public readonly name: string,
|
|
233
|
+
private readonly _server: dT.IServer,
|
|
234
|
+
// private readonly _opts: D.IServerOptions
|
|
235
|
+
) {
|
|
236
|
+
|
|
237
|
+
super();
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
public get running(): boolean {
|
|
241
|
+
|
|
242
|
+
return this._running;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
private _createExchange(): MemoryExchange {
|
|
246
|
+
|
|
247
|
+
const ex = new MemoryExchange(this._generateExchangeName());
|
|
248
|
+
return this._exchanges[ex.name] = ex;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
private _generateExchangeName(): string {
|
|
252
|
+
|
|
253
|
+
let name: string;
|
|
254
|
+
|
|
255
|
+
do {
|
|
256
|
+
|
|
257
|
+
name = createRandomName();
|
|
258
|
+
|
|
259
|
+
} while (this._exchanges[name]);
|
|
260
|
+
|
|
261
|
+
return name;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
public connect(): dT.ITransporter {
|
|
265
|
+
|
|
266
|
+
if (!this._running) {
|
|
267
|
+
|
|
268
|
+
throw new Shared.errors.network_error({ reason: 'conn_refused' });
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
const ex = this._createExchange();
|
|
272
|
+
|
|
273
|
+
const serverSocket = new MemorySocket(ex, 'a');
|
|
274
|
+
const clientSocket = new MemorySocket(ex, 'b');
|
|
275
|
+
|
|
276
|
+
ex.on('close', () => {
|
|
277
|
+
|
|
278
|
+
delete this._exchanges[ex.name];
|
|
279
|
+
});
|
|
280
|
+
|
|
281
|
+
this._server.registerChannel(serverSocket);
|
|
282
|
+
|
|
283
|
+
return clientSocket;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
public start(): Promise<void> {
|
|
287
|
+
|
|
288
|
+
if (!this._running) {
|
|
289
|
+
|
|
290
|
+
this._running = true;
|
|
291
|
+
this.emit('listening');
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
return Promise.resolve();
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
public stop(): Promise<void> {
|
|
298
|
+
|
|
299
|
+
if (!this._running) {
|
|
300
|
+
|
|
301
|
+
return Promise.resolve();
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
for (const ex of Object.values(this._exchanges)) {
|
|
305
|
+
|
|
306
|
+
ex.close();
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
this.emit('close');
|
|
310
|
+
|
|
311
|
+
return Promise.resolve();
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
const servers: Record<string, MemoryGateway> = {};
|
|
316
|
+
|
|
317
|
+
export function createServer(opts: IGatewayOptions, listener?: (socket: dT.ITransporter) => void): MemoryGateway {
|
|
318
|
+
|
|
319
|
+
opts.name ??= createRandomName();
|
|
320
|
+
|
|
321
|
+
if (servers[opts.name]) {
|
|
322
|
+
|
|
323
|
+
throw new Shared.errors.network_error({ reason: 'dup_listen' });
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
const server = new MemoryGateway(opts.name, opts.server);
|
|
327
|
+
|
|
328
|
+
servers[opts.name] = server;
|
|
329
|
+
|
|
330
|
+
if (listener) {
|
|
331
|
+
|
|
332
|
+
server.on('connection', listener);
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
server.on('close', () => {
|
|
336
|
+
|
|
337
|
+
delete servers[opts.name!];
|
|
338
|
+
});
|
|
339
|
+
|
|
340
|
+
return server;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
class MemoryConnector implements dT.IConnector {
|
|
344
|
+
|
|
345
|
+
public constructor(
|
|
346
|
+
private readonly _name: string
|
|
347
|
+
) {}
|
|
348
|
+
|
|
349
|
+
public connect(): Promise<dT.ITransporter> {
|
|
350
|
+
|
|
351
|
+
if (!servers[this._name]) {
|
|
352
|
+
|
|
353
|
+
throw new Shared.errors.network_error({ reason: 'unknown_dest' });
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
return Promise.resolve(servers[this._name].connect());
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
export function createConnector(name: string): dT.IConnector {
|
|
361
|
+
|
|
362
|
+
return new MemoryConnector(name);
|
|
363
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 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 './Memory.Impl';
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 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 LibWS from '@litert/websocket';
|
|
18
|
+
import * as dWS from './WebSocket.decl';
|
|
19
|
+
import type * as dT from '../Transporter.decl';
|
|
20
|
+
import { WebSocketTransporter } from './WebSocket.Transporter';
|
|
21
|
+
|
|
22
|
+
class WsConnector implements dT.IConnector {
|
|
23
|
+
|
|
24
|
+
public constructor(private readonly _opts: LibWS.IWsConnectOptions) {}
|
|
25
|
+
|
|
26
|
+
public async connect(): Promise<dT.ITransporter> {
|
|
27
|
+
|
|
28
|
+
const ws = await LibWS.wsConnect({
|
|
29
|
+
...this._opts,
|
|
30
|
+
headers: {
|
|
31
|
+
...this._opts?.headers,
|
|
32
|
+
...LibWS.createClientHandshakeHeaders({
|
|
33
|
+
'subProtocols': [dWS.WEBSOCKET_SUB_PROTOCOL]
|
|
34
|
+
})
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
ws.setMasking(false);
|
|
39
|
+
|
|
40
|
+
return new WebSocketTransporter(dWS.WS_PROTOCOL_NAME, ws);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
class WssConnector implements dT.IConnector {
|
|
45
|
+
|
|
46
|
+
public constructor(private readonly _opts: LibWS.IWssConnectOptions) {}
|
|
47
|
+
|
|
48
|
+
public async connect(): Promise<dT.ITransporter> {
|
|
49
|
+
|
|
50
|
+
const ws = await LibWS.wssConnect({
|
|
51
|
+
...this._opts,
|
|
52
|
+
headers: {
|
|
53
|
+
...this._opts?.headers,
|
|
54
|
+
...LibWS.createClientHandshakeHeaders({
|
|
55
|
+
'subProtocols': [dWS.WEBSOCKET_SUB_PROTOCOL]
|
|
56
|
+
})
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
ws.setMasking(false);
|
|
61
|
+
|
|
62
|
+
return new WebSocketTransporter(dWS.WSS_PROTOCOL_NAME, ws);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export function createWsConnector(opts: LibWS.IWsConnectOptions): dT.IConnector {
|
|
67
|
+
|
|
68
|
+
opts.liteFrameMode = true;
|
|
69
|
+
return new WsConnector(opts);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export function createWssConnector(opts: LibWS.IWssConnectOptions): dT.IConnector {
|
|
73
|
+
|
|
74
|
+
opts.liteFrameMode = true;
|
|
75
|
+
return new WssConnector(opts);
|
|
76
|
+
}
|