@seriousme/opifex 2.0.3 → 2.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.
- package/client/ConnectionState.ts +1 -1
- package/client/client.ts +41 -9
- package/client/context.ts +11 -13
- package/client/deps.ts +8 -5
- package/client/handlers/handleConnack.ts +2 -2
- package/client/mod.ts +13 -2
- package/client/store/memoryStore.ts +11 -10
- package/client/store/store.ts +1 -1
- package/deno/mod.ts +7 -0
- package/deno/tcpClient.ts +21 -8
- package/deno/tcpServer.ts +21 -4
- package/deno/tlsServer.ts +20 -4
- package/deno/wsServer.ts +23 -0
- package/dist/client/ConnectionState.d.ts +1 -1
- package/dist/client/ConnectionState.d.ts.map +1 -1
- package/dist/client/client.d.ts +39 -9
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +24 -0
- package/dist/client/client.js.map +1 -1
- package/dist/client/context.d.ts +8 -8
- package/dist/client/context.d.ts.map +1 -1
- package/dist/client/context.js.map +1 -1
- package/dist/client/deps.d.ts +3 -3
- package/dist/client/deps.d.ts.map +1 -1
- package/dist/client/deps.js.map +1 -1
- package/dist/client/handlers/handleConnack.d.ts.map +1 -1
- package/dist/client/handlers/handleConnack.js.map +1 -1
- package/dist/client/mod.d.ts +3 -2
- package/dist/client/mod.d.ts.map +1 -1
- package/dist/client/mod.js +1 -1
- package/dist/client/mod.js.map +1 -1
- package/dist/client/store/memoryStore.d.ts +3 -3
- package/dist/client/store/memoryStore.d.ts.map +1 -1
- package/dist/client/store/memoryStore.js +2 -2
- package/dist/client/store/memoryStore.js.map +1 -1
- package/dist/client/store/store.d.ts +1 -1
- package/dist/client/store/store.d.ts.map +1 -1
- package/dist/examples/authHandler.test.js +3 -3
- package/dist/examples/authHandler.test.js.map +1 -1
- package/dist/mqttConn/mqttConn.d.ts +2 -17
- package/dist/mqttConn/mqttConn.d.ts.map +1 -1
- package/dist/mqttConn/mqttConn.js +1 -1
- package/dist/mqttConn/mqttConn.js.map +1 -1
- package/dist/mqttPacket/AuthenticationResult.d.ts +4 -0
- package/dist/mqttPacket/AuthenticationResult.d.ts.map +1 -1
- package/dist/mqttPacket/AuthenticationResult.js.map +1 -1
- package/dist/mqttPacket/PacketType.d.ts +4 -0
- package/dist/mqttPacket/PacketType.d.ts.map +1 -1
- package/dist/mqttPacket/Properties.d.ts +2 -2
- package/dist/mqttPacket/Properties.d.ts.map +1 -1
- package/dist/mqttPacket/ReasonCode.d.ts +3 -5
- package/dist/mqttPacket/ReasonCode.d.ts.map +1 -1
- package/dist/mqttPacket/ReasonCode.js.map +1 -1
- package/dist/mqttPacket/RetainHandling.d.ts +4 -0
- package/dist/mqttPacket/RetainHandling.d.ts.map +1 -1
- package/dist/mqttPacket/auth.d.ts +6 -5
- package/dist/mqttPacket/auth.d.ts.map +1 -1
- package/dist/mqttPacket/auth.js +2 -2
- package/dist/mqttPacket/auth.js.map +1 -1
- package/dist/mqttPacket/codec.d.ts.map +1 -1
- package/dist/mqttPacket/codec.js.map +1 -1
- package/dist/mqttPacket/connack.d.ts +9 -7
- package/dist/mqttPacket/connack.d.ts.map +1 -1
- package/dist/mqttPacket/connack.js +2 -2
- package/dist/mqttPacket/connack.js.map +1 -1
- package/dist/mqttPacket/connect.d.ts +5 -4
- package/dist/mqttPacket/connect.d.ts.map +1 -1
- package/dist/mqttPacket/connect.js.map +1 -1
- package/dist/mqttPacket/decoder.d.ts +6 -4
- package/dist/mqttPacket/decoder.d.ts.map +1 -1
- package/dist/mqttPacket/decoder.js +1 -1
- package/dist/mqttPacket/decoder.js.map +1 -1
- package/dist/mqttPacket/disconnect.d.ts +7 -5
- package/dist/mqttPacket/disconnect.d.ts.map +1 -1
- package/dist/mqttPacket/disconnect.js +2 -2
- package/dist/mqttPacket/disconnect.js.map +1 -1
- package/dist/mqttPacket/encoder.d.ts +7 -5
- package/dist/mqttPacket/encoder.d.ts.map +1 -1
- package/dist/mqttPacket/encoder.js +1 -1
- package/dist/mqttPacket/encoder.js.map +1 -1
- package/dist/mqttPacket/mod.d.ts +1 -1
- package/dist/mqttPacket/mod.d.ts.map +1 -1
- package/dist/mqttPacket/pingreq.d.ts +4 -3
- package/dist/mqttPacket/pingreq.d.ts.map +1 -1
- package/dist/mqttPacket/pingreq.js.map +1 -1
- package/dist/mqttPacket/pingres.d.ts +4 -3
- package/dist/mqttPacket/pingres.d.ts.map +1 -1
- package/dist/mqttPacket/pingres.js.map +1 -1
- package/dist/mqttPacket/protocolLevels.d.ts +2 -0
- package/dist/mqttPacket/protocolLevels.d.ts.map +1 -1
- package/dist/mqttPacket/pubblishAcks.d.ts +7 -7
- package/dist/mqttPacket/pubblishAcks.d.ts.map +1 -1
- package/dist/mqttPacket/pubblishAcks.js +2 -2
- package/dist/mqttPacket/pubblishAcks.js.map +1 -1
- package/dist/mqttPacket/publish.d.ts +5 -4
- package/dist/mqttPacket/publish.d.ts.map +1 -1
- package/dist/mqttPacket/publish.js.map +1 -1
- package/dist/mqttPacket/suback.d.ts +7 -5
- package/dist/mqttPacket/suback.d.ts.map +1 -1
- package/dist/mqttPacket/suback.js +2 -2
- package/dist/mqttPacket/suback.js.map +1 -1
- package/dist/mqttPacket/subscribe.d.ts +7 -5
- package/dist/mqttPacket/subscribe.d.ts.map +1 -1
- package/dist/mqttPacket/subscribe.js.map +1 -1
- package/dist/mqttPacket/types.d.ts +1 -21
- package/dist/mqttPacket/types.d.ts.map +1 -1
- package/dist/mqttPacket/unsuback.d.ts +7 -5
- package/dist/mqttPacket/unsuback.d.ts.map +1 -1
- package/dist/mqttPacket/unsuback.js +1 -1
- package/dist/mqttPacket/unsuback.js.map +1 -1
- package/dist/mqttPacket/unsubscribe.d.ts +5 -4
- package/dist/mqttPacket/unsubscribe.d.ts.map +1 -1
- package/dist/mqttPacket/unsubscribe.js.map +1 -1
- package/dist/node/tcpClient.d.ts +21 -1
- package/dist/node/tcpClient.d.ts.map +1 -1
- package/dist/node/tcpClient.js +18 -4
- package/dist/node/tcpClient.js.map +1 -1
- package/dist/node/tcpServer.d.ts +18 -0
- package/dist/node/tcpServer.d.ts.map +1 -1
- package/dist/node/tcpServer.js +17 -2
- package/dist/node/tcpServer.js.map +1 -1
- package/dist/node/tlsServer.d.ts +18 -0
- package/dist/node/tlsServer.d.ts.map +1 -1
- package/dist/node/tlsServer.js +17 -2
- package/dist/node/tlsServer.js.map +1 -1
- package/dist/persistence/basicPersistence.d.ts +4 -4
- package/dist/persistence/basicPersistence.d.ts.map +1 -1
- package/dist/persistence/basicPersistence.js.map +1 -1
- package/dist/persistence/deps.d.ts +1 -1
- package/dist/persistence/deps.d.ts.map +1 -1
- package/dist/persistence/memory/memoryStorage.d.ts +3 -3
- package/dist/persistence/memory/memoryStorage.d.ts.map +1 -1
- package/dist/persistence/mod.d.ts +1 -1
- package/dist/persistence/mod.d.ts.map +1 -1
- package/dist/persistence/persistence.d.ts +3 -3
- package/dist/persistence/persistence.d.ts.map +1 -1
- package/dist/persistence/sqlite/sqliteStorage.d.ts +2 -2
- package/dist/persistence/sqlite/sqliteStorage.d.ts.map +1 -1
- package/dist/persistence/storage.d.ts +1 -1
- package/dist/persistence/storage.d.ts.map +1 -1
- package/dist/server/context.d.ts +4 -4
- package/dist/server/context.d.ts.map +1 -1
- package/dist/server/context.js.map +1 -1
- package/dist/server/deps.d.ts +2 -2
- package/dist/server/deps.d.ts.map +1 -1
- package/dist/server/deps.js.map +1 -1
- package/dist/server/handlers/completeConnect.d.ts +3 -2
- package/dist/server/handlers/completeConnect.d.ts.map +1 -1
- package/dist/server/handlers/completeConnect.js.map +1 -1
- package/dist/server/handlers/handlePublish.d.ts.map +1 -1
- package/dist/server/handlers/handlePublish.js.map +1 -1
- package/dist/server/handlers/handleSubscribe.d.ts.map +1 -1
- package/dist/server/handlers/handleSubscribe.js.map +1 -1
- package/dist/server/handlers/handleUnsubscribe.d.ts.map +1 -1
- package/dist/server/handlers/handleUnsubscribe.js.map +1 -1
- package/dist/server/mod.d.ts +1 -1
- package/dist/server/mod.d.ts.map +1 -1
- package/dist/server/server.d.ts +3 -3
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js.map +1 -1
- package/dist/socket/socket.d.ts +22 -0
- package/dist/socket/socket.d.ts.map +1 -1
- package/dist/socket/socket.js +5 -0
- package/dist/socket/socket.js.map +1 -1
- package/dist/utils/logger.d.ts +3 -3
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/web/wsClient.d.ts +12 -0
- package/dist/web/wsClient.d.ts.map +1 -1
- package/dist/web/wsClient.js +12 -1
- package/dist/web/wsClient.js.map +1 -1
- package/examples/authHandler.test.ts +3 -3
- package/mqttConn/mqttConn.ts +2 -18
- package/mqttPacket/AuthenticationResult.ts +6 -0
- package/mqttPacket/PacketType.ts +5 -0
- package/mqttPacket/Properties.ts +2 -2
- package/mqttPacket/ReasonCode.ts +6 -8
- package/mqttPacket/RetainHandling.ts +5 -0
- package/mqttPacket/auth.ts +7 -7
- package/mqttPacket/codec.ts +3 -2
- package/mqttPacket/connack.ts +11 -10
- package/mqttPacket/connect.ts +4 -11
- package/mqttPacket/decoder.ts +9 -11
- package/mqttPacket/disconnect.ts +7 -7
- package/mqttPacket/encoder.test.ts +2 -2
- package/mqttPacket/encoder.ts +9 -7
- package/mqttPacket/mod.ts +0 -4
- package/mqttPacket/pingreq.ts +3 -3
- package/mqttPacket/pingres.ts +3 -3
- package/mqttPacket/protocolLevels.ts +2 -0
- package/mqttPacket/pubblishAcks.ts +9 -9
- package/mqttPacket/publish.ts +4 -11
- package/mqttPacket/publishAcks.test.ts +3 -3
- package/mqttPacket/suback.ts +8 -13
- package/mqttPacket/subscribe.ts +6 -12
- package/mqttPacket/types.ts +1 -26
- package/mqttPacket/unsuback.ts +8 -7
- package/mqttPacket/unsubscribe.ts +4 -10
- package/node/mod.ts +7 -0
- package/node/tcpClient.ts +21 -6
- package/node/tcpServer.ts +23 -6
- package/node/tlsServer.ts +23 -7
- package/package.json +6 -1
- package/persistence/basicPersistence.ts +5 -5
- package/persistence/deps.ts +1 -1
- package/persistence/memory/memoryStorage.ts +3 -3
- package/persistence/mod.ts +1 -1
- package/persistence/persistence.testing.ts +4 -4
- package/persistence/persistence.ts +3 -3
- package/persistence/sqlite/sqliteStorage.ts +2 -2
- package/persistence/storage.ts +1 -1
- package/server/context.ts +5 -5
- package/server/deps.ts +1 -2
- package/server/handlers/completeConnect.ts +2 -2
- package/server/handlers/handlePublish.ts +3 -4
- package/server/handlers/handleSubscribe.ts +3 -4
- package/server/handlers/handleUnsubscribe.ts +2 -2
- package/server/mod.ts +1 -1
- package/server/server.ts +3 -3
- package/socket/socket.ts +31 -2
- package/tools/benchmarks/receiver.ts +2 -2
- package/tools/benchmarks/sender.ts +2 -2
- package/utils/logger.ts +3 -3
- package/web/wsClient.ts +13 -1
|
@@ -13,10 +13,9 @@ import type {
|
|
|
13
13
|
PublishPacket,
|
|
14
14
|
QoS,
|
|
15
15
|
Topic,
|
|
16
|
-
TReasonCode,
|
|
17
16
|
} from "../deps.ts";
|
|
18
17
|
|
|
19
|
-
const reasonsToDisconnect:
|
|
18
|
+
const reasonsToDisconnect: ReasonCode[] = [
|
|
20
19
|
ReasonCode.topicAliasInvalid,
|
|
21
20
|
];
|
|
22
21
|
|
|
@@ -24,7 +23,7 @@ async function handlePublishError(
|
|
|
24
23
|
ctx: Context,
|
|
25
24
|
id: PacketId | undefined,
|
|
26
25
|
qos: QoS,
|
|
27
|
-
reasonCode:
|
|
26
|
+
reasonCode: ReasonCode,
|
|
28
27
|
reasonString: string,
|
|
29
28
|
) {
|
|
30
29
|
// in v4 we can only close the connection
|
|
@@ -103,7 +102,7 @@ async function authorizedToPublish(ctx: Context, topic: Topic) {
|
|
|
103
102
|
function validatePublishPacket(
|
|
104
103
|
ctx: Context,
|
|
105
104
|
packet: PublishPacket,
|
|
106
|
-
): { reasonCode:
|
|
105
|
+
): { reasonCode: ReasonCode; message: string } | null {
|
|
107
106
|
const cfg = ctx.config.context;
|
|
108
107
|
const isProtocolV5 = packet.protocolLevel === 5;
|
|
109
108
|
const hasTopicAlias = isProtocolV5 &&
|
|
@@ -15,7 +15,6 @@ import type {
|
|
|
15
15
|
ShareName,
|
|
16
16
|
SubscribePacket,
|
|
17
17
|
Topic,
|
|
18
|
-
TReasonCode,
|
|
19
18
|
} from "../deps.ts";
|
|
20
19
|
|
|
21
20
|
// V4 Subscription Failure
|
|
@@ -58,7 +57,7 @@ function validateSubscription(
|
|
|
58
57
|
isProtocolV5: boolean,
|
|
59
58
|
sub: ClientSubscription,
|
|
60
59
|
cfg: Context["config"]["context"],
|
|
61
|
-
):
|
|
60
|
+
): ReasonCode | null {
|
|
62
61
|
if (
|
|
63
62
|
cfg.wildcardSubscriptionAvailable === false && hasWildcards(sub.topicFilter)
|
|
64
63
|
) {
|
|
@@ -108,7 +107,7 @@ export async function handleSubscribe(
|
|
|
108
107
|
}
|
|
109
108
|
|
|
110
109
|
const retainedSubscriptions: ClientSubscription[] = [];
|
|
111
|
-
const results:
|
|
110
|
+
const results: ReasonCode[] = [];
|
|
112
111
|
|
|
113
112
|
for (const sub of packet.subscriptions) {
|
|
114
113
|
const clientSub = sub as ClientSubscription;
|
|
@@ -166,7 +165,7 @@ export async function handleSubscribe(
|
|
|
166
165
|
}
|
|
167
166
|
|
|
168
167
|
// Success code (Granted QoS)
|
|
169
|
-
results.push(sub.qos as
|
|
168
|
+
results.push(sub.qos as ReasonCode);
|
|
170
169
|
}
|
|
171
170
|
|
|
172
171
|
// Send SUBACK response
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
parseTopicFilter,
|
|
5
5
|
ReasonCode,
|
|
6
6
|
} from "../deps.ts";
|
|
7
|
-
import type {
|
|
7
|
+
import type { UnsubscribePacket } from "../deps.ts";
|
|
8
8
|
import { SessionState } from "../context.ts";
|
|
9
9
|
import type { Context } from "../context.ts";
|
|
10
10
|
|
|
@@ -26,7 +26,7 @@ export async function handleUnsubscribe(
|
|
|
26
26
|
subscriptions.add(joinTopicFilter(sub.topicFilter, sub.shareName));
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
const reasonCodes:
|
|
29
|
+
const reasonCodes: ReasonCode[] = [];
|
|
30
30
|
|
|
31
31
|
for (const packetTopicFilter of packet.topicFilters) {
|
|
32
32
|
// split topicFilter into topicFilter and shareName
|
package/server/mod.ts
CHANGED
package/server/server.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { logger, MemoryPersistence, ReasonCode } from "./deps.ts";
|
|
2
2
|
import { Context } from "./context.ts";
|
|
3
3
|
import type { Handlers } from "./context.ts";
|
|
4
|
-
import type {
|
|
4
|
+
import type { Persistence, ShareName, SockConn, Topic } from "./deps.ts";
|
|
5
5
|
import { handlePacket } from "./handlers/handlePacket.ts";
|
|
6
6
|
import { createConfiguration } from "./config.ts";
|
|
7
7
|
import type { Configuration, ConfigurationInput } from "./config.ts";
|
|
@@ -69,7 +69,7 @@ const defaultIsAuthorizedToSubscribe = (
|
|
|
69
69
|
*/
|
|
70
70
|
export type MqttServerOptions = {
|
|
71
71
|
/** Optional persistence layer implementation. Defaults to MemoryPersistence. */
|
|
72
|
-
persistence?:
|
|
72
|
+
persistence?: Persistence;
|
|
73
73
|
/** Optional custom handlers for authentication and authorization. */
|
|
74
74
|
handlers?: Handlers;
|
|
75
75
|
/** Optional configuration data */
|
|
@@ -91,7 +91,7 @@ export class MqttServer {
|
|
|
91
91
|
/** The registered authentication and authorization handlers. */
|
|
92
92
|
handlers: Handlers;
|
|
93
93
|
/** The persistence layer used for storing sessions and messages. */
|
|
94
|
-
persistence:
|
|
94
|
+
persistence: Persistence;
|
|
95
95
|
/** The persistence layer used for storing sessions and messages. */
|
|
96
96
|
configuration: Configuration;
|
|
97
97
|
|
package/socket/socket.ts
CHANGED
|
@@ -1,20 +1,45 @@
|
|
|
1
|
+
/** Net addresses */
|
|
1
2
|
export type NetAddr = {
|
|
3
|
+
/** The IP-based transport protocol */
|
|
2
4
|
transport: "tcp" | "udp";
|
|
5
|
+
/** The hostname */
|
|
3
6
|
hostname: string;
|
|
7
|
+
/** The port number */
|
|
4
8
|
port: number;
|
|
5
9
|
};
|
|
6
|
-
|
|
7
|
-
export type
|
|
10
|
+
/** Unix addresses */
|
|
11
|
+
export type UnixAddr = {
|
|
12
|
+
/** The Unix domain socket transport protocol */
|
|
13
|
+
transport: "unix" | "unixpacket";
|
|
14
|
+
/** The file system path to the socket to connect to */
|
|
15
|
+
path: string;
|
|
16
|
+
};
|
|
17
|
+
/** vSock addresses */
|
|
18
|
+
export type VsockAddr = {
|
|
19
|
+
/** The VSOCK transport protocol */
|
|
20
|
+
transport: "vsock";
|
|
21
|
+
/** The context identifier (CID) of the peer */
|
|
22
|
+
cid: number;
|
|
23
|
+
/** The port number */
|
|
24
|
+
port: number;
|
|
25
|
+
};
|
|
26
|
+
/** Socket addresses */
|
|
8
27
|
export type SockAddr = NetAddr | UnixAddr | VsockAddr;
|
|
9
28
|
/** Socket connection descriptor. */
|
|
10
29
|
export type SockConn = {
|
|
30
|
+
/** The stream to read from */
|
|
11
31
|
readable: ReadableStream<Uint8Array>;
|
|
32
|
+
/** The stream to write to */
|
|
12
33
|
writable: WritableStream<Uint8Array>;
|
|
34
|
+
/** The callback to call on close */
|
|
13
35
|
close: () => void;
|
|
36
|
+
/** The local address of the connection */
|
|
14
37
|
localAddr?: SockAddr;
|
|
38
|
+
/** The remote address of the connection */
|
|
15
39
|
remoteAddr?: SockAddr;
|
|
16
40
|
};
|
|
17
41
|
|
|
42
|
+
/** Connection class */
|
|
18
43
|
export class Conn {
|
|
19
44
|
reader: ReadableStreamDefaultReader<Uint8Array>;
|
|
20
45
|
writer: WritableStreamDefaultWriter<Uint8Array>;
|
|
@@ -24,6 +49,7 @@ export class Conn {
|
|
|
24
49
|
|
|
25
50
|
private leftover: Uint8Array = new Uint8Array(0);
|
|
26
51
|
|
|
52
|
+
/** Create a new Conn object from a SockConn */
|
|
27
53
|
constructor(sockConn: SockConn) {
|
|
28
54
|
this.closed = false;
|
|
29
55
|
this.reader = sockConn.readable.getReader();
|
|
@@ -34,6 +60,7 @@ export class Conn {
|
|
|
34
60
|
this.remoteAddr = sockConn.remoteAddr;
|
|
35
61
|
}
|
|
36
62
|
|
|
63
|
+
/** Read bytes from the connection */
|
|
37
64
|
async read(length: number): Promise<Uint8Array | null> {
|
|
38
65
|
if (this.closed || length < 0) {
|
|
39
66
|
return null;
|
|
@@ -81,6 +108,7 @@ export class Conn {
|
|
|
81
108
|
return result;
|
|
82
109
|
}
|
|
83
110
|
|
|
111
|
+
/** Write bytes to the connection */
|
|
84
112
|
async write(data: Uint8Array): Promise<number> {
|
|
85
113
|
if (this.closed) {
|
|
86
114
|
return Promise.reject(new Error("Connection closed"));
|
|
@@ -94,6 +122,7 @@ export class Conn {
|
|
|
94
122
|
}
|
|
95
123
|
}
|
|
96
124
|
|
|
125
|
+
/** close the connection */
|
|
97
126
|
close() {
|
|
98
127
|
if (!this.closed) {
|
|
99
128
|
this.closed = true;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { exit } from "node:process";
|
|
2
2
|
import { getArgs, importClientClass } from "./utils.ts";
|
|
3
3
|
import { logger } from "../../utils/mod.ts";
|
|
4
|
-
import type {
|
|
4
|
+
import type { LogLevel } from "../../utils/logger.ts";
|
|
5
5
|
import type { QoS } from "../../client/deps.ts";
|
|
6
6
|
|
|
7
7
|
export async function runReceiver(
|
|
8
|
-
level:
|
|
8
|
+
level: LogLevel,
|
|
9
9
|
url: string,
|
|
10
10
|
topic: string,
|
|
11
11
|
qos: QoS,
|
|
@@ -2,7 +2,7 @@ import { exit } from "node:process";
|
|
|
2
2
|
import { runAsap } from "../../dev_utils/timers.ts";
|
|
3
3
|
import { getArgs, importClientClass } from "./utils.ts";
|
|
4
4
|
import { logger } from "../../utils/mod.ts";
|
|
5
|
-
import type {
|
|
5
|
+
import type { LogLevel } from "../../utils/logger.ts";
|
|
6
6
|
import type { QoS } from "../../client/deps.ts";
|
|
7
7
|
|
|
8
8
|
const { TcpClient } = await importClientClass();
|
|
@@ -13,7 +13,7 @@ client.onError = (err: Error) => {
|
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
export async function runSender(
|
|
16
|
-
level:
|
|
16
|
+
level: LogLevel,
|
|
17
17
|
url: string,
|
|
18
18
|
topic: string,
|
|
19
19
|
qos: QoS,
|
package/utils/logger.ts
CHANGED
|
@@ -19,7 +19,7 @@ export const LogLevel = {
|
|
|
19
19
|
/**
|
|
20
20
|
* Union type representing the permitted numeric log level indices.
|
|
21
21
|
*/
|
|
22
|
-
export type
|
|
22
|
+
export type LogLevel = typeof LogLevel[keyof typeof LogLevel];
|
|
23
23
|
|
|
24
24
|
type LogArgument = unknown | (() => unknown);
|
|
25
25
|
|
|
@@ -88,9 +88,9 @@ export class Logger {
|
|
|
88
88
|
|
|
89
89
|
/**
|
|
90
90
|
* Adjusts the current verbosity threshold, enabling or masking specific log outputs.
|
|
91
|
-
* @param {
|
|
91
|
+
* @param {LogLevel} logLevel - The minimum numeric severity level threshold to output.
|
|
92
92
|
*/
|
|
93
|
-
level(logLevel:
|
|
93
|
+
level(logLevel: LogLevel) {
|
|
94
94
|
this.isWarn = logLevel >= LogLevel.warn;
|
|
95
95
|
this.isInfo = logLevel >= LogLevel.info;
|
|
96
96
|
this.isVerbose = logLevel >= LogLevel.verbose;
|
package/web/wsClient.ts
CHANGED
|
@@ -1,16 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* this is a WebSockets specific client
|
|
3
|
+
* it extends the platform agnostic Client class
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
|
|
1
7
|
import { Client } from "../client/client.ts";
|
|
2
8
|
import { logger } from "../client/deps.ts";
|
|
3
9
|
import type { SockConn } from "../client/deps.ts";
|
|
4
10
|
import { wrapWebSocket } from "./wrapWebSocket.ts";
|
|
5
11
|
|
|
12
|
+
/**
|
|
13
|
+
* WsClient extends the Client class to provide WebSocket based clients
|
|
14
|
+
* it is used by the MQTTclient to connect to the broker
|
|
15
|
+
* see the /examples folder for an example
|
|
16
|
+
*/
|
|
6
17
|
export class WsClient extends Client {
|
|
18
|
+
/** create a websocket and wrap it in a SockConn */
|
|
7
19
|
private async establishSocket(url: string): Promise<SockConn> {
|
|
8
20
|
const ws = new WebSocket(url);
|
|
9
21
|
const conn = await wrapWebSocket(ws);
|
|
10
22
|
return conn;
|
|
11
23
|
}
|
|
12
24
|
|
|
13
|
-
|
|
25
|
+
/** createConn provides support for both "ws:" and "wss:" URLs */
|
|
14
26
|
protected override createConn(): Promise<SockConn> {
|
|
15
27
|
const { protocol, hostname, port: portStr, pathname } = this.connectUrl;
|
|
16
28
|
const port = portStr ? Number(portStr) : (protocol === "wss:" ? 443 : 80);
|