@seriousme/opifex 1.9.4 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/README.md +37 -26
  2. package/bin/conformanceServer.ts +3 -2
  3. package/bin/demoServer.ts +3 -2
  4. package/bin/mqtt.ts +127 -118
  5. package/client/client.ts +61 -21
  6. package/client/context.ts +71 -30
  7. package/client/deps.ts +5 -0
  8. package/client/handlers/handleConnack.ts +17 -5
  9. package/client/handlers/handlePublish.ts +4 -1
  10. package/client/handlers/handlePubrec.ts +3 -1
  11. package/client/handlers/handlePubrel.ts +3 -1
  12. package/client/handlers/handleSuback.ts +3 -1
  13. package/client/mod.ts +8 -1
  14. package/client/store/memoryStore.ts +2 -1
  15. package/deno/tcpClient.ts +1 -1
  16. package/dev_utils/dummyConn.ts +17 -2
  17. package/dist/bin/conformanceServer.js +3 -2
  18. package/dist/bin/conformanceServer.js.map +1 -1
  19. package/dist/bin/demoServer.js +3 -2
  20. package/dist/bin/demoServer.js.map +1 -1
  21. package/dist/bin/mqtt.d.ts +29 -0
  22. package/dist/bin/mqtt.d.ts.map +1 -1
  23. package/dist/bin/mqtt.js +102 -97
  24. package/dist/bin/mqtt.js.map +1 -1
  25. package/dist/client/client.d.ts +16 -5
  26. package/dist/client/client.d.ts.map +1 -1
  27. package/dist/client/client.js +36 -15
  28. package/dist/client/client.js.map +1 -1
  29. package/dist/client/context.d.ts +8 -3
  30. package/dist/client/context.d.ts.map +1 -1
  31. package/dist/client/context.js +51 -21
  32. package/dist/client/context.js.map +1 -1
  33. package/dist/client/deps.d.ts +3 -2
  34. package/dist/client/deps.d.ts.map +1 -1
  35. package/dist/client/deps.js +2 -1
  36. package/dist/client/deps.js.map +1 -1
  37. package/dist/client/handlers/handleConnack.d.ts +1 -1
  38. package/dist/client/handlers/handleConnack.d.ts.map +1 -1
  39. package/dist/client/handlers/handleConnack.js +14 -5
  40. package/dist/client/handlers/handleConnack.js.map +1 -1
  41. package/dist/client/handlers/handlePublish.d.ts +1 -1
  42. package/dist/client/handlers/handlePublish.d.ts.map +1 -1
  43. package/dist/client/handlers/handlePublish.js +2 -0
  44. package/dist/client/handlers/handlePublish.js.map +1 -1
  45. package/dist/client/handlers/handlePubrec.d.ts +1 -1
  46. package/dist/client/handlers/handlePubrec.d.ts.map +1 -1
  47. package/dist/client/handlers/handlePubrec.js +1 -0
  48. package/dist/client/handlers/handlePubrec.js.map +1 -1
  49. package/dist/client/handlers/handlePubrel.d.ts +1 -1
  50. package/dist/client/handlers/handlePubrel.d.ts.map +1 -1
  51. package/dist/client/handlers/handlePubrel.js +1 -0
  52. package/dist/client/handlers/handlePubrel.js.map +1 -1
  53. package/dist/client/handlers/handleSuback.d.ts.map +1 -1
  54. package/dist/client/handlers/handleSuback.js +3 -1
  55. package/dist/client/handlers/handleSuback.js.map +1 -1
  56. package/dist/client/mod.d.ts +3 -1
  57. package/dist/client/mod.d.ts.map +1 -1
  58. package/dist/client/mod.js +2 -1
  59. package/dist/client/mod.js.map +1 -1
  60. package/dist/client/store/memoryStore.d.ts +1 -1
  61. package/dist/client/store/memoryStore.d.ts.map +1 -1
  62. package/dist/client/store/memoryStore.js.map +1 -1
  63. package/dist/mqttConn/mqttConn.d.ts +13 -8
  64. package/dist/mqttConn/mqttConn.d.ts.map +1 -1
  65. package/dist/mqttConn/mqttConn.js +27 -12
  66. package/dist/mqttConn/mqttConn.js.map +1 -1
  67. package/dist/mqttPacket/PacketType.d.ts +1 -0
  68. package/dist/mqttPacket/PacketType.d.ts.map +1 -1
  69. package/dist/mqttPacket/PacketType.js +1 -0
  70. package/dist/mqttPacket/PacketType.js.map +1 -1
  71. package/dist/mqttPacket/Properties.d.ts +157 -0
  72. package/dist/mqttPacket/Properties.d.ts.map +1 -0
  73. package/dist/mqttPacket/Properties.js +177 -0
  74. package/dist/mqttPacket/Properties.js.map +1 -0
  75. package/dist/mqttPacket/ReasonCode.d.ts +74 -0
  76. package/dist/mqttPacket/ReasonCode.d.ts.map +1 -0
  77. package/dist/mqttPacket/ReasonCode.js +230 -0
  78. package/dist/mqttPacket/ReasonCode.js.map +1 -0
  79. package/dist/mqttPacket/RetainHandling.d.ts +12 -0
  80. package/dist/mqttPacket/RetainHandling.d.ts.map +1 -0
  81. package/dist/mqttPacket/RetainHandling.js +12 -0
  82. package/dist/mqttPacket/RetainHandling.js.map +1 -0
  83. package/dist/mqttPacket/auth.d.ts +21 -0
  84. package/dist/mqttPacket/auth.d.ts.map +1 -0
  85. package/dist/mqttPacket/auth.js +34 -0
  86. package/dist/mqttPacket/auth.js.map +1 -0
  87. package/dist/mqttPacket/connack.d.ts +19 -11
  88. package/dist/mqttPacket/connack.d.ts.map +1 -1
  89. package/dist/mqttPacket/connack.js +43 -15
  90. package/dist/mqttPacket/connack.js.map +1 -1
  91. package/dist/mqttPacket/connect.d.ts +30 -11
  92. package/dist/mqttPacket/connect.d.ts.map +1 -1
  93. package/dist/mqttPacket/connect.js +106 -30
  94. package/dist/mqttPacket/connect.js.map +1 -1
  95. package/dist/mqttPacket/decoder.d.ts +42 -3
  96. package/dist/mqttPacket/decoder.d.ts.map +1 -1
  97. package/dist/mqttPacket/decoder.js +135 -4
  98. package/dist/mqttPacket/decoder.js.map +1 -1
  99. package/dist/mqttPacket/disconnect.d.ts +15 -9
  100. package/dist/mqttPacket/disconnect.d.ts.map +1 -1
  101. package/dist/mqttPacket/disconnect.js +45 -6
  102. package/dist/mqttPacket/disconnect.js.map +1 -1
  103. package/dist/mqttPacket/encoder.d.ts +57 -8
  104. package/dist/mqttPacket/encoder.d.ts.map +1 -1
  105. package/dist/mqttPacket/encoder.js +185 -13
  106. package/dist/mqttPacket/encoder.js.map +1 -1
  107. package/dist/mqttPacket/length.d.ts.map +1 -1
  108. package/dist/mqttPacket/length.js +3 -2
  109. package/dist/mqttPacket/length.js.map +1 -1
  110. package/dist/mqttPacket/mod.d.ts +57 -91
  111. package/dist/mqttPacket/mod.d.ts.map +1 -1
  112. package/dist/mqttPacket/mod.js +23 -29
  113. package/dist/mqttPacket/mod.js.map +1 -1
  114. package/dist/mqttPacket/pingreq.d.ts +4 -6
  115. package/dist/mqttPacket/pingreq.d.ts.map +1 -1
  116. package/dist/mqttPacket/pingreq.js +5 -4
  117. package/dist/mqttPacket/pingreq.js.map +1 -1
  118. package/dist/mqttPacket/pingres.d.ts +4 -6
  119. package/dist/mqttPacket/pingres.d.ts.map +1 -1
  120. package/dist/mqttPacket/pingres.js +7 -5
  121. package/dist/mqttPacket/pingres.js.map +1 -1
  122. package/dist/mqttPacket/protocolLevels.d.ts +12 -0
  123. package/dist/mqttPacket/protocolLevels.d.ts.map +1 -0
  124. package/dist/mqttPacket/protocolLevels.js +11 -0
  125. package/dist/mqttPacket/protocolLevels.js.map +1 -0
  126. package/dist/mqttPacket/pubblishAcks.d.ts +42 -0
  127. package/dist/mqttPacket/pubblishAcks.d.ts.map +1 -0
  128. package/dist/mqttPacket/pubblishAcks.js +56 -0
  129. package/dist/mqttPacket/pubblishAcks.js.map +1 -0
  130. package/dist/mqttPacket/publish.d.ts +19 -8
  131. package/dist/mqttPacket/publish.d.ts.map +1 -1
  132. package/dist/mqttPacket/publish.js +26 -7
  133. package/dist/mqttPacket/publish.js.map +1 -1
  134. package/dist/mqttPacket/suback.d.ts +18 -11
  135. package/dist/mqttPacket/suback.d.ts.map +1 -1
  136. package/dist/mqttPacket/suback.js +41 -20
  137. package/dist/mqttPacket/suback.js.map +1 -1
  138. package/dist/mqttPacket/subscribe.d.ts +27 -12
  139. package/dist/mqttPacket/subscribe.d.ts.map +1 -1
  140. package/dist/mqttPacket/subscribe.js +71 -15
  141. package/dist/mqttPacket/subscribe.js.map +1 -1
  142. package/dist/mqttPacket/types.d.ts +36 -0
  143. package/dist/mqttPacket/types.d.ts.map +1 -1
  144. package/dist/mqttPacket/unsuback.d.ts +17 -10
  145. package/dist/mqttPacket/unsuback.d.ts.map +1 -1
  146. package/dist/mqttPacket/unsuback.js +29 -6
  147. package/dist/mqttPacket/unsuback.js.map +1 -1
  148. package/dist/mqttPacket/unsubscribe.d.ts +17 -10
  149. package/dist/mqttPacket/unsubscribe.d.ts.map +1 -1
  150. package/dist/mqttPacket/unsubscribe.js +24 -8
  151. package/dist/mqttPacket/unsubscribe.js.map +1 -1
  152. package/dist/mqttPacket/validators.d.ts +15 -0
  153. package/dist/mqttPacket/validators.d.ts.map +1 -1
  154. package/dist/mqttPacket/validators.js +15 -0
  155. package/dist/mqttPacket/validators.js.map +1 -1
  156. package/dist/node/tcpClient.js +1 -1
  157. package/dist/node/tcpClient.js.map +1 -1
  158. package/dist/node/wrapNodeSocket.d.ts.map +1 -1
  159. package/dist/node/wrapNodeSocket.js.map +1 -1
  160. package/dist/persistence/deps.d.ts +1 -1
  161. package/dist/persistence/deps.d.ts.map +1 -1
  162. package/dist/persistence/deps.js +1 -1
  163. package/dist/persistence/deps.js.map +1 -1
  164. package/dist/persistence/memory/memoryPersistence.js +1 -1
  165. package/dist/persistence/memory/memoryPersistence.js.map +1 -1
  166. package/dist/server/context.d.ts +3 -1
  167. package/dist/server/context.d.ts.map +1 -1
  168. package/dist/server/context.js +8 -2
  169. package/dist/server/context.js.map +1 -1
  170. package/dist/server/deps.d.ts +2 -2
  171. package/dist/server/deps.d.ts.map +1 -1
  172. package/dist/server/deps.js +1 -1
  173. package/dist/server/deps.js.map +1 -1
  174. package/dist/server/handlers/handleConnect.d.ts +1 -1
  175. package/dist/server/handlers/handleConnect.d.ts.map +1 -1
  176. package/dist/server/handlers/handleConnect.js +9 -1
  177. package/dist/server/handlers/handleConnect.js.map +1 -1
  178. package/dist/server/handlers/handlePacket.d.ts +1 -1
  179. package/dist/server/handlers/handlePacket.d.ts.map +1 -1
  180. package/dist/server/handlers/handlePacket.js +1 -1
  181. package/dist/server/handlers/handlePacket.js.map +1 -1
  182. package/dist/server/handlers/handlePingreq.d.ts.map +1 -1
  183. package/dist/server/handlers/handlePingreq.js +1 -0
  184. package/dist/server/handlers/handlePingreq.js.map +1 -1
  185. package/dist/server/handlers/handlePublish.d.ts +2 -2
  186. package/dist/server/handlers/handlePublish.d.ts.map +1 -1
  187. package/dist/server/handlers/handlePublish.js +2 -0
  188. package/dist/server/handlers/handlePublish.js.map +1 -1
  189. package/dist/server/handlers/handlePubrec.d.ts +1 -1
  190. package/dist/server/handlers/handlePubrec.d.ts.map +1 -1
  191. package/dist/server/handlers/handlePubrec.js +1 -0
  192. package/dist/server/handlers/handlePubrec.js.map +1 -1
  193. package/dist/server/handlers/handlePubrel.d.ts +1 -1
  194. package/dist/server/handlers/handlePubrel.d.ts.map +1 -1
  195. package/dist/server/handlers/handlePubrel.js +1 -0
  196. package/dist/server/handlers/handlePubrel.js.map +1 -1
  197. package/dist/server/handlers/handleSubscribe.d.ts +1 -1
  198. package/dist/server/handlers/handleSubscribe.d.ts.map +1 -1
  199. package/dist/server/handlers/handleSubscribe.js +2 -1
  200. package/dist/server/handlers/handleSubscribe.js.map +1 -1
  201. package/dist/server/handlers/handleUnsubscribe.d.ts +1 -1
  202. package/dist/server/handlers/handleUnsubscribe.d.ts.map +1 -1
  203. package/dist/server/handlers/handleUnsubscribe.js +1 -0
  204. package/dist/server/handlers/handleUnsubscribe.js.map +1 -1
  205. package/dist/server/server.d.ts +2 -2
  206. package/dist/server/server.d.ts.map +1 -1
  207. package/dist/server/server.js +5 -3
  208. package/dist/server/server.js.map +1 -1
  209. package/dist/socket/socket.d.ts.map +1 -1
  210. package/dist/socket/socket.js +6 -1
  211. package/dist/socket/socket.js.map +1 -1
  212. package/dist/utils/assert.d.ts +0 -3
  213. package/dist/utils/assert.d.ts.map +1 -1
  214. package/dist/utils/assert.js +0 -7
  215. package/dist/utils/assert.js.map +1 -1
  216. package/dist/utils/asyncQueue.d.ts +1 -3
  217. package/dist/utils/asyncQueue.d.ts.map +1 -1
  218. package/dist/utils/asyncQueue.js +16 -21
  219. package/dist/utils/asyncQueue.js.map +1 -1
  220. package/dist/utils/logger.d.ts +5 -15
  221. package/dist/utils/logger.d.ts.map +1 -1
  222. package/dist/utils/logger.js +7 -8
  223. package/dist/utils/logger.js.map +1 -1
  224. package/dist/utils/mod.d.ts +0 -3
  225. package/dist/utils/mod.d.ts.map +1 -1
  226. package/dist/utils/mod.js +0 -2
  227. package/dist/utils/mod.js.map +1 -1
  228. package/dist/utils/utils.d.ts +2 -0
  229. package/dist/utils/utils.d.ts.map +1 -0
  230. package/dist/utils/utils.js +6 -0
  231. package/dist/utils/utils.js.map +1 -0
  232. package/mqttConn/mqttConn.test.ts +27 -12
  233. package/mqttConn/mqttConn.ts +45 -14
  234. package/mqttPacket/PacketType.ts +1 -0
  235. package/mqttPacket/Properties.ts +276 -0
  236. package/mqttPacket/ReasonCode.test.ts +22 -0
  237. package/mqttPacket/ReasonCode.ts +256 -0
  238. package/mqttPacket/RetainHandling.ts +11 -0
  239. package/mqttPacket/auth.test.ts +112 -0
  240. package/mqttPacket/auth.ts +71 -0
  241. package/mqttPacket/connack.test.ts +84 -64
  242. package/mqttPacket/connack.ts +88 -24
  243. package/mqttPacket/connect.test.ts +497 -18
  244. package/mqttPacket/connect.ts +170 -39
  245. package/mqttPacket/decoder.test.ts +33 -16
  246. package/mqttPacket/decoder.ts +173 -5
  247. package/mqttPacket/disconnect.test.ts +97 -18
  248. package/mqttPacket/disconnect.ts +84 -12
  249. package/mqttPacket/encoder.test.ts +32 -8
  250. package/mqttPacket/encoder.ts +236 -11
  251. package/mqttPacket/length.ts +3 -2
  252. package/mqttPacket/mod.ts +76 -39
  253. package/mqttPacket/pingreq.test.ts +52 -4
  254. package/mqttPacket/pingreq.ts +20 -7
  255. package/mqttPacket/pingres.test.ts +52 -4
  256. package/mqttPacket/pingres.ts +22 -8
  257. package/mqttPacket/properties.test.ts +193 -0
  258. package/mqttPacket/protocolLevels.ts +13 -0
  259. package/mqttPacket/pubblishAcks.ts +123 -0
  260. package/mqttPacket/publish.test.ts +212 -133
  261. package/mqttPacket/publish.ts +69 -14
  262. package/mqttPacket/publishAcks.test.ts +128 -0
  263. package/mqttPacket/suback.test.ts +71 -27
  264. package/mqttPacket/suback.ts +82 -30
  265. package/mqttPacket/subscribe.test.ts +132 -43
  266. package/mqttPacket/subscribe.ts +128 -25
  267. package/mqttPacket/types.ts +43 -0
  268. package/mqttPacket/unsuback.test.ts +80 -30
  269. package/mqttPacket/unsuback.ts +68 -13
  270. package/mqttPacket/unsubscribe.test.ts +59 -34
  271. package/mqttPacket/unsubscribe.ts +64 -17
  272. package/mqttPacket/validators.ts +15 -0
  273. package/node/tcpClient.ts +1 -1
  274. package/node/wrapNodeSocket.ts +2 -1
  275. package/package.json +2 -2
  276. package/persistence/deps.ts +1 -1
  277. package/persistence/memory/memoryPersistence.test.ts +5 -1
  278. package/persistence/memory/memoryPersistence.ts +1 -1
  279. package/server/context.ts +23 -10
  280. package/server/deps.ts +2 -0
  281. package/server/handlers/handleConnect.ts +12 -9
  282. package/server/handlers/handlePacket.ts +10 -11
  283. package/server/handlers/handlePingreq.ts +1 -0
  284. package/server/handlers/handlePublish.ts +6 -2
  285. package/server/handlers/handlePubrec.ts +3 -1
  286. package/server/handlers/handlePubrel.ts +3 -1
  287. package/server/handlers/handleSubscribe.ts +3 -6
  288. package/server/handlers/handleUnsubscribe.ts +3 -1
  289. package/server/server.ts +8 -12
  290. package/server/test/handleConnect.test.ts +2 -1
  291. package/server/test/test-handlers.ts +2 -1
  292. package/socket/socket.ts +5 -1
  293. package/utils/assert.ts +0 -18
  294. package/utils/asyncQueue.ts +17 -21
  295. package/utils/logger.ts +12 -11
  296. package/utils/mod.ts +0 -3
  297. package/utils/utils.ts +6 -0
  298. package/dist/mqttPacket/puback.d.ts +0 -16
  299. package/dist/mqttPacket/puback.d.ts.map +0 -1
  300. package/dist/mqttPacket/puback.js +0 -21
  301. package/dist/mqttPacket/puback.js.map +0 -1
  302. package/dist/mqttPacket/pubcomp.d.ts +0 -17
  303. package/dist/mqttPacket/pubcomp.d.ts.map +0 -1
  304. package/dist/mqttPacket/pubcomp.js +0 -21
  305. package/dist/mqttPacket/pubcomp.js.map +0 -1
  306. package/dist/mqttPacket/pubrec.d.ts +0 -17
  307. package/dist/mqttPacket/pubrec.d.ts.map +0 -1
  308. package/dist/mqttPacket/pubrec.js +0 -21
  309. package/dist/mqttPacket/pubrec.js.map +0 -1
  310. package/dist/mqttPacket/pubrel.d.ts +0 -17
  311. package/dist/mqttPacket/pubrel.d.ts.map +0 -1
  312. package/dist/mqttPacket/pubrel.js +0 -21
  313. package/dist/mqttPacket/pubrel.js.map +0 -1
  314. package/dist/utils/args.d.ts +0 -28
  315. package/dist/utils/args.d.ts.map +0 -1
  316. package/dist/utils/args.js +0 -76
  317. package/dist/utils/args.js.map +0 -1
  318. package/dist/utils/platform.d.ts +0 -5
  319. package/dist/utils/platform.d.ts.map +0 -1
  320. package/dist/utils/platform.js +0 -8
  321. package/dist/utils/platform.js.map +0 -1
  322. package/mqttPacket/puback.test.ts +0 -55
  323. package/mqttPacket/puback.ts +0 -34
  324. package/mqttPacket/pubcomp.test.ts +0 -55
  325. package/mqttPacket/pubcomp.ts +0 -35
  326. package/mqttPacket/pubrec.test.ts +0 -55
  327. package/mqttPacket/pubrec.ts +0 -35
  328. package/mqttPacket/pubrel.test.ts +0 -55
  329. package/mqttPacket/pubrel.ts +0 -35
  330. package/utils/args.ts +0 -103
  331. package/utils/platform.ts +0 -8
package/server/context.ts CHANGED
@@ -1,16 +1,20 @@
1
1
  import {
2
- type AnyPacket,
3
- type IPersistence,
4
- type IStore,
5
2
  logger,
6
3
  MqttConn,
4
+ MQTTLevel,
7
5
  PacketNameByType,
8
6
  PacketType,
9
- type PublishPacket,
10
- type SockConn,
11
- type TAuthenticationResult,
12
- type Timer,
13
- type Topic,
7
+ } from "./deps.ts";
8
+ import type {
9
+ AnyPacket,
10
+ IPersistence,
11
+ IStore,
12
+ ProtocolLevel,
13
+ PublishPacket,
14
+ SockConn,
15
+ TAuthenticationResult,
16
+ Timer,
17
+ Topic,
14
18
  } from "./deps.ts";
15
19
 
16
20
  export type ClientId = string;
@@ -49,6 +53,7 @@ export type Handlers = {
49
53
 
50
54
  export class Context {
51
55
  connected: boolean;
56
+ protocolLevel: ProtocolLevel;
52
57
  conn: SockConn;
53
58
  mqttConn: MqttConn;
54
59
  persistence: IPersistence;
@@ -64,6 +69,7 @@ export class Context {
64
69
  this.conn = conn;
65
70
  this.mqttConn = new MqttConn({ conn });
66
71
  this.handlers = handlers;
72
+ this.protocolLevel = MQTTLevel.unknown;
67
73
  }
68
74
 
69
75
  async send(packet: AnyPacket): Promise<void> {
@@ -109,10 +115,10 @@ export class Context {
109
115
 
110
116
  close(executewill = true): void {
111
117
  if (this.connected) {
112
- logger.debug(
118
+ logger.info(
113
119
  `Closing ${this.store?.clientId} while mqttConn is ${
114
120
  this.mqttConn.isClosed ? "" : "not "
115
- }closed`,
121
+ }closed because of "${this.mqttConn.reason || "normal disconnect"}"`,
116
122
  );
117
123
  this.connected = false;
118
124
  if (typeof this.timer === "object") {
@@ -124,6 +130,12 @@ export class Context {
124
130
  if (executewill) {
125
131
  this.handleWill();
126
132
  }
133
+ } else {
134
+ logger.info(
135
+ `closing connection from ${this.mqttConn.remoteAddress} because of "${
136
+ this.mqttConn.reason || "normal disconnect"
137
+ }"`,
138
+ );
127
139
  }
128
140
  if (!this.mqttConn.isClosed) {
129
141
  this.mqttConn.close();
@@ -145,6 +157,7 @@ export class Context {
145
157
  broadcast(topic: Topic, payload: string, retain = false): void {
146
158
  const packet: PublishPacket = {
147
159
  type: PacketType.publish,
160
+ protocolLevel: this.protocolLevel,
148
161
  topic,
149
162
  retain,
150
163
  payload: utf8Encoder.encode(payload),
package/server/deps.ts CHANGED
@@ -12,6 +12,7 @@ export type {
12
12
  PacketId,
13
13
  PingreqPacket,
14
14
  PingresPacket,
15
+ ProtocolLevel,
15
16
  PubackPacket,
16
17
  PubcompPacket,
17
18
  PublishPacket,
@@ -30,6 +31,7 @@ export type {
30
31
 
31
32
  export {
32
33
  AuthenticationResult,
34
+ MQTTLevel,
33
35
  PacketNameByType,
34
36
  PacketType,
35
37
  } from "../mqttPacket/mod.ts";
@@ -1,12 +1,7 @@
1
1
  import type { Context } from "../context.ts";
2
- import {
3
- AuthenticationResult,
4
- type ConnectPacket,
5
- logger,
6
- PacketType,
7
- type TAuthenticationResult,
8
- Timer,
9
- } from "../deps.ts";
2
+ import { AuthenticationResult, logger, PacketType, Timer } from "../deps.ts";
3
+
4
+ import type { ConnectPacket, TAuthenticationResult } from "../deps.ts";
10
5
 
11
6
  /**
12
7
  * Checks if the client is authenticated based on the provided credentials
@@ -42,6 +37,7 @@ function validateConnect(
42
37
  if (packet.protocolLevel !== 4) {
43
38
  return AuthenticationResult.unacceptableProtocol;
44
39
  }
40
+
45
41
  return isAuthenticated(ctx, packet);
46
42
  }
47
43
 
@@ -61,6 +57,7 @@ function processValidatedConnect(
61
57
  if (packet.will) {
62
58
  ctx.will = {
63
59
  type: PacketType.publish,
60
+ protocolLevel: ctx.protocolLevel,
64
61
  qos: packet.will.qos,
65
62
  retain: packet.will.retain,
66
63
  topic: packet.will.topic,
@@ -69,6 +66,11 @@ function processValidatedConnect(
69
66
  }
70
67
 
71
68
  ctx.connect(clientId, packet.clean || false);
69
+ ctx.protocolLevel = packet.protocolLevel;
70
+ if (ctx.mqttConn) {
71
+ logger.debug(`Setting protocolLevel to ${ctx.protocolLevel}`);
72
+ ctx.mqttConn.codecOpts.protocolLevel = ctx.protocolLevel;
73
+ }
72
74
 
73
75
  const keepAlive = packet.keepAlive || 0;
74
76
  if (keepAlive > 0) {
@@ -106,10 +108,11 @@ export function handleConnect(ctx: Context, packet: ConnectPacket): void {
106
108
  );
107
109
  ctx.send({
108
110
  type: PacketType.connack,
111
+ protocolLevel: ctx.protocolLevel,
109
112
  sessionPresent,
110
113
  returnCode,
111
114
  });
112
-
115
+ logger.debug("connect returnCode", returnCode);
113
116
  if (returnCode !== AuthenticationResult.ok) {
114
117
  ctx.close();
115
118
  }
@@ -1,15 +1,14 @@
1
1
  import type { Context } from "../context.ts";
2
- import {
3
- type AnyPacket,
4
- PacketNameByType,
5
- PacketType,
6
- type PubackPacket,
7
- type PubcompPacket,
8
- type PublishPacket,
9
- type PubrecPacket,
10
- type PubrelPacket,
11
- type SubscribePacket,
12
- type UnsubscribePacket,
2
+ import { PacketNameByType, PacketType } from "../deps.ts";
3
+ import type {
4
+ AnyPacket,
5
+ PubackPacket,
6
+ PubcompPacket,
7
+ PublishPacket,
8
+ PubrecPacket,
9
+ PubrelPacket,
10
+ SubscribePacket,
11
+ UnsubscribePacket,
13
12
  } from "../deps.ts";
14
13
  import { handleConnect } from "./handleConnect.ts";
15
14
  import { handlePingreq } from "./handlePingreq.ts";
@@ -10,5 +10,6 @@ import { PacketType } from "../deps.ts";
10
10
  export async function handlePingreq(ctx: Context): Promise<void> {
11
11
  await ctx.send({
12
12
  type: PacketType.pingres,
13
+ protocolLevel: ctx.protocolLevel,
13
14
  });
14
15
  }
@@ -1,5 +1,7 @@
1
- import { type Context, SysPrefix } from "../context.ts";
2
- import { PacketType, type PublishPacket, type Topic } from "../deps.ts";
1
+ import { SysPrefix } from "../context.ts";
2
+ import { PacketType } from "../deps.ts";
3
+ import type { Context } from "../context.ts";
4
+ import type { PublishPacket, Topic } from "../deps.ts";
3
5
 
4
6
  /**
5
7
  * Checks if a client is authorized to publish to a given topic
@@ -45,6 +47,7 @@ export async function handlePublish(
45
47
  ctx.persistence.publish(packet.topic, packet);
46
48
  await ctx.send({
47
49
  type: PacketType.puback,
50
+ protocolLevel: ctx.protocolLevel,
48
51
  id,
49
52
  });
50
53
  return;
@@ -54,6 +57,7 @@ export async function handlePublish(
54
57
  ctx.store.pendingIncoming.set(packet.id, packet);
55
58
  await ctx.send({
56
59
  type: PacketType.pubrec,
60
+ protocolLevel: ctx.protocolLevel,
57
61
  id: packet.id,
58
62
  });
59
63
  }
@@ -1,5 +1,6 @@
1
+ import { PacketType } from "../deps.ts";
2
+ import type { PubrecPacket } from "../deps.ts";
1
3
  import type { Context } from "../context.ts";
2
- import { PacketType, type PubrecPacket } from "../deps.ts";
3
4
 
4
5
  /**
5
6
  * Handles PUBREC (QoS 2 Publish Received) packets
@@ -22,6 +23,7 @@ export async function handlePubrec(
22
23
  ctx.store.pendingAckOutgoing.add(id);
23
24
  await ctx.send({
24
25
  type: PacketType.pubrel,
26
+ protocolLevel: ctx.protocolLevel,
25
27
  id,
26
28
  });
27
29
  }
@@ -1,5 +1,6 @@
1
+ import { PacketType } from "../deps.ts";
1
2
  import type { Context } from "../context.ts";
2
- import { PacketType, type PubrelPacket } from "../deps.ts";
3
+ import type { PubrelPacket } from "../deps.ts";
3
4
 
4
5
  /**
5
6
  * Handles PUBREL (QoS 2 publish release) packets
@@ -25,6 +26,7 @@ export async function handlePubrel(
25
26
  ctx.store.pendingIncoming.delete(id);
26
27
  await ctx.send({
27
28
  type: PacketType.pubcomp,
29
+ protocolLevel: ctx.protocolLevel,
28
30
  id,
29
31
  });
30
32
  }
@@ -1,10 +1,6 @@
1
1
  import type { Context } from "../context.ts";
2
- import {
3
- PacketType,
4
- type SubscribePacket,
5
- type Subscription,
6
- type Topic,
7
- } from "../deps.ts";
2
+ import { PacketType } from "../deps.ts";
3
+ import type { SubscribePacket, Subscription, Topic } from "../deps.ts";
8
4
 
9
5
  /**
10
6
  * @constant {number} SubscriptionFailure
@@ -57,6 +53,7 @@ export async function handleSubscribe(
57
53
 
58
54
  await ctx.send({
59
55
  type: PacketType.suback,
56
+ protocolLevel: ctx.protocolLevel,
60
57
  id: packet.id,
61
58
  returnCodes: returnCodes,
62
59
  });
@@ -1,5 +1,6 @@
1
+ import { PacketType } from "../deps.ts";
2
+ import type { UnsubscribePacket } from "../deps.ts";
1
3
  import type { Context } from "../context.ts";
2
- import { PacketType, type UnsubscribePacket } from "../deps.ts";
3
4
 
4
5
  /**
5
6
  * Handles MQTT unsubscribe packets by removing subscriptions and sending acknowledgement
@@ -19,5 +20,6 @@ export async function handleUnsubscribe(
19
20
  await ctx.send({
20
21
  type: PacketType.unsuback,
21
22
  id: packet.id,
23
+ protocolLevel: ctx.protocolLevel,
22
24
  });
23
25
  }
package/server/server.ts CHANGED
@@ -1,13 +1,7 @@
1
- import { Context, type Handlers } from "./context.ts";
2
- import {
3
- AuthenticationResult,
4
- type IPersistence,
5
- logger,
6
- MemoryPersistence,
7
- type SockConn,
8
- type Topic,
9
- } from "./deps.ts";
10
-
1
+ import { AuthenticationResult, logger, MemoryPersistence } from "./deps.ts";
2
+ import { Context } from "./context.ts";
3
+ import type { Handlers } from "./context.ts";
4
+ import type { IPersistence, SockConn, Topic } from "./deps.ts";
11
5
  import { handlePacket } from "./handlers/handlePacket.ts";
12
6
 
13
7
  const defaultIsAuthenticated = (
@@ -63,12 +57,14 @@ export class MqttServer {
63
57
  }
64
58
  try {
65
59
  for await (const packet of ctx.mqttConn) {
66
- handlePacket(ctx, packet);
60
+ await handlePacket(ctx, packet);
67
61
  }
68
62
  } catch (err) {
69
63
  logger.debug(`Error while serving:${err}`);
70
64
  } finally {
71
- ctx.close();
65
+ if (!ctx.mqttConn.isClosed) {
66
+ ctx.close();
67
+ }
72
68
  }
73
69
  }
74
70
  }
@@ -7,7 +7,7 @@ import {
7
7
  PacketType,
8
8
  } from "../../mqttPacket/mod.ts";
9
9
  import { AsyncQueue, nextTick } from "../../utils/mod.ts";
10
- import { MqttConn } from "../deps.ts";
10
+ import { MqttConn, MQTTLevel } from "../deps.ts";
11
11
  import { MqttServer } from "../mod.ts";
12
12
  import { handlers } from "./test-handlers.ts";
13
13
 
@@ -28,6 +28,7 @@ const connectPacket: AnyPacket = {
28
28
 
29
29
  const disconnectPacket: AnyPacket = {
30
30
  type: PacketType.disconnect,
31
+ protocolLevel: MQTTLevel.v4,
31
32
  };
32
33
 
33
34
  const mqttServer = new MqttServer({ handlers });
@@ -1,6 +1,7 @@
1
- import { AuthenticationResult, type Context, type Topic } from "../mod.ts";
1
+ import { AuthenticationResult } from "../mod.ts";
2
2
  import { logger } from "../../utils/mod.ts";
3
3
  import type { TAuthenticationResult } from "../deps.ts";
4
+ import type { Context, Topic } from "../mod.ts";
4
5
 
5
6
  const utf8Decoder = new TextDecoder();
6
7
  const userTable = new Map();
package/socket/socket.ts CHANGED
@@ -60,7 +60,11 @@ export class Conn {
60
60
  close() {
61
61
  if (!this.closed) {
62
62
  this.closed = true;
63
- this.closer();
63
+ try {
64
+ this.closer();
65
+ } catch (_err) {
66
+ // swallow any errors on close
67
+ }
64
68
  }
65
69
  }
66
70
  }
package/utils/assert.ts CHANGED
@@ -12,21 +12,3 @@ export function assert(expr: unknown, msg = ""): asserts expr {
12
12
  throw new AssertionError(msg);
13
13
  }
14
14
  }
15
-
16
- /** An array-like object (`Array`, `Uint8Array`, `NodeList`, etc.) that is not a string */
17
- export type ArrayLikeArg<T> = ArrayLike<T> & object;
18
-
19
- export function assertArrayIncludes<T>(
20
- actual: ArrayLikeArg<T>,
21
- expected: ArrayLikeArg<T>,
22
- msg?: string,
23
- ) {
24
- const actualArr = Array.from(actual);
25
- const expectedArr = Array.from(expected);
26
- for (const item of expectedArr) {
27
- assert(
28
- actualArr.includes(item),
29
- msg + `\nExpected: ${expectedArr}\nActual: ${actualArr}`,
30
- );
31
- }
32
- }
@@ -1,3 +1,4 @@
1
+ import { Deferred } from "./deferred.ts";
1
2
  import { nextTick } from "./nextTick.ts";
2
3
  /**
3
4
  * An Async Queue is a queue that can be used to push items to it and then wait
@@ -12,13 +13,14 @@ import { nextTick } from "./nextTick.ts";
12
13
  * }
13
14
  * ```
14
15
  */
16
+
15
17
  export class AsyncQueue<T> {
16
18
  private queue: T[] = [];
17
19
  private maxQueueLength = Infinity;
18
- private nextResolve = (_value: T) => {};
19
- private nextReject = (_reason?: string) => {};
20
+
20
21
  private done = false;
21
- private hasNext = false;
22
+
23
+ #next?: Deferred<T>;
22
24
 
23
25
  constructor(maxQueueLength?: number) {
24
26
  if (maxQueueLength) {
@@ -28,39 +30,33 @@ export class AsyncQueue<T> {
28
30
 
29
31
  async next(): Promise<T> {
30
32
  await nextTick();
31
- if (this.done && this.queue.length === 0) {
33
+ if (this.queue.length) {
34
+ return Promise.resolve(this.queue.shift()!);
35
+ } else if (this.done) {
32
36
  return Promise.reject("Closed");
37
+ } else if (!this.#next) {
38
+ this.#next = new Deferred<T>();
33
39
  }
34
- return new Promise((resolve, reject) => {
35
- if (this.queue.length > 0) {
36
- const item = this.queue.shift();
37
- if (item) {
38
- return resolve(item);
39
- }
40
- }
41
- this.nextResolve = resolve;
42
- this.nextReject = reject;
43
- this.hasNext = true;
44
- });
40
+ return this.#next.promise;
45
41
  }
46
42
 
47
43
  close(reason = "closed"): void {
48
44
  this.done = true;
49
- if (this.hasNext) {
50
- this.nextReject(reason);
45
+ if (this.#next) {
46
+ this.#next.reject(new Error(reason));
51
47
  }
52
48
  }
53
49
 
54
50
  async *[Symbol.asyncIterator](): AsyncGenerator<Awaited<T>, void, unknown> {
55
51
  while (true) {
56
- yield this.next();
52
+ yield await this.next();
57
53
  }
58
54
  }
59
55
 
60
56
  push(item: T) {
61
- if (this.hasNext) {
62
- this.nextResolve(item);
63
- this.hasNext = false;
57
+ if (this.#next) {
58
+ this.#next.resolve(item);
59
+ this.#next = undefined;
64
60
  return;
65
61
  }
66
62
  if (this.queue.length > this.maxQueueLength) {
package/utils/logger.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { noop } from "./utils.ts";
2
+
1
3
  /**
2
4
  * The available log levels
3
5
  */
@@ -30,21 +32,20 @@ export class Logger {
30
32
  private defaultInfo = console.info;
31
33
  private defaultVerbose = console.log;
32
34
  private defaultDebug = console.log;
33
- // deno-lint-ignore no-explicit-any
34
- private noop = (..._data: any[]) => {};
35
- error = this.defaultError;
36
- warn = this.defaultWarn;
37
- info = this.defaultInfo;
38
- verbose = this.noop;
39
- debug = this.noop;
35
+
36
+ error: typeof console.log = this.defaultError;
37
+ warn: typeof console.log = this.defaultWarn;
38
+ info: typeof console.log = this.defaultInfo;
39
+ verbose: typeof console.log = noop;
40
+ debug: typeof console.log = noop;
40
41
 
41
42
  constructor() {}
42
43
 
43
44
  level(logLevel: TLogLevel) {
44
- this.warn = logLevel > 0 ? this.defaultWarn : this.noop;
45
- this.info = logLevel > 1 ? this.defaultInfo : this.noop;
46
- this.verbose = logLevel > 2 ? this.defaultVerbose : this.noop;
47
- this.debug = logLevel > 3 ? this.defaultDebug : this.noop;
45
+ this.warn = logLevel > 0 ? this.defaultWarn : noop;
46
+ this.info = logLevel > 1 ? this.defaultInfo : noop;
47
+ this.verbose = logLevel > 2 ? this.defaultVerbose : noop;
48
+ this.debug = logLevel > 3 ? this.defaultDebug : noop;
48
49
  }
49
50
  }
50
51
 
package/utils/mod.ts CHANGED
@@ -7,6 +7,3 @@ export { Deferred } from "./deferred.ts";
7
7
  export { Logger, logger, LogLevel } from "./logger.ts";
8
8
  export { AsyncQueue } from "./asyncQueue.ts";
9
9
  export { nextTick } from "./nextTick.ts";
10
- export { parseArgs } from "./args.ts";
11
- export type { Args } from "./args.ts";
12
- export { getArgs } from "./platform.ts";
package/utils/utils.ts ADDED
@@ -0,0 +1,6 @@
1
+ /*
2
+ * This file contains utilities used throughout the project too small to
3
+ * deserve their own dedicated files.
4
+ */
5
+
6
+ export const noop = () => {};
@@ -1,16 +0,0 @@
1
- import type { PacketId, TPacketType } from "./types.ts";
2
- /**
3
- * PubackPacket is sent to indicate publish complete (QoS 1)
4
- */
5
- export type PubackPacket = {
6
- type: TPacketType;
7
- id: PacketId;
8
- };
9
- export declare const puback: {
10
- encode(packet: PubackPacket): {
11
- flags: number;
12
- bytes: number[];
13
- };
14
- decode(buffer: Uint8Array): PubackPacket;
15
- };
16
- //# sourceMappingURL=puback.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"puback.d.ts","sourceRoot":"","sources":["../../mqttPacket/puback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAKxD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,QAAQ,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE;IACnB,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACjE,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY,CAAC;CAkB1C,CAAC"}
@@ -1,21 +0,0 @@
1
- import { PacketType } from "./PacketType.js";
2
- import { Decoder } from "./decoder.js";
3
- import { Encoder } from "./encoder.js";
4
- export const puback = {
5
- encode(packet) {
6
- const flags = 0;
7
- const encoder = new Encoder();
8
- encoder.setInt16(packet.id);
9
- return { flags, bytes: encoder.done() };
10
- },
11
- decode(buffer) {
12
- const decoder = new Decoder(buffer);
13
- const id = decoder.getInt16();
14
- decoder.done();
15
- return {
16
- type: PacketType.puback,
17
- id,
18
- };
19
- },
20
- };
21
- //# sourceMappingURL=puback.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"puback.js","sourceRoot":"","sources":["../../mqttPacket/puback.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;AAUvC,MAAM,CAAC,MAAM,MAAM,GAGf;IACF,MAAM,CAAC,MAAoB;QACzB,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,MAAkB;QACvB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,MAAM;YACvB,EAAE;SACH,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -1,17 +0,0 @@
1
- import type { PacketId, TPacketType } from "./types.ts";
2
- /**
3
- * PubcompPacket is sent to indicate publish complete
4
- * It is the fourth packet of the QoS 2 protocol exchange.
5
- */
6
- export type PubcompPacket = {
7
- type: TPacketType;
8
- id: PacketId;
9
- };
10
- export declare const pubcomp: {
11
- encode(packet: PubcompPacket): {
12
- flags: number;
13
- bytes: number[];
14
- };
15
- decode(buffer: Uint8Array): PubcompPacket;
16
- };
17
- //# sourceMappingURL=pubcomp.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pubcomp.d.ts","sourceRoot":"","sources":["../../mqttPacket/pubcomp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAKxD;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,QAAQ,CAAC;CACd,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,GAAG,aAAa,CAAC;CAkB3C,CAAC"}
@@ -1,21 +0,0 @@
1
- import { PacketType } from "./PacketType.js";
2
- import { Decoder } from "./decoder.js";
3
- import { Encoder } from "./encoder.js";
4
- export const pubcomp = {
5
- encode(packet) {
6
- const flags = 0;
7
- const encoder = new Encoder();
8
- encoder.setInt16(packet.id);
9
- return { flags, bytes: encoder.done() };
10
- },
11
- decode(buffer) {
12
- const decoder = new Decoder(buffer);
13
- const id = decoder.getInt16();
14
- decoder.done();
15
- return {
16
- type: PacketType.pubcomp,
17
- id,
18
- };
19
- },
20
- };
21
- //# sourceMappingURL=pubcomp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pubcomp.js","sourceRoot":"","sources":["../../mqttPacket/pubcomp.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;AAWvC,MAAM,CAAC,MAAM,OAAO,GAGhB;IACF,MAAM,CAAC,MAAqB;QAC1B,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,MAAkB;QACvB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,OAAO;YACxB,EAAE;SACH,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -1,17 +0,0 @@
1
- import type { PacketId, TPacketType } from "./types.ts";
2
- /**
3
- * PubrecPacket indicates publish received
4
- * It is the second packet of the QoS 2 protocol exchange.
5
- */
6
- export type PubrecPacket = {
7
- type: TPacketType;
8
- id: PacketId;
9
- };
10
- export declare const pubrec: {
11
- encode(packet: PubrecPacket): {
12
- flags: number;
13
- bytes: number[];
14
- };
15
- decode(buffer: Uint8Array): PubrecPacket;
16
- };
17
- //# sourceMappingURL=pubrec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pubrec.d.ts","sourceRoot":"","sources":["../../mqttPacket/pubrec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAKxD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,QAAQ,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE;IACnB,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACjE,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY,CAAC;CAkB1C,CAAC"}
@@ -1,21 +0,0 @@
1
- import { PacketType } from "./PacketType.js";
2
- import { Decoder } from "./decoder.js";
3
- import { Encoder } from "./encoder.js";
4
- export const pubrec = {
5
- encode(packet) {
6
- const flags = 0;
7
- const encoder = new Encoder();
8
- encoder.setInt16(packet.id);
9
- return { flags, bytes: encoder.done() };
10
- },
11
- decode(buffer) {
12
- const decoder = new Decoder(buffer);
13
- const id = decoder.getInt16();
14
- decoder.done();
15
- return {
16
- type: PacketType.pubrec,
17
- id,
18
- };
19
- },
20
- };
21
- //# sourceMappingURL=pubrec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pubrec.js","sourceRoot":"","sources":["../../mqttPacket/pubrec.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;AAWvC,MAAM,CAAC,MAAM,MAAM,GAGf;IACF,MAAM,CAAC,MAAoB;QACzB,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,MAAkB;QACvB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,MAAM;YACvB,EAAE;SACH,CAAC;IACJ,CAAC;CACF,CAAC"}