@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.
Files changed (304) 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 +126 -117
  5. package/client/client.ts +35 -15
  6. package/client/context.ts +42 -22
  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/dev_utils/dummyConn.ts +17 -2
  16. package/dist/bin/conformanceServer.js +3 -2
  17. package/dist/bin/conformanceServer.js.map +1 -1
  18. package/dist/bin/demoServer.js +3 -2
  19. package/dist/bin/demoServer.js.map +1 -1
  20. package/dist/bin/mqtt.d.ts +29 -0
  21. package/dist/bin/mqtt.d.ts.map +1 -1
  22. package/dist/bin/mqtt.js +101 -96
  23. package/dist/bin/mqtt.js.map +1 -1
  24. package/dist/client/client.d.ts +7 -4
  25. package/dist/client/client.d.ts.map +1 -1
  26. package/dist/client/client.js +17 -9
  27. package/dist/client/client.js.map +1 -1
  28. package/dist/client/context.d.ts +3 -1
  29. package/dist/client/context.d.ts.map +1 -1
  30. package/dist/client/context.js +27 -13
  31. package/dist/client/context.js.map +1 -1
  32. package/dist/client/deps.d.ts +3 -2
  33. package/dist/client/deps.d.ts.map +1 -1
  34. package/dist/client/deps.js +2 -1
  35. package/dist/client/deps.js.map +1 -1
  36. package/dist/client/handlers/handleConnack.d.ts +1 -1
  37. package/dist/client/handlers/handleConnack.d.ts.map +1 -1
  38. package/dist/client/handlers/handleConnack.js +14 -5
  39. package/dist/client/handlers/handleConnack.js.map +1 -1
  40. package/dist/client/handlers/handlePublish.d.ts +1 -1
  41. package/dist/client/handlers/handlePublish.d.ts.map +1 -1
  42. package/dist/client/handlers/handlePublish.js +2 -0
  43. package/dist/client/handlers/handlePublish.js.map +1 -1
  44. package/dist/client/handlers/handlePubrec.d.ts +1 -1
  45. package/dist/client/handlers/handlePubrec.d.ts.map +1 -1
  46. package/dist/client/handlers/handlePubrec.js +1 -0
  47. package/dist/client/handlers/handlePubrec.js.map +1 -1
  48. package/dist/client/handlers/handlePubrel.d.ts +1 -1
  49. package/dist/client/handlers/handlePubrel.d.ts.map +1 -1
  50. package/dist/client/handlers/handlePubrel.js +1 -0
  51. package/dist/client/handlers/handlePubrel.js.map +1 -1
  52. package/dist/client/handlers/handleSuback.d.ts.map +1 -1
  53. package/dist/client/handlers/handleSuback.js +3 -1
  54. package/dist/client/handlers/handleSuback.js.map +1 -1
  55. package/dist/client/mod.d.ts +3 -1
  56. package/dist/client/mod.d.ts.map +1 -1
  57. package/dist/client/mod.js +2 -1
  58. package/dist/client/mod.js.map +1 -1
  59. package/dist/client/store/memoryStore.d.ts +1 -1
  60. package/dist/client/store/memoryStore.d.ts.map +1 -1
  61. package/dist/client/store/memoryStore.js.map +1 -1
  62. package/dist/mqttConn/mqttConn.d.ts +13 -8
  63. package/dist/mqttConn/mqttConn.d.ts.map +1 -1
  64. package/dist/mqttConn/mqttConn.js +27 -12
  65. package/dist/mqttConn/mqttConn.js.map +1 -1
  66. package/dist/mqttPacket/PacketType.d.ts +1 -0
  67. package/dist/mqttPacket/PacketType.d.ts.map +1 -1
  68. package/dist/mqttPacket/PacketType.js +1 -0
  69. package/dist/mqttPacket/PacketType.js.map +1 -1
  70. package/dist/mqttPacket/Properties.d.ts +157 -0
  71. package/dist/mqttPacket/Properties.d.ts.map +1 -0
  72. package/dist/mqttPacket/Properties.js +177 -0
  73. package/dist/mqttPacket/Properties.js.map +1 -0
  74. package/dist/mqttPacket/ReasonCode.d.ts +74 -0
  75. package/dist/mqttPacket/ReasonCode.d.ts.map +1 -0
  76. package/dist/mqttPacket/ReasonCode.js +230 -0
  77. package/dist/mqttPacket/ReasonCode.js.map +1 -0
  78. package/dist/mqttPacket/RetainHandling.d.ts +12 -0
  79. package/dist/mqttPacket/RetainHandling.d.ts.map +1 -0
  80. package/dist/mqttPacket/RetainHandling.js +12 -0
  81. package/dist/mqttPacket/RetainHandling.js.map +1 -0
  82. package/dist/mqttPacket/auth.d.ts +21 -0
  83. package/dist/mqttPacket/auth.d.ts.map +1 -0
  84. package/dist/mqttPacket/auth.js +34 -0
  85. package/dist/mqttPacket/auth.js.map +1 -0
  86. package/dist/mqttPacket/connack.d.ts +15 -7
  87. package/dist/mqttPacket/connack.d.ts.map +1 -1
  88. package/dist/mqttPacket/connack.js +43 -15
  89. package/dist/mqttPacket/connack.js.map +1 -1
  90. package/dist/mqttPacket/connect.d.ts +27 -8
  91. package/dist/mqttPacket/connect.d.ts.map +1 -1
  92. package/dist/mqttPacket/connect.js +106 -30
  93. package/dist/mqttPacket/connect.js.map +1 -1
  94. package/dist/mqttPacket/decoder.d.ts +42 -3
  95. package/dist/mqttPacket/decoder.d.ts.map +1 -1
  96. package/dist/mqttPacket/decoder.js +135 -4
  97. package/dist/mqttPacket/decoder.js.map +1 -1
  98. package/dist/mqttPacket/disconnect.d.ts +13 -7
  99. package/dist/mqttPacket/disconnect.d.ts.map +1 -1
  100. package/dist/mqttPacket/disconnect.js +45 -6
  101. package/dist/mqttPacket/disconnect.js.map +1 -1
  102. package/dist/mqttPacket/encoder.d.ts +57 -8
  103. package/dist/mqttPacket/encoder.d.ts.map +1 -1
  104. package/dist/mqttPacket/encoder.js +185 -13
  105. package/dist/mqttPacket/encoder.js.map +1 -1
  106. package/dist/mqttPacket/length.d.ts.map +1 -1
  107. package/dist/mqttPacket/length.js +3 -2
  108. package/dist/mqttPacket/length.js.map +1 -1
  109. package/dist/mqttPacket/mod.d.ts +56 -91
  110. package/dist/mqttPacket/mod.d.ts.map +1 -1
  111. package/dist/mqttPacket/mod.js +22 -22
  112. package/dist/mqttPacket/mod.js.map +1 -1
  113. package/dist/mqttPacket/pingreq.d.ts +4 -6
  114. package/dist/mqttPacket/pingreq.d.ts.map +1 -1
  115. package/dist/mqttPacket/pingreq.js +5 -4
  116. package/dist/mqttPacket/pingreq.js.map +1 -1
  117. package/dist/mqttPacket/pingres.d.ts +4 -6
  118. package/dist/mqttPacket/pingres.d.ts.map +1 -1
  119. package/dist/mqttPacket/pingres.js +7 -5
  120. package/dist/mqttPacket/pingres.js.map +1 -1
  121. package/dist/mqttPacket/protocolLevels.d.ts +11 -0
  122. package/dist/mqttPacket/protocolLevels.d.ts.map +1 -0
  123. package/dist/mqttPacket/protocolLevels.js +11 -0
  124. package/dist/mqttPacket/protocolLevels.js.map +1 -0
  125. package/dist/mqttPacket/pubblishAcks.d.ts +35 -0
  126. package/dist/mqttPacket/pubblishAcks.d.ts.map +1 -0
  127. package/dist/mqttPacket/pubblishAcks.js +56 -0
  128. package/dist/mqttPacket/pubblishAcks.js.map +1 -0
  129. package/dist/mqttPacket/publish.d.ts +19 -8
  130. package/dist/mqttPacket/publish.d.ts.map +1 -1
  131. package/dist/mqttPacket/publish.js +26 -7
  132. package/dist/mqttPacket/publish.js.map +1 -1
  133. package/dist/mqttPacket/suback.d.ts +14 -7
  134. package/dist/mqttPacket/suback.d.ts.map +1 -1
  135. package/dist/mqttPacket/suback.js +41 -20
  136. package/dist/mqttPacket/suback.js.map +1 -1
  137. package/dist/mqttPacket/subscribe.d.ts +24 -9
  138. package/dist/mqttPacket/subscribe.d.ts.map +1 -1
  139. package/dist/mqttPacket/subscribe.js +71 -15
  140. package/dist/mqttPacket/subscribe.js.map +1 -1
  141. package/dist/mqttPacket/types.d.ts +33 -0
  142. package/dist/mqttPacket/types.d.ts.map +1 -1
  143. package/dist/mqttPacket/unsuback.d.ts +14 -7
  144. package/dist/mqttPacket/unsuback.d.ts.map +1 -1
  145. package/dist/mqttPacket/unsuback.js +29 -6
  146. package/dist/mqttPacket/unsuback.js.map +1 -1
  147. package/dist/mqttPacket/unsubscribe.d.ts +14 -7
  148. package/dist/mqttPacket/unsubscribe.d.ts.map +1 -1
  149. package/dist/mqttPacket/unsubscribe.js +24 -8
  150. package/dist/mqttPacket/unsubscribe.js.map +1 -1
  151. package/dist/node/wrapNodeSocket.d.ts.map +1 -1
  152. package/dist/node/wrapNodeSocket.js.map +1 -1
  153. package/dist/persistence/deps.d.ts +1 -1
  154. package/dist/persistence/deps.d.ts.map +1 -1
  155. package/dist/persistence/deps.js +1 -1
  156. package/dist/persistence/deps.js.map +1 -1
  157. package/dist/server/context.d.ts +3 -1
  158. package/dist/server/context.d.ts.map +1 -1
  159. package/dist/server/context.js +8 -2
  160. package/dist/server/context.js.map +1 -1
  161. package/dist/server/deps.d.ts +2 -2
  162. package/dist/server/deps.d.ts.map +1 -1
  163. package/dist/server/deps.js +1 -1
  164. package/dist/server/deps.js.map +1 -1
  165. package/dist/server/handlers/handleConnect.d.ts +1 -1
  166. package/dist/server/handlers/handleConnect.d.ts.map +1 -1
  167. package/dist/server/handlers/handleConnect.js +9 -1
  168. package/dist/server/handlers/handleConnect.js.map +1 -1
  169. package/dist/server/handlers/handlePacket.d.ts +1 -1
  170. package/dist/server/handlers/handlePacket.d.ts.map +1 -1
  171. package/dist/server/handlers/handlePacket.js +1 -1
  172. package/dist/server/handlers/handlePacket.js.map +1 -1
  173. package/dist/server/handlers/handlePingreq.d.ts.map +1 -1
  174. package/dist/server/handlers/handlePingreq.js +1 -0
  175. package/dist/server/handlers/handlePingreq.js.map +1 -1
  176. package/dist/server/handlers/handlePublish.d.ts +2 -2
  177. package/dist/server/handlers/handlePublish.d.ts.map +1 -1
  178. package/dist/server/handlers/handlePublish.js +2 -0
  179. package/dist/server/handlers/handlePublish.js.map +1 -1
  180. package/dist/server/handlers/handlePubrec.d.ts +1 -1
  181. package/dist/server/handlers/handlePubrec.d.ts.map +1 -1
  182. package/dist/server/handlers/handlePubrec.js +1 -0
  183. package/dist/server/handlers/handlePubrec.js.map +1 -1
  184. package/dist/server/handlers/handlePubrel.d.ts +1 -1
  185. package/dist/server/handlers/handlePubrel.d.ts.map +1 -1
  186. package/dist/server/handlers/handlePubrel.js +1 -0
  187. package/dist/server/handlers/handlePubrel.js.map +1 -1
  188. package/dist/server/handlers/handleSubscribe.d.ts +1 -1
  189. package/dist/server/handlers/handleSubscribe.d.ts.map +1 -1
  190. package/dist/server/handlers/handleSubscribe.js +2 -1
  191. package/dist/server/handlers/handleSubscribe.js.map +1 -1
  192. package/dist/server/handlers/handleUnsubscribe.d.ts +1 -1
  193. package/dist/server/handlers/handleUnsubscribe.d.ts.map +1 -1
  194. package/dist/server/handlers/handleUnsubscribe.js +1 -0
  195. package/dist/server/handlers/handleUnsubscribe.js.map +1 -1
  196. package/dist/server/server.d.ts +2 -2
  197. package/dist/server/server.d.ts.map +1 -1
  198. package/dist/server/server.js +5 -3
  199. package/dist/server/server.js.map +1 -1
  200. package/dist/socket/socket.d.ts.map +1 -1
  201. package/dist/socket/socket.js +6 -1
  202. package/dist/socket/socket.js.map +1 -1
  203. package/dist/utils/assert.d.ts +0 -3
  204. package/dist/utils/assert.d.ts.map +1 -1
  205. package/dist/utils/assert.js +0 -7
  206. package/dist/utils/assert.js.map +1 -1
  207. package/dist/utils/mod.d.ts +0 -3
  208. package/dist/utils/mod.d.ts.map +1 -1
  209. package/dist/utils/mod.js +0 -2
  210. package/dist/utils/mod.js.map +1 -1
  211. package/mqttConn/mqttConn.test.ts +27 -12
  212. package/mqttConn/mqttConn.ts +45 -14
  213. package/mqttPacket/PacketType.ts +1 -0
  214. package/mqttPacket/Properties.ts +276 -0
  215. package/mqttPacket/ReasonCode.test.ts +22 -0
  216. package/mqttPacket/ReasonCode.ts +256 -0
  217. package/mqttPacket/RetainHandling.ts +11 -0
  218. package/mqttPacket/auth.test.ts +112 -0
  219. package/mqttPacket/auth.ts +72 -0
  220. package/mqttPacket/connack.test.ts +84 -64
  221. package/mqttPacket/connack.ts +84 -20
  222. package/mqttPacket/connect.test.ts +497 -18
  223. package/mqttPacket/connect.ts +167 -36
  224. package/mqttPacket/decoder.test.ts +33 -16
  225. package/mqttPacket/decoder.ts +173 -5
  226. package/mqttPacket/disconnect.test.ts +97 -18
  227. package/mqttPacket/disconnect.ts +82 -10
  228. package/mqttPacket/encoder.test.ts +32 -8
  229. package/mqttPacket/encoder.ts +236 -11
  230. package/mqttPacket/length.ts +3 -2
  231. package/mqttPacket/mod.ts +75 -32
  232. package/mqttPacket/pingreq.test.ts +52 -4
  233. package/mqttPacket/pingreq.ts +20 -7
  234. package/mqttPacket/pingres.test.ts +52 -4
  235. package/mqttPacket/pingres.ts +22 -8
  236. package/mqttPacket/properties.test.ts +193 -0
  237. package/mqttPacket/protocolLevels.ts +13 -0
  238. package/mqttPacket/pubblishAcks.ts +117 -0
  239. package/mqttPacket/publish.test.ts +212 -133
  240. package/mqttPacket/publish.ts +69 -14
  241. package/mqttPacket/publishAcks.test.ts +128 -0
  242. package/mqttPacket/suback.test.ts +71 -27
  243. package/mqttPacket/suback.ts +78 -26
  244. package/mqttPacket/subscribe.test.ts +132 -43
  245. package/mqttPacket/subscribe.ts +125 -22
  246. package/mqttPacket/types.ts +40 -0
  247. package/mqttPacket/unsuback.test.ts +80 -30
  248. package/mqttPacket/unsuback.ts +65 -10
  249. package/mqttPacket/unsubscribe.test.ts +59 -34
  250. package/mqttPacket/unsubscribe.ts +61 -14
  251. package/node/wrapNodeSocket.ts +2 -1
  252. package/package.json +2 -2
  253. package/persistence/deps.ts +1 -1
  254. package/persistence/memory/memoryPersistence.test.ts +5 -1
  255. package/server/context.ts +23 -10
  256. package/server/deps.ts +2 -0
  257. package/server/handlers/handleConnect.ts +12 -9
  258. package/server/handlers/handlePacket.ts +10 -11
  259. package/server/handlers/handlePingreq.ts +1 -0
  260. package/server/handlers/handlePublish.ts +6 -2
  261. package/server/handlers/handlePubrec.ts +3 -1
  262. package/server/handlers/handlePubrel.ts +3 -1
  263. package/server/handlers/handleSubscribe.ts +3 -6
  264. package/server/handlers/handleUnsubscribe.ts +3 -1
  265. package/server/server.ts +8 -12
  266. package/server/test/handleConnect.test.ts +2 -1
  267. package/server/test/test-handlers.ts +2 -1
  268. package/socket/socket.ts +5 -1
  269. package/utils/assert.ts +0 -18
  270. package/utils/mod.ts +0 -3
  271. package/dist/mqttPacket/puback.d.ts +0 -16
  272. package/dist/mqttPacket/puback.d.ts.map +0 -1
  273. package/dist/mqttPacket/puback.js +0 -21
  274. package/dist/mqttPacket/puback.js.map +0 -1
  275. package/dist/mqttPacket/pubcomp.d.ts +0 -17
  276. package/dist/mqttPacket/pubcomp.d.ts.map +0 -1
  277. package/dist/mqttPacket/pubcomp.js +0 -21
  278. package/dist/mqttPacket/pubcomp.js.map +0 -1
  279. package/dist/mqttPacket/pubrec.d.ts +0 -17
  280. package/dist/mqttPacket/pubrec.d.ts.map +0 -1
  281. package/dist/mqttPacket/pubrec.js +0 -21
  282. package/dist/mqttPacket/pubrec.js.map +0 -1
  283. package/dist/mqttPacket/pubrel.d.ts +0 -17
  284. package/dist/mqttPacket/pubrel.d.ts.map +0 -1
  285. package/dist/mqttPacket/pubrel.js +0 -21
  286. package/dist/mqttPacket/pubrel.js.map +0 -1
  287. package/dist/utils/args.d.ts +0 -28
  288. package/dist/utils/args.d.ts.map +0 -1
  289. package/dist/utils/args.js +0 -76
  290. package/dist/utils/args.js.map +0 -1
  291. package/dist/utils/platform.d.ts +0 -5
  292. package/dist/utils/platform.d.ts.map +0 -1
  293. package/dist/utils/platform.js +0 -8
  294. package/dist/utils/platform.js.map +0 -1
  295. package/mqttPacket/puback.test.ts +0 -55
  296. package/mqttPacket/puback.ts +0 -34
  297. package/mqttPacket/pubcomp.test.ts +0 -55
  298. package/mqttPacket/pubcomp.ts +0 -35
  299. package/mqttPacket/pubrec.test.ts +0 -55
  300. package/mqttPacket/pubrec.ts +0 -35
  301. package/mqttPacket/pubrel.test.ts +0 -55
  302. package/mqttPacket/pubrel.ts +0 -35
  303. package/utils/args.ts +0 -103
  304. package/utils/platform.ts +0 -8
@@ -0,0 +1,12 @@
1
+ /**
2
+ *RetainHandling
3
+ 0 = Send retained messages at the time of the subscribe
4
+ 1 = Send retained messages at subscribe only if the subscription does not currently exist
5
+ 2 = Do not send retained messages at the time of the subscribe
6
+ */
7
+ export declare const RetainHandling: {
8
+ readonly sendRetained: 0;
9
+ readonly ifSubscriptionNotExists: 1;
10
+ readonly noRetain: 2;
11
+ };
12
+ //# sourceMappingURL=RetainHandling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RetainHandling.d.ts","sourceRoot":"","sources":["../../mqttPacket/RetainHandling.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,cAAc;;;;CAIjB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ *RetainHandling
3
+ 0 = Send retained messages at the time of the subscribe
4
+ 1 = Send retained messages at subscribe only if the subscription does not currently exist
5
+ 2 = Do not send retained messages at the time of the subscribe
6
+ */
7
+ export const RetainHandling = {
8
+ sendRetained: 0,
9
+ ifSubscriptionNotExists: 1,
10
+ noRetain: 2,
11
+ };
12
+ //# sourceMappingURL=RetainHandling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RetainHandling.js","sourceRoot":"","sources":["../../mqttPacket/RetainHandling.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,YAAY,EAAE,CAAC;IACf,uBAAuB,EAAE,CAAC;IAC1B,QAAQ,EAAE,CAAC;CACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { CodecOpts, TPacketType } from "./types.ts";
2
+ import type { TReasonCode } from "./ReasonCode.ts";
3
+ import type { AuthProperties } from "./Properties.ts";
4
+ /**
5
+ * An AUTH packet is sent from Client to Server or Server to Client as part of an extended
6
+ * authentication exchange, such as challenge / response authentication.
7
+ * It is a Protocol Error for the Client or Server to send an AUTH packet
8
+ * if the CONNECT packet did not contain the same Authentication Method.
9
+ */
10
+ export type AuthPacketV5 = {
11
+ type: TPacketType;
12
+ protocolLevel: 5;
13
+ reasonCode: TReasonCode;
14
+ properties?: AuthProperties;
15
+ };
16
+ export type AuthPacket = AuthPacketV5;
17
+ export declare const auth: {
18
+ encode(packet: AuthPacket, codecOpts: CodecOpts): Uint8Array;
19
+ decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, packetType: TPacketType): AuthPacket;
20
+ };
21
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../mqttPacket/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD;;;;;GAKG;AAGH,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,EAAE,CAAC,CAAC;IACjB,UAAU,EAAE,WAAW,CAAC;IACxB,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,YAAY,CAAC;AAEtC,eAAO,MAAM,IAAI,EAAE;IACjB,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC;IAC7D,MAAM,CACJ,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,WAAW,GACtB,UAAU,CAAC;CAwCf,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { PacketType } from "./PacketType.js";
2
+ import { Encoder, EncoderError } from "./encoder.js";
3
+ import { Decoder, DecoderError, hasEmptyFlags } from "./decoder.js";
4
+ export const auth = {
5
+ encode(packet, codecOpts) {
6
+ if (packet.protocolLevel !== 5) {
7
+ throw new EncoderError("Invalid protocol level");
8
+ }
9
+ const encoder = new Encoder(packet.type);
10
+ encoder
11
+ .setReasonCode(packet.reasonCode || 0)
12
+ .setProperties(packet.properties || {}, packet.type, codecOpts.maxOutgoingPacketSize);
13
+ return encoder.done(0);
14
+ },
15
+ decode(buffer, flags, codecOpts, packetType) {
16
+ // Bits 3,2,1 and 0 of the Fixed Header of the AUTH packet are reserved and MUST all be set to 0.
17
+ // The Client or Server MUST treat any other value as malformed and close the Network Connection [MQTT-3.15.1-1].
18
+ hasEmptyFlags(flags);
19
+ if (codecOpts.protocolLevel !== 5) {
20
+ throw new DecoderError("Invalid protocol level");
21
+ }
22
+ const decoder = new Decoder(packetType, buffer);
23
+ const reasonCode = decoder.getReasonCode();
24
+ const properties = decoder.getProperties(PacketType.auth);
25
+ decoder.done();
26
+ return {
27
+ type: PacketType.auth,
28
+ protocolLevel: 5,
29
+ reasonCode,
30
+ properties,
31
+ };
32
+ },
33
+ };
34
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../mqttPacket/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAqBpE,MAAM,CAAC,MAAM,IAAI,GAQb;IACF,MAAM,CAAC,MAAkB,EAAE,SAAoB;QAC7C,IAAI,MAAM,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,YAAY,CAAC,wBAAwB,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO;aACJ,aAAa,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;aACrC,aAAa,CACZ,MAAM,CAAC,UAAU,IAAI,EAAE,EACvB,MAAM,CAAC,IAAI,EACX,SAAS,CAAC,qBAAqB,CAChC,CAAC;QACJ,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,CACJ,MAAkB,EAClB,KAAa,EACb,SAAoB,EACpB,UAAuB;QAEvB,iGAAiG;QACjG,iHAAiH;QACjH,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,SAAS,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,YAAY,CAAC,wBAAwB,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,aAAa,EAAE,CAAC;YAChB,UAAU;YACV,UAAU;SACX,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -1,18 +1,26 @@
1
- import type { TAuthenticationResult, TPacketType } from "./types.ts";
1
+ import type { CodecOpts, ProtocolLevelNoV5, TAuthenticationResult, TPacketType } from "./types.ts";
2
+ import type { TReasonCode } from "./ReasonCode.ts";
3
+ import type { ConnackProperties } from "./Properties.ts";
2
4
  /**
3
5
  * ConnackPacket is sent from the server to the client in response to a connect packet.
4
6
  * It indicates that the connect is accepted.
5
7
  */
6
- export type ConnackPacket = {
8
+ export type ConnackPacketV4 = {
7
9
  type: TPacketType;
10
+ protocolLevel: ProtocolLevelNoV5;
8
11
  sessionPresent: boolean;
9
12
  returnCode: TAuthenticationResult;
10
13
  };
14
+ export type ConnackPacketV5 = {
15
+ type: TPacketType;
16
+ protocolLevel: 5;
17
+ sessionPresent: boolean;
18
+ reasonCode: TReasonCode;
19
+ properties?: ConnackProperties;
20
+ };
21
+ export type ConnackPacket = ConnackPacketV4 | ConnackPacketV5;
11
22
  export declare const connack: {
12
- encode(packet: ConnackPacket): {
13
- flags: number;
14
- bytes: number[];
15
- };
16
- decode(buffer: Uint8Array, _flags: number): ConnackPacket | undefined;
23
+ encode(packet: ConnackPacket, codecOpts: CodecOpts): Uint8Array;
24
+ decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, packetType: TPacketType): ConnackPacket;
17
25
  };
18
26
  //# sourceMappingURL=connack.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connack.d.ts","sourceRoot":"","sources":["../../mqttPacket/connack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAMrE;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,qBAAqB,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE;IACpB,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAClE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;CAyBvE,CAAC"}
1
+ {"version":3,"file":"connack.d.ts","sourceRoot":"","sources":["../../mqttPacket/connack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACZ,MAAM,YAAY,CAAC;AAWpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,EAAE,iBAAiB,CAAC;IACjC,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,qBAAqB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,EAAE,CAAC,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,WAAW,CAAC;IACxB,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,eAAe,CAAC;AAE9D,eAAO,MAAM,OAAO,EAAE;IACpB,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC;IAChE,MAAM,CACJ,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,WAAW,GACtB,aAAa,CAAC;CA4DlB,CAAC"}
@@ -1,27 +1,55 @@
1
1
  import { PacketType } from "./PacketType.js";
2
2
  import { BitMask } from "./BitMask.js";
3
- import { booleanFlag, Decoder, DecoderError } from "./decoder.js";
3
+ import { Encoder } from "./encoder.js";
4
+ import { booleanFlag, Decoder, DecoderError, hasEmptyFlags, } from "./decoder.js";
4
5
  import { AuthenticationResultByNumber } from "./AuthenticationResult.js";
5
6
  export const connack = {
6
- encode(packet) {
7
- const flags = 0;
8
- return {
9
- flags,
10
- bytes: [packet.sessionPresent ? 1 : 0, packet.returnCode || 0],
11
- };
7
+ encode(packet, codecOpts) {
8
+ if (packet.protocolLevel !== 5) {
9
+ return new Uint8Array([
10
+ packet.type << 4,
11
+ 2,
12
+ packet.sessionPresent ? 1 : 0,
13
+ packet.returnCode || 0,
14
+ ]);
15
+ }
16
+ const encoder = new Encoder(packet.type);
17
+ encoder
18
+ .setByte(packet.sessionPresent ? 1 : 0)
19
+ .setReasonCode(packet.reasonCode || 0)
20
+ .setProperties(packet.properties || {}, packet.type, codecOpts.maxOutgoingPacketSize);
21
+ return encoder.done(0);
12
22
  },
13
- decode(buffer, _flags) {
14
- const decoder = new Decoder(buffer);
15
- const sessionPresent = booleanFlag(decoder.getByte(), BitMask.bit0);
16
- const returnCode = decoder.getByte();
17
- decoder.done();
18
- if (!AuthenticationResultByNumber[returnCode]) {
19
- throw new DecoderError("Invalid return code");
23
+ decode(buffer, flags, codecOpts, packetType) {
24
+ const decoder = new Decoder(packetType, buffer);
25
+ hasEmptyFlags(flags);
26
+ const ackflags = decoder.getByte();
27
+ if (ackflags > 1) {
28
+ throw new DecoderError("Invalid Connect Acknowledge flags");
29
+ }
30
+ const sessionPresent = booleanFlag(ackflags, BitMask.bit0);
31
+ if (codecOpts.protocolLevel !== 5) {
32
+ const returnCode = decoder.getByte();
33
+ decoder.done();
34
+ if (!AuthenticationResultByNumber[returnCode]) {
35
+ throw new DecoderError("Invalid return code");
36
+ }
37
+ return {
38
+ type: PacketType.connack,
39
+ protocolLevel: codecOpts.protocolLevel,
40
+ sessionPresent,
41
+ returnCode,
42
+ };
20
43
  }
44
+ const reasonCode = decoder.getReasonCode();
45
+ const properties = decoder.getProperties(PacketType.connack);
46
+ decoder.done();
21
47
  return {
22
48
  type: PacketType.connack,
49
+ protocolLevel: 5,
23
50
  sessionPresent,
24
- returnCode,
51
+ reasonCode,
52
+ properties,
25
53
  };
26
54
  },
27
55
  };
@@ -1 +1 @@
1
- {"version":3,"file":"connack.js","sourceRoot":"","sources":["../../mqttPacket/connack.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAYzE,MAAM,CAAC,MAAM,OAAO,GAGhB;IACF,MAAM,CAAC,MAAqB;QAC1B,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,OAAO;YACL,KAAK;YACL,KAAK,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;SAC/D,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,MAAkB,EAAE,MAAc;QACvC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;QAEpC,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAA2B,CAAC;QAC9D,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,YAAY,CAAC,qBAAqB,CAAC,CAAC;QAChD,CAAC;QACD,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,OAAO;YACxB,cAAc;YACd,UAAU;SACX,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"connack.js","sourceRoot":"","sources":["../../mqttPacket/connack.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,WAAW,EACX,OAAO,EACP,YAAY,EACZ,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAyBzE,MAAM,CAAC,MAAM,OAAO,GAQhB;IACF,MAAM,CAAC,MAAqB,EAAE,SAAoB;QAChD,IAAI,MAAM,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,UAAU,CAAC;gBACpB,MAAM,CAAC,IAAI,IAAI,CAAC;gBAChB,CAAC;gBACD,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM,CAAC,UAAU,IAAI,CAAC;aACvB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO;aACJ,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACtC,aAAa,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;aACrC,aAAa,CACZ,MAAM,CAAC,UAAU,IAAI,EAAE,EACvB,MAAM,CAAC,IAAI,EACX,SAAS,CAAC,qBAAqB,CAChC,CAAC;QACJ,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,CACJ,MAAkB,EAClB,KAAa,EACb,SAAoB,EACpB,UAAuB;QAEvB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAChD,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,YAAY,CAAC,mCAAmC,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,cAAc,GAAG,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,SAAS,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAA2B,CAAC;YAC9D,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,YAAY,CAAC,qBAAqB,CAAC,CAAC;YAChD,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,UAAU,CAAC,OAAO;gBACxB,aAAa,EAAE,SAAS,CAAC,aAAa;gBACtC,cAAc;gBACd,UAAU;aACX,CAAC;QACJ,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,OAAO;YACxB,aAAa,EAAE,CAAC;YAChB,cAAc;YACd,UAAU;YACV,UAAU;SACX,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -1,11 +1,12 @@
1
- import type { ClientId, Payload, QoS, Topic, TPacketType } from "./types.ts";
1
+ import type { ClientId, CodecOpts, Payload, ProtocolLevelNoV5, QoS, Topic, TPacketType } from "./types.ts";
2
+ import type { ConnectProperties, WillProperties } from "./Properties.ts";
2
3
  /**
3
4
  * ConnectPacket is sent from the client to the server to initiate a connection.
4
5
  */
5
- export type ConnectPacket = {
6
+ export type ConnectPacketV4 = {
6
7
  type: TPacketType;
7
8
  protocolName?: string;
8
- protocolLevel?: number;
9
+ protocolLevel: ProtocolLevelNoV5;
9
10
  clientId?: ClientId;
10
11
  username?: string;
11
12
  password?: Uint8Array;
@@ -17,12 +18,30 @@ export type ConnectPacket = {
17
18
  };
18
19
  clean?: boolean;
19
20
  keepAlive?: number;
21
+ bridgeMode?: boolean;
20
22
  };
21
- export declare const connect: {
22
- encode(packet: ConnectPacket): {
23
- flags: number;
24
- bytes: number[];
23
+ export type ConnectPacketV5 = {
24
+ type: TPacketType;
25
+ protocolName?: string;
26
+ protocolLevel: 5;
27
+ clientId?: ClientId;
28
+ username?: string;
29
+ password?: Uint8Array;
30
+ will?: {
31
+ topic: Topic;
32
+ payload: Payload;
33
+ retain?: boolean;
34
+ qos?: QoS;
35
+ properties?: WillProperties;
25
36
  };
26
- decode(buffer: Uint8Array, flags: number): ConnectPacket;
37
+ clean?: boolean;
38
+ keepAlive?: number;
39
+ bridgeMode?: boolean;
40
+ properties?: ConnectProperties;
41
+ };
42
+ export type ConnectPacket = ConnectPacketV4 | ConnectPacketV5;
43
+ export declare const connect: {
44
+ encode(packet: ConnectPacket, _codecOpts: CodecOpts): Uint8Array;
45
+ decode(buffer: Uint8Array, flags: number, codecOpts: CodecOpts, packetType: TPacketType): ConnectPacket;
27
46
  };
28
47
  //# sourceMappingURL=connect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../mqttPacket/connect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAW7E;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,IAAI,CAAC,EAAE;QACL,KAAK,EAAE,KAAK,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,GAAG,CAAC,EAAE,GAAG,CAAC;KACX,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AASF,eAAO,MAAM,OAAO,EAAE;IACpB,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAClE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC;CA4H1D,CAAC"}
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../mqttPacket/connect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,SAAS,EACT,OAAO,EAEP,iBAAiB,EACjB,GAAG,EACH,KAAK,EACL,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAYzE;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,IAAI,CAAC,EAAE;QACL,KAAK,EAAE,KAAK,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,GAAG,CAAC,EAAE,GAAG,CAAC;KACX,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,IAAI,CAAC,EAAE;QACL,KAAK,EAAE,KAAK,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,GAAG,CAAC,EAAE,GAAG,CAAC;QACV,UAAU,CAAC,EAAE,cAAc,CAAC;KAC7B,CAAC;IACF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,eAAe,CAAC;AAe9D,eAAO,MAAM,OAAO,EAAE;IACpB,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,GAAG,UAAU,CAAC;IACjE,MAAM,CACJ,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,WAAW,GACtB,aAAa,CAAC;CAkNlB,CAAC"}
@@ -1,25 +1,52 @@
1
+ import { PropertySetType } from "./Properties.js";
1
2
  import { PacketType } from "./PacketType.js";
2
3
  import { BitMask } from "./BitMask.js";
3
- import { Encoder } from "./encoder.js";
4
+ import { Encoder, EncoderError } from "./encoder.js";
4
5
  import { booleanFlag, Decoder, DecoderError, hasEmptyFlags, } from "./decoder.js";
5
6
  function invalidProtocolName(version, name) {
6
- if (version === 4 && name !== "MQTT") {
7
- return true;
7
+ if (version === 3 && name === "MQIsdp") {
8
+ return false;
8
9
  }
9
- return false;
10
+ if (version === 4 && name === "MQTT") {
11
+ return false;
12
+ }
13
+ if (version === 5 && name == "MQTT") {
14
+ return false;
15
+ }
16
+ return true;
10
17
  }
11
18
  export const connect = {
12
- encode(packet) {
19
+ encode(packet, codecOpts) {
13
20
  const flags = 0;
14
- const protocolLevel = 4;
15
- const protocolName = protocolLevel === 4 ? "MQTT" : "MQIsdp";
21
+ if (typeof packet.protocolLevel !== "number") {
22
+ throw new EncoderError("Protocol level must be a number");
23
+ }
24
+ const protocolLevel = packet.protocolLevel || 4;
25
+ if (protocolLevel < 3 || protocolLevel > 5) {
26
+ throw new EncoderError("Unsupported protocol level");
27
+ }
28
+ const protocolName = protocolLevel > 3 ? "MQTT" : "MQIsdp";
16
29
  const clientId = packet.clientId || "";
17
- const usernameFlag = !!packet.username;
18
- const passwordFlag = !!packet.password;
30
+ const usernameFlag = packet.username !== undefined;
31
+ if (protocolLevel === 3 && clientId === "") {
32
+ throw new EncoderError("Client id required for protocol level 3");
33
+ }
34
+ const passwordFlag = usernameFlag && packet.password !== undefined;
19
35
  const willRetain = !!packet.will?.retain;
20
36
  const willQoS = packet.will?.qos || 0;
21
- const willFlag = !!packet.will;
37
+ const willFlag = packet.will !== undefined;
38
+ if (willFlag) {
39
+ if (packet.will?.topic === undefined) {
40
+ throw new EncoderError("Will topic must be defined");
41
+ }
42
+ if (packet.will?.payload === undefined) {
43
+ throw new EncoderError("Will payload must be defined");
44
+ }
45
+ }
22
46
  const cleanSession = packet.clean !== false;
47
+ if (!cleanSession && (clientId === "")) {
48
+ throw new EncoderError("Client id required for clean session");
49
+ }
23
50
  const connectFlags = (usernameFlag ? BitMask.bit7 : 0) +
24
51
  (passwordFlag ? BitMask.bit6 : 0) +
25
52
  (willRetain ? BitMask.bit5 : 0) +
@@ -28,30 +55,43 @@ export const connect = {
28
55
  (willFlag ? BitMask.bit2 : 0) +
29
56
  (cleanSession ? BitMask.bit1 : 0);
30
57
  const keepAlive = packet.keepAlive || 0;
31
- const encoder = new Encoder();
58
+ const bridgeMode = !!packet.bridgeMode;
59
+ const rawProtocolLevel = bridgeMode ? protocolLevel + 128 : protocolLevel;
60
+ const encoder = new Encoder(packet.type);
32
61
  encoder
33
62
  .setUtf8String(protocolName)
34
- .setByte(protocolLevel)
63
+ .setByte(rawProtocolLevel)
35
64
  .setByte(connectFlags)
36
- .setInt16(keepAlive)
37
- .setUtf8String(clientId);
38
- if (packet.will) {
65
+ .setInt16(keepAlive);
66
+ if (packet.protocolLevel === 5) {
67
+ encoder.setProperties(packet.properties || {}, PropertySetType.connect, codecOpts.maxOutgoingPacketSize);
68
+ }
69
+ encoder.setUtf8String(clientId);
70
+ if (packet.will !== undefined && packet.will.topic !== undefined &&
71
+ packet.will.payload !== undefined) {
72
+ if (packet.protocolLevel === 5) {
73
+ encoder.setProperties(packet.will?.properties || {}, PropertySetType.will, codecOpts.maxOutgoingPacketSize);
74
+ }
39
75
  encoder.setTopic(packet.will.topic).setByteArray(packet.will.payload);
40
76
  }
41
- if (packet.username) {
77
+ if (packet.username !== undefined) {
42
78
  encoder.setUtf8String(packet.username);
43
79
  }
44
- if (packet.password) {
80
+ if (passwordFlag && packet.password !== undefined) {
45
81
  encoder.setByteArray(packet.password);
46
82
  }
47
- return { flags, bytes: encoder.done() };
83
+ return encoder.done(flags);
48
84
  },
49
- decode(buffer, flags) {
50
- const decoder = new Decoder(buffer);
51
- const protocolName = decoder.getUtf8String();
52
- const protocolLevel = decoder.getByte();
85
+ decode(buffer, flags, _codecOpts, packetType) {
86
+ const decoder = new Decoder(packetType, buffer);
87
+ const protocolName = decoder.getUTF8String();
88
+ const rawProtocolLevel = decoder.getByte();
89
+ const bridgeMode = rawProtocolLevel > 128;
90
+ const protocolLevel = bridgeMode
91
+ ? rawProtocolLevel - 128
92
+ : rawProtocolLevel;
53
93
  if (invalidProtocolName(protocolLevel, protocolName)) {
54
- throw new DecoderError("Invalid protocol name");
94
+ throw new DecoderError("Invalid protocol name or level");
55
95
  }
56
96
  const connectFlags = decoder.getByte();
57
97
  const usernameFlag = booleanFlag(connectFlags, BitMask.bit7);
@@ -70,18 +110,30 @@ export const connect = {
70
110
  if (willQoS !== 0 && willQoS !== 1 && willQoS !== 2) {
71
111
  throw new DecoderError("Invalid will qos");
72
112
  }
113
+ if (!usernameFlag && passwordFlag) {
114
+ throw new DecoderError("Password without username");
115
+ }
73
116
  const keepAlive = decoder.getInt16();
74
- const clientId = decoder.getUtf8String();
117
+ const isV5 = protocolLevel === 5;
118
+ let properties;
119
+ if (isV5) {
120
+ properties = decoder.getProperties(PropertySetType.connect);
121
+ }
122
+ const clientId = decoder.getUTF8String();
123
+ let willProperties;
75
124
  let willTopic;
76
125
  let willPayload;
77
126
  if (willFlag) {
127
+ if (isV5) {
128
+ willProperties = decoder.getProperties(PropertySetType.will);
129
+ }
78
130
  willTopic = decoder.getTopic();
79
131
  willPayload = decoder.getByteArray();
80
132
  }
81
133
  let username;
82
134
  let password;
83
135
  if (usernameFlag) {
84
- username = decoder.getUtf8String();
136
+ username = decoder.getUTF8String();
85
137
  }
86
138
  if (passwordFlag) {
87
139
  password = decoder.getByteArray();
@@ -93,13 +145,39 @@ export const connect = {
93
145
  if (clientId.length === 0 && cleanSession === false) {
94
146
  throw new DecoderError("Clean session must be true if clientID is empty");
95
147
  }
96
- return {
148
+ let bridgeModeProp = {};
149
+ if (bridgeMode) {
150
+ bridgeModeProp = { bridgeMode };
151
+ }
152
+ const commonProps = {
97
153
  type: PacketType.connect,
98
154
  protocolName: protocolName,
99
- protocolLevel,
100
155
  clientId: clientId,
101
- username: username ? username : undefined,
156
+ username,
102
157
  password: password ? password : undefined,
158
+ clean: cleanSession,
159
+ keepAlive,
160
+ ...bridgeModeProp,
161
+ };
162
+ if (isV5) {
163
+ return {
164
+ ...commonProps,
165
+ protocolLevel: 5,
166
+ will: willFlag
167
+ ? {
168
+ topic: willTopic || "",
169
+ payload: willPayload || Uint8Array.from([0]),
170
+ retain: willRetain,
171
+ qos: willQoS,
172
+ properties: willProperties,
173
+ }
174
+ : undefined,
175
+ properties,
176
+ };
177
+ }
178
+ return {
179
+ ...commonProps,
180
+ protocolLevel: protocolLevel,
103
181
  will: willFlag
104
182
  ? {
105
183
  topic: willTopic || "",
@@ -108,8 +186,6 @@ export const connect = {
108
186
  qos: willQoS,
109
187
  }
110
188
  : undefined,
111
- clean: cleanSession,
112
- keepAlive,
113
189
  };
114
190
  },
115
191
  };
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../mqttPacket/connect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,WAAW,EACX,OAAO,EACP,YAAY,EACZ,aAAa,GACd,MAAM,cAAc,CAAC;AAsBtB,SAAS,mBAAmB,CAAC,OAAe,EAAE,IAAY;IACxD,IAAI,OAAO,KAAK,CAAC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAGhB;IACF,MAAM,CAAC,MAAqB;QAC1B,MAAM,KAAK,GAAG,CAAC,CAAC;QAEhB,MAAM,aAAa,GAAG,CAAC,CAAC;QACxB,MAAM,YAAY,GAAG,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;QACvC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QACvC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QACvC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAC/B,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC;QAC5C,MAAM,YAAY,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;QAExC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO;aACJ,aAAa,CAAC,YAAY,CAAC;aAC3B,OAAO,CAAC,aAAa,CAAC;aACtB,OAAO,CAAC,YAAY,CAAC;aACrB,QAAQ,CAAC,SAAS,CAAC;aACnB,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE3B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,MAAkB,EAAE,KAAa;QACtC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QACxC,IAAI,mBAAmB,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,YAAY,CAAC,uBAAuB,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAEvC,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,CAAC,YAAY,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAE5D,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,gFAAgF;QAChF,6EAA6E;QAC7E,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,IAAI,YAAY,CAAC,sBAAsB,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,YAAY,CAAC,kBAAkB,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QAEzC,IAAI,SAAS,CAAC;QACd,IAAI,WAAW,CAAC;QAChB,IAAI,QAAQ,EAAE,CAAC;YACb,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC/B,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;QACvC,CAAC;QAED,IAAI,QAAQ,CAAC;QACb,IAAI,QAAQ,CAAC;QACb,IAAI,YAAY,EAAE,CAAC;YACjB,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QACrC,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,QAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;QACpC,CAAC;QAED,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,UAAU,KAAK,IAAI,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,YAAY,CACpB,qEAAqE,CACtE,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;YACpD,MAAM,IAAI,YAAY,CAAC,iDAAiD,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,OAAO;YACxB,YAAY,EAAE,YAAY;YAC1B,aAAa;YACb,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACzC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACzC,IAAI,EAAE,QAAQ;gBACZ,CAAC,CAAC;oBACA,KAAK,EAAE,SAAS,IAAI,EAAE;oBACtB,OAAO,EAAE,WAAW,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5C,MAAM,EAAE,UAAU;oBAClB,GAAG,EAAE,OAAO;iBACb;gBACD,CAAC,CAAC,SAAS;YACb,KAAK,EAAE,YAAY;YACnB,SAAS;SACV,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../mqttPacket/connect.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import type { TBitMask, Topic, TopicFilter } from "./types.ts";
1
+ import type { TBitMask, Topic, TopicFilter, TPacketType, TReasonCode, UTF8StringPair } from "./types.ts";
2
+ import type { PropsByPacketSetType } from "./Properties.ts";
2
3
  /**
3
4
  * Checks if a specific bit flag is set in a byte using a bitmask
4
5
  * @param byte - The byte to check
@@ -28,6 +29,7 @@ export declare class DecoderError extends Error {
28
29
  * Decoder class for parsing MQTT packets
29
30
  */
30
31
  export declare class Decoder {
32
+ private packetType;
31
33
  private buf;
32
34
  private pos;
33
35
  private len;
@@ -36,7 +38,7 @@ export declare class Decoder {
36
38
  * @param buf - The buffer to decode
37
39
  * @param pos - Starting position in the buffer (default: 0)
38
40
  */
39
- constructor(buf: Uint8Array, pos?: number);
41
+ constructor(packetType: TPacketType, buf: Uint8Array, pos?: number);
40
42
  /**
41
43
  * Checks if the current position is valid
42
44
  * @param pos - Position to check
@@ -53,6 +55,18 @@ export declare class Decoder {
53
55
  * @returns The 16-bit integer value
54
56
  */
55
57
  getInt16(): number;
58
+ /**
59
+ * Gets a 4 byte integer from the buffer (for v5)
60
+ * @returns The 32 bit integer value
61
+ */
62
+ getInt32(): number;
63
+ /**
64
+ * Gets a variable byte integer from the buffer (for v5)
65
+ * its like the length decoder in length.ts but this one works directly on the buffer
66
+ * @returns The decoded variable byte integer
67
+ * @throws {DecoderError} If malformed variable byte integer
68
+ */
69
+ getVariableByteInteger(): number;
56
70
  /**
57
71
  * Gets a byte array from the buffer
58
72
  * @returns A subarray of the buffer
@@ -62,7 +76,12 @@ export declare class Decoder {
62
76
  * Gets a UTF-8 string from the buffer
63
77
  * @returns The decoded UTF-8 string
64
78
  */
65
- getUtf8String(): string;
79
+ getUTF8String(): string;
80
+ /**
81
+ * Gets a UTF-8 string pair from the buffer (for v5)
82
+ * @returns The decoded UTF-8 pair as [name,value]
83
+ */
84
+ getUTF8StringPair(): UTF8StringPair;
66
85
  /**
67
86
  * Gets a topic from the buffer
68
87
  * @returns The decoded topic
@@ -80,6 +99,26 @@ export declare class Decoder {
80
99
  * @returns The remaining bytes as a subarray
81
100
  */
82
101
  getRemainder(): Uint8Array<ArrayBufferLike>;
102
+ /**
103
+ * Gets a single property
104
+ * @param id
105
+ * @returns
106
+ */
107
+ private getProperty;
108
+ /**
109
+ * Gets all properties from the buffer
110
+ * and validates if they are allowed for this type of packet
111
+ * @param propertySetType
112
+ * @returns
113
+ * @throws {DecoderError} If properties are invalid
114
+ */
115
+ getProperties<T extends keyof PropsByPacketSetType>(propertySetType: T): PropsByPacketSetType[T];
116
+ /**
117
+ * Gets a reason code from the buffer
118
+ * @returns The decoded reason code
119
+ * @throws {DecoderError} If reason code is invalid
120
+ */
121
+ getReasonCode(): TReasonCode;
83
122
  /**
84
123
  * Checks if decoder has reached the end of the buffer
85
124
  * @returns True if at end, false otherwise
@@ -1 +1 @@
1
- {"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../mqttPacket/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI/D;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEjE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAIhD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAIjD;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,GAAG,CAAS;IAEpB;;;;OAIG;gBACS,GAAG,EAAE,UAAU,EAAE,GAAG,GAAE,MAAU;IAM5C;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAM3B;;;OAGG;IACH,OAAO,IAAI,MAAM;IAKjB;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAMlB;;;OAGG;IACH,YAAY,IAAI,UAAU;IAS1B;;;OAGG;IACH,aAAa,IAAI,MAAM;IAKvB;;;;OAIG;IACH,QAAQ,IAAI,KAAK;IAUjB;;;;OAIG;IACH,cAAc,IAAI,WAAW;IAU7B;;;OAGG;IACH,YAAY;IAOZ;;;OAGG;IACH,KAAK,IAAI,OAAO;IAOhB;;;;OAIG;IACH,IAAI,IAAI,OAAO;CAMhB"}
1
+ {"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../mqttPacket/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,KAAK,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,cAAc,EACf,MAAM,YAAY,CAAC;AAGpB,OAAO,KAAK,EAEV,oBAAoB,EAIrB,MAAM,iBAAiB,CAAC;AAazB;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEjE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAIhD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAIjD;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,GAAG,CAAS;IAEpB;;;;OAIG;gBACS,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,GAAE,MAAU;IAOrE;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAM3B;;;OAGG;IACH,OAAO,IAAI,MAAM;IAKjB;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAMlB;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAMlB;;;;;OAKG;IACH,sBAAsB,IAAI,MAAM;IAehC;;;OAGG;IACH,YAAY,IAAI,UAAU;IAS1B;;;OAGG;IACH,aAAa,IAAI,MAAM;IAKvB;;;OAGG;IACH,iBAAiB,IAAI,cAAc;IAMnC;;;;OAIG;IACH,QAAQ,IAAI,KAAK;IAUjB;;;;OAIG;IACH,cAAc,IAAI,WAAW;IAU7B;;;OAGG;IACH,YAAY;IAOZ;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAuBnB;;;;;;OAMG;IACH,aAAa,CAAC,CAAC,SAAS,MAAM,oBAAoB,EAChD,eAAe,EAAE,CAAC,GACjB,oBAAoB,CAAC,CAAC,CAAC;IAkD1B;;;;OAIG;IACH,aAAa,IAAI,WAAW;IAQ5B;;;OAGG;IACH,KAAK,IAAI,OAAO;IAOhB;;;;OAIG;IACH,IAAI,IAAI,OAAO;CAMhB"}