@seriousme/opifex 1.9.3 → 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 -22
- 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 -32
- 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
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import { propertyByNumber, PropertyByPropertySetType, propertyKind, propertyToId, propertyToKind, } from "./Properties.js";
|
|
2
|
+
import { encodeLength } from "./length.js";
|
|
2
3
|
import { invalidTopic, invalidTopicFilter } from "./validators.js";
|
|
4
|
+
import { isValidReasonCode } from "./ReasonCode.js";
|
|
5
|
+
const utf8Encoder = new TextEncoder();
|
|
3
6
|
/**
|
|
4
7
|
* Custom error class for encoding operations
|
|
5
8
|
*/
|
|
@@ -9,17 +12,43 @@ export class EncoderError extends Error {
|
|
|
9
12
|
this.name = "EncoderError";
|
|
10
13
|
}
|
|
11
14
|
}
|
|
12
|
-
/**
|
|
13
|
-
* Encoder class for MQTT packet encoding
|
|
14
|
-
*/
|
|
15
15
|
export class Encoder {
|
|
16
|
-
/** Internal
|
|
17
|
-
|
|
16
|
+
/** Internal bufferlist to store items */
|
|
17
|
+
buffers;
|
|
18
|
+
/** Number of bytes in the buffer */
|
|
19
|
+
numBytes;
|
|
20
|
+
/** Packet type */
|
|
21
|
+
packetType;
|
|
22
|
+
/** marker to rewind to */
|
|
23
|
+
marker;
|
|
18
24
|
/**
|
|
19
25
|
* Creates a new Encoder instance
|
|
20
26
|
*/
|
|
21
|
-
constructor() {
|
|
22
|
-
this.
|
|
27
|
+
constructor(packetType) {
|
|
28
|
+
this.buffers = [];
|
|
29
|
+
this.numBytes = 0;
|
|
30
|
+
this.packetType = packetType;
|
|
31
|
+
this.marker = 0;
|
|
32
|
+
}
|
|
33
|
+
encodedSize() {
|
|
34
|
+
return this.numBytes;
|
|
35
|
+
}
|
|
36
|
+
setMarker() {
|
|
37
|
+
this.marker = this.buffers.length;
|
|
38
|
+
}
|
|
39
|
+
rewindToMarker() {
|
|
40
|
+
while (this.buffers.length > this.marker) {
|
|
41
|
+
const buf = this.buffers.pop();
|
|
42
|
+
this.numBytes -= buf?.length || 0;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* @param value
|
|
47
|
+
*/
|
|
48
|
+
addArray(value) {
|
|
49
|
+
this.buffers.push(value);
|
|
50
|
+
this.numBytes += value.length;
|
|
51
|
+
return this;
|
|
23
52
|
}
|
|
24
53
|
/**
|
|
25
54
|
* Adds a single byte to the buffer
|
|
@@ -27,7 +56,8 @@ export class Encoder {
|
|
|
27
56
|
* @returns The encoder instance for chaining
|
|
28
57
|
*/
|
|
29
58
|
setByte(value) {
|
|
30
|
-
this.
|
|
59
|
+
this.buffers.push([value]);
|
|
60
|
+
this.numBytes++;
|
|
31
61
|
return this;
|
|
32
62
|
}
|
|
33
63
|
/**
|
|
@@ -40,6 +70,25 @@ export class Encoder {
|
|
|
40
70
|
this.setByte(value & 0xff);
|
|
41
71
|
return this;
|
|
42
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* adds a 4 byte integer from the buffer (for v5)
|
|
75
|
+
* @param value - 32-bit integer to encode and add
|
|
76
|
+
* @returns The encoder instance for chaining
|
|
77
|
+
*/
|
|
78
|
+
setInt32(value) {
|
|
79
|
+
this.setInt16(value >> 16);
|
|
80
|
+
this.setInt16(value & 0xffff);
|
|
81
|
+
return this;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* adds a variable byte integer to the buffer (for v5)
|
|
85
|
+
* @param value - integer to encode and add
|
|
86
|
+
* @returns The encoder instance for chaining
|
|
87
|
+
*/
|
|
88
|
+
setVariableByteInteger(value) {
|
|
89
|
+
this.addArray(encodeLength(value));
|
|
90
|
+
return this;
|
|
91
|
+
}
|
|
43
92
|
/**
|
|
44
93
|
* Adds a byte array to the buffer with length prefix
|
|
45
94
|
* @param value - Byte array to add
|
|
@@ -51,7 +100,7 @@ export class Encoder {
|
|
|
51
100
|
throw new EncoderError("More than 0xffff bytes of data");
|
|
52
101
|
}
|
|
53
102
|
this.setInt16(value.length);
|
|
54
|
-
this.
|
|
103
|
+
this.addArray(value);
|
|
55
104
|
return this;
|
|
56
105
|
}
|
|
57
106
|
/**
|
|
@@ -63,6 +112,16 @@ export class Encoder {
|
|
|
63
112
|
this.setByteArray(utf8Encoder.encode(value));
|
|
64
113
|
return this;
|
|
65
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Adds a UTF-8 string pair from the buffer (for v5)
|
|
117
|
+
* @param stringPair - UTF8StringPair
|
|
118
|
+
* @returns The encoder instance for chaining
|
|
119
|
+
*/
|
|
120
|
+
setUtf8StringPair([name, value]) {
|
|
121
|
+
this.setUtf8String(name);
|
|
122
|
+
this.setUtf8String(value);
|
|
123
|
+
return this;
|
|
124
|
+
}
|
|
66
125
|
/**
|
|
67
126
|
* Adds an MQTT topic string to the buffer
|
|
68
127
|
* @param value - Topic string to add
|
|
@@ -95,15 +154,128 @@ export class Encoder {
|
|
|
95
154
|
* @returns The encoder instance for chaining
|
|
96
155
|
*/
|
|
97
156
|
setRemainder(value) {
|
|
98
|
-
this.
|
|
157
|
+
this.addArray(value);
|
|
158
|
+
return this;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* add lenght and buffers from this
|
|
162
|
+
* @param encoder - the encoder to add it to
|
|
163
|
+
*/
|
|
164
|
+
addToEncoder(encoder) {
|
|
165
|
+
encoder.setVariableByteInteger(this.numBytes);
|
|
166
|
+
for (const buffer of this.buffers) {
|
|
167
|
+
encoder.addArray(buffer);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Encode a single property
|
|
172
|
+
* @param id - the id of the property
|
|
173
|
+
* @param value the value of the property
|
|
174
|
+
* @returns
|
|
175
|
+
*/
|
|
176
|
+
setProperty(id, value) {
|
|
177
|
+
const kind = propertyToKind[id];
|
|
178
|
+
if (kind === propertyKind.utf8StringPairs) {
|
|
179
|
+
if (!Array.isArray(value)) {
|
|
180
|
+
throw new EncoderError("userProperty must be an array");
|
|
181
|
+
}
|
|
182
|
+
for (const item of value) {
|
|
183
|
+
if (!Array.isArray(item)) {
|
|
184
|
+
throw new EncoderError("userProperty item must be an array");
|
|
185
|
+
}
|
|
186
|
+
this.setVariableByteInteger(id);
|
|
187
|
+
this.setUtf8StringPair(item);
|
|
188
|
+
}
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
if (kind === propertyKind.varIntArray) {
|
|
192
|
+
if (!Array.isArray(value)) {
|
|
193
|
+
throw new EncoderError("Subscription Identifiers must be an array");
|
|
194
|
+
}
|
|
195
|
+
for (const item of value) {
|
|
196
|
+
this.setVariableByteInteger(propertyToId["subscriptionIdentifier"]);
|
|
197
|
+
this.setVariableByteInteger(item);
|
|
198
|
+
}
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
this.setVariableByteInteger(id);
|
|
202
|
+
switch (kind) {
|
|
203
|
+
case propertyKind.boolean:
|
|
204
|
+
this.setByte(!!value === true ? 1 : 0);
|
|
205
|
+
break;
|
|
206
|
+
case propertyKind.byte:
|
|
207
|
+
this.setByte(value);
|
|
208
|
+
break;
|
|
209
|
+
case propertyKind.int16:
|
|
210
|
+
this.setInt16(value);
|
|
211
|
+
break;
|
|
212
|
+
case propertyKind.int32:
|
|
213
|
+
this.setInt32(value);
|
|
214
|
+
break;
|
|
215
|
+
case propertyKind.varInt:
|
|
216
|
+
this.setVariableByteInteger(value);
|
|
217
|
+
break;
|
|
218
|
+
case propertyKind.byteArray:
|
|
219
|
+
this.setByteArray(value);
|
|
220
|
+
break;
|
|
221
|
+
case propertyKind.utf8string:
|
|
222
|
+
this.setUtf8String(value);
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Encode a set of properties respecting potential size limits
|
|
228
|
+
* @param props - the properties to encode
|
|
229
|
+
* @param propertySetType - the type of packet to encode for
|
|
230
|
+
* @param maximumPacketSize - the maximum packet size to be consumed by properties
|
|
231
|
+
*/
|
|
232
|
+
setProperties(props, propertySetType, maximumPacketSize) {
|
|
233
|
+
const propsEncoder = new Encoder(0);
|
|
234
|
+
const allowedProps = PropertyByPropertySetType[propertySetType];
|
|
235
|
+
const maxSize = maximumPacketSize - 1; // propertyLength takes at least a byte
|
|
236
|
+
for (const id of allowedProps) {
|
|
237
|
+
const label = propertyByNumber[id];
|
|
238
|
+
const value = props[label];
|
|
239
|
+
if (value !== undefined && value !== null) {
|
|
240
|
+
if (id === propertyToId.reasonString || id === propertyToId.userProperty) {
|
|
241
|
+
propsEncoder.setMarker();
|
|
242
|
+
propsEncoder.setProperty(id, value);
|
|
243
|
+
if (propsEncoder.encodedSize() > maxSize) {
|
|
244
|
+
propsEncoder.rewindToMarker();
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
propsEncoder.setProperty(id, value);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
propsEncoder.addToEncoder(this);
|
|
253
|
+
}
|
|
254
|
+
setReasonCode(reasonCode) {
|
|
255
|
+
if (!isValidReasonCode(this.packetType, reasonCode)) {
|
|
256
|
+
throw new EncoderError(`Reason code ${reasonCode} not allowed for packet type ${this.packetType}`);
|
|
257
|
+
}
|
|
258
|
+
this.setByte(reasonCode);
|
|
99
259
|
return this;
|
|
100
260
|
}
|
|
101
261
|
/**
|
|
102
262
|
* Returns the final encoded buffer
|
|
103
263
|
* @returns Array containing all encoded bytes
|
|
104
264
|
*/
|
|
105
|
-
done() {
|
|
106
|
-
|
|
265
|
+
done(flags) {
|
|
266
|
+
const packetType = this.packetType;
|
|
267
|
+
const encodedLength = encodeLength(this.numBytes);
|
|
268
|
+
const totalLength = 1 + encodedLength.length + this.numBytes;
|
|
269
|
+
const result = new Uint8Array(totalLength);
|
|
270
|
+
let pos = 0;
|
|
271
|
+
result.set([packetType << 4 | flags], pos++);
|
|
272
|
+
result.set(encodedLength, pos);
|
|
273
|
+
pos += encodedLength.length;
|
|
274
|
+
for (const buffer of this.buffers) {
|
|
275
|
+
result.set(buffer, pos);
|
|
276
|
+
pos += buffer.length;
|
|
277
|
+
}
|
|
278
|
+
return result;
|
|
107
279
|
}
|
|
108
280
|
}
|
|
109
281
|
//# sourceMappingURL=encoder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../mqttPacket/encoder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../mqttPacket/encoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"length.d.ts","sourceRoot":"","sources":["../../mqttPacket/length.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAehD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,MAAM,GACZ;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"length.d.ts","sourceRoot":"","sources":["../../mqttPacket/length.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAehD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,MAAM,GACZ;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAW5C;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,CAClC,WAAW,EAAE,MAAM,KAChB,mBAAmB,CAgBvB"}
|
|
@@ -29,8 +29,9 @@ export function encodeLength(n) {
|
|
|
29
29
|
*/
|
|
30
30
|
export function decodeLength(buf, start) {
|
|
31
31
|
const decode = getLengthDecoder();
|
|
32
|
-
const
|
|
33
|
-
for (
|
|
32
|
+
const size = buf.length;
|
|
33
|
+
for (let i = start; i < size; i++) {
|
|
34
|
+
const byte = buf[i];
|
|
34
35
|
const { done, length, numLengthBytes } = decode(byte);
|
|
35
36
|
if (done) {
|
|
36
37
|
return { length, numLengthBytes };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"length.js","sourceRoot":"","sources":["../../mqttPacket/length.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,GAAG,CAAC;QACF,IAAI,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC;QAC3B,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC;QACnC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3B,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;IAChB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAe,EACf,KAAa;IAEb,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,
|
|
1
|
+
{"version":3,"file":"length.js","sourceRoot":"","sources":["../../mqttPacket/length.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,GAAG,CAAC;QACF,IAAI,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC;QAC3B,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC;QACnC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3B,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;IAChB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAe,EACf,KAAa;IAEb,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IACD,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAC;AACxC,CAAC;AAWD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAG9B,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,OAAO,SAAS,aAAa,CAAC,WAAmB;QAC/C,MAAM,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC;QAC5C,UAAU,IAAI,IAAI,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QAChD,CAAC;QACD,IAAI,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IACjD,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/mqttPacket/mod.d.ts
CHANGED
|
@@ -4,30 +4,31 @@
|
|
|
4
4
|
* used in both server and client implementations. It handles all MQTT packet types and their
|
|
5
5
|
* transformations between binary and object representations.
|
|
6
6
|
*/
|
|
7
|
-
import type { ClientId, Dup, PacketId, Payload, QoS, ReturnCodes, TAuthenticationResult, Topic, TopicFilter, TPacketType } from "./types.ts";
|
|
7
|
+
import type { ClientId, CodecOpts, Dup, PacketId, Payload, ProtocolLevel, QoS, ReturnCodes, TAuthenticationResult, Topic, TopicFilter, TPacketType, TReasonCode, TRetainHandling, UTF8StringPair } from "./types.ts";
|
|
8
|
+
export { MQTTLevel } from "./protocolLevels.ts";
|
|
9
|
+
export { RetainHandling } from "./RetainHandling.ts";
|
|
10
|
+
export { ReasonCode, ReasonCodeByNumber } from "./ReasonCode.ts";
|
|
8
11
|
import { PacketNameByType, PacketType } from "./PacketType.ts";
|
|
9
12
|
import { invalidTopic, invalidTopicFilter, invalidUTF8 } from "./validators.ts";
|
|
10
13
|
import { decodeLength, encodeLength } from "./length.ts";
|
|
11
|
-
import { type ConnectPacket } from "./connect.ts";
|
|
12
|
-
import { type ConnackPacket } from "./connack.ts";
|
|
13
14
|
import { AuthenticationResult, AuthenticationResultByNumber } from "./AuthenticationResult.ts";
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
15
|
+
import type { ConnectPacket } from "./connect.ts";
|
|
16
|
+
import type { ConnackPacket } from "./connack.ts";
|
|
17
|
+
import type { PublishPacket } from "./publish.ts";
|
|
18
|
+
import type { PubackPacket, PubcompPacket, PubrecPacket, PubrelPacket } from "./pubblishAcks.ts";
|
|
19
|
+
import type { SubscribePacket } from "./subscribe.ts";
|
|
20
|
+
import type { SubackPacket } from "./suback.ts";
|
|
21
|
+
import type { UnsubscribePacket } from "./unsubscribe.ts";
|
|
22
|
+
import type { UnsubackPacket } from "./unsuback.ts";
|
|
23
|
+
import type { PingreqPacket } from "./pingreq.ts";
|
|
24
|
+
import type { PingresPacket } from "./pingres.ts";
|
|
25
|
+
import type { DisconnectPacket } from "./disconnect.ts";
|
|
26
|
+
import type { AuthPacket } from "./auth.ts";
|
|
26
27
|
/**
|
|
27
28
|
* this can be any possible MQTT packet
|
|
28
29
|
*/
|
|
29
|
-
export type AnyPacket = ConnectPacket | ConnackPacket | PublishPacket | PubackPacket | PubrecPacket | PubrelPacket | PubcompPacket | SubscribePacket | SubackPacket | UnsubscribePacket | UnsubackPacket | PingreqPacket | PingresPacket | DisconnectPacket;
|
|
30
|
-
export type { ClientId, ConnackPacket, ConnectPacket, DisconnectPacket, Dup, PacketId, Payload, PingreqPacket, PingresPacket, PubackPacket, PubcompPacket, PublishPacket, PubrecPacket, PubrelPacket, QoS, ReturnCodes, SubackPacket, SubscribePacket, TAuthenticationResult, Topic, TopicFilter, TPacketType, UnsubackPacket, UnsubscribePacket, };
|
|
30
|
+
export type AnyPacket = ConnectPacket | ConnackPacket | PublishPacket | PubackPacket | PubrecPacket | PubrelPacket | PubcompPacket | SubscribePacket | SubackPacket | UnsubscribePacket | UnsubackPacket | PingreqPacket | PingresPacket | DisconnectPacket | AuthPacket;
|
|
31
|
+
export type { AuthPacket, ClientId, CodecOpts, ConnackPacket, ConnectPacket, DisconnectPacket, Dup, PacketId, Payload, PingreqPacket, PingresPacket, ProtocolLevel, PubackPacket, PubcompPacket, PublishPacket, PubrecPacket, PubrelPacket, QoS, ReturnCodes, SubackPacket, SubscribePacket, TAuthenticationResult, Topic, TopicFilter, TPacketType, TReasonCode, TRetainHandling, UnsubackPacket, UnsubscribePacket, UTF8StringPair, };
|
|
31
32
|
export type { Subscription } from "./subscribe.ts";
|
|
32
33
|
export { AuthenticationResult, AuthenticationResultByNumber, decodeLength, encodeLength, invalidTopic, invalidTopicFilter, invalidUTF8, PacketNameByType, PacketType, };
|
|
33
34
|
/**
|
|
@@ -35,115 +36,79 @@ export { AuthenticationResult, AuthenticationResultByNumber, decodeLength, encod
|
|
|
35
36
|
* Index corresponds to packet type number.
|
|
36
37
|
*/
|
|
37
38
|
export declare const packetsByType: readonly [null, {
|
|
38
|
-
encode(packet: ConnectPacket):
|
|
39
|
-
|
|
40
|
-
bytes: number[];
|
|
41
|
-
};
|
|
42
|
-
decode(buffer: Uint8Array, flags: number): ConnectPacket;
|
|
39
|
+
encode(packet: ConnectPacket, _codecOpts: CodecOpts): Uint8Array;
|
|
40
|
+
decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, packetType: TPacketType): ConnectPacket;
|
|
43
41
|
}, {
|
|
44
|
-
encode(packet: ConnackPacket):
|
|
45
|
-
|
|
46
|
-
bytes: number[];
|
|
47
|
-
};
|
|
48
|
-
decode(buffer: Uint8Array, _flags: number): ConnackPacket | undefined;
|
|
42
|
+
encode(packet: ConnackPacket, codecOpts: CodecOpts): Uint8Array;
|
|
43
|
+
decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, packetType: TPacketType): ConnackPacket;
|
|
49
44
|
}, {
|
|
50
|
-
encode(packet: PublishPacket):
|
|
51
|
-
|
|
52
|
-
bytes: number[];
|
|
53
|
-
};
|
|
54
|
-
decode(buffer: Uint8Array, flags: number): PublishPacket;
|
|
45
|
+
encode(packet: PublishPacket, _codecOpts: CodecOpts): Uint8Array;
|
|
46
|
+
decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, packetType: TPacketType): PublishPacket;
|
|
55
47
|
}, {
|
|
56
|
-
encode(packet:
|
|
57
|
-
|
|
58
|
-
bytes: number[];
|
|
59
|
-
};
|
|
60
|
-
decode(buffer: Uint8Array): PubackPacket;
|
|
48
|
+
encode(packet: import("./pubblishAcks.ts").AnyAckPacket, codecOpts: CodecOpts): Uint8Array;
|
|
49
|
+
decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, packetType: TPacketType): import("./pubblishAcks.ts").AnyAckPacket;
|
|
61
50
|
}, {
|
|
62
|
-
encode(packet:
|
|
63
|
-
|
|
64
|
-
bytes: number[];
|
|
65
|
-
};
|
|
66
|
-
decode(buffer: Uint8Array): PubrecPacket;
|
|
51
|
+
encode(packet: import("./pubblishAcks.ts").AnyAckPacket, codecOpts: CodecOpts): Uint8Array;
|
|
52
|
+
decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, packetType: TPacketType): import("./pubblishAcks.ts").AnyAckPacket;
|
|
67
53
|
}, {
|
|
68
|
-
encode(packet:
|
|
69
|
-
|
|
70
|
-
bytes: number[];
|
|
71
|
-
};
|
|
72
|
-
decode(buffer: Uint8Array): PubrelPacket;
|
|
54
|
+
encode(packet: import("./pubblishAcks.ts").AnyAckPacket, codecOpts: CodecOpts): Uint8Array;
|
|
55
|
+
decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, packetType: TPacketType): import("./pubblishAcks.ts").AnyAckPacket;
|
|
73
56
|
}, {
|
|
74
|
-
encode(packet:
|
|
75
|
-
|
|
76
|
-
bytes: number[];
|
|
77
|
-
};
|
|
78
|
-
decode(buffer: Uint8Array): PubcompPacket;
|
|
57
|
+
encode(packet: import("./pubblishAcks.ts").AnyAckPacket, codecOpts: CodecOpts): Uint8Array;
|
|
58
|
+
decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, packetType: TPacketType): import("./pubblishAcks.ts").AnyAckPacket;
|
|
79
59
|
}, {
|
|
80
|
-
encode(packet: SubscribePacket):
|
|
81
|
-
|
|
82
|
-
bytes: number[];
|
|
83
|
-
};
|
|
84
|
-
decode(buffer: Uint8Array, flags: number): SubscribePacket;
|
|
60
|
+
encode(packet: SubscribePacket, codecOpts: CodecOpts): Uint8Array;
|
|
61
|
+
decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, packetType: TPacketType): SubscribePacket;
|
|
85
62
|
}, {
|
|
86
|
-
encode(packet: SubackPacket):
|
|
87
|
-
|
|
88
|
-
bytes: number[];
|
|
89
|
-
};
|
|
90
|
-
decode(buffer: Uint8Array): SubackPacket;
|
|
63
|
+
encode(packet: SubackPacket, _codecOpts: CodecOpts): Uint8Array;
|
|
64
|
+
decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, packetType: TPacketType): SubackPacket;
|
|
91
65
|
}, {
|
|
92
|
-
encode(packet: UnsubscribePacket):
|
|
93
|
-
|
|
94
|
-
bytes: number[];
|
|
95
|
-
};
|
|
96
|
-
decode(buffer: Uint8Array, flags: number): UnsubscribePacket;
|
|
66
|
+
encode(packet: UnsubscribePacket, codecOpts: CodecOpts): Uint8Array;
|
|
67
|
+
decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, packetType: TPacketType): UnsubscribePacket;
|
|
97
68
|
}, {
|
|
98
|
-
encode(packet: UnsubackPacket):
|
|
99
|
-
|
|
100
|
-
bytes: number[];
|
|
101
|
-
};
|
|
102
|
-
decode(buffer: Uint8Array): UnsubackPacket;
|
|
69
|
+
encode(packet: UnsubackPacket, codecOpts: CodecOpts): Uint8Array;
|
|
70
|
+
decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, packetType: TPacketType): UnsubackPacket;
|
|
103
71
|
}, {
|
|
104
|
-
encode(_packet: PingreqPacket):
|
|
105
|
-
|
|
106
|
-
bytes: number[];
|
|
107
|
-
};
|
|
108
|
-
decode(buffer: Uint8Array, flags: number): PingreqPacket;
|
|
72
|
+
encode(_packet: PingreqPacket, _codecOpts: CodecOpts): Uint8Array;
|
|
73
|
+
decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, _packetType: TPacketType): PingreqPacket;
|
|
109
74
|
}, {
|
|
110
|
-
encode(
|
|
111
|
-
|
|
112
|
-
bytes: number[];
|
|
113
|
-
};
|
|
114
|
-
decode(buffer: Uint8Array): PingresPacket;
|
|
75
|
+
encode(packet: PingresPacket, _codecOpts: CodecOpts): Uint8Array;
|
|
76
|
+
decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, _packetType: TPacketType): PingresPacket;
|
|
115
77
|
}, {
|
|
116
|
-
encode(_packet: DisconnectPacket):
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
decode(buffer: Uint8Array,
|
|
78
|
+
encode(_packet: DisconnectPacket, _codecOpts: CodecOpts): Uint8Array;
|
|
79
|
+
decode(buffer: Uint8Array, _flags: number, codecOpts: CodecOpts, packetType: TPacketType): DisconnectPacket;
|
|
80
|
+
}, {
|
|
81
|
+
encode(packet: AuthPacket, codecOpts: CodecOpts): Uint8Array;
|
|
82
|
+
decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, packetType: TPacketType): AuthPacket;
|
|
121
83
|
}];
|
|
122
84
|
/**
|
|
123
85
|
* @function encode
|
|
124
86
|
* @description Encodes an MQTT packet object into a binary Uint8Array format
|
|
125
87
|
* @param {AnyPacket} packet - The MQTT packet object to encode
|
|
88
|
+
* @param {CodecOpts} codecOpts - options to use during encoding
|
|
126
89
|
* @returns {Uint8Array} The encoded packet as a binary buffer
|
|
127
90
|
* @throws {Error} If packet encoding fails
|
|
128
91
|
*/
|
|
129
|
-
export declare function encode(packet: AnyPacket): Uint8Array;
|
|
92
|
+
export declare function encode(packet: AnyPacket, codecOpts: CodecOpts): Uint8Array;
|
|
130
93
|
/**
|
|
131
94
|
* @function decodePayload
|
|
132
95
|
* @description Decodes a packet payload from binary format into an MQTT packet object
|
|
133
96
|
* @param {number} firstByte - The first byte of the MQTT packet containing type and flags
|
|
134
97
|
* @param {Uint8Array} buffer - The binary buffer containing the packet payload
|
|
98
|
+
* @param {CodecOpts} codecOpts - options to use during encoding
|
|
135
99
|
* @returns {AnyPacket} The decoded MQTT packet object
|
|
136
|
-
* @throws {
|
|
100
|
+
* @throws {DecoderError} If packet decoding fails
|
|
137
101
|
*/
|
|
138
|
-
export declare function decodePayload(firstByte: number, buffer: Uint8Array): AnyPacket;
|
|
102
|
+
export declare function decodePayload(firstByte: number, buffer: Uint8Array, codecOpts: CodecOpts): AnyPacket;
|
|
139
103
|
/**
|
|
140
104
|
* @function decode
|
|
141
105
|
* @description Decodes a complete MQTT packet from binary format into a packet object
|
|
142
106
|
* @param {Uint8Array} buffer - The binary buffer containing the complete MQTT packet
|
|
107
|
+
* @param {CodecOpts} codecOpts - the options for the decoder
|
|
143
108
|
* @returns {AnyPacket} The decoded MQTT packet object
|
|
144
109
|
* @throws {DecoderError} If packet decoding fails due to invalid format or insufficient data
|
|
145
110
|
*/
|
|
146
|
-
export declare function decode(buffer: Uint8Array): AnyPacket;
|
|
111
|
+
export declare function decode(buffer: Uint8Array, codecOpts: CodecOpts): AnyPacket;
|
|
147
112
|
export { getLengthDecoder } from "../mqttPacket/length.ts";
|
|
148
113
|
export type { LengthDecoderResult } from "../mqttPacket/length.ts";
|
|
149
114
|
//# sourceMappingURL=mod.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../mqttPacket/mod.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,GAAG,EACH,QAAQ,EACR,OAAO,EACP,GAAG,EACH,WAAW,EACX,qBAAqB,EACrB,KAAK,EACL,WAAW,EACX,WAAW,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../mqttPacket/mod.ts"],"names":[],"mappings":"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"}
|
package/dist/mqttPacket/mod.js
CHANGED
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
* used in both server and client implementations. It handles all MQTT packet types and their
|
|
5
5
|
* transformations between binary and object representations.
|
|
6
6
|
*/
|
|
7
|
+
export { MQTTLevel } from "./protocolLevels.js";
|
|
8
|
+
export { RetainHandling } from "./RetainHandling.js";
|
|
9
|
+
export { ReasonCode, ReasonCodeByNumber } from "./ReasonCode.js";
|
|
7
10
|
import { PacketNameByType, PacketType } from "./PacketType.js";
|
|
8
11
|
import { invalidTopic, invalidTopicFilter, invalidUTF8 } from "./validators.js";
|
|
9
12
|
import { decodeLength, encodeLength } from "./length.js";
|
|
@@ -11,10 +14,7 @@ import { connect } from "./connect.js";
|
|
|
11
14
|
import { connack } from "./connack.js";
|
|
12
15
|
import { AuthenticationResult, AuthenticationResultByNumber, } from "./AuthenticationResult.js";
|
|
13
16
|
import { publish } from "./publish.js";
|
|
14
|
-
import {
|
|
15
|
-
import { pubrec } from "./pubrec.js";
|
|
16
|
-
import { pubrel } from "./pubrel.js";
|
|
17
|
-
import { pubcomp } from "./pubcomp.js";
|
|
17
|
+
import { anyAck } from "./pubblishAcks.js";
|
|
18
18
|
import { subscribe } from "./subscribe.js";
|
|
19
19
|
import { suback } from "./suback.js";
|
|
20
20
|
import { unsubscribe } from "./unsubscribe.js";
|
|
@@ -22,6 +22,7 @@ import { unsuback } from "./unsuback.js";
|
|
|
22
22
|
import { pingreq } from "./pingreq.js";
|
|
23
23
|
import { pingres } from "./pingres.js";
|
|
24
24
|
import { disconnect } from "./disconnect.js";
|
|
25
|
+
import { auth } from "./auth.js";
|
|
25
26
|
import { DecoderError } from "./decoder.js";
|
|
26
27
|
export { AuthenticationResult, AuthenticationResultByNumber, decodeLength, encodeLength, invalidTopic, invalidTopicFilter, invalidUTF8, PacketNameByType, PacketType, };
|
|
27
28
|
/**
|
|
@@ -33,10 +34,10 @@ export const packetsByType = [
|
|
|
33
34
|
connect, // 1
|
|
34
35
|
connack, // 2
|
|
35
36
|
publish, // 3
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
anyAck, // 4 puback
|
|
38
|
+
anyAck, // 5 pubrec
|
|
39
|
+
anyAck, // 6 pubrel
|
|
40
|
+
anyAck, // 7 pubcomp
|
|
40
41
|
subscribe, // 8
|
|
41
42
|
suback, // 9
|
|
42
43
|
unsubscribe, // 10
|
|
@@ -44,61 +45,60 @@ export const packetsByType = [
|
|
|
44
45
|
pingreq, // 12
|
|
45
46
|
pingres, // 13
|
|
46
47
|
disconnect, // 14
|
|
48
|
+
auth, // 15
|
|
47
49
|
];
|
|
48
50
|
/**
|
|
49
51
|
* @function encode
|
|
50
52
|
* @description Encodes an MQTT packet object into a binary Uint8Array format
|
|
51
53
|
* @param {AnyPacket} packet - The MQTT packet object to encode
|
|
54
|
+
* @param {CodecOpts} codecOpts - options to use during encoding
|
|
52
55
|
* @returns {Uint8Array} The encoded packet as a binary buffer
|
|
53
56
|
* @throws {Error} If packet encoding fails
|
|
54
57
|
*/
|
|
55
|
-
export function encode(packet) {
|
|
58
|
+
export function encode(packet, codecOpts) {
|
|
56
59
|
const packetType = packet.type;
|
|
57
60
|
// deno-lint-ignore no-explicit-any
|
|
58
61
|
const pkt = packet;
|
|
59
|
-
const encoded = packetsByType[packetType]?.encode(pkt);
|
|
62
|
+
const encoded = packetsByType[packetType]?.encode(pkt, codecOpts);
|
|
60
63
|
if (!encoded) {
|
|
61
64
|
throw Error("Packet encoding failed");
|
|
62
65
|
}
|
|
63
|
-
|
|
64
|
-
return Uint8Array.from([
|
|
65
|
-
(packetType << 4) | flags,
|
|
66
|
-
...encodeLength(bytes.length),
|
|
67
|
-
...bytes,
|
|
68
|
-
]);
|
|
66
|
+
return encoded;
|
|
69
67
|
}
|
|
70
68
|
/**
|
|
71
69
|
* @function decodePayload
|
|
72
70
|
* @description Decodes a packet payload from binary format into an MQTT packet object
|
|
73
71
|
* @param {number} firstByte - The first byte of the MQTT packet containing type and flags
|
|
74
72
|
* @param {Uint8Array} buffer - The binary buffer containing the packet payload
|
|
73
|
+
* @param {CodecOpts} codecOpts - options to use during encoding
|
|
75
74
|
* @returns {AnyPacket} The decoded MQTT packet object
|
|
76
|
-
* @throws {
|
|
75
|
+
* @throws {DecoderError} If packet decoding fails
|
|
77
76
|
*/
|
|
78
|
-
export function decodePayload(firstByte, buffer) {
|
|
77
|
+
export function decodePayload(firstByte, buffer, codecOpts) {
|
|
79
78
|
const packetType = firstByte >> 4;
|
|
80
79
|
const flags = firstByte & 0x0f;
|
|
81
|
-
const packet = packetsByType[packetType]?.decode(buffer, flags);
|
|
80
|
+
const packet = packetsByType[packetType]?.decode(buffer, flags, codecOpts, packetType);
|
|
82
81
|
if (packet !== undefined) {
|
|
83
82
|
return packet;
|
|
84
83
|
}
|
|
85
|
-
throw new
|
|
84
|
+
throw new DecoderError("packet decoding failed");
|
|
86
85
|
}
|
|
87
86
|
/**
|
|
88
87
|
* @function decode
|
|
89
88
|
* @description Decodes a complete MQTT packet from binary format into a packet object
|
|
90
89
|
* @param {Uint8Array} buffer - The binary buffer containing the complete MQTT packet
|
|
90
|
+
* @param {CodecOpts} codecOpts - the options for the decoder
|
|
91
91
|
* @returns {AnyPacket} The decoded MQTT packet object
|
|
92
92
|
* @throws {DecoderError} If packet decoding fails due to invalid format or insufficient data
|
|
93
93
|
*/
|
|
94
|
-
export function decode(buffer) {
|
|
94
|
+
export function decode(buffer, codecOpts) {
|
|
95
95
|
if (buffer.length < 2) {
|
|
96
96
|
throw new DecoderError("Packet decoding failed");
|
|
97
97
|
}
|
|
98
98
|
const { length, numLengthBytes } = decodeLength(buffer, 1);
|
|
99
99
|
const start = numLengthBytes + 1;
|
|
100
100
|
const end = start + length;
|
|
101
|
-
return decodePayload(buffer[0], buffer.subarray(start, end));
|
|
101
|
+
return decodePayload(buffer[0], buffer.subarray(start, end), codecOpts);
|
|
102
102
|
}
|
|
103
103
|
export { getLengthDecoder } from "../mqttPacket/length.js";
|
|
104
104
|
//# sourceMappingURL=mod.js.map
|