@seriousme/opifex 1.9.4 → 1.11.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/README.md +37 -26
- package/bin/conformanceServer.ts +3 -2
- package/bin/demoServer.ts +3 -2
- package/bin/mqtt.ts +127 -118
- package/client/client.ts +61 -21
- package/client/context.ts +71 -30
- package/client/deps.ts +5 -0
- package/client/handlers/handleConnack.ts +17 -5
- package/client/handlers/handlePublish.ts +4 -1
- package/client/handlers/handlePubrec.ts +3 -1
- package/client/handlers/handlePubrel.ts +3 -1
- package/client/handlers/handleSuback.ts +3 -1
- package/client/mod.ts +8 -1
- package/client/store/memoryStore.ts +2 -1
- package/deno/tcpClient.ts +1 -1
- package/dev_utils/dummyConn.ts +17 -2
- package/dist/bin/conformanceServer.js +3 -2
- package/dist/bin/conformanceServer.js.map +1 -1
- package/dist/bin/demoServer.js +3 -2
- package/dist/bin/demoServer.js.map +1 -1
- package/dist/bin/mqtt.d.ts +29 -0
- package/dist/bin/mqtt.d.ts.map +1 -1
- package/dist/bin/mqtt.js +102 -97
- package/dist/bin/mqtt.js.map +1 -1
- package/dist/client/client.d.ts +16 -5
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +36 -15
- package/dist/client/client.js.map +1 -1
- package/dist/client/context.d.ts +8 -3
- package/dist/client/context.d.ts.map +1 -1
- package/dist/client/context.js +51 -21
- package/dist/client/context.js.map +1 -1
- package/dist/client/deps.d.ts +3 -2
- package/dist/client/deps.d.ts.map +1 -1
- package/dist/client/deps.js +2 -1
- package/dist/client/deps.js.map +1 -1
- package/dist/client/handlers/handleConnack.d.ts +1 -1
- package/dist/client/handlers/handleConnack.d.ts.map +1 -1
- package/dist/client/handlers/handleConnack.js +14 -5
- package/dist/client/handlers/handleConnack.js.map +1 -1
- package/dist/client/handlers/handlePublish.d.ts +1 -1
- package/dist/client/handlers/handlePublish.d.ts.map +1 -1
- package/dist/client/handlers/handlePublish.js +2 -0
- package/dist/client/handlers/handlePublish.js.map +1 -1
- package/dist/client/handlers/handlePubrec.d.ts +1 -1
- package/dist/client/handlers/handlePubrec.d.ts.map +1 -1
- package/dist/client/handlers/handlePubrec.js +1 -0
- package/dist/client/handlers/handlePubrec.js.map +1 -1
- package/dist/client/handlers/handlePubrel.d.ts +1 -1
- package/dist/client/handlers/handlePubrel.d.ts.map +1 -1
- package/dist/client/handlers/handlePubrel.js +1 -0
- package/dist/client/handlers/handlePubrel.js.map +1 -1
- package/dist/client/handlers/handleSuback.d.ts.map +1 -1
- package/dist/client/handlers/handleSuback.js +3 -1
- package/dist/client/handlers/handleSuback.js.map +1 -1
- package/dist/client/mod.d.ts +3 -1
- package/dist/client/mod.d.ts.map +1 -1
- package/dist/client/mod.js +2 -1
- package/dist/client/mod.js.map +1 -1
- package/dist/client/store/memoryStore.d.ts +1 -1
- package/dist/client/store/memoryStore.d.ts.map +1 -1
- package/dist/client/store/memoryStore.js.map +1 -1
- package/dist/mqttConn/mqttConn.d.ts +13 -8
- package/dist/mqttConn/mqttConn.d.ts.map +1 -1
- package/dist/mqttConn/mqttConn.js +27 -12
- package/dist/mqttConn/mqttConn.js.map +1 -1
- package/dist/mqttPacket/PacketType.d.ts +1 -0
- package/dist/mqttPacket/PacketType.d.ts.map +1 -1
- package/dist/mqttPacket/PacketType.js +1 -0
- package/dist/mqttPacket/PacketType.js.map +1 -1
- package/dist/mqttPacket/Properties.d.ts +157 -0
- package/dist/mqttPacket/Properties.d.ts.map +1 -0
- package/dist/mqttPacket/Properties.js +177 -0
- package/dist/mqttPacket/Properties.js.map +1 -0
- package/dist/mqttPacket/ReasonCode.d.ts +74 -0
- package/dist/mqttPacket/ReasonCode.d.ts.map +1 -0
- package/dist/mqttPacket/ReasonCode.js +230 -0
- package/dist/mqttPacket/ReasonCode.js.map +1 -0
- package/dist/mqttPacket/RetainHandling.d.ts +12 -0
- package/dist/mqttPacket/RetainHandling.d.ts.map +1 -0
- package/dist/mqttPacket/RetainHandling.js +12 -0
- package/dist/mqttPacket/RetainHandling.js.map +1 -0
- package/dist/mqttPacket/auth.d.ts +21 -0
- package/dist/mqttPacket/auth.d.ts.map +1 -0
- package/dist/mqttPacket/auth.js +34 -0
- package/dist/mqttPacket/auth.js.map +1 -0
- package/dist/mqttPacket/connack.d.ts +19 -11
- package/dist/mqttPacket/connack.d.ts.map +1 -1
- package/dist/mqttPacket/connack.js +43 -15
- package/dist/mqttPacket/connack.js.map +1 -1
- package/dist/mqttPacket/connect.d.ts +30 -11
- package/dist/mqttPacket/connect.d.ts.map +1 -1
- package/dist/mqttPacket/connect.js +106 -30
- package/dist/mqttPacket/connect.js.map +1 -1
- package/dist/mqttPacket/decoder.d.ts +42 -3
- package/dist/mqttPacket/decoder.d.ts.map +1 -1
- package/dist/mqttPacket/decoder.js +135 -4
- package/dist/mqttPacket/decoder.js.map +1 -1
- package/dist/mqttPacket/disconnect.d.ts +15 -9
- package/dist/mqttPacket/disconnect.d.ts.map +1 -1
- package/dist/mqttPacket/disconnect.js +45 -6
- package/dist/mqttPacket/disconnect.js.map +1 -1
- package/dist/mqttPacket/encoder.d.ts +57 -8
- package/dist/mqttPacket/encoder.d.ts.map +1 -1
- package/dist/mqttPacket/encoder.js +185 -13
- package/dist/mqttPacket/encoder.js.map +1 -1
- package/dist/mqttPacket/length.d.ts.map +1 -1
- package/dist/mqttPacket/length.js +3 -2
- package/dist/mqttPacket/length.js.map +1 -1
- package/dist/mqttPacket/mod.d.ts +57 -91
- package/dist/mqttPacket/mod.d.ts.map +1 -1
- package/dist/mqttPacket/mod.js +23 -29
- package/dist/mqttPacket/mod.js.map +1 -1
- package/dist/mqttPacket/pingreq.d.ts +4 -6
- package/dist/mqttPacket/pingreq.d.ts.map +1 -1
- package/dist/mqttPacket/pingreq.js +5 -4
- package/dist/mqttPacket/pingreq.js.map +1 -1
- package/dist/mqttPacket/pingres.d.ts +4 -6
- package/dist/mqttPacket/pingres.d.ts.map +1 -1
- package/dist/mqttPacket/pingres.js +7 -5
- package/dist/mqttPacket/pingres.js.map +1 -1
- package/dist/mqttPacket/protocolLevels.d.ts +12 -0
- package/dist/mqttPacket/protocolLevels.d.ts.map +1 -0
- package/dist/mqttPacket/protocolLevels.js +11 -0
- package/dist/mqttPacket/protocolLevels.js.map +1 -0
- package/dist/mqttPacket/pubblishAcks.d.ts +42 -0
- package/dist/mqttPacket/pubblishAcks.d.ts.map +1 -0
- package/dist/mqttPacket/pubblishAcks.js +56 -0
- package/dist/mqttPacket/pubblishAcks.js.map +1 -0
- package/dist/mqttPacket/publish.d.ts +19 -8
- package/dist/mqttPacket/publish.d.ts.map +1 -1
- package/dist/mqttPacket/publish.js +26 -7
- package/dist/mqttPacket/publish.js.map +1 -1
- package/dist/mqttPacket/suback.d.ts +18 -11
- package/dist/mqttPacket/suback.d.ts.map +1 -1
- package/dist/mqttPacket/suback.js +41 -20
- package/dist/mqttPacket/suback.js.map +1 -1
- package/dist/mqttPacket/subscribe.d.ts +27 -12
- package/dist/mqttPacket/subscribe.d.ts.map +1 -1
- package/dist/mqttPacket/subscribe.js +71 -15
- package/dist/mqttPacket/subscribe.js.map +1 -1
- package/dist/mqttPacket/types.d.ts +36 -0
- package/dist/mqttPacket/types.d.ts.map +1 -1
- package/dist/mqttPacket/unsuback.d.ts +17 -10
- package/dist/mqttPacket/unsuback.d.ts.map +1 -1
- package/dist/mqttPacket/unsuback.js +29 -6
- package/dist/mqttPacket/unsuback.js.map +1 -1
- package/dist/mqttPacket/unsubscribe.d.ts +17 -10
- package/dist/mqttPacket/unsubscribe.d.ts.map +1 -1
- package/dist/mqttPacket/unsubscribe.js +24 -8
- package/dist/mqttPacket/unsubscribe.js.map +1 -1
- package/dist/mqttPacket/validators.d.ts +15 -0
- package/dist/mqttPacket/validators.d.ts.map +1 -1
- package/dist/mqttPacket/validators.js +15 -0
- package/dist/mqttPacket/validators.js.map +1 -1
- package/dist/node/tcpClient.js +1 -1
- package/dist/node/tcpClient.js.map +1 -1
- package/dist/node/wrapNodeSocket.d.ts.map +1 -1
- package/dist/node/wrapNodeSocket.js.map +1 -1
- package/dist/persistence/deps.d.ts +1 -1
- package/dist/persistence/deps.d.ts.map +1 -1
- package/dist/persistence/deps.js +1 -1
- package/dist/persistence/deps.js.map +1 -1
- package/dist/persistence/memory/memoryPersistence.js +1 -1
- package/dist/persistence/memory/memoryPersistence.js.map +1 -1
- package/dist/server/context.d.ts +3 -1
- package/dist/server/context.d.ts.map +1 -1
- package/dist/server/context.js +8 -2
- 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 +1 -1
- package/dist/server/deps.js.map +1 -1
- package/dist/server/handlers/handleConnect.d.ts +1 -1
- package/dist/server/handlers/handleConnect.d.ts.map +1 -1
- package/dist/server/handlers/handleConnect.js +9 -1
- package/dist/server/handlers/handleConnect.js.map +1 -1
- package/dist/server/handlers/handlePacket.d.ts +1 -1
- package/dist/server/handlers/handlePacket.d.ts.map +1 -1
- package/dist/server/handlers/handlePacket.js +1 -1
- package/dist/server/handlers/handlePacket.js.map +1 -1
- package/dist/server/handlers/handlePingreq.d.ts.map +1 -1
- package/dist/server/handlers/handlePingreq.js +1 -0
- package/dist/server/handlers/handlePingreq.js.map +1 -1
- package/dist/server/handlers/handlePublish.d.ts +2 -2
- package/dist/server/handlers/handlePublish.d.ts.map +1 -1
- package/dist/server/handlers/handlePublish.js +2 -0
- package/dist/server/handlers/handlePublish.js.map +1 -1
- package/dist/server/handlers/handlePubrec.d.ts +1 -1
- package/dist/server/handlers/handlePubrec.d.ts.map +1 -1
- package/dist/server/handlers/handlePubrec.js +1 -0
- package/dist/server/handlers/handlePubrec.js.map +1 -1
- package/dist/server/handlers/handlePubrel.d.ts +1 -1
- package/dist/server/handlers/handlePubrel.d.ts.map +1 -1
- package/dist/server/handlers/handlePubrel.js +1 -0
- package/dist/server/handlers/handlePubrel.js.map +1 -1
- package/dist/server/handlers/handleSubscribe.d.ts +1 -1
- package/dist/server/handlers/handleSubscribe.d.ts.map +1 -1
- package/dist/server/handlers/handleSubscribe.js +2 -1
- package/dist/server/handlers/handleSubscribe.js.map +1 -1
- package/dist/server/handlers/handleUnsubscribe.d.ts +1 -1
- package/dist/server/handlers/handleUnsubscribe.d.ts.map +1 -1
- package/dist/server/handlers/handleUnsubscribe.js +1 -0
- package/dist/server/handlers/handleUnsubscribe.js.map +1 -1
- package/dist/server/server.d.ts +2 -2
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +5 -3
- package/dist/server/server.js.map +1 -1
- package/dist/socket/socket.d.ts.map +1 -1
- package/dist/socket/socket.js +6 -1
- package/dist/socket/socket.js.map +1 -1
- package/dist/utils/assert.d.ts +0 -3
- package/dist/utils/assert.d.ts.map +1 -1
- package/dist/utils/assert.js +0 -7
- package/dist/utils/assert.js.map +1 -1
- package/dist/utils/asyncQueue.d.ts +1 -3
- package/dist/utils/asyncQueue.d.ts.map +1 -1
- package/dist/utils/asyncQueue.js +16 -21
- package/dist/utils/asyncQueue.js.map +1 -1
- package/dist/utils/logger.d.ts +5 -15
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +7 -8
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/mod.d.ts +0 -3
- package/dist/utils/mod.d.ts.map +1 -1
- package/dist/utils/mod.js +0 -2
- package/dist/utils/mod.js.map +1 -1
- package/dist/utils/utils.d.ts +2 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +6 -0
- package/dist/utils/utils.js.map +1 -0
- package/mqttConn/mqttConn.test.ts +27 -12
- package/mqttConn/mqttConn.ts +45 -14
- package/mqttPacket/PacketType.ts +1 -0
- package/mqttPacket/Properties.ts +276 -0
- package/mqttPacket/ReasonCode.test.ts +22 -0
- package/mqttPacket/ReasonCode.ts +256 -0
- package/mqttPacket/RetainHandling.ts +11 -0
- package/mqttPacket/auth.test.ts +112 -0
- package/mqttPacket/auth.ts +71 -0
- package/mqttPacket/connack.test.ts +84 -64
- package/mqttPacket/connack.ts +88 -24
- package/mqttPacket/connect.test.ts +497 -18
- package/mqttPacket/connect.ts +170 -39
- package/mqttPacket/decoder.test.ts +33 -16
- package/mqttPacket/decoder.ts +173 -5
- package/mqttPacket/disconnect.test.ts +97 -18
- package/mqttPacket/disconnect.ts +84 -12
- package/mqttPacket/encoder.test.ts +32 -8
- package/mqttPacket/encoder.ts +236 -11
- package/mqttPacket/length.ts +3 -2
- package/mqttPacket/mod.ts +76 -39
- package/mqttPacket/pingreq.test.ts +52 -4
- package/mqttPacket/pingreq.ts +20 -7
- package/mqttPacket/pingres.test.ts +52 -4
- package/mqttPacket/pingres.ts +22 -8
- package/mqttPacket/properties.test.ts +193 -0
- package/mqttPacket/protocolLevels.ts +13 -0
- package/mqttPacket/pubblishAcks.ts +123 -0
- package/mqttPacket/publish.test.ts +212 -133
- package/mqttPacket/publish.ts +69 -14
- package/mqttPacket/publishAcks.test.ts +128 -0
- package/mqttPacket/suback.test.ts +71 -27
- package/mqttPacket/suback.ts +82 -30
- package/mqttPacket/subscribe.test.ts +132 -43
- package/mqttPacket/subscribe.ts +128 -25
- package/mqttPacket/types.ts +43 -0
- package/mqttPacket/unsuback.test.ts +80 -30
- package/mqttPacket/unsuback.ts +68 -13
- package/mqttPacket/unsubscribe.test.ts +59 -34
- package/mqttPacket/unsubscribe.ts +64 -17
- package/mqttPacket/validators.ts +15 -0
- package/node/tcpClient.ts +1 -1
- package/node/wrapNodeSocket.ts +2 -1
- package/package.json +2 -2
- package/persistence/deps.ts +1 -1
- package/persistence/memory/memoryPersistence.test.ts +5 -1
- package/persistence/memory/memoryPersistence.ts +1 -1
- package/server/context.ts +23 -10
- package/server/deps.ts +2 -0
- package/server/handlers/handleConnect.ts +12 -9
- package/server/handlers/handlePacket.ts +10 -11
- package/server/handlers/handlePingreq.ts +1 -0
- package/server/handlers/handlePublish.ts +6 -2
- package/server/handlers/handlePubrec.ts +3 -1
- package/server/handlers/handlePubrel.ts +3 -1
- package/server/handlers/handleSubscribe.ts +3 -6
- package/server/handlers/handleUnsubscribe.ts +3 -1
- package/server/server.ts +8 -12
- package/server/test/handleConnect.test.ts +2 -1
- package/server/test/test-handlers.ts +2 -1
- package/socket/socket.ts +5 -1
- package/utils/assert.ts +0 -18
- package/utils/asyncQueue.ts +17 -21
- package/utils/logger.ts +12 -11
- package/utils/mod.ts +0 -3
- package/utils/utils.ts +6 -0
- package/dist/mqttPacket/puback.d.ts +0 -16
- package/dist/mqttPacket/puback.d.ts.map +0 -1
- package/dist/mqttPacket/puback.js +0 -21
- package/dist/mqttPacket/puback.js.map +0 -1
- package/dist/mqttPacket/pubcomp.d.ts +0 -17
- package/dist/mqttPacket/pubcomp.d.ts.map +0 -1
- package/dist/mqttPacket/pubcomp.js +0 -21
- package/dist/mqttPacket/pubcomp.js.map +0 -1
- package/dist/mqttPacket/pubrec.d.ts +0 -17
- package/dist/mqttPacket/pubrec.d.ts.map +0 -1
- package/dist/mqttPacket/pubrec.js +0 -21
- package/dist/mqttPacket/pubrec.js.map +0 -1
- package/dist/mqttPacket/pubrel.d.ts +0 -17
- package/dist/mqttPacket/pubrel.d.ts.map +0 -1
- package/dist/mqttPacket/pubrel.js +0 -21
- package/dist/mqttPacket/pubrel.js.map +0 -1
- package/dist/utils/args.d.ts +0 -28
- package/dist/utils/args.d.ts.map +0 -1
- package/dist/utils/args.js +0 -76
- package/dist/utils/args.js.map +0 -1
- package/dist/utils/platform.d.ts +0 -5
- package/dist/utils/platform.d.ts.map +0 -1
- package/dist/utils/platform.js +0 -8
- package/dist/utils/platform.js.map +0 -1
- package/mqttPacket/puback.test.ts +0 -55
- package/mqttPacket/puback.ts +0 -34
- package/mqttPacket/pubcomp.test.ts +0 -55
- package/mqttPacket/pubcomp.ts +0 -35
- package/mqttPacket/pubrec.test.ts +0 -55
- package/mqttPacket/pubrec.ts +0 -35
- package/mqttPacket/pubrel.test.ts +0 -55
- package/mqttPacket/pubrel.ts +0 -35
- package/utils/args.ts +0 -103
- package/utils/platform.ts +0 -8
package/client/context.ts
CHANGED
|
@@ -1,29 +1,37 @@
|
|
|
1
1
|
import {
|
|
2
|
-
type AnyPacket,
|
|
3
2
|
AsyncQueue,
|
|
4
|
-
type ConnectPacket,
|
|
5
3
|
Deferred,
|
|
6
4
|
logger,
|
|
7
|
-
type MemoryStore,
|
|
8
5
|
MqttConn,
|
|
9
|
-
|
|
6
|
+
MQTTLevel,
|
|
7
|
+
nextTick,
|
|
10
8
|
PacketType,
|
|
11
|
-
type PublishPacket,
|
|
12
|
-
type ReturnCodes,
|
|
13
|
-
type SockConn,
|
|
14
|
-
type SubscribePacket,
|
|
15
|
-
type TAuthenticationResult,
|
|
16
9
|
Timer,
|
|
17
|
-
|
|
10
|
+
} from "./deps.ts";
|
|
11
|
+
import type {
|
|
12
|
+
AnyPacket,
|
|
13
|
+
ConnectPacket,
|
|
14
|
+
MemoryStore,
|
|
15
|
+
PacketId,
|
|
16
|
+
ProtocolLevel,
|
|
17
|
+
PublishPacket,
|
|
18
|
+
ReturnCodes,
|
|
19
|
+
SockConn,
|
|
20
|
+
SubscribePacket,
|
|
21
|
+
TAuthenticationResult,
|
|
22
|
+
UnsubscribePacket,
|
|
18
23
|
} from "./deps.ts";
|
|
19
24
|
|
|
20
25
|
import { handlePacket } from "./handlers/handlePacket.ts";
|
|
21
26
|
import type { TConnectionState } from "./ConnectionState.ts";
|
|
22
27
|
import { ConnectionState } from "./ConnectionState.ts";
|
|
28
|
+
import type { Client } from "./client.ts";
|
|
29
|
+
import { assert } from "../utils/assert.ts";
|
|
23
30
|
|
|
24
31
|
export class Context {
|
|
25
32
|
mqttConn?: MqttConn;
|
|
26
|
-
connectionState: TConnectionState;
|
|
33
|
+
#connectionState: TConnectionState;
|
|
34
|
+
protocolLevel: ProtocolLevel;
|
|
27
35
|
pingTimer?: Timer;
|
|
28
36
|
unresolvedConnect?: Deferred<TAuthenticationResult>;
|
|
29
37
|
unresolvedPublish: Map<PacketId, Deferred<void>>;
|
|
@@ -31,18 +39,41 @@ export class Context {
|
|
|
31
39
|
unresolvedUnSubscribe: Map<PacketId, Deferred<void>>;
|
|
32
40
|
store: MemoryStore;
|
|
33
41
|
incoming: AsyncQueue<PublishPacket>;
|
|
42
|
+
#client: Client;
|
|
34
43
|
|
|
35
|
-
constructor(store: MemoryStore) {
|
|
44
|
+
constructor(store: MemoryStore, client: Client) {
|
|
45
|
+
this.#client = client;
|
|
36
46
|
this.store = store;
|
|
37
|
-
this
|
|
47
|
+
this.#connectionState = ConnectionState.offline;
|
|
48
|
+
this.protocolLevel = MQTTLevel.unknown;
|
|
38
49
|
this.incoming = new AsyncQueue();
|
|
39
50
|
this.unresolvedPublish = new Map();
|
|
40
51
|
this.unresolvedSubscribe = new Map();
|
|
41
52
|
this.unresolvedUnSubscribe = new Map();
|
|
42
53
|
}
|
|
43
54
|
|
|
55
|
+
get connectionState(): TConnectionState {
|
|
56
|
+
return this.#connectionState;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
set connectionState(state: TConnectionState) {
|
|
60
|
+
this.#connectionState = state;
|
|
61
|
+
switch (state) {
|
|
62
|
+
case "connected":
|
|
63
|
+
queueMicrotask(this.#client.onConnected);
|
|
64
|
+
break;
|
|
65
|
+
case "disconnected":
|
|
66
|
+
queueMicrotask(this.#client.onDisconnected);
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
44
71
|
async connect(packet: ConnectPacket) {
|
|
45
72
|
this.connectionState = ConnectionState.connecting;
|
|
73
|
+
if (packet.protocolLevel === MQTTLevel.unknown) {
|
|
74
|
+
packet.protocolLevel = MQTTLevel.v4;
|
|
75
|
+
}
|
|
76
|
+
this.protocolLevel = packet.protocolLevel;
|
|
46
77
|
await this.mqttConn?.send(packet);
|
|
47
78
|
const keepAlive = packet.keepAlive || 0;
|
|
48
79
|
if (keepAlive > 0) {
|
|
@@ -60,8 +91,12 @@ export class Context {
|
|
|
60
91
|
}
|
|
61
92
|
if (this.mqttConn) {
|
|
62
93
|
this.connectionState = ConnectionState.disconnecting;
|
|
63
|
-
await this.mqttConn.send({
|
|
94
|
+
await this.mqttConn.send({
|
|
95
|
+
type: PacketType.disconnect,
|
|
96
|
+
protocolLevel: this.protocolLevel,
|
|
97
|
+
});
|
|
64
98
|
this.mqttConn.close();
|
|
99
|
+
this.protocolLevel = MQTTLevel.unknown;
|
|
65
100
|
}
|
|
66
101
|
}
|
|
67
102
|
|
|
@@ -73,6 +108,7 @@ export class Context {
|
|
|
73
108
|
) {
|
|
74
109
|
await this.mqttConn?.send(packet);
|
|
75
110
|
this.pingTimer?.reset();
|
|
111
|
+
await nextTick(); // Yield to allow other tasks to run
|
|
76
112
|
return;
|
|
77
113
|
}
|
|
78
114
|
logger.debug("not connected");
|
|
@@ -80,7 +116,10 @@ export class Context {
|
|
|
80
116
|
}
|
|
81
117
|
|
|
82
118
|
sendPing() {
|
|
83
|
-
this.send({
|
|
119
|
+
this.send({
|
|
120
|
+
type: PacketType.pingreq,
|
|
121
|
+
protocolLevel: this.protocolLevel,
|
|
122
|
+
});
|
|
84
123
|
}
|
|
85
124
|
|
|
86
125
|
async handleConnection(
|
|
@@ -88,20 +127,22 @@ export class Context {
|
|
|
88
127
|
connectPacket: ConnectPacket,
|
|
89
128
|
): Promise<boolean> {
|
|
90
129
|
this.mqttConn = new MqttConn({ conn });
|
|
91
|
-
if (this.mqttConn === undefined) {
|
|
92
|
-
return true;
|
|
93
|
-
}
|
|
94
|
-
logger.debug("Send connect packet");
|
|
95
|
-
await this.connect(connectPacket);
|
|
96
130
|
try {
|
|
131
|
+
logger.debug("Send connect packet", connectPacket);
|
|
132
|
+
await this.connect(connectPacket);
|
|
97
133
|
logger.debug("Accepting packets");
|
|
98
134
|
for await (const packet of this.mqttConn) {
|
|
99
|
-
handlePacket(this, packet);
|
|
135
|
+
await handlePacket(this, packet);
|
|
100
136
|
}
|
|
101
137
|
logger.debug("No more packets");
|
|
102
138
|
} catch (err) {
|
|
103
|
-
|
|
104
|
-
|
|
139
|
+
assert(
|
|
140
|
+
err instanceof Error,
|
|
141
|
+
`Caught something that is not an instance of Error: ${err}`,
|
|
142
|
+
);
|
|
143
|
+
queueMicrotask(() => this.#client.onError(err));
|
|
144
|
+
logger.debug(`error ${err}`);
|
|
145
|
+
if (!this.mqttConn.isClosed) {
|
|
105
146
|
this.mqttConn.close();
|
|
106
147
|
}
|
|
107
148
|
}
|
|
@@ -121,11 +162,11 @@ export class Context {
|
|
|
121
162
|
this.incoming.push(packet);
|
|
122
163
|
}
|
|
123
164
|
|
|
124
|
-
publish(packet: PublishPacket): Promise<void> {
|
|
165
|
+
async publish(packet: PublishPacket): Promise<void> {
|
|
125
166
|
const qos = packet.qos || 0;
|
|
126
167
|
if (qos === 0) {
|
|
127
168
|
packet.id = 0;
|
|
128
|
-
this.send(packet);
|
|
169
|
+
await this.send(packet);
|
|
129
170
|
// return empty promise
|
|
130
171
|
return Promise.resolve();
|
|
131
172
|
}
|
|
@@ -133,25 +174,25 @@ export class Context {
|
|
|
133
174
|
this.store.pendingOutgoing.set(packet.id, packet);
|
|
134
175
|
const deferred = new Deferred<void>();
|
|
135
176
|
this.unresolvedPublish.set(packet.id, deferred);
|
|
136
|
-
this.send(packet);
|
|
177
|
+
await this.send(packet);
|
|
137
178
|
return deferred.promise;
|
|
138
179
|
}
|
|
139
180
|
|
|
140
|
-
subscribe(packet: SubscribePacket): Promise<ReturnCodes> {
|
|
181
|
+
async subscribe(packet: SubscribePacket): Promise<ReturnCodes> {
|
|
141
182
|
packet.id = this.store.nextId();
|
|
142
183
|
this.store.pendingOutgoing.set(packet.id, packet);
|
|
143
184
|
const deferred = new Deferred<ReturnCodes>();
|
|
144
185
|
this.unresolvedSubscribe.set(packet.id, deferred);
|
|
145
|
-
this.send(packet);
|
|
186
|
+
await this.send(packet);
|
|
146
187
|
return deferred.promise;
|
|
147
188
|
}
|
|
148
189
|
|
|
149
|
-
unsubscribe(packet: UnsubscribePacket): Promise<void> {
|
|
190
|
+
async unsubscribe(packet: UnsubscribePacket): Promise<void> {
|
|
150
191
|
packet.id = this.store.nextId();
|
|
151
192
|
this.store.pendingOutgoing.set(packet.id, packet);
|
|
152
193
|
const deferred = new Deferred<void>();
|
|
153
194
|
this.unresolvedUnSubscribe.set(packet.id, deferred);
|
|
154
|
-
this.send(packet);
|
|
195
|
+
await this.send(packet);
|
|
155
196
|
return deferred.promise;
|
|
156
197
|
}
|
|
157
198
|
|
package/client/deps.ts
CHANGED
|
@@ -6,6 +6,7 @@ export type {
|
|
|
6
6
|
Dup,
|
|
7
7
|
PacketId,
|
|
8
8
|
Payload,
|
|
9
|
+
ProtocolLevel,
|
|
9
10
|
PubackPacket,
|
|
10
11
|
PubcompPacket,
|
|
11
12
|
PublishPacket,
|
|
@@ -16,6 +17,7 @@ export type {
|
|
|
16
17
|
SubscribePacket,
|
|
17
18
|
TAuthenticationResult,
|
|
18
19
|
Topic,
|
|
20
|
+
TReasonCode,
|
|
19
21
|
UnsubackPacket,
|
|
20
22
|
UnsubscribePacket,
|
|
21
23
|
} from "../mqttPacket/mod.ts";
|
|
@@ -25,8 +27,10 @@ export {
|
|
|
25
27
|
AuthenticationResultByNumber,
|
|
26
28
|
decodePayload,
|
|
27
29
|
encode,
|
|
30
|
+
MQTTLevel,
|
|
28
31
|
PacketNameByType,
|
|
29
32
|
PacketType,
|
|
33
|
+
ReasonCodeByNumber,
|
|
30
34
|
} from "../mqttPacket/mod.ts";
|
|
31
35
|
|
|
32
36
|
export { MqttConn } from "../mqttConn/mqttConn.ts";
|
|
@@ -34,3 +38,4 @@ export type { SockConn } from "../socket/socket.ts";
|
|
|
34
38
|
export { Timer } from "../timer/timer.ts";
|
|
35
39
|
export { AsyncQueue, Deferred, logger } from "../utils/mod.ts";
|
|
36
40
|
export { MemoryStore } from "./store/memoryStore.ts";
|
|
41
|
+
export { nextTick } from "../utils/mod.ts";
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Context } from "../context.ts";
|
|
2
2
|
import { ConnectionState } from "../ConnectionState.ts";
|
|
3
|
-
import { AuthenticationResultByNumber,
|
|
3
|
+
import { AuthenticationResultByNumber, ReasonCodeByNumber } from "../deps.ts";
|
|
4
|
+
import type { ConnackPacket, TReasonCode } from "../deps.ts";
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Handles the CONNACK packet received from the MQTT broker
|
|
@@ -9,18 +10,29 @@ import { AuthenticationResultByNumber, type ConnackPacket } from "../deps.ts";
|
|
|
9
10
|
* @returns Promise that resolves when handling is complete
|
|
10
11
|
*/
|
|
11
12
|
export async function handleConnack(packet: ConnackPacket, ctx: Context) {
|
|
12
|
-
|
|
13
|
+
const result = packet.protocolLevel === 5
|
|
14
|
+
? packet.reasonCode
|
|
15
|
+
: packet.returnCode;
|
|
16
|
+
if (result === 0) {
|
|
13
17
|
ctx.connectionState = ConnectionState.connected;
|
|
18
|
+
if (ctx.mqttConn) {
|
|
19
|
+
ctx.mqttConn.codecOpts.protocolLevel = ctx.protocolLevel;
|
|
20
|
+
}
|
|
14
21
|
ctx.pingTimer?.reset();
|
|
15
|
-
ctx.unresolvedConnect?.resolve(
|
|
22
|
+
ctx.unresolvedConnect?.resolve(result);
|
|
16
23
|
// start transmitting packets that were queued before
|
|
17
24
|
for await (const packet of ctx.store.pendingOutgoingPackets()) {
|
|
18
|
-
ctx.send(packet);
|
|
25
|
+
await ctx.send(packet);
|
|
19
26
|
}
|
|
20
27
|
return;
|
|
21
28
|
}
|
|
29
|
+
|
|
30
|
+
const errMsg = packet.protocolLevel === 5
|
|
31
|
+
? ReasonCodeByNumber[result as TReasonCode]
|
|
32
|
+
: AuthenticationResultByNumber[result];
|
|
33
|
+
|
|
22
34
|
const err = new Error(
|
|
23
|
-
`Connect failed: ${
|
|
35
|
+
`Connect failed: ${errMsg}`,
|
|
24
36
|
);
|
|
25
37
|
ctx.connectionState = ConnectionState.disconnecting;
|
|
26
38
|
ctx.pingTimer?.clear();
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Context } from "../context.ts";
|
|
2
|
-
import { PacketType
|
|
2
|
+
import { PacketType } from "../deps.ts";
|
|
3
|
+
import type { PublishPacket } from "../deps.ts";
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Handles incoming MQTT publish packets based on their QoS level
|
|
@@ -20,6 +21,7 @@ export async function handlePublish(ctx: Context, packet: PublishPacket) {
|
|
|
20
21
|
ctx.receivePublish(packet);
|
|
21
22
|
await ctx.send({
|
|
22
23
|
type: PacketType.puback,
|
|
24
|
+
protocolLevel: ctx.protocolLevel,
|
|
23
25
|
id: packet.id,
|
|
24
26
|
});
|
|
25
27
|
return;
|
|
@@ -29,6 +31,7 @@ export async function handlePublish(ctx: Context, packet: PublishPacket) {
|
|
|
29
31
|
ctx.store.pendingIncoming.set(packet.id, packet);
|
|
30
32
|
await ctx.send({
|
|
31
33
|
type: PacketType.pubrec,
|
|
34
|
+
protocolLevel: ctx.protocolLevel,
|
|
32
35
|
id: packet.id,
|
|
33
36
|
});
|
|
34
37
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Context } from "../context.ts";
|
|
2
|
-
import { PacketType
|
|
2
|
+
import { PacketType } from "../deps.ts";
|
|
3
|
+
import type { PubrecPacket, PubrelPacket } from "../deps.ts";
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Handles PUBREC (Publish Received) packets for QoS 2 message flow
|
|
@@ -21,6 +22,7 @@ export async function handlePubrec(
|
|
|
21
22
|
const id = packet.id;
|
|
22
23
|
const ack: PubrelPacket = {
|
|
23
24
|
type: PacketType.pubrel,
|
|
25
|
+
protocolLevel: ctx.protocolLevel,
|
|
24
26
|
id,
|
|
25
27
|
};
|
|
26
28
|
if (ctx.store.pendingOutgoing.has(id)) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Context } from "../context.ts";
|
|
2
|
-
import { PacketType
|
|
2
|
+
import { PacketType } from "../deps.ts";
|
|
3
|
+
import type { PubrelPacket } from "../deps.ts";
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Handles a PUBREL packet in the MQTT QoS 2 flow
|
|
@@ -29,6 +30,7 @@ export async function handlePubrel(
|
|
|
29
30
|
ctx.store.pendingIncoming.delete(id);
|
|
30
31
|
await ctx.send({
|
|
31
32
|
type: PacketType.pubcomp,
|
|
33
|
+
protocolLevel: ctx.protocolLevel,
|
|
32
34
|
id,
|
|
33
35
|
});
|
|
34
36
|
}
|
|
@@ -13,5 +13,7 @@ import type { SubackPacket } from "../deps.ts";
|
|
|
13
13
|
export function handleSuback(ctx: Context, packet: SubackPacket): void {
|
|
14
14
|
const id = packet.id;
|
|
15
15
|
ctx.store.pendingOutgoing.delete(id);
|
|
16
|
-
|
|
16
|
+
if (packet.protocolLevel !== 5) {
|
|
17
|
+
ctx.receiveSuback(id, packet.returnCodes);
|
|
18
|
+
}
|
|
17
19
|
}
|
package/client/mod.ts
CHANGED
|
@@ -2,7 +2,14 @@
|
|
|
2
2
|
* This module provides an MQTT Client interface see the /bin folder for examples
|
|
3
3
|
* @module
|
|
4
4
|
*/
|
|
5
|
-
export {
|
|
5
|
+
export {
|
|
6
|
+
Client,
|
|
7
|
+
DEFAULT_KEEPALIVE,
|
|
8
|
+
DEFAULT_PROTOCOLLEVEL,
|
|
9
|
+
DEFAULT_URL,
|
|
10
|
+
} from "./client.ts";
|
|
11
|
+
export { MQTTLevel } from "./deps.ts";
|
|
12
|
+
export type { ProtocolLevel } from "./deps.ts";
|
|
6
13
|
export type {
|
|
7
14
|
ConnectParameters,
|
|
8
15
|
PublishParameters,
|
package/deno/tcpClient.ts
CHANGED
package/dev_utils/dummyConn.ts
CHANGED
|
@@ -43,6 +43,21 @@ class Uint8QueuedWriter implements WritableStreamDefaultWriter {
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
+
function readableByteStreamFromArray(readerBuffs: Array<Uint8Array>) {
|
|
47
|
+
let i = 0;
|
|
48
|
+
return new ReadableStream({
|
|
49
|
+
type: "bytes",
|
|
50
|
+
pull(controller) {
|
|
51
|
+
if (i === readerBuffs.length) {
|
|
52
|
+
controller.close();
|
|
53
|
+
controller.byobRequest?.respond(0);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
controller.enqueue(readerBuffs[i++]);
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
|
|
46
61
|
function ReadableStreamFrom(
|
|
47
62
|
iterable: AsyncIterable<Uint8Array>,
|
|
48
63
|
): ReadableStream {
|
|
@@ -58,6 +73,7 @@ function ReadableStreamFrom(
|
|
|
58
73
|
|
|
59
74
|
if (next.done) {
|
|
60
75
|
controller.close();
|
|
76
|
+
controller.byobRequest?.respond(0);
|
|
61
77
|
return;
|
|
62
78
|
}
|
|
63
79
|
controller.enqueue(next.value);
|
|
@@ -70,8 +86,7 @@ export function makeDummySockConn(
|
|
|
70
86
|
writerBuf: Uint8Array,
|
|
71
87
|
close = () => {},
|
|
72
88
|
) {
|
|
73
|
-
const
|
|
74
|
-
const readable = readBlob.stream();
|
|
89
|
+
const readable = readableByteStreamFromArray(readerBuffs);
|
|
75
90
|
const writable = new WritableStream(new Uint8Writer(writerBuf));
|
|
76
91
|
return {
|
|
77
92
|
readable,
|
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
* MQTT Server implementation with authentication and authorization
|
|
5
5
|
* @module mqttServer
|
|
6
6
|
*/
|
|
7
|
+
import { parseArgs } from "node:util";
|
|
7
8
|
import { TcpServer } from "../node/tcpServer.js";
|
|
8
9
|
import { AuthenticationResult } from "../server/mod.js";
|
|
9
|
-
import {
|
|
10
|
+
import { logger, LogLevel } from "../utils/mod.js";
|
|
10
11
|
/**
|
|
11
12
|
* UTF-8 decoder for parsing passwords
|
|
12
13
|
*/
|
|
@@ -79,7 +80,7 @@ function isAuthorizedToSubscribe(ctx, topic) {
|
|
|
79
80
|
/**
|
|
80
81
|
* Parse command line arguments and start server
|
|
81
82
|
*/
|
|
82
|
-
const {
|
|
83
|
+
const { positionals: [portNum] } = parseArgs({ allowPositionals: true });
|
|
83
84
|
const port = Number(portNum ?? 1883);
|
|
84
85
|
const hostname = "::";
|
|
85
86
|
logger.level(LogLevel.info);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conformanceServer.js","sourceRoot":"","sources":["../../bin/conformanceServer.ts"],"names":[],"mappings":";AACA,iFAAiF;AAEjF;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"conformanceServer.js","sourceRoot":"","sources":["../../bin/conformanceServer.ts"],"names":[],"mappings":"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"}
|
package/dist/bin/demoServer.js
CHANGED
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
* MQTT Server implementation with authentication and authorization
|
|
4
4
|
* @module mqttServer
|
|
5
5
|
*/
|
|
6
|
+
import { parseArgs } from "node:util";
|
|
6
7
|
import { TcpServer } from "../node/tcpServer.js";
|
|
7
8
|
import { AuthenticationResult } from "../server/mod.js";
|
|
8
|
-
import {
|
|
9
|
+
import { logger, LogLevel } from "../utils/mod.js";
|
|
9
10
|
/**
|
|
10
11
|
* UTF-8 decoder for parsing passwords
|
|
11
12
|
*/
|
|
@@ -78,7 +79,7 @@ function isAuthorizedToSubscribe(ctx, topic) {
|
|
|
78
79
|
/**
|
|
79
80
|
* Parse command line arguments and start server
|
|
80
81
|
*/
|
|
81
|
-
const {
|
|
82
|
+
const { positionals: [portNum] } = parseArgs({ allowPositionals: true });
|
|
82
83
|
const port = Number(portNum ?? 1883);
|
|
83
84
|
const hostname = "::";
|
|
84
85
|
logger.level(LogLevel.info);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demoServer.js","sourceRoot":"","sources":["../../bin/demoServer.ts"],"names":[],"mappings":";AAEA;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"demoServer.js","sourceRoot":"","sources":["../../bin/demoServer.ts"],"names":[],"mappings":";AAEA;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC;;GAEG;AACH,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5B,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;AAC/C,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;AAE/C;;;GAGG;AACH,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAEzD;;;;GAIG;AACH,MAAM,aAAa,GAAG,KAAK,CAAC;AAE5B;;;;;;;GAOG;AACH,SAAS,eAAe,CACtB,IAAa,EACb,QAAgB,EAChB,QAAgB,EAChB,QAAoB;IAEpB,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,CAAC,IAAI,CACT,uCAAuC,QAAQ,oBAAoB,QAAQ,mBAAmB,GAAG,GAAG,CACrG,CAAC;IAEF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,yBAAyB;QACzB,OAAO,oBAAoB,CAAC,EAAE,CAAC;IACjC,CAAC;IACD,wDAAwD;IACxD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,OAAO,oBAAoB,CAAC,qBAAqB,CAAC;IACpD,CAAC;IACD,qDAAqD;IACrD,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,OAAO,oBAAoB,CAAC,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,oBAAoB,CAAC,aAAa,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,GAAY,EAAE,KAAY;IACvD,MAAM,CAAC,KAAK,CACV,qCAAqC,GAAG,CAAC,KAAK,EAAE,QAAQ,0BAA0B,KAAK,GAAG,CAC3F,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAS,uBAAuB,CAAC,GAAY,EAAE,KAAY;IACzD,MAAM,CAAC,KAAK,CACV,qCAAqC,GAAG,CAAC,KAAK,EAAE,QAAQ,4BAA4B,KAAK,GAAG,CAC7F,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;AACzE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;AACrC,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAE5B;;GAEG;AACH,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;IAClD,QAAQ,EAAE;QACR,eAAe;QACf,qBAAqB;QACrB,uBAAuB;KACxB;CACF,CAAC,CAAC;AACH,SAAS,CAAC,KAAK,EAAE,CAAC;AAClB,MAAM,CAAC,IAAI,CAAC,0BAA0B,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC"}
|
package/dist/bin/mqtt.d.ts
CHANGED
|
@@ -1,3 +1,32 @@
|
|
|
1
1
|
#!/usr/bin/env -S node --experimental-strip-types
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview MQTT command line interface that provides publish and subscribe functionality
|
|
4
|
+
* @module mqtt-cli
|
|
5
|
+
*
|
|
6
|
+
* @description
|
|
7
|
+
* This module implements a command line interface for MQTT operations:
|
|
8
|
+
* - Publish messages to an MQTT broker
|
|
9
|
+
* - Subscribe to topics on an MQTT broker
|
|
10
|
+
*
|
|
11
|
+
* Features:
|
|
12
|
+
* - TLS support with custom certificates
|
|
13
|
+
* - Authentication with username/password
|
|
14
|
+
* - Configurable QoS levels (0-2)
|
|
15
|
+
* - Message retention
|
|
16
|
+
* - Session persistence
|
|
17
|
+
* - Custom client IDs
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* # Publish a message
|
|
21
|
+
* mqtt publish -t topic -m message
|
|
22
|
+
*
|
|
23
|
+
* # Subscribe to a topic
|
|
24
|
+
* mqtt subscribe -t topic
|
|
25
|
+
*
|
|
26
|
+
* @requires node:util
|
|
27
|
+
* @requires ../client/mod.ts
|
|
28
|
+
* @requires ../node/tcpClient.ts
|
|
29
|
+
* @requires ../utils/mod.ts
|
|
30
|
+
*/
|
|
2
31
|
export {};
|
|
3
32
|
//# sourceMappingURL=mqtt.d.ts.map
|
package/dist/bin/mqtt.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mqtt.d.ts","sourceRoot":"","sources":["../../bin/mqtt.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"mqtt.d.ts","sourceRoot":"","sources":["../../bin/mqtt.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG"}
|