@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.
Files changed (331) hide show
  1. package/README.md +37 -26
  2. package/bin/conformanceServer.ts +3 -2
  3. package/bin/demoServer.ts +3 -2
  4. package/bin/mqtt.ts +127 -118
  5. package/client/client.ts +61 -21
  6. package/client/context.ts +71 -30
  7. package/client/deps.ts +5 -0
  8. package/client/handlers/handleConnack.ts +17 -5
  9. package/client/handlers/handlePublish.ts +4 -1
  10. package/client/handlers/handlePubrec.ts +3 -1
  11. package/client/handlers/handlePubrel.ts +3 -1
  12. package/client/handlers/handleSuback.ts +3 -1
  13. package/client/mod.ts +8 -1
  14. package/client/store/memoryStore.ts +2 -1
  15. package/deno/tcpClient.ts +1 -1
  16. package/dev_utils/dummyConn.ts +17 -2
  17. package/dist/bin/conformanceServer.js +3 -2
  18. package/dist/bin/conformanceServer.js.map +1 -1
  19. package/dist/bin/demoServer.js +3 -2
  20. package/dist/bin/demoServer.js.map +1 -1
  21. package/dist/bin/mqtt.d.ts +29 -0
  22. package/dist/bin/mqtt.d.ts.map +1 -1
  23. package/dist/bin/mqtt.js +102 -97
  24. package/dist/bin/mqtt.js.map +1 -1
  25. package/dist/client/client.d.ts +16 -5
  26. package/dist/client/client.d.ts.map +1 -1
  27. package/dist/client/client.js +36 -15
  28. package/dist/client/client.js.map +1 -1
  29. package/dist/client/context.d.ts +8 -3
  30. package/dist/client/context.d.ts.map +1 -1
  31. package/dist/client/context.js +51 -21
  32. package/dist/client/context.js.map +1 -1
  33. package/dist/client/deps.d.ts +3 -2
  34. package/dist/client/deps.d.ts.map +1 -1
  35. package/dist/client/deps.js +2 -1
  36. package/dist/client/deps.js.map +1 -1
  37. package/dist/client/handlers/handleConnack.d.ts +1 -1
  38. package/dist/client/handlers/handleConnack.d.ts.map +1 -1
  39. package/dist/client/handlers/handleConnack.js +14 -5
  40. package/dist/client/handlers/handleConnack.js.map +1 -1
  41. package/dist/client/handlers/handlePublish.d.ts +1 -1
  42. package/dist/client/handlers/handlePublish.d.ts.map +1 -1
  43. package/dist/client/handlers/handlePublish.js +2 -0
  44. package/dist/client/handlers/handlePublish.js.map +1 -1
  45. package/dist/client/handlers/handlePubrec.d.ts +1 -1
  46. package/dist/client/handlers/handlePubrec.d.ts.map +1 -1
  47. package/dist/client/handlers/handlePubrec.js +1 -0
  48. package/dist/client/handlers/handlePubrec.js.map +1 -1
  49. package/dist/client/handlers/handlePubrel.d.ts +1 -1
  50. package/dist/client/handlers/handlePubrel.d.ts.map +1 -1
  51. package/dist/client/handlers/handlePubrel.js +1 -0
  52. package/dist/client/handlers/handlePubrel.js.map +1 -1
  53. package/dist/client/handlers/handleSuback.d.ts.map +1 -1
  54. package/dist/client/handlers/handleSuback.js +3 -1
  55. package/dist/client/handlers/handleSuback.js.map +1 -1
  56. package/dist/client/mod.d.ts +3 -1
  57. package/dist/client/mod.d.ts.map +1 -1
  58. package/dist/client/mod.js +2 -1
  59. package/dist/client/mod.js.map +1 -1
  60. package/dist/client/store/memoryStore.d.ts +1 -1
  61. package/dist/client/store/memoryStore.d.ts.map +1 -1
  62. package/dist/client/store/memoryStore.js.map +1 -1
  63. package/dist/mqttConn/mqttConn.d.ts +13 -8
  64. package/dist/mqttConn/mqttConn.d.ts.map +1 -1
  65. package/dist/mqttConn/mqttConn.js +27 -12
  66. package/dist/mqttConn/mqttConn.js.map +1 -1
  67. package/dist/mqttPacket/PacketType.d.ts +1 -0
  68. package/dist/mqttPacket/PacketType.d.ts.map +1 -1
  69. package/dist/mqttPacket/PacketType.js +1 -0
  70. package/dist/mqttPacket/PacketType.js.map +1 -1
  71. package/dist/mqttPacket/Properties.d.ts +157 -0
  72. package/dist/mqttPacket/Properties.d.ts.map +1 -0
  73. package/dist/mqttPacket/Properties.js +177 -0
  74. package/dist/mqttPacket/Properties.js.map +1 -0
  75. package/dist/mqttPacket/ReasonCode.d.ts +74 -0
  76. package/dist/mqttPacket/ReasonCode.d.ts.map +1 -0
  77. package/dist/mqttPacket/ReasonCode.js +230 -0
  78. package/dist/mqttPacket/ReasonCode.js.map +1 -0
  79. package/dist/mqttPacket/RetainHandling.d.ts +12 -0
  80. package/dist/mqttPacket/RetainHandling.d.ts.map +1 -0
  81. package/dist/mqttPacket/RetainHandling.js +12 -0
  82. package/dist/mqttPacket/RetainHandling.js.map +1 -0
  83. package/dist/mqttPacket/auth.d.ts +21 -0
  84. package/dist/mqttPacket/auth.d.ts.map +1 -0
  85. package/dist/mqttPacket/auth.js +34 -0
  86. package/dist/mqttPacket/auth.js.map +1 -0
  87. package/dist/mqttPacket/connack.d.ts +19 -11
  88. package/dist/mqttPacket/connack.d.ts.map +1 -1
  89. package/dist/mqttPacket/connack.js +43 -15
  90. package/dist/mqttPacket/connack.js.map +1 -1
  91. package/dist/mqttPacket/connect.d.ts +30 -11
  92. package/dist/mqttPacket/connect.d.ts.map +1 -1
  93. package/dist/mqttPacket/connect.js +106 -30
  94. package/dist/mqttPacket/connect.js.map +1 -1
  95. package/dist/mqttPacket/decoder.d.ts +42 -3
  96. package/dist/mqttPacket/decoder.d.ts.map +1 -1
  97. package/dist/mqttPacket/decoder.js +135 -4
  98. package/dist/mqttPacket/decoder.js.map +1 -1
  99. package/dist/mqttPacket/disconnect.d.ts +15 -9
  100. package/dist/mqttPacket/disconnect.d.ts.map +1 -1
  101. package/dist/mqttPacket/disconnect.js +45 -6
  102. package/dist/mqttPacket/disconnect.js.map +1 -1
  103. package/dist/mqttPacket/encoder.d.ts +57 -8
  104. package/dist/mqttPacket/encoder.d.ts.map +1 -1
  105. package/dist/mqttPacket/encoder.js +185 -13
  106. package/dist/mqttPacket/encoder.js.map +1 -1
  107. package/dist/mqttPacket/length.d.ts.map +1 -1
  108. package/dist/mqttPacket/length.js +3 -2
  109. package/dist/mqttPacket/length.js.map +1 -1
  110. package/dist/mqttPacket/mod.d.ts +57 -91
  111. package/dist/mqttPacket/mod.d.ts.map +1 -1
  112. package/dist/mqttPacket/mod.js +23 -29
  113. package/dist/mqttPacket/mod.js.map +1 -1
  114. package/dist/mqttPacket/pingreq.d.ts +4 -6
  115. package/dist/mqttPacket/pingreq.d.ts.map +1 -1
  116. package/dist/mqttPacket/pingreq.js +5 -4
  117. package/dist/mqttPacket/pingreq.js.map +1 -1
  118. package/dist/mqttPacket/pingres.d.ts +4 -6
  119. package/dist/mqttPacket/pingres.d.ts.map +1 -1
  120. package/dist/mqttPacket/pingres.js +7 -5
  121. package/dist/mqttPacket/pingres.js.map +1 -1
  122. package/dist/mqttPacket/protocolLevels.d.ts +12 -0
  123. package/dist/mqttPacket/protocolLevels.d.ts.map +1 -0
  124. package/dist/mqttPacket/protocolLevels.js +11 -0
  125. package/dist/mqttPacket/protocolLevels.js.map +1 -0
  126. package/dist/mqttPacket/pubblishAcks.d.ts +42 -0
  127. package/dist/mqttPacket/pubblishAcks.d.ts.map +1 -0
  128. package/dist/mqttPacket/pubblishAcks.js +56 -0
  129. package/dist/mqttPacket/pubblishAcks.js.map +1 -0
  130. package/dist/mqttPacket/publish.d.ts +19 -8
  131. package/dist/mqttPacket/publish.d.ts.map +1 -1
  132. package/dist/mqttPacket/publish.js +26 -7
  133. package/dist/mqttPacket/publish.js.map +1 -1
  134. package/dist/mqttPacket/suback.d.ts +18 -11
  135. package/dist/mqttPacket/suback.d.ts.map +1 -1
  136. package/dist/mqttPacket/suback.js +41 -20
  137. package/dist/mqttPacket/suback.js.map +1 -1
  138. package/dist/mqttPacket/subscribe.d.ts +27 -12
  139. package/dist/mqttPacket/subscribe.d.ts.map +1 -1
  140. package/dist/mqttPacket/subscribe.js +71 -15
  141. package/dist/mqttPacket/subscribe.js.map +1 -1
  142. package/dist/mqttPacket/types.d.ts +36 -0
  143. package/dist/mqttPacket/types.d.ts.map +1 -1
  144. package/dist/mqttPacket/unsuback.d.ts +17 -10
  145. package/dist/mqttPacket/unsuback.d.ts.map +1 -1
  146. package/dist/mqttPacket/unsuback.js +29 -6
  147. package/dist/mqttPacket/unsuback.js.map +1 -1
  148. package/dist/mqttPacket/unsubscribe.d.ts +17 -10
  149. package/dist/mqttPacket/unsubscribe.d.ts.map +1 -1
  150. package/dist/mqttPacket/unsubscribe.js +24 -8
  151. package/dist/mqttPacket/unsubscribe.js.map +1 -1
  152. package/dist/mqttPacket/validators.d.ts +15 -0
  153. package/dist/mqttPacket/validators.d.ts.map +1 -1
  154. package/dist/mqttPacket/validators.js +15 -0
  155. package/dist/mqttPacket/validators.js.map +1 -1
  156. package/dist/node/tcpClient.js +1 -1
  157. package/dist/node/tcpClient.js.map +1 -1
  158. package/dist/node/wrapNodeSocket.d.ts.map +1 -1
  159. package/dist/node/wrapNodeSocket.js.map +1 -1
  160. package/dist/persistence/deps.d.ts +1 -1
  161. package/dist/persistence/deps.d.ts.map +1 -1
  162. package/dist/persistence/deps.js +1 -1
  163. package/dist/persistence/deps.js.map +1 -1
  164. package/dist/persistence/memory/memoryPersistence.js +1 -1
  165. package/dist/persistence/memory/memoryPersistence.js.map +1 -1
  166. package/dist/server/context.d.ts +3 -1
  167. package/dist/server/context.d.ts.map +1 -1
  168. package/dist/server/context.js +8 -2
  169. package/dist/server/context.js.map +1 -1
  170. package/dist/server/deps.d.ts +2 -2
  171. package/dist/server/deps.d.ts.map +1 -1
  172. package/dist/server/deps.js +1 -1
  173. package/dist/server/deps.js.map +1 -1
  174. package/dist/server/handlers/handleConnect.d.ts +1 -1
  175. package/dist/server/handlers/handleConnect.d.ts.map +1 -1
  176. package/dist/server/handlers/handleConnect.js +9 -1
  177. package/dist/server/handlers/handleConnect.js.map +1 -1
  178. package/dist/server/handlers/handlePacket.d.ts +1 -1
  179. package/dist/server/handlers/handlePacket.d.ts.map +1 -1
  180. package/dist/server/handlers/handlePacket.js +1 -1
  181. package/dist/server/handlers/handlePacket.js.map +1 -1
  182. package/dist/server/handlers/handlePingreq.d.ts.map +1 -1
  183. package/dist/server/handlers/handlePingreq.js +1 -0
  184. package/dist/server/handlers/handlePingreq.js.map +1 -1
  185. package/dist/server/handlers/handlePublish.d.ts +2 -2
  186. package/dist/server/handlers/handlePublish.d.ts.map +1 -1
  187. package/dist/server/handlers/handlePublish.js +2 -0
  188. package/dist/server/handlers/handlePublish.js.map +1 -1
  189. package/dist/server/handlers/handlePubrec.d.ts +1 -1
  190. package/dist/server/handlers/handlePubrec.d.ts.map +1 -1
  191. package/dist/server/handlers/handlePubrec.js +1 -0
  192. package/dist/server/handlers/handlePubrec.js.map +1 -1
  193. package/dist/server/handlers/handlePubrel.d.ts +1 -1
  194. package/dist/server/handlers/handlePubrel.d.ts.map +1 -1
  195. package/dist/server/handlers/handlePubrel.js +1 -0
  196. package/dist/server/handlers/handlePubrel.js.map +1 -1
  197. package/dist/server/handlers/handleSubscribe.d.ts +1 -1
  198. package/dist/server/handlers/handleSubscribe.d.ts.map +1 -1
  199. package/dist/server/handlers/handleSubscribe.js +2 -1
  200. package/dist/server/handlers/handleSubscribe.js.map +1 -1
  201. package/dist/server/handlers/handleUnsubscribe.d.ts +1 -1
  202. package/dist/server/handlers/handleUnsubscribe.d.ts.map +1 -1
  203. package/dist/server/handlers/handleUnsubscribe.js +1 -0
  204. package/dist/server/handlers/handleUnsubscribe.js.map +1 -1
  205. package/dist/server/server.d.ts +2 -2
  206. package/dist/server/server.d.ts.map +1 -1
  207. package/dist/server/server.js +5 -3
  208. package/dist/server/server.js.map +1 -1
  209. package/dist/socket/socket.d.ts.map +1 -1
  210. package/dist/socket/socket.js +6 -1
  211. package/dist/socket/socket.js.map +1 -1
  212. package/dist/utils/assert.d.ts +0 -3
  213. package/dist/utils/assert.d.ts.map +1 -1
  214. package/dist/utils/assert.js +0 -7
  215. package/dist/utils/assert.js.map +1 -1
  216. package/dist/utils/asyncQueue.d.ts +1 -3
  217. package/dist/utils/asyncQueue.d.ts.map +1 -1
  218. package/dist/utils/asyncQueue.js +16 -21
  219. package/dist/utils/asyncQueue.js.map +1 -1
  220. package/dist/utils/logger.d.ts +5 -15
  221. package/dist/utils/logger.d.ts.map +1 -1
  222. package/dist/utils/logger.js +7 -8
  223. package/dist/utils/logger.js.map +1 -1
  224. package/dist/utils/mod.d.ts +0 -3
  225. package/dist/utils/mod.d.ts.map +1 -1
  226. package/dist/utils/mod.js +0 -2
  227. package/dist/utils/mod.js.map +1 -1
  228. package/dist/utils/utils.d.ts +2 -0
  229. package/dist/utils/utils.d.ts.map +1 -0
  230. package/dist/utils/utils.js +6 -0
  231. package/dist/utils/utils.js.map +1 -0
  232. package/mqttConn/mqttConn.test.ts +27 -12
  233. package/mqttConn/mqttConn.ts +45 -14
  234. package/mqttPacket/PacketType.ts +1 -0
  235. package/mqttPacket/Properties.ts +276 -0
  236. package/mqttPacket/ReasonCode.test.ts +22 -0
  237. package/mqttPacket/ReasonCode.ts +256 -0
  238. package/mqttPacket/RetainHandling.ts +11 -0
  239. package/mqttPacket/auth.test.ts +112 -0
  240. package/mqttPacket/auth.ts +71 -0
  241. package/mqttPacket/connack.test.ts +84 -64
  242. package/mqttPacket/connack.ts +88 -24
  243. package/mqttPacket/connect.test.ts +497 -18
  244. package/mqttPacket/connect.ts +170 -39
  245. package/mqttPacket/decoder.test.ts +33 -16
  246. package/mqttPacket/decoder.ts +173 -5
  247. package/mqttPacket/disconnect.test.ts +97 -18
  248. package/mqttPacket/disconnect.ts +84 -12
  249. package/mqttPacket/encoder.test.ts +32 -8
  250. package/mqttPacket/encoder.ts +236 -11
  251. package/mqttPacket/length.ts +3 -2
  252. package/mqttPacket/mod.ts +76 -39
  253. package/mqttPacket/pingreq.test.ts +52 -4
  254. package/mqttPacket/pingreq.ts +20 -7
  255. package/mqttPacket/pingres.test.ts +52 -4
  256. package/mqttPacket/pingres.ts +22 -8
  257. package/mqttPacket/properties.test.ts +193 -0
  258. package/mqttPacket/protocolLevels.ts +13 -0
  259. package/mqttPacket/pubblishAcks.ts +123 -0
  260. package/mqttPacket/publish.test.ts +212 -133
  261. package/mqttPacket/publish.ts +69 -14
  262. package/mqttPacket/publishAcks.test.ts +128 -0
  263. package/mqttPacket/suback.test.ts +71 -27
  264. package/mqttPacket/suback.ts +82 -30
  265. package/mqttPacket/subscribe.test.ts +132 -43
  266. package/mqttPacket/subscribe.ts +128 -25
  267. package/mqttPacket/types.ts +43 -0
  268. package/mqttPacket/unsuback.test.ts +80 -30
  269. package/mqttPacket/unsuback.ts +68 -13
  270. package/mqttPacket/unsubscribe.test.ts +59 -34
  271. package/mqttPacket/unsubscribe.ts +64 -17
  272. package/mqttPacket/validators.ts +15 -0
  273. package/node/tcpClient.ts +1 -1
  274. package/node/wrapNodeSocket.ts +2 -1
  275. package/package.json +2 -2
  276. package/persistence/deps.ts +1 -1
  277. package/persistence/memory/memoryPersistence.test.ts +5 -1
  278. package/persistence/memory/memoryPersistence.ts +1 -1
  279. package/server/context.ts +23 -10
  280. package/server/deps.ts +2 -0
  281. package/server/handlers/handleConnect.ts +12 -9
  282. package/server/handlers/handlePacket.ts +10 -11
  283. package/server/handlers/handlePingreq.ts +1 -0
  284. package/server/handlers/handlePublish.ts +6 -2
  285. package/server/handlers/handlePubrec.ts +3 -1
  286. package/server/handlers/handlePubrel.ts +3 -1
  287. package/server/handlers/handleSubscribe.ts +3 -6
  288. package/server/handlers/handleUnsubscribe.ts +3 -1
  289. package/server/server.ts +8 -12
  290. package/server/test/handleConnect.test.ts +2 -1
  291. package/server/test/test-handlers.ts +2 -1
  292. package/socket/socket.ts +5 -1
  293. package/utils/assert.ts +0 -18
  294. package/utils/asyncQueue.ts +17 -21
  295. package/utils/logger.ts +12 -11
  296. package/utils/mod.ts +0 -3
  297. package/utils/utils.ts +6 -0
  298. package/dist/mqttPacket/puback.d.ts +0 -16
  299. package/dist/mqttPacket/puback.d.ts.map +0 -1
  300. package/dist/mqttPacket/puback.js +0 -21
  301. package/dist/mqttPacket/puback.js.map +0 -1
  302. package/dist/mqttPacket/pubcomp.d.ts +0 -17
  303. package/dist/mqttPacket/pubcomp.d.ts.map +0 -1
  304. package/dist/mqttPacket/pubcomp.js +0 -21
  305. package/dist/mqttPacket/pubcomp.js.map +0 -1
  306. package/dist/mqttPacket/pubrec.d.ts +0 -17
  307. package/dist/mqttPacket/pubrec.d.ts.map +0 -1
  308. package/dist/mqttPacket/pubrec.js +0 -21
  309. package/dist/mqttPacket/pubrec.js.map +0 -1
  310. package/dist/mqttPacket/pubrel.d.ts +0 -17
  311. package/dist/mqttPacket/pubrel.d.ts.map +0 -1
  312. package/dist/mqttPacket/pubrel.js +0 -21
  313. package/dist/mqttPacket/pubrel.js.map +0 -1
  314. package/dist/utils/args.d.ts +0 -28
  315. package/dist/utils/args.d.ts.map +0 -1
  316. package/dist/utils/args.js +0 -76
  317. package/dist/utils/args.js.map +0 -1
  318. package/dist/utils/platform.d.ts +0 -5
  319. package/dist/utils/platform.d.ts.map +0 -1
  320. package/dist/utils/platform.js +0 -8
  321. package/dist/utils/platform.js.map +0 -1
  322. package/mqttPacket/puback.test.ts +0 -55
  323. package/mqttPacket/puback.ts +0 -34
  324. package/mqttPacket/pubcomp.test.ts +0 -55
  325. package/mqttPacket/pubcomp.ts +0 -35
  326. package/mqttPacket/pubrec.test.ts +0 -55
  327. package/mqttPacket/pubrec.ts +0 -35
  328. package/mqttPacket/pubrel.test.ts +0 -55
  329. package/mqttPacket/pubrel.ts +0 -35
  330. package/utils/args.ts +0 -103
  331. package/utils/platform.ts +0 -8
@@ -1,20 +1,31 @@
1
- import type { Topic, TopicFilter } from "./types.ts";
1
+ import type { Topic, TopicFilter, TPacketType, TReasonCode, UTF8StringPair } from "./types.ts";
2
+ import type { PropsByPacketSetType, TPropertySetType } from "./Properties.ts";
2
3
  /**
3
4
  * Custom error class for encoding operations
4
5
  */
5
6
  export declare class EncoderError extends Error {
6
7
  constructor(message: string);
7
8
  }
8
- /**
9
- * Encoder class for MQTT packet encoding
10
- */
11
9
  export declare class Encoder {
12
- /** Internal buffer to store encoded bytes */
13
- private buffer;
10
+ /** Internal bufferlist to store items */
11
+ private buffers;
12
+ /** Number of bytes in the buffer */
13
+ private numBytes;
14
+ /** Packet type */
15
+ private packetType;
16
+ /** marker to rewind to */
17
+ private marker;
14
18
  /**
15
19
  * Creates a new Encoder instance
16
20
  */
17
- constructor();
21
+ constructor(packetType: TPacketType);
22
+ encodedSize(): number;
23
+ setMarker(): void;
24
+ rewindToMarker(): void;
25
+ /**
26
+ * @param value
27
+ */
28
+ addArray(value: number[] | Uint8Array): this;
18
29
  /**
19
30
  * Adds a single byte to the buffer
20
31
  * @param value - Byte value to add (0-255)
@@ -27,6 +38,18 @@ export declare class Encoder {
27
38
  * @returns The encoder instance for chaining
28
39
  */
29
40
  setInt16(value: number): this;
41
+ /**
42
+ * adds a 4 byte integer from the buffer (for v5)
43
+ * @param value - 32-bit integer to encode and add
44
+ * @returns The encoder instance for chaining
45
+ */
46
+ setInt32(value: number): this;
47
+ /**
48
+ * adds a variable byte integer to the buffer (for v5)
49
+ * @param value - integer to encode and add
50
+ * @returns The encoder instance for chaining
51
+ */
52
+ setVariableByteInteger(value: number): this;
30
53
  /**
31
54
  * Adds a byte array to the buffer with length prefix
32
55
  * @param value - Byte array to add
@@ -40,6 +63,12 @@ export declare class Encoder {
40
63
  * @returns The encoder instance for chaining
41
64
  */
42
65
  setUtf8String(value: string): this;
66
+ /**
67
+ * Adds a UTF-8 string pair from the buffer (for v5)
68
+ * @param stringPair - UTF8StringPair
69
+ * @returns The encoder instance for chaining
70
+ */
71
+ setUtf8StringPair([name, value]: UTF8StringPair): this;
43
72
  /**
44
73
  * Adds an MQTT topic string to the buffer
45
74
  * @param value - Topic string to add
@@ -60,10 +89,30 @@ export declare class Encoder {
60
89
  * @returns The encoder instance for chaining
61
90
  */
62
91
  setRemainder(value: Uint8Array | number[]): this;
92
+ /**
93
+ * add lenght and buffers from this
94
+ * @param encoder - the encoder to add it to
95
+ */
96
+ addToEncoder(encoder: Encoder): void;
97
+ /**
98
+ * Encode a single property
99
+ * @param id - the id of the property
100
+ * @param value the value of the property
101
+ * @returns
102
+ */
103
+ private setProperty;
104
+ /**
105
+ * Encode a set of properties respecting potential size limits
106
+ * @param props - the properties to encode
107
+ * @param propertySetType - the type of packet to encode for
108
+ * @param maximumPacketSize - the maximum packet size to be consumed by properties
109
+ */
110
+ setProperties<T extends TPropertySetType>(props: PropsByPacketSetType[T], propertySetType: TPropertySetType, maximumPacketSize: number): void;
111
+ setReasonCode(reasonCode: TReasonCode): this;
63
112
  /**
64
113
  * Returns the final encoded buffer
65
114
  * @returns Array containing all encoded bytes
66
115
  */
67
- done(): number[];
116
+ done(flags: number): Uint8Array;
68
117
  }
69
118
  //# sourceMappingURL=encoder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../mqttPacket/encoder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGrD;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,OAAO;IAClB,6CAA6C;IAC7C,OAAO,CAAC,MAAM,CAAW;IAEzB;;OAEG;;IAKH;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK5B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM7B;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IASrC;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKlC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAU5B;;;;;OAKG;IACH,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAUxC;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,EAAE,GAAG,IAAI;IAKhD;;;OAGG;IACH,IAAI,IAAI,MAAM,EAAE;CAGjB"}
1
+ {"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../mqttPacket/encoder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAEV,oBAAoB,EAEpB,gBAAgB,EAGjB,MAAM,iBAAiB,CAAC;AAezB;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B;AAMD,qBAAa,OAAO;IAClB,yCAAyC;IACzC,OAAO,CAAC,OAAO,CAAa;IAE5B,oCAAoC;IACpC,OAAO,CAAC,QAAQ,CAAS;IAEzB,kBAAkB;IAClB,OAAO,CAAC,UAAU,CAAc;IAEhC,0BAA0B;IAC1B,OAAO,CAAC,MAAM,CAAS;IAEvB;;OAEG;gBACS,UAAU,EAAE,WAAW;IAOnC,WAAW;IAIX,SAAS;IAIT,cAAc;IAMd;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,GAAG,IAAI;IAM5C;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM5B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM7B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM7B;;;;OAIG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK3C;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IASrC;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKlC;;;;OAIG;IACH,iBAAiB,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI;IAMtD;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAU5B;;;;;OAKG;IACH,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAUxC;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,EAAE,GAAG,IAAI;IAKhD;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO;IAO7B;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAwDnB;;;;;OAKG;IACH,aAAa,CAAC,CAAC,SAAS,gBAAgB,EACtC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAC9B,eAAe,EAAE,gBAAgB,EACjC,iBAAiB,EAAE,MAAM;IA0B3B,aAAa,CAAC,UAAU,EAAE,WAAW;IAUrC;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;CAehC"}
@@ -1,5 +1,8 @@
1
- const utf8Encoder = new TextEncoder();
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 buffer to store encoded bytes */
17
- buffer;
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.buffer = [];
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.buffer.push(value);
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.buffer.push(...value);
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.buffer.push(...value);
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
- return this.buffer;
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":"AAAA,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEnE;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,OAAO;IAClB,6CAA6C;IACrC,MAAM,CAAW;IAEzB;;OAEG;IACH;QACE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,KAAa;QACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,KAAiB;QAC5B,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;YAC1B,MAAM,IAAI,YAAY,CAAC,gCAAgC,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,KAAa;QACzB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,KAAY;QACnB,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,YAAY,CACpB,8EAA8E,CAC/E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,KAAkB;QAC/B,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,YAAY,CACpB,uFAAuF,CACxF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,KAA4B;QACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
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,CAU5C;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"}
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 lenBuf = buf.subarray(start);
33
- for (const byte of lenBuf) {
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,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,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"}
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"}
@@ -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 { type PublishPacket } from "./publish.ts";
15
- import { type PubackPacket } from "./puback.ts";
16
- import { type PubrecPacket } from "./pubrec.ts";
17
- import { type PubrelPacket } from "./pubrel.ts";
18
- import { type PubcompPacket } from "./pubcomp.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";
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,80 @@ 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
- flags: number;
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
- flags: number;
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
- flags: number;
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: PubackPacket): {
57
- flags: number;
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: PubrecPacket): {
63
- flags: number;
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: PubrelPacket): {
69
- flags: number;
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: PubcompPacket): {
75
- flags: number;
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
- flags: number;
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
- flags: number;
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
- flags: number;
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
- flags: number;
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
- flags: number;
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(_packet: PingresPacket): {
111
- flags: number;
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
- flags: number;
118
- bytes: number[];
119
- };
120
- decode(buffer: Uint8Array, _flags: number): DisconnectPacket;
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 {Error} If packet decoding fails
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
106
+ *
142
107
  * @param {Uint8Array} buffer - The binary buffer containing the complete MQTT packet
108
+ * @param {CodecOpts} codecOpts - the options for the decoder
143
109
  * @returns {AnyPacket} The decoded MQTT packet object
144
110
  * @throws {DecoderError} If packet decoding fails due to invalid format or insufficient data
145
111
  */
146
- export declare function decode(buffer: Uint8Array): AnyPacket;
112
+ export declare function decode(buffer: Uint8Array, codecOpts: CodecOpts): AnyPacket;
147
113
  export { getLengthDecoder } from "../mqttPacket/length.ts";
148
114
  export type { LengthDecoderResult } from "../mqttPacket/length.ts";
149
115
  //# sourceMappingURL=mod.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../mqttPacket/mod.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../mqttPacket/mod.ts"],"names":[],"mappings":"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"}