@seriousme/opifex 1.9.4 → 1.10.1
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 +126 -117
- package/client/client.ts +35 -15
- package/client/context.ts +42 -22
- 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/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 +101 -96
- package/dist/bin/mqtt.js.map +1 -1
- package/dist/client/client.d.ts +7 -4
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +17 -9
- package/dist/client/client.js.map +1 -1
- package/dist/client/context.d.ts +3 -1
- package/dist/client/context.d.ts.map +1 -1
- package/dist/client/context.js +27 -13
- 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 +15 -7
- 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 +27 -8
- 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 +13 -7
- 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 +56 -91
- package/dist/mqttPacket/mod.d.ts.map +1 -1
- package/dist/mqttPacket/mod.js +22 -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 +11 -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 +35 -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 +14 -7
- 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 +24 -9
- 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 +33 -0
- package/dist/mqttPacket/types.d.ts.map +1 -1
- package/dist/mqttPacket/unsuback.d.ts +14 -7
- 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 +14 -7
- 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/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/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/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/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 +72 -0
- package/mqttPacket/connack.test.ts +84 -64
- package/mqttPacket/connack.ts +84 -20
- package/mqttPacket/connect.test.ts +497 -18
- package/mqttPacket/connect.ts +167 -36
- package/mqttPacket/decoder.test.ts +33 -16
- package/mqttPacket/decoder.ts +173 -5
- package/mqttPacket/disconnect.test.ts +97 -18
- package/mqttPacket/disconnect.ts +82 -10
- package/mqttPacket/encoder.test.ts +32 -8
- package/mqttPacket/encoder.ts +236 -11
- package/mqttPacket/length.ts +3 -2
- package/mqttPacket/mod.ts +75 -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 +117 -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 +78 -26
- package/mqttPacket/subscribe.test.ts +132 -43
- package/mqttPacket/subscribe.ts +125 -22
- package/mqttPacket/types.ts +40 -0
- package/mqttPacket/unsuback.test.ts +80 -30
- package/mqttPacket/unsuback.ts +65 -10
- package/mqttPacket/unsubscribe.test.ts +59 -34
- package/mqttPacket/unsubscribe.ts +61 -14
- 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/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/mod.ts +0 -3
- 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,20 +1,25 @@
|
|
|
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";
|
|
@@ -24,6 +29,7 @@ import { ConnectionState } from "./ConnectionState.ts";
|
|
|
24
29
|
export class Context {
|
|
25
30
|
mqttConn?: MqttConn;
|
|
26
31
|
connectionState: TConnectionState;
|
|
32
|
+
protocolLevel: ProtocolLevel;
|
|
27
33
|
pingTimer?: Timer;
|
|
28
34
|
unresolvedConnect?: Deferred<TAuthenticationResult>;
|
|
29
35
|
unresolvedPublish: Map<PacketId, Deferred<void>>;
|
|
@@ -35,6 +41,7 @@ export class Context {
|
|
|
35
41
|
constructor(store: MemoryStore) {
|
|
36
42
|
this.store = store;
|
|
37
43
|
this.connectionState = ConnectionState.offline;
|
|
44
|
+
this.protocolLevel = MQTTLevel.unknown;
|
|
38
45
|
this.incoming = new AsyncQueue();
|
|
39
46
|
this.unresolvedPublish = new Map();
|
|
40
47
|
this.unresolvedSubscribe = new Map();
|
|
@@ -43,6 +50,10 @@ export class Context {
|
|
|
43
50
|
|
|
44
51
|
async connect(packet: ConnectPacket) {
|
|
45
52
|
this.connectionState = ConnectionState.connecting;
|
|
53
|
+
if (packet.protocolLevel === MQTTLevel.unknown) {
|
|
54
|
+
packet.protocolLevel = MQTTLevel.v4;
|
|
55
|
+
}
|
|
56
|
+
this.protocolLevel = packet.protocolLevel;
|
|
46
57
|
await this.mqttConn?.send(packet);
|
|
47
58
|
const keepAlive = packet.keepAlive || 0;
|
|
48
59
|
if (keepAlive > 0) {
|
|
@@ -60,8 +71,12 @@ export class Context {
|
|
|
60
71
|
}
|
|
61
72
|
if (this.mqttConn) {
|
|
62
73
|
this.connectionState = ConnectionState.disconnecting;
|
|
63
|
-
await this.mqttConn.send({
|
|
74
|
+
await this.mqttConn.send({
|
|
75
|
+
type: PacketType.disconnect,
|
|
76
|
+
protocolLevel: this.protocolLevel,
|
|
77
|
+
});
|
|
64
78
|
this.mqttConn.close();
|
|
79
|
+
this.protocolLevel = MQTTLevel.unknown;
|
|
65
80
|
}
|
|
66
81
|
}
|
|
67
82
|
|
|
@@ -73,6 +88,7 @@ export class Context {
|
|
|
73
88
|
) {
|
|
74
89
|
await this.mqttConn?.send(packet);
|
|
75
90
|
this.pingTimer?.reset();
|
|
91
|
+
await nextTick(); // Yield to allow other tasks to run
|
|
76
92
|
return;
|
|
77
93
|
}
|
|
78
94
|
logger.debug("not connected");
|
|
@@ -80,7 +96,10 @@ export class Context {
|
|
|
80
96
|
}
|
|
81
97
|
|
|
82
98
|
sendPing() {
|
|
83
|
-
this.send({
|
|
99
|
+
this.send({
|
|
100
|
+
type: PacketType.pingreq,
|
|
101
|
+
protocolLevel: this.protocolLevel,
|
|
102
|
+
});
|
|
84
103
|
}
|
|
85
104
|
|
|
86
105
|
async handleConnection(
|
|
@@ -91,16 +110,17 @@ export class Context {
|
|
|
91
110
|
if (this.mqttConn === undefined) {
|
|
92
111
|
return true;
|
|
93
112
|
}
|
|
94
|
-
|
|
95
|
-
await this.connect(connectPacket);
|
|
113
|
+
|
|
96
114
|
try {
|
|
115
|
+
logger.debug("Send connect packet", connectPacket);
|
|
116
|
+
await this.connect(connectPacket);
|
|
97
117
|
logger.debug("Accepting packets");
|
|
98
118
|
for await (const packet of this.mqttConn) {
|
|
99
119
|
handlePacket(this, packet);
|
|
100
120
|
}
|
|
101
121
|
logger.debug("No more packets");
|
|
102
122
|
} catch (err) {
|
|
103
|
-
logger.debug(err);
|
|
123
|
+
logger.debug(`error ${err}`);
|
|
104
124
|
if (this.mqttConn.isClosed) {
|
|
105
125
|
this.mqttConn.close();
|
|
106
126
|
}
|
|
@@ -121,11 +141,11 @@ export class Context {
|
|
|
121
141
|
this.incoming.push(packet);
|
|
122
142
|
}
|
|
123
143
|
|
|
124
|
-
publish(packet: PublishPacket): Promise<void> {
|
|
144
|
+
async publish(packet: PublishPacket): Promise<void> {
|
|
125
145
|
const qos = packet.qos || 0;
|
|
126
146
|
if (qos === 0) {
|
|
127
147
|
packet.id = 0;
|
|
128
|
-
this.send(packet);
|
|
148
|
+
await this.send(packet);
|
|
129
149
|
// return empty promise
|
|
130
150
|
return Promise.resolve();
|
|
131
151
|
}
|
|
@@ -133,25 +153,25 @@ export class Context {
|
|
|
133
153
|
this.store.pendingOutgoing.set(packet.id, packet);
|
|
134
154
|
const deferred = new Deferred<void>();
|
|
135
155
|
this.unresolvedPublish.set(packet.id, deferred);
|
|
136
|
-
this.send(packet);
|
|
156
|
+
await this.send(packet);
|
|
137
157
|
return deferred.promise;
|
|
138
158
|
}
|
|
139
159
|
|
|
140
|
-
subscribe(packet: SubscribePacket): Promise<ReturnCodes> {
|
|
160
|
+
async subscribe(packet: SubscribePacket): Promise<ReturnCodes> {
|
|
141
161
|
packet.id = this.store.nextId();
|
|
142
162
|
this.store.pendingOutgoing.set(packet.id, packet);
|
|
143
163
|
const deferred = new Deferred<ReturnCodes>();
|
|
144
164
|
this.unresolvedSubscribe.set(packet.id, deferred);
|
|
145
|
-
this.send(packet);
|
|
165
|
+
await this.send(packet);
|
|
146
166
|
return deferred.promise;
|
|
147
167
|
}
|
|
148
168
|
|
|
149
|
-
unsubscribe(packet: UnsubscribePacket): Promise<void> {
|
|
169
|
+
async unsubscribe(packet: UnsubscribePacket): Promise<void> {
|
|
150
170
|
packet.id = this.store.nextId();
|
|
151
171
|
this.store.pendingOutgoing.set(packet.id, packet);
|
|
152
172
|
const deferred = new Deferred<void>();
|
|
153
173
|
this.unresolvedUnSubscribe.set(packet.id, deferred);
|
|
154
|
-
this.send(packet);
|
|
174
|
+
await this.send(packet);
|
|
155
175
|
return deferred.promise;
|
|
156
176
|
}
|
|
157
177
|
|
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/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"}
|