@seriousme/opifex 1.7.0 → 1.7.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 (309) hide show
  1. package/dist/bin/conformanceServer.d.ts +3 -0
  2. package/dist/bin/conformanceServer.d.ts.map +1 -0
  3. package/dist/bin/conformanceServer.js +98 -0
  4. package/dist/bin/conformanceServer.js.map +1 -0
  5. package/dist/bin/demoServer.d.ts +3 -0
  6. package/dist/bin/demoServer.d.ts.map +1 -0
  7. package/dist/bin/demoServer.js +97 -0
  8. package/dist/bin/demoServer.js.map +1 -0
  9. package/dist/bin/mqtt.d.ts +3 -0
  10. package/dist/bin/mqtt.d.ts.map +1 -0
  11. package/dist/bin/mqtt.js +257 -0
  12. package/dist/bin/mqtt.js.map +1 -0
  13. package/dist/client/ConnectionState.d.ts +21 -0
  14. package/dist/client/ConnectionState.d.ts.map +1 -0
  15. package/dist/client/ConnectionState.js +17 -0
  16. package/dist/client/ConnectionState.js.map +1 -0
  17. package/dist/client/client.d.ts +94 -0
  18. package/dist/client/client.d.ts.map +1 -0
  19. package/dist/client/client.js +188 -0
  20. package/dist/client/client.js.map +1 -0
  21. package/dist/client/context.d.ts +29 -0
  22. package/dist/client/context.d.ts.map +1 -0
  23. package/dist/client/context.js +153 -0
  24. package/dist/client/context.js.map +1 -0
  25. package/dist/client/deps.d.ts +8 -0
  26. package/dist/client/deps.d.ts.map +1 -0
  27. package/dist/client/deps.js +6 -0
  28. package/dist/client/deps.js.map +1 -0
  29. package/dist/client/handlers/handleConnack.d.ts +10 -0
  30. package/dist/client/handlers/handleConnack.d.ts.map +1 -0
  31. package/dist/client/handlers/handleConnack.js +25 -0
  32. package/dist/client/handlers/handleConnack.js.map +1 -0
  33. package/dist/client/handlers/handlePacket.d.ts +11 -0
  34. package/dist/client/handlers/handlePacket.d.ts.map +1 -0
  35. package/dist/client/handlers/handlePacket.js +58 -0
  36. package/dist/client/handlers/handlePacket.js.map +1 -0
  37. package/dist/client/handlers/handlePuback.d.ts +12 -0
  38. package/dist/client/handlers/handlePuback.d.ts.map +1 -0
  39. package/dist/client/handlers/handlePuback.js +14 -0
  40. package/dist/client/handlers/handlePuback.js.map +1 -0
  41. package/dist/client/handlers/handlePubcomp.d.ts +13 -0
  42. package/dist/client/handlers/handlePubcomp.d.ts.map +1 -0
  43. package/dist/client/handlers/handlePubcomp.js +17 -0
  44. package/dist/client/handlers/handlePubcomp.js.map +1 -0
  45. package/dist/client/handlers/handlePublish.d.ts +10 -0
  46. package/dist/client/handlers/handlePublish.d.ts.map +1 -0
  47. package/dist/client/handlers/handlePublish.js +34 -0
  48. package/dist/client/handlers/handlePublish.js.map +1 -0
  49. package/dist/client/handlers/handlePubrec.d.ts +17 -0
  50. package/dist/client/handlers/handlePubrec.d.ts.map +1 -0
  51. package/dist/client/handlers/handlePubrec.js +27 -0
  52. package/dist/client/handlers/handlePubrec.js.map +1 -0
  53. package/dist/client/handlers/handlePubrel.d.ts +20 -0
  54. package/dist/client/handlers/handlePubrel.d.ts.map +1 -0
  55. package/dist/client/handlers/handlePubrel.js +32 -0
  56. package/dist/client/handlers/handlePubrel.js.map +1 -0
  57. package/dist/client/handlers/handleSuback.d.ts +13 -0
  58. package/dist/client/handlers/handleSuback.d.ts.map +1 -0
  59. package/dist/client/handlers/handleSuback.js +15 -0
  60. package/dist/client/handlers/handleSuback.js.map +1 -0
  61. package/dist/client/handlers/handleUnsuback.d.ts +14 -0
  62. package/dist/client/handlers/handleUnsuback.d.ts.map +1 -0
  63. package/dist/client/handlers/handleUnsuback.js +16 -0
  64. package/dist/client/handlers/handleUnsuback.js.map +1 -0
  65. package/dist/client/mod.d.ts +7 -0
  66. package/dist/client/mod.d.ts.map +1 -0
  67. package/dist/client/mod.js +6 -0
  68. package/dist/client/mod.js.map +1 -0
  69. package/dist/client/store/deps.d.ts +3 -0
  70. package/dist/client/store/deps.d.ts.map +1 -0
  71. package/dist/client/store/deps.js +2 -0
  72. package/dist/client/store/deps.js.map +1 -0
  73. package/dist/client/store/memoryStore.d.ts +34 -0
  74. package/dist/client/store/memoryStore.d.ts.map +1 -0
  75. package/dist/client/store/memoryStore.js +59 -0
  76. package/dist/client/store/memoryStore.js.map +1 -0
  77. package/dist/client/store/store.d.ts +46 -0
  78. package/dist/client/store/store.d.ts.map +1 -0
  79. package/dist/client/store/store.js +5 -0
  80. package/dist/client/store/store.js.map +1 -0
  81. package/dist/mqttConn/mqttConn.d.ts +36 -0
  82. package/dist/mqttConn/mqttConn.d.ts.map +1 -0
  83. package/dist/mqttConn/mqttConn.js +105 -0
  84. package/dist/mqttConn/mqttConn.js.map +1 -0
  85. package/dist/mqttPacket/AuthenticationResult.d.ts +16 -0
  86. package/dist/mqttPacket/AuthenticationResult.d.ts.map +1 -0
  87. package/dist/mqttPacket/AuthenticationResult.js +17 -0
  88. package/dist/mqttPacket/AuthenticationResult.js.map +1 -0
  89. package/dist/mqttPacket/BitMask.d.ts +11 -0
  90. package/dist/mqttPacket/BitMask.d.ts.map +1 -0
  91. package/dist/mqttPacket/BitMask.js +11 -0
  92. package/dist/mqttPacket/BitMask.js.map +1 -0
  93. package/dist/mqttPacket/PacketType.d.ts +19 -0
  94. package/dist/mqttPacket/PacketType.d.ts.map +1 -0
  95. package/dist/mqttPacket/PacketType.js +19 -0
  96. package/dist/mqttPacket/PacketType.js.map +1 -0
  97. package/dist/mqttPacket/connack.d.ts +18 -0
  98. package/dist/mqttPacket/connack.d.ts.map +1 -0
  99. package/dist/mqttPacket/connack.js +28 -0
  100. package/dist/mqttPacket/connack.js.map +1 -0
  101. package/dist/mqttPacket/connect.d.ts +28 -0
  102. package/dist/mqttPacket/connect.d.ts.map +1 -0
  103. package/dist/mqttPacket/connect.js +116 -0
  104. package/dist/mqttPacket/connect.js.map +1 -0
  105. package/dist/mqttPacket/decoder.d.ts +24 -0
  106. package/dist/mqttPacket/decoder.d.ts.map +1 -0
  107. package/dist/mqttPacket/decoder.js +90 -0
  108. package/dist/mqttPacket/decoder.js.map +1 -0
  109. package/dist/mqttPacket/disconnect.d.ts +16 -0
  110. package/dist/mqttPacket/disconnect.d.ts.map +1 -0
  111. package/dist/mqttPacket/disconnect.js +15 -0
  112. package/dist/mqttPacket/disconnect.js.map +1 -0
  113. package/dist/mqttPacket/encoder.d.ts +17 -0
  114. package/dist/mqttPacket/encoder.d.ts.map +1 -0
  115. package/dist/mqttPacket/encoder.js +57 -0
  116. package/dist/mqttPacket/encoder.js.map +1 -0
  117. package/dist/mqttPacket/length.d.ts +12 -0
  118. package/dist/mqttPacket/length.d.ts.map +1 -0
  119. package/dist/mqttPacket/length.js +44 -0
  120. package/dist/mqttPacket/length.js.map +1 -0
  121. package/dist/mqttPacket/mod.d.ts +122 -0
  122. package/dist/mqttPacket/mod.d.ts.map +1 -0
  123. package/dist/mqttPacket/mod.js +77 -0
  124. package/dist/mqttPacket/mod.js.map +1 -0
  125. package/dist/mqttPacket/pingreq.d.ts +15 -0
  126. package/dist/mqttPacket/pingreq.d.ts.map +1 -0
  127. package/dist/mqttPacket/pingreq.js +16 -0
  128. package/dist/mqttPacket/pingreq.js.map +1 -0
  129. package/dist/mqttPacket/pingres.d.ts +16 -0
  130. package/dist/mqttPacket/pingres.d.ts.map +1 -0
  131. package/dist/mqttPacket/pingres.js +15 -0
  132. package/dist/mqttPacket/pingres.js.map +1 -0
  133. package/dist/mqttPacket/puback.d.ts +16 -0
  134. package/dist/mqttPacket/puback.d.ts.map +1 -0
  135. package/dist/mqttPacket/puback.js +21 -0
  136. package/dist/mqttPacket/puback.js.map +1 -0
  137. package/dist/mqttPacket/pubcomp.d.ts +17 -0
  138. package/dist/mqttPacket/pubcomp.d.ts.map +1 -0
  139. package/dist/mqttPacket/pubcomp.js +21 -0
  140. package/dist/mqttPacket/pubcomp.js.map +1 -0
  141. package/dist/mqttPacket/publish.d.ts +22 -0
  142. package/dist/mqttPacket/publish.d.ts.map +1 -0
  143. package/dist/mqttPacket/publish.js +52 -0
  144. package/dist/mqttPacket/publish.js.map +1 -0
  145. package/dist/mqttPacket/pubrec.d.ts +17 -0
  146. package/dist/mqttPacket/pubrec.d.ts.map +1 -0
  147. package/dist/mqttPacket/pubrec.js +21 -0
  148. package/dist/mqttPacket/pubrec.js.map +1 -0
  149. package/dist/mqttPacket/pubrel.d.ts +17 -0
  150. package/dist/mqttPacket/pubrel.d.ts.map +1 -0
  151. package/dist/mqttPacket/pubrel.js +21 -0
  152. package/dist/mqttPacket/pubrel.js.map +1 -0
  153. package/dist/mqttPacket/suback.d.ts +18 -0
  154. package/dist/mqttPacket/suback.d.ts.map +1 -0
  155. package/dist/mqttPacket/suback.js +30 -0
  156. package/dist/mqttPacket/suback.js.map +1 -0
  157. package/dist/mqttPacket/subscribe.d.ts +24 -0
  158. package/dist/mqttPacket/subscribe.d.ts.map +1 -0
  159. package/dist/mqttPacket/subscribe.js +53 -0
  160. package/dist/mqttPacket/subscribe.js.map +1 -0
  161. package/dist/mqttPacket/types.d.ts +48 -0
  162. package/dist/mqttPacket/types.d.ts.map +1 -0
  163. package/dist/mqttPacket/types.js +2 -0
  164. package/dist/mqttPacket/types.js.map +1 -0
  165. package/dist/mqttPacket/unsuback.d.ts +17 -0
  166. package/dist/mqttPacket/unsuback.d.ts.map +1 -0
  167. package/dist/mqttPacket/unsuback.js +21 -0
  168. package/dist/mqttPacket/unsuback.js.map +1 -0
  169. package/dist/mqttPacket/unsubscribe.d.ts +17 -0
  170. package/dist/mqttPacket/unsubscribe.d.ts.map +1 -0
  171. package/dist/mqttPacket/unsubscribe.js +37 -0
  172. package/dist/mqttPacket/unsubscribe.js.map +1 -0
  173. package/dist/mqttPacket/validators.d.ts +5 -0
  174. package/dist/mqttPacket/validators.d.ts.map +1 -0
  175. package/dist/mqttPacket/validators.js +16 -0
  176. package/dist/mqttPacket/validators.js.map +1 -0
  177. package/dist/node/tcpClient.d.ts +18 -0
  178. package/dist/node/tcpClient.d.ts.map +1 -0
  179. package/dist/node/tcpClient.js +82 -0
  180. package/dist/node/tcpClient.js.map +1 -0
  181. package/dist/node/tcpServer.d.ts +17 -0
  182. package/dist/node/tcpServer.d.ts.map +1 -0
  183. package/dist/node/tcpServer.js +51 -0
  184. package/dist/node/tcpServer.js.map +1 -0
  185. package/dist/node/wrapNodeSocket.d.ts +12 -0
  186. package/dist/node/wrapNodeSocket.d.ts.map +1 -0
  187. package/dist/node/wrapNodeSocket.js +57 -0
  188. package/dist/node/wrapNodeSocket.js.map +1 -0
  189. package/dist/persistence/deps.d.ts +5 -0
  190. package/dist/persistence/deps.d.ts.map +1 -0
  191. package/dist/persistence/deps.js +4 -0
  192. package/dist/persistence/deps.js.map +1 -0
  193. package/dist/persistence/memory/memoryPersistence.d.ts +28 -0
  194. package/dist/persistence/memory/memoryPersistence.d.ts.map +1 -0
  195. package/dist/persistence/memory/memoryPersistence.js +119 -0
  196. package/dist/persistence/memory/memoryPersistence.js.map +1 -0
  197. package/dist/persistence/persistence.d.ts +24 -0
  198. package/dist/persistence/persistence.d.ts.map +1 -0
  199. package/dist/persistence/persistence.js +2 -0
  200. package/dist/persistence/persistence.js.map +1 -0
  201. package/dist/persistence/store.d.ts +13 -0
  202. package/dist/persistence/store.d.ts.map +1 -0
  203. package/dist/persistence/store.js +2 -0
  204. package/dist/persistence/store.js.map +1 -0
  205. package/dist/server/context.d.ts +45 -0
  206. package/dist/server/context.d.ts.map +1 -0
  207. package/dist/server/context.js +101 -0
  208. package/dist/server/context.js.map +1 -0
  209. package/dist/server/deps.d.ts +10 -0
  210. package/dist/server/deps.d.ts.map +1 -0
  211. package/dist/server/deps.js +6 -0
  212. package/dist/server/deps.js.map +1 -0
  213. package/dist/server/handlers/handleConnect.d.ts +9 -0
  214. package/dist/server/handlers/handleConnect.d.ts.map +1 -0
  215. package/dist/server/handlers/handleConnect.js +81 -0
  216. package/dist/server/handlers/handleConnect.js.map +1 -0
  217. package/dist/server/handlers/handleDisconnect.d.ts +8 -0
  218. package/dist/server/handlers/handleDisconnect.d.ts.map +1 -0
  219. package/dist/server/handlers/handleDisconnect.js +10 -0
  220. package/dist/server/handlers/handleDisconnect.js.map +1 -0
  221. package/dist/server/handlers/handlePacket.d.ts +11 -0
  222. package/dist/server/handlers/handlePacket.d.ts.map +1 -0
  223. package/dist/server/handlers/handlePacket.js +66 -0
  224. package/dist/server/handlers/handlePacket.js.map +1 -0
  225. package/dist/server/handlers/handlePingreq.d.ts +8 -0
  226. package/dist/server/handlers/handlePingreq.d.ts.map +1 -0
  227. package/dist/server/handlers/handlePingreq.js +12 -0
  228. package/dist/server/handlers/handlePingreq.js.map +1 -0
  229. package/dist/server/handlers/handlePuback.d.ts +13 -0
  230. package/dist/server/handlers/handlePuback.d.ts.map +1 -0
  231. package/dist/server/handlers/handlePuback.js +17 -0
  232. package/dist/server/handlers/handlePuback.js.map +1 -0
  233. package/dist/server/handlers/handlePubcomp.d.ts +12 -0
  234. package/dist/server/handlers/handlePubcomp.d.ts.map +1 -0
  235. package/dist/server/handlers/handlePubcomp.js +15 -0
  236. package/dist/server/handlers/handlePubcomp.js.map +1 -0
  237. package/dist/server/handlers/handlePublish.d.ts +11 -0
  238. package/dist/server/handlers/handlePublish.d.ts.map +1 -0
  239. package/dist/server/handlers/handlePublish.js +55 -0
  240. package/dist/server/handlers/handlePublish.js.map +1 -0
  241. package/dist/server/handlers/handlePubrec.d.ts +15 -0
  242. package/dist/server/handlers/handlePubrec.d.ts.map +1 -0
  243. package/dist/server/handlers/handlePubrec.js +24 -0
  244. package/dist/server/handlers/handlePubrec.js.map +1 -0
  245. package/dist/server/handlers/handlePubrel.d.ts +16 -0
  246. package/dist/server/handlers/handlePubrel.d.ts.map +1 -0
  247. package/dist/server/handlers/handlePubrel.js +28 -0
  248. package/dist/server/handlers/handlePubrel.js.map +1 -0
  249. package/dist/server/handlers/handleSubscribe.d.ts +13 -0
  250. package/dist/server/handlers/handleSubscribe.d.ts.map +1 -0
  251. package/dist/server/handlers/handleSubscribe.js +57 -0
  252. package/dist/server/handlers/handleSubscribe.js.map +1 -0
  253. package/dist/server/handlers/handleUnsubscribe.d.ts +10 -0
  254. package/dist/server/handlers/handleUnsubscribe.d.ts.map +1 -0
  255. package/dist/server/handlers/handleUnsubscribe.js +19 -0
  256. package/dist/server/handlers/handleUnsubscribe.js.map +1 -0
  257. package/dist/server/mod.d.ts +11 -0
  258. package/dist/server/mod.d.ts.map +1 -0
  259. package/dist/server/mod.js +8 -0
  260. package/dist/server/mod.js.map +1 -0
  261. package/dist/server/server.d.ts +27 -0
  262. package/dist/server/server.d.ts.map +1 -0
  263. package/dist/server/server.js +48 -0
  264. package/dist/server/server.js.map +1 -0
  265. package/dist/socket/socket.d.ts +29 -0
  266. package/dist/socket/socket.d.ts.map +1 -0
  267. package/dist/socket/socket.js +37 -0
  268. package/dist/socket/socket.js.map +1 -0
  269. package/dist/timer/timer.d.ts +13 -0
  270. package/dist/timer/timer.d.ts.map +1 -0
  271. package/dist/timer/timer.js +41 -0
  272. package/dist/timer/timer.js.map +1 -0
  273. package/dist/trie/trie.d.ts +21 -0
  274. package/dist/trie/trie.d.ts.map +1 -0
  275. package/dist/trie/trie.js +96 -0
  276. package/dist/trie/trie.js.map +1 -0
  277. package/dist/utils/args.d.ts +28 -0
  278. package/dist/utils/args.d.ts.map +1 -0
  279. package/dist/utils/args.js +76 -0
  280. package/dist/utils/args.js.map +1 -0
  281. package/dist/utils/assert.d.ts +10 -0
  282. package/dist/utils/assert.d.ts.map +1 -0
  283. package/dist/utils/assert.js +21 -0
  284. package/dist/utils/assert.js.map +1 -0
  285. package/dist/utils/asyncQueue.d.ts +28 -0
  286. package/dist/utils/asyncQueue.d.ts.map +1 -0
  287. package/dist/utils/asyncQueue.js +70 -0
  288. package/dist/utils/asyncQueue.js.map +1 -0
  289. package/dist/utils/deferred.d.ts +10 -0
  290. package/dist/utils/deferred.d.ts.map +1 -0
  291. package/dist/utils/deferred.js +15 -0
  292. package/dist/utils/deferred.js.map +1 -0
  293. package/dist/utils/logger.d.ts +63 -0
  294. package/dist/utils/logger.d.ts.map +1 -0
  295. package/dist/utils/logger.js +59 -0
  296. package/dist/utils/logger.js.map +1 -0
  297. package/dist/utils/mod.d.ts +13 -0
  298. package/dist/utils/mod.d.ts.map +1 -0
  299. package/dist/utils/mod.js +12 -0
  300. package/dist/utils/mod.js.map +1 -0
  301. package/dist/utils/nextTick.d.ts +17 -0
  302. package/dist/utils/nextTick.d.ts.map +1 -0
  303. package/dist/utils/nextTick.js +19 -0
  304. package/dist/utils/nextTick.js.map +1 -0
  305. package/dist/utils/platform.d.ts +5 -0
  306. package/dist/utils/platform.d.ts.map +1 -0
  307. package/dist/utils/platform.js +8 -0
  308. package/dist/utils/platform.js.map +1 -0
  309. package/package.json +2 -3
@@ -0,0 +1,34 @@
1
+ import { PacketType } from "../deps.js";
2
+ /**
3
+ * Handles incoming MQTT publish packets based on their QoS level
4
+ * @param ctx - The MQTT connection context
5
+ * @param packet - The incoming publish packet to handle
6
+ * @returns Promise that resolves when packet is handled
7
+ */
8
+ export async function handlePublish(ctx, packet) {
9
+ const qos = packet.qos || 0;
10
+ if (qos === 0) {
11
+ ctx.receivePublish(packet);
12
+ return;
13
+ }
14
+ if (packet.id !== undefined) {
15
+ // qos 1
16
+ if (qos === 1) {
17
+ ctx.receivePublish(packet);
18
+ await ctx.send({
19
+ type: PacketType.puback,
20
+ id: packet.id,
21
+ });
22
+ return;
23
+ }
24
+ // qos 2
25
+ if (ctx.store) {
26
+ ctx.store.pendingIncoming.set(packet.id, packet);
27
+ await ctx.send({
28
+ type: PacketType.pubrec,
29
+ id: packet.id,
30
+ });
31
+ }
32
+ }
33
+ }
34
+ //# sourceMappingURL=handlePublish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlePublish.js","sourceRoot":"","sources":["../../../client/handlers/handlePublish.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAsB,MAAM,YAAY,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAY,EAAE,MAAqB;IACrE,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5B,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QACd,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC5B,QAAQ;QACR,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;YACd,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC3B,MAAM,GAAG,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,UAAU,CAAC,MAAM;gBACvB,EAAE,EAAE,MAAM,CAAC,EAAE;aACd,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,QAAQ;QACR,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACjD,MAAM,GAAG,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,UAAU,CAAC,MAAM;gBACvB,EAAE,EAAE,MAAM,CAAC,EAAE;aACd,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { Context } from "../context.ts";
2
+ import { type PubrecPacket } from "../deps.ts";
3
+ /**
4
+ * Handles PUBREC (Publish Received) packets for QoS 2 message flow
5
+ * It is the second packet of the QoS 2 protocol exchange.
6
+ * @param ctx - The connection context containing message stores and send function
7
+ * @param packet - The received PUBREC packet
8
+ * @description
9
+ * When a PUBREC packet is received:
10
+ * 1. Checks if there is a pending outgoing message with matching packet ID
11
+ * 2. Creates a PUBREL packet to acknowledge the PUBREC
12
+ * 3. Add the packet ID to pendingAckOutgoing store
13
+ * 4. Removes the message from pendingOutgoing store
14
+ * 5. Sends the PUBREL packet
15
+ */
16
+ export declare function handlePubrec(ctx: Context, packet: PubrecPacket): Promise<void>;
17
+ //# sourceMappingURL=handlePubrec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlePubrec.d.ts","sourceRoot":"","sources":["../../../client/handlers/handlePubrec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAc,KAAK,YAAY,EAAqB,MAAM,YAAY,CAAC;AAE9E;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAWf"}
@@ -0,0 +1,27 @@
1
+ import { PacketType } from "../deps.js";
2
+ /**
3
+ * Handles PUBREC (Publish Received) packets for QoS 2 message flow
4
+ * It is the second packet of the QoS 2 protocol exchange.
5
+ * @param ctx - The connection context containing message stores and send function
6
+ * @param packet - The received PUBREC packet
7
+ * @description
8
+ * When a PUBREC packet is received:
9
+ * 1. Checks if there is a pending outgoing message with matching packet ID
10
+ * 2. Creates a PUBREL packet to acknowledge the PUBREC
11
+ * 3. Add the packet ID to pendingAckOutgoing store
12
+ * 4. Removes the message from pendingOutgoing store
13
+ * 5. Sends the PUBREL packet
14
+ */
15
+ export async function handlePubrec(ctx, packet) {
16
+ const id = packet.id;
17
+ const ack = {
18
+ type: PacketType.pubrel,
19
+ id,
20
+ };
21
+ if (ctx.store.pendingOutgoing.has(id)) {
22
+ ctx.store.pendingAckOutgoing.set(id, ack);
23
+ ctx.store.pendingOutgoing.delete(id);
24
+ await ctx.send(ack);
25
+ }
26
+ }
27
+ //# sourceMappingURL=handlePubrec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlePubrec.js","sourceRoot":"","sources":["../../../client/handlers/handlePubrec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAwC,MAAM,YAAY,CAAC;AAE9E;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAY,EACZ,MAAoB;IAEpB,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;IACrB,MAAM,GAAG,GAAiB;QACxB,IAAI,EAAE,UAAU,CAAC,MAAM;QACvB,EAAE;KACH,CAAC;IACF,IAAI,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC1C,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { Context } from "../context.ts";
2
+ import { type PubrelPacket } from "../deps.ts";
3
+ /**
4
+ * Handles a PUBREL packet in the MQTT QoS 2 flow
5
+ * It is the third packet of the QoS 2 protocol exchange
6
+ * and a response to the PUBREC packet
7
+ *
8
+ * It uses Method A from the MQTT specification
9
+ * @param ctx - The MQTT client context
10
+ * @param packet - The PUBREL packet received
11
+ * @description
12
+ * When a PUBREL packet is received:
13
+ * 1. If there is a matching pending incoming message:
14
+ * - Delivers the stored message to the application
15
+ * - Removes the message from pending incoming store
16
+ * - Sends PUBCOMP packet as acknowledgement
17
+ * 2. If no matching message found, silently ignores
18
+ */
19
+ export declare function handlePubrel(ctx: Context, packet: PubrelPacket): Promise<void>;
20
+ //# sourceMappingURL=handlePubrel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlePubrel.d.ts","sourceRoot":"","sources":["../../../client/handlers/handlePubrel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAE3D;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAaf"}
@@ -0,0 +1,32 @@
1
+ import { PacketType } from "../deps.js";
2
+ /**
3
+ * Handles a PUBREL packet in the MQTT QoS 2 flow
4
+ * It is the third packet of the QoS 2 protocol exchange
5
+ * and a response to the PUBREC packet
6
+ *
7
+ * It uses Method A from the MQTT specification
8
+ * @param ctx - The MQTT client context
9
+ * @param packet - The PUBREL packet received
10
+ * @description
11
+ * When a PUBREL packet is received:
12
+ * 1. If there is a matching pending incoming message:
13
+ * - Delivers the stored message to the application
14
+ * - Removes the message from pending incoming store
15
+ * - Sends PUBCOMP packet as acknowledgement
16
+ * 2. If no matching message found, silently ignores
17
+ */
18
+ export async function handlePubrel(ctx, packet) {
19
+ const id = packet.id;
20
+ if (ctx.store.pendingIncoming.has(id)) {
21
+ const storedPacket = ctx.store.pendingIncoming.get(id);
22
+ if (storedPacket) {
23
+ ctx.receivePublish(storedPacket);
24
+ ctx.store.pendingIncoming.delete(id);
25
+ await ctx.send({
26
+ type: PacketType.pubcomp,
27
+ id,
28
+ });
29
+ }
30
+ }
31
+ }
32
+ //# sourceMappingURL=handlePubrel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlePubrel.js","sourceRoot":"","sources":["../../../client/handlers/handlePubrel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAqB,MAAM,YAAY,CAAC;AAE3D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAY,EACZ,MAAoB;IAEpB,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;IACrB,IAAI,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACtC,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,YAAY,EAAE,CAAC;YACjB,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YACjC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACrC,MAAM,GAAG,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,UAAU,CAAC,OAAO;gBACxB,EAAE;aACH,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { Context } from "../context.ts";
2
+ import type { SubackPacket } from "../deps.ts";
3
+ /**
4
+ * Handles SUBACK packets received from the server
5
+ * @param ctx - The MQTT client context
6
+ * @param packet - The SUBACK packet containing subscription confirmations
7
+ * @description
8
+ * - Processes SUBACK packets sent by server to confirm SUBSCRIBE requests
9
+ * - Removes the packet ID from pending outgoing messages
10
+ * - Notifies the client about granted QoS levels for each subscription
11
+ */
12
+ export declare function handleSuback(ctx: Context, packet: SubackPacket): void;
13
+ //# sourceMappingURL=handleSuback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleSuback.d.ts","sourceRoot":"","sources":["../../../client/handlers/handleSuback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAIrE"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Handles SUBACK packets received from the server
3
+ * @param ctx - The MQTT client context
4
+ * @param packet - The SUBACK packet containing subscription confirmations
5
+ * @description
6
+ * - Processes SUBACK packets sent by server to confirm SUBSCRIBE requests
7
+ * - Removes the packet ID from pending outgoing messages
8
+ * - Notifies the client about granted QoS levels for each subscription
9
+ */
10
+ export function handleSuback(ctx, packet) {
11
+ const id = packet.id;
12
+ ctx.store.pendingOutgoing.delete(id);
13
+ ctx.receiveSuback(id, packet.returnCodes);
14
+ }
15
+ //# sourceMappingURL=handleSuback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleSuback.js","sourceRoot":"","sources":["../../../client/handlers/handleSuback.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY,EAAE,MAAoB;IAC7D,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;IACrB,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrC,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { Context } from "../context.ts";
2
+ import type { UnsubackPacket } from "../deps.ts";
3
+ /**
4
+ * Handles the UNSUBACK packet received from the server
5
+ * @param ctx - The MQTT client context
6
+ * @param packet - The UNSUBACK packet received from the server
7
+ * @description
8
+ * The UNSUBACK Packet is sent by the Server to the Client to confirm receipt of
9
+ * an UNSUBSCRIBE Packet.
10
+ * When received, it removes the pending outgoing request and completes the corresponding
11
+ * unsubscribe operation.
12
+ */
13
+ export declare function handleUnsuback(ctx: Context, packet: UnsubackPacket): void;
14
+ //# sourceMappingURL=handleUnsuback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleUnsuback.d.ts","sourceRoot":"","sources":["../../../client/handlers/handleUnsuback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAIzE"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Handles the UNSUBACK packet received from the server
3
+ * @param ctx - The MQTT client context
4
+ * @param packet - The UNSUBACK packet received from the server
5
+ * @description
6
+ * The UNSUBACK Packet is sent by the Server to the Client to confirm receipt of
7
+ * an UNSUBSCRIBE Packet.
8
+ * When received, it removes the pending outgoing request and completes the corresponding
9
+ * unsubscribe operation.
10
+ */
11
+ export function handleUnsuback(ctx, packet) {
12
+ const id = packet.id;
13
+ ctx.store.pendingOutgoing.delete(id);
14
+ ctx.receiveUnsuback(id);
15
+ }
16
+ //# sourceMappingURL=handleUnsuback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleUnsuback.js","sourceRoot":"","sources":["../../../client/handlers/handleUnsuback.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY,EAAE,MAAsB;IACjE,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;IACrB,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * This module provides an MQTT Client interface see the /bin folder for examples
3
+ * @module
4
+ */
5
+ export { Client, DEFAULT_URL } from "./client.ts";
6
+ export type { ConnectParameters, PublishParameters, SubscribeParameters, } from "./client.ts";
7
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../client/mod.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * This module provides an MQTT Client interface see the /bin folder for examples
3
+ * @module
4
+ */
5
+ export { Client, DEFAULT_URL } from "./client.js";
6
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../client/mod.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type { AnyPacket, ConnackPacket, ConnectPacket, DisconnectPacket, Dup, PacketId, Payload, PubackPacket, PubcompPacket, PublishPacket, PubrecPacket, PubrelPacket, ReturnCodes, SubackPacket, SubscribePacket, Topic, UnsubackPacket, UnsubscribePacket, } from "../../mqttPacket/mod.ts";
2
+ export { assert } from "../../utils/mod.ts";
3
+ //# sourceMappingURL=deps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../../client/store/deps.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,SAAS,EACT,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,GAAG,EACH,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,eAAe,EACf,KAAK,EACL,cAAc,EACd,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { assert } from "../../utils/mod.js";
2
+ //# sourceMappingURL=deps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deps.js","sourceRoot":"","sources":["../../../client/store/deps.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @module memoryStore
3
+ */
4
+ import { type PacketId } from "./deps.ts";
5
+ import { type IStore, type PacketStore, type PendingAckOutgoing, type pendingIncoming, type PendingOutgoing, type PendingOutgoingPackets } from "./store.ts";
6
+ /**
7
+ * In-memory implementation of the IStore interface for managing MQTT packet storage
8
+ */
9
+ export declare class MemoryStore implements IStore {
10
+ /** Current packet ID counter */
11
+ private packetId;
12
+ /** Map of pending incoming packets */
13
+ pendingIncoming: PacketStore<pendingIncoming>;
14
+ /** Map of pending outgoing packets */
15
+ pendingOutgoing: PacketStore<PendingOutgoing>;
16
+ /** Map of pending acknowledgment outgoing packets */
17
+ pendingAckOutgoing: PacketStore<PendingAckOutgoing>;
18
+ /**
19
+ * Creates a new MemoryStore instance
20
+ */
21
+ constructor();
22
+ /**
23
+ * Generates the next available packet ID
24
+ * @returns {PacketId} The next available packet ID
25
+ * @throws {Error} If no unused packet ID is available
26
+ */
27
+ nextId(): PacketId;
28
+ /**
29
+ * Asynchronously yields all pending outgoing packets
30
+ * @yields {PendingOutgoingPackets} Pending outgoing packets
31
+ */
32
+ pendingOutgoingPackets(): AsyncGenerator<PendingOutgoingPackets, void, unknown>;
33
+ }
34
+ //# sourceMappingURL=memoryStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoryStore.d.ts","sourceRoot":"","sources":["../../../client/store/memoryStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAU,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAElD,OAAO,EACL,KAAK,MAAM,EAEX,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC5B,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,WAAY,YAAW,MAAM;IACxC,gCAAgC;IAChC,OAAO,CAAC,QAAQ,CAAW;IAE3B,sCAAsC;IACtC,eAAe,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;IAE9C,sCAAsC;IACtC,eAAe,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;IAE9C,qDAAqD;IACrD,kBAAkB,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAEpD;;OAEG;;IAQH;;;;OAIG;IACH,MAAM,IAAI,QAAQ;IAiBlB;;;OAGG;IACI,sBAAsB,IAAI,cAAc,CAC7C,sBAAsB,EACtB,IAAI,EACJ,OAAO,CACR;CAQF"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @module memoryStore
3
+ */
4
+ import { assert } from "./deps.js";
5
+ import { maxPacketId, } from "./store.js";
6
+ /**
7
+ * In-memory implementation of the IStore interface for managing MQTT packet storage
8
+ */
9
+ export class MemoryStore {
10
+ /** Current packet ID counter */
11
+ packetId;
12
+ /** Map of pending incoming packets */
13
+ pendingIncoming;
14
+ /** Map of pending outgoing packets */
15
+ pendingOutgoing;
16
+ /** Map of pending acknowledgment outgoing packets */
17
+ pendingAckOutgoing;
18
+ /**
19
+ * Creates a new MemoryStore instance
20
+ */
21
+ constructor() {
22
+ this.packetId = 0;
23
+ this.pendingIncoming = new Map();
24
+ this.pendingOutgoing = new Map();
25
+ this.pendingAckOutgoing = new Map();
26
+ }
27
+ /**
28
+ * Generates the next available packet ID
29
+ * @returns {PacketId} The next available packet ID
30
+ * @throws {Error} If no unused packet ID is available
31
+ */
32
+ nextId() {
33
+ const currentId = this.packetId;
34
+ do {
35
+ this.packetId++;
36
+ if (this.packetId > maxPacketId) {
37
+ this.packetId = 1;
38
+ }
39
+ } while ((this.pendingIncoming.has(this.packetId) ||
40
+ this.pendingOutgoing.has(this.packetId) ||
41
+ this.pendingAckOutgoing.has(this.packetId)) &&
42
+ this.packetId !== currentId);
43
+ assert(this.packetId !== currentId, "No unused packetId available");
44
+ return this.packetId;
45
+ }
46
+ /**
47
+ * Asynchronously yields all pending outgoing packets
48
+ * @yields {PendingOutgoingPackets} Pending outgoing packets
49
+ */
50
+ async *pendingOutgoingPackets() {
51
+ for (const [_id, packet] of this.pendingAckOutgoing) {
52
+ yield packet;
53
+ }
54
+ for (const [_id, packet] of this.pendingOutgoing) {
55
+ yield packet;
56
+ }
57
+ }
58
+ }
59
+ //# sourceMappingURL=memoryStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoryStore.js","sourceRoot":"","sources":["../../../client/store/memoryStore.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAiB,MAAM,WAAW,CAAC;AAElD,OAAO,EAEL,WAAW,GAMZ,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,OAAO,WAAW;IACtB,gCAAgC;IACxB,QAAQ,CAAW;IAE3B,sCAAsC;IACtC,eAAe,CAA+B;IAE9C,sCAAsC;IACtC,eAAe,CAA+B;IAE9C,qDAAqD;IACrD,kBAAkB,CAAkC;IAEpD;;OAEG;IACH;QACE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChC,GAAG,CAAC;YACF,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,IAAI,CAAC,QAAQ,GAAG,WAAW,EAAE,CAAC;gBAChC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC,QACC,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YACvC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,IAAI,CAAC,QAAQ,KAAK,SAAS,EAC3B;QACF,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,8BAA8B,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,CAAC,sBAAsB;QAK3B,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACpD,MAAM,MAAM,CAAC;QACf,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACjD,MAAM,MAAM,CAAC;QACf,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @module MQTT Store Types
3
+ */
4
+ import type { PacketId, PublishPacket, PubrelPacket, SubscribePacket, UnsubscribePacket } from "./deps.ts";
5
+ /**
6
+ * Maximum value for MQTT packet IDs (65535)
7
+ */
8
+ export declare const maxPacketId = 65535;
9
+ /**
10
+ * Generic type for storing MQTT packets by their packet ID
11
+ * @template T The packet type to store
12
+ */
13
+ export type PacketStore<T> = Map<PacketId, T>;
14
+ /**
15
+ * Type for incoming PUBLISH packets that are pending processing
16
+ */
17
+ export type pendingIncoming = PublishPacket;
18
+ /**
19
+ * Type for outgoing packets (PUBLISH, SUBSCRIBE, UNSUBSCRIBE) that are pending sending
20
+ */
21
+ export type PendingOutgoing = PublishPacket | SubscribePacket | UnsubscribePacket;
22
+ /**
23
+ * Type for outgoing PUBREL packets that are pending acknowledgement
24
+ */
25
+ export type PendingAckOutgoing = PubrelPacket;
26
+ /**
27
+ * Union type of all pending outgoing packet types
28
+ */
29
+ export type PendingOutgoingPackets = PendingAckOutgoing | PendingOutgoing;
30
+ /**
31
+ * Interface defining the storage requirements for MQTT packet state management
32
+ */
33
+ export interface IStore {
34
+ /** Store for incoming packets pending processing */
35
+ pendingIncoming: PacketStore<pendingIncoming>;
36
+ /** Store for outgoing packets pending sending */
37
+ pendingOutgoing: PacketStore<PendingOutgoing>;
38
+ /** Store for outgoing packets pending acknowledgement */
39
+ pendingAckOutgoing: PacketStore<PendingAckOutgoing>;
40
+ /**
41
+ * Generator that yields pending outgoing packets
42
+ * @returns AsyncGenerator that yields PendingOutgoing or PubrelPacket packets
43
+ */
44
+ pendingOutgoingPackets(): AsyncGenerator<PendingOutgoing | PubrelPacket, void, unknown>;
45
+ }
46
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../client/store/store.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,eAAe,EACf,iBAAiB,EAClB,MAAM,WAAW,CAAC;AAEnB;;GAEG;AACH,eAAO,MAAM,WAAW,QAAS,CAAC;AAElC;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,aAAa,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,aAAa,GACb,eAAe,GACf,iBAAiB,CAAC;AAEtB;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG,eAAe,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,oDAAoD;IACpD,eAAe,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;IAE9C,iDAAiD;IACjD,eAAe,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;IAE9C,yDAAyD;IACzD,kBAAkB,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAEpD;;;OAGG;IACH,sBAAsB,IAAI,cAAc,CACtC,eAAe,GAAG,YAAY,EAC9B,IAAI,EACJ,OAAO,CACR,CAAC;CACH"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Maximum value for MQTT packet IDs (65535)
3
+ */
4
+ export const maxPacketId = 0xffff;
5
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../client/store/store.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { type AnyPacket } from "../mqttPacket/mod.ts";
2
+ import type { SockConn } from "../socket/socket.ts";
3
+ import { Conn } from "../socket/socket.ts";
4
+ export declare const MqttConnError: {
5
+ readonly invalidPacket: "Invalid Packet";
6
+ readonly packetTooLarge: "Packet too large";
7
+ readonly UnexpectedEof: "Unexpected EOF";
8
+ };
9
+ export interface IMqttConn extends AsyncIterable<AnyPacket> {
10
+ readonly conn: Conn;
11
+ readonly isClosed: boolean;
12
+ readonly reason: string | undefined;
13
+ [Symbol.asyncIterator](): AsyncIterableIterator<AnyPacket>;
14
+ send(data: AnyPacket): Promise<void>;
15
+ close(): void;
16
+ }
17
+ /** Read MQTT packet
18
+ * @throws `Error` if packet is invalid
19
+ */
20
+ export declare function readPacket(conn: Conn, maxPacketSize: number): Promise<AnyPacket>;
21
+ export declare class MqttConn implements IMqttConn {
22
+ readonly conn: Conn;
23
+ private readonly maxPacketSize;
24
+ private _reason;
25
+ private _isClosed;
26
+ constructor({ conn, maxPacketSize, }: {
27
+ conn: SockConn;
28
+ maxPacketSize?: number;
29
+ });
30
+ get reason(): string | undefined;
31
+ [Symbol.asyncIterator](): AsyncIterableIterator<AnyPacket>;
32
+ send(data: AnyPacket): Promise<void>;
33
+ get isClosed(): boolean;
34
+ close(): void;
35
+ }
36
+ //# sourceMappingURL=mqttConn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mqttConn.d.ts","sourceRoot":"","sources":["../../mqttConn/mqttConn.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EAKf,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,eAAO,MAAM,aAAa;;;;CAIhB,CAAC;AAEX,MAAM,WAAW,SAAU,SAAQ,aAAa,CAAC,SAAS,CAAC;IACzD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC3D,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,KAAK,IAAI,IAAI,CAAC;CACf;AAoBD;;GAEG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,SAAS,CAAC,CAmBpB;AAED,qBAAa,QAAS,YAAW,SAAS;IACxC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,SAAS,CAAS;gBAEd,EACV,IAAI,EACJ,aAAa,GACd,EAAE;QACD,IAAI,EAAE,QAAQ,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB;IAKD,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAEM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,SAAS,CAAC;IAkB3D,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1C,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,KAAK,IAAI,IAAI;CAUd"}
@@ -0,0 +1,105 @@
1
+ import { decodePayload, encode, getLengthDecoder, } from "../mqttPacket/mod.js";
2
+ import { assert } from "../utils/mod.js";
3
+ import { Conn } from "../socket/socket.js";
4
+ export const MqttConnError = {
5
+ invalidPacket: "Invalid Packet",
6
+ packetTooLarge: "Packet too large",
7
+ UnexpectedEof: "Unexpected EOF",
8
+ };
9
+ async function readByte(conn) {
10
+ const buf = new Uint8Array(1);
11
+ const bytesRead = await conn.read(buf);
12
+ assert(bytesRead !== null, MqttConnError.UnexpectedEof);
13
+ assert(bytesRead !== 0, MqttConnError.UnexpectedEof);
14
+ return buf[0];
15
+ }
16
+ async function readFull(conn, buf) {
17
+ let bytesRead = 0;
18
+ while (bytesRead < buf.length) {
19
+ const read = await conn.read(buf.subarray(bytesRead));
20
+ assert(read !== null, MqttConnError.UnexpectedEof);
21
+ assert(read !== 0, MqttConnError.UnexpectedEof);
22
+ bytesRead += read;
23
+ }
24
+ }
25
+ /** Read MQTT packet
26
+ * @throws `Error` if packet is invalid
27
+ */
28
+ export async function readPacket(conn, maxPacketSize) {
29
+ // fixed header is 1 byte of type + flags
30
+ // + a maximum of 4 bytes to encode the remaining length
31
+ const decodeLength = getLengthDecoder();
32
+ const firstByte = await readByte(conn);
33
+ let result;
34
+ do {
35
+ const byte = await readByte(conn);
36
+ result = decodeLength(byte);
37
+ } while (!result.done);
38
+ const remainingLength = result.length;
39
+ assert(remainingLength < maxPacketSize - 1, MqttConnError.packetTooLarge);
40
+ const packetBuf = new Uint8Array(remainingLength);
41
+ // read the rest of the packet
42
+ await readFull(conn, packetBuf);
43
+ const packet = decodePayload(firstByte, packetBuf);
44
+ assert(packet !== null, MqttConnError.UnexpectedEof);
45
+ return packet;
46
+ }
47
+ export class MqttConn {
48
+ conn;
49
+ maxPacketSize;
50
+ _reason = undefined;
51
+ _isClosed = false;
52
+ constructor({ conn, maxPacketSize, }) {
53
+ this.conn = new Conn(conn);
54
+ this.maxPacketSize = maxPacketSize || 2 * 1024 * 1024;
55
+ }
56
+ get reason() {
57
+ return this._reason;
58
+ }
59
+ async *[Symbol.asyncIterator]() {
60
+ while (!this._isClosed) {
61
+ try {
62
+ yield await readPacket(this.conn, this.maxPacketSize);
63
+ }
64
+ catch (err) {
65
+ if (err instanceof Error) {
66
+ if (err.name === "PartialReadError") {
67
+ err.message = MqttConnError.UnexpectedEof;
68
+ }
69
+ this._reason = err.message;
70
+ }
71
+ // packet too large, malformed packet or connection closed
72
+ this.close();
73
+ break;
74
+ }
75
+ }
76
+ }
77
+ async send(data) {
78
+ try {
79
+ await this.conn.write(encode(data));
80
+ }
81
+ catch (err) {
82
+ if (err instanceof Error) {
83
+ this._reason = err.message;
84
+ }
85
+ this.close();
86
+ }
87
+ }
88
+ get isClosed() {
89
+ return this._isClosed;
90
+ }
91
+ close() {
92
+ if (this.isClosed)
93
+ return;
94
+ try {
95
+ this.conn.close();
96
+ }
97
+ catch (e) {
98
+ console.error(e);
99
+ }
100
+ finally {
101
+ this._isClosed = true;
102
+ }
103
+ }
104
+ }
105
+ //# sourceMappingURL=mqttConn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mqttConn.js","sourceRoot":"","sources":["../../mqttConn/mqttConn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Possible MQTT authentication results
3
+ */
4
+ export declare const AuthenticationResult: {
5
+ readonly ok: 0;
6
+ readonly unacceptableProtocol: 1;
7
+ readonly rejectedUsername: 2;
8
+ readonly serverUnavailable: 3;
9
+ readonly badUsernameOrPassword: 4;
10
+ readonly notAuthorized: 5;
11
+ };
12
+ /**
13
+ * Reverse lookup for AuthenticationResult
14
+ */
15
+ export declare const AuthenticationResultByNumber: Record<number, string>;
16
+ //# sourceMappingURL=AuthenticationResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthenticationResult.d.ts","sourceRoot":"","sources":["../../mqttPacket/AuthenticationResult.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;CAOvB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAG7D,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Possible MQTT authentication results
3
+ */
4
+ export const AuthenticationResult = {
5
+ ok: 0,
6
+ unacceptableProtocol: 1,
7
+ rejectedUsername: 2,
8
+ serverUnavailable: 3,
9
+ badUsernameOrPassword: 4,
10
+ notAuthorized: 5,
11
+ };
12
+ /**
13
+ * Reverse lookup for AuthenticationResult
14
+ */
15
+ export const AuthenticationResultByNumber = Object
16
+ .fromEntries(Object.entries(AuthenticationResult).map(([k, v]) => [v, k]));
17
+ //# sourceMappingURL=AuthenticationResult.js.map