abmqtts 0.0.3 → 0.0.6

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 (278) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +175 -10
  3. package/dist/constants.d.ts +96 -0
  4. package/dist/constants.js +280 -0
  5. package/dist/constants.js.map +1 -0
  6. package/dist/errors/index.d.ts +16 -8
  7. package/dist/errors/index.js +27 -22
  8. package/dist/errors/index.js.map +1 -1
  9. package/dist/extend.d.ts +25 -0
  10. package/dist/extend.js +91 -0
  11. package/dist/extend.js.map +1 -0
  12. package/dist/fbns/fbns.client.d.ts +31 -0
  13. package/dist/fbns/fbns.client.events.d.ts +41 -0
  14. package/dist/{reconnect-strategy/mqtts.reconnect-strategy.js → fbns/fbns.client.events.js} +1 -1
  15. package/dist/fbns/fbns.client.events.js.map +1 -0
  16. package/dist/fbns/fbns.client.js +227 -0
  17. package/dist/fbns/fbns.client.js.map +1 -0
  18. package/dist/fbns/fbns.device-auth.d.ts +17 -0
  19. package/dist/fbns/fbns.device-auth.js +54 -0
  20. package/dist/fbns/fbns.device-auth.js.map +1 -0
  21. package/dist/fbns/fbns.types.d.ts +83 -0
  22. package/dist/{mqtt.types.js → fbns/fbns.types.js} +1 -1
  23. package/dist/fbns/fbns.types.js.map +1 -0
  24. package/dist/fbns/fbns.utilities.d.ts +2 -0
  25. package/dist/fbns/fbns.utilities.js +78 -0
  26. package/dist/fbns/fbns.utilities.js.map +1 -0
  27. package/dist/fbns/index.d.ts +4 -0
  28. package/dist/{transport → fbns}/index.js +4 -5
  29. package/dist/fbns/index.js.map +1 -0
  30. package/dist/index.d.ts +5 -12
  31. package/dist/index.js +5 -12
  32. package/dist/index.js.map +1 -1
  33. package/dist/mqttot/index.d.ts +4 -0
  34. package/dist/mqttot/index.js +21 -0
  35. package/dist/mqttot/index.js.map +1 -0
  36. package/dist/mqttot/mqttot.client.d.ts +37 -0
  37. package/dist/mqttot/mqttot.client.js +113 -0
  38. package/dist/mqttot/mqttot.client.js.map +1 -0
  39. package/dist/mqttot/mqttot.connect.request.packet.d.ts +6 -0
  40. package/dist/mqttot/mqttot.connect.request.packet.js +8 -0
  41. package/dist/mqttot/mqttot.connect.request.packet.js.map +1 -0
  42. package/dist/mqttot/mqttot.connect.response.packet.d.ts +6 -0
  43. package/dist/mqttot/mqttot.connect.response.packet.js +27 -0
  44. package/dist/mqttot/mqttot.connect.response.packet.js.map +1 -0
  45. package/dist/mqttot/mqttot.connection.d.ts +56 -0
  46. package/dist/mqttot/mqttot.connection.js +56 -0
  47. package/dist/mqttot/mqttot.connection.js.map +1 -0
  48. package/dist/realtime/commands/commands.d.ts +15 -0
  49. package/dist/realtime/commands/commands.js +21 -0
  50. package/dist/realtime/commands/commands.js.map +1 -0
  51. package/dist/realtime/commands/direct.commands.d.ts +67 -0
  52. package/dist/realtime/commands/direct.commands.js +179 -0
  53. package/dist/realtime/commands/direct.commands.js.map +1 -0
  54. package/dist/realtime/commands/index.d.ts +2 -0
  55. package/dist/{reconnect-strategy → realtime/commands}/index.js +2 -2
  56. package/dist/realtime/commands/index.js.map +1 -0
  57. package/dist/realtime/index.d.ts +6 -0
  58. package/dist/realtime/index.js +23 -0
  59. package/dist/realtime/index.js.map +1 -0
  60. package/dist/realtime/messages/app-presence.event.d.ts +9 -0
  61. package/dist/realtime/messages/app-presence.event.js +3 -0
  62. package/dist/realtime/messages/app-presence.event.js.map +1 -0
  63. package/dist/realtime/messages/index.d.ts +3 -0
  64. package/dist/realtime/messages/index.js +20 -0
  65. package/dist/realtime/messages/index.js.map +1 -0
  66. package/dist/realtime/messages/message-sync.message.d.ts +222 -0
  67. package/dist/realtime/messages/message-sync.message.js +43 -0
  68. package/dist/realtime/messages/message-sync.message.js.map +1 -0
  69. package/dist/realtime/messages/realtime-sub.direct.data.d.ts +11 -0
  70. package/dist/realtime/messages/realtime-sub.direct.data.js +3 -0
  71. package/dist/realtime/messages/realtime-sub.direct.data.js.map +1 -0
  72. package/dist/realtime/messages/thread-update.message.d.ts +68 -0
  73. package/dist/realtime/messages/thread-update.message.js +3 -0
  74. package/dist/realtime/messages/thread-update.message.js.map +1 -0
  75. package/dist/realtime/mixins/index.d.ts +3 -0
  76. package/dist/realtime/mixins/index.js +20 -0
  77. package/dist/realtime/mixins/index.js.map +1 -0
  78. package/dist/realtime/mixins/message-sync.mixin.d.ts +8 -0
  79. package/dist/realtime/mixins/message-sync.mixin.js +81 -0
  80. package/dist/realtime/mixins/message-sync.mixin.js.map +1 -0
  81. package/dist/realtime/mixins/mixin.d.ts +19 -0
  82. package/dist/realtime/mixins/mixin.js +41 -0
  83. package/dist/realtime/mixins/mixin.js.map +1 -0
  84. package/dist/realtime/mixins/realtime-sub.mixin.d.ts +8 -0
  85. package/dist/realtime/mixins/realtime-sub.mixin.js +66 -0
  86. package/dist/realtime/mixins/realtime-sub.mixin.js.map +1 -0
  87. package/dist/realtime/parsers/graphql.parser.d.ts +14 -0
  88. package/dist/realtime/parsers/graphql.parser.js +22 -0
  89. package/dist/realtime/parsers/graphql.parser.js.map +1 -0
  90. package/dist/realtime/parsers/index.d.ts +6 -0
  91. package/dist/realtime/parsers/index.js +23 -0
  92. package/dist/realtime/parsers/index.js.map +1 -0
  93. package/dist/realtime/parsers/iris.parser.d.ts +16 -0
  94. package/dist/realtime/parsers/iris.parser.js +10 -0
  95. package/dist/realtime/parsers/iris.parser.js.map +1 -0
  96. package/dist/realtime/parsers/json.parser.d.ts +5 -0
  97. package/dist/realtime/parsers/json.parser.js +10 -0
  98. package/dist/realtime/parsers/json.parser.js.map +1 -0
  99. package/dist/realtime/parsers/parser.d.ts +8 -0
  100. package/dist/{flow/packet-flow.js → realtime/parsers/parser.js} +1 -1
  101. package/dist/realtime/parsers/parser.js.map +1 -0
  102. package/dist/realtime/parsers/region-hint.parser.d.ts +11 -0
  103. package/dist/realtime/parsers/region-hint.parser.js +15 -0
  104. package/dist/realtime/parsers/region-hint.parser.js.map +1 -0
  105. package/dist/realtime/parsers/skywalker.parser.d.ts +11 -0
  106. package/dist/realtime/parsers/skywalker.parser.js +15 -0
  107. package/dist/realtime/parsers/skywalker.parser.js.map +1 -0
  108. package/dist/realtime/realtime.client.d.ts +54 -0
  109. package/dist/realtime/realtime.client.events.d.ts +35 -0
  110. package/dist/realtime/realtime.client.events.js +3 -0
  111. package/dist/realtime/realtime.client.events.js.map +1 -0
  112. package/dist/realtime/realtime.client.js +248 -0
  113. package/dist/realtime/realtime.client.js.map +1 -0
  114. package/dist/realtime/subscriptions/graphql.subscription.d.ts +47 -0
  115. package/dist/realtime/subscriptions/graphql.subscription.js +99 -0
  116. package/dist/realtime/subscriptions/graphql.subscription.js.map +1 -0
  117. package/dist/realtime/subscriptions/index.d.ts +2 -0
  118. package/dist/{flow → realtime/subscriptions}/index.js +2 -3
  119. package/dist/realtime/subscriptions/index.js.map +1 -0
  120. package/dist/realtime/subscriptions/skywalker.subscription.d.ts +4 -0
  121. package/dist/realtime/subscriptions/skywalker.subscription.js +13 -0
  122. package/dist/realtime/subscriptions/skywalker.subscription.js.map +1 -0
  123. package/dist/shared.d.ts +21 -0
  124. package/dist/shared.js +86 -0
  125. package/dist/shared.js.map +1 -0
  126. package/dist/thrift/index.d.ts +3 -0
  127. package/dist/thrift/index.js +20 -0
  128. package/dist/thrift/index.js.map +1 -0
  129. package/dist/thrift/thrift.d.ts +59 -0
  130. package/dist/thrift/thrift.js +101 -0
  131. package/dist/thrift/thrift.js.map +1 -0
  132. package/dist/thrift/thrift.reading.d.ts +40 -0
  133. package/dist/thrift/thrift.reading.js +327 -0
  134. package/dist/thrift/thrift.reading.js.map +1 -0
  135. package/dist/thrift/thrift.writing.d.ts +43 -0
  136. package/dist/thrift/thrift.writing.js +342 -0
  137. package/dist/thrift/thrift.writing.js.map +1 -0
  138. package/dist/topic.d.ts +7 -0
  139. package/dist/{mqtt.message.js → topic.js} +1 -1
  140. package/dist/topic.js.map +1 -0
  141. package/package.json +59 -68
  142. package/dist/errors/abort.error.d.ts +0 -3
  143. package/dist/errors/abort.error.js +0 -8
  144. package/dist/errors/abort.error.js.map +0 -1
  145. package/dist/errors/connect.error.d.ts +0 -5
  146. package/dist/errors/connect.error.js +0 -12
  147. package/dist/errors/connect.error.js.map +0 -1
  148. package/dist/errors/end-of-stream.error.d.ts +0 -3
  149. package/dist/errors/end-of-stream.error.js +0 -8
  150. package/dist/errors/end-of-stream.error.js.map +0 -1
  151. package/dist/errors/flow-stopped.error.d.ts +0 -3
  152. package/dist/errors/flow-stopped.error.js +0 -8
  153. package/dist/errors/flow-stopped.error.js.map +0 -1
  154. package/dist/errors/illegal-state.error.d.ts +0 -3
  155. package/dist/errors/illegal-state.error.js +0 -8
  156. package/dist/errors/illegal-state.error.js.map +0 -1
  157. package/dist/errors/malformed-packet.error.d.ts +0 -3
  158. package/dist/errors/malformed-packet.error.js +0 -8
  159. package/dist/errors/malformed-packet.error.js.map +0 -1
  160. package/dist/errors/subscribe.error.d.ts +0 -3
  161. package/dist/errors/subscribe.error.js +0 -8
  162. package/dist/errors/subscribe.error.js.map +0 -1
  163. package/dist/errors/unexpected-packet.error.d.ts +0 -3
  164. package/dist/errors/unexpected-packet.error.js +0 -8
  165. package/dist/errors/unexpected-packet.error.js.map +0 -1
  166. package/dist/flow/incoming.flows.d.ts +0 -6
  167. package/dist/flow/incoming.flows.js +0 -39
  168. package/dist/flow/incoming.flows.js.map +0 -1
  169. package/dist/flow/index.d.ts +0 -3
  170. package/dist/flow/index.js.map +0 -1
  171. package/dist/flow/outgoing.flows.d.ts +0 -12
  172. package/dist/flow/outgoing.flows.js +0 -115
  173. package/dist/flow/outgoing.flows.js.map +0 -1
  174. package/dist/flow/packet-flow.d.ts +0 -17
  175. package/dist/flow/packet-flow.js.map +0 -1
  176. package/dist/mqtt.base-client.d.ts +0 -54
  177. package/dist/mqtt.base-client.js +0 -102
  178. package/dist/mqtt.base-client.js.map +0 -1
  179. package/dist/mqtt.client.d.ts +0 -75
  180. package/dist/mqtt.client.js +0 -417
  181. package/dist/mqtt.client.js.map +0 -1
  182. package/dist/mqtt.constants.d.ts +0 -34
  183. package/dist/mqtt.constants.js +0 -26
  184. package/dist/mqtt.constants.js.map +0 -1
  185. package/dist/mqtt.listener.d.ts +0 -21
  186. package/dist/mqtt.listener.js +0 -29
  187. package/dist/mqtt.listener.js.map +0 -1
  188. package/dist/mqtt.message.d.ts +0 -14
  189. package/dist/mqtt.message.js.map +0 -1
  190. package/dist/mqtt.packet.d.ts +0 -9
  191. package/dist/mqtt.packet.js +0 -15
  192. package/dist/mqtt.packet.js.map +0 -1
  193. package/dist/mqtt.parser.d.ts +0 -21
  194. package/dist/mqtt.parser.js +0 -71
  195. package/dist/mqtt.parser.js.map +0 -1
  196. package/dist/mqtt.types.d.ts +0 -52
  197. package/dist/mqtt.types.js.map +0 -1
  198. package/dist/mqtt.utilities.d.ts +0 -32
  199. package/dist/mqtt.utilities.js +0 -139
  200. package/dist/mqtt.utilities.js.map +0 -1
  201. package/dist/packet-stream.d.ts +0 -37
  202. package/dist/packet-stream.js +0 -150
  203. package/dist/packet-stream.js.map +0 -1
  204. package/dist/packets/connect.request.packet.d.ts +0 -22
  205. package/dist/packets/connect.request.packet.js +0 -41
  206. package/dist/packets/connect.request.packet.js.map +0 -1
  207. package/dist/packets/connect.response.packet.d.ts +0 -18
  208. package/dist/packets/connect.response.packet.js +0 -43
  209. package/dist/packets/connect.response.packet.js.map +0 -1
  210. package/dist/packets/disconnect.request.packet.d.ts +0 -2
  211. package/dist/packets/disconnect.request.packet.js +0 -7
  212. package/dist/packets/disconnect.request.packet.js.map +0 -1
  213. package/dist/packets/index.d.ts +0 -16
  214. package/dist/packets/index.js +0 -33
  215. package/dist/packets/index.js.map +0 -1
  216. package/dist/packets/packet-reader.d.ts +0 -31
  217. package/dist/packets/packet-reader.js +0 -27
  218. package/dist/packets/packet-reader.js.map +0 -1
  219. package/dist/packets/packet-writer.d.ts +0 -48
  220. package/dist/packets/packet-writer.js +0 -58
  221. package/dist/packets/packet-writer.js.map +0 -1
  222. package/dist/packets/ping.request.packet.d.ts +0 -5
  223. package/dist/packets/ping.request.packet.js +0 -17
  224. package/dist/packets/ping.request.packet.js.map +0 -1
  225. package/dist/packets/ping.response.packet.d.ts +0 -5
  226. package/dist/packets/ping.response.packet.js +0 -17
  227. package/dist/packets/ping.response.packet.js.map +0 -1
  228. package/dist/packets/publish.ack.packet.d.ts +0 -8
  229. package/dist/packets/publish.ack.packet.js +0 -19
  230. package/dist/packets/publish.ack.packet.js.map +0 -1
  231. package/dist/packets/publish.complete.packet.d.ts +0 -8
  232. package/dist/packets/publish.complete.packet.js +0 -19
  233. package/dist/packets/publish.complete.packet.js.map +0 -1
  234. package/dist/packets/publish.received.packet.d.ts +0 -8
  235. package/dist/packets/publish.received.packet.js +0 -19
  236. package/dist/packets/publish.received.packet.js.map +0 -1
  237. package/dist/packets/publish.release.packet.d.ts +0 -8
  238. package/dist/packets/publish.release.packet.js +0 -19
  239. package/dist/packets/publish.release.packet.js.map +0 -1
  240. package/dist/packets/publish.request.packet.d.ts +0 -21
  241. package/dist/packets/publish.request.packet.js +0 -55
  242. package/dist/packets/publish.request.packet.js.map +0 -1
  243. package/dist/packets/subscribe.request.packet.d.ts +0 -10
  244. package/dist/packets/subscribe.request.packet.js +0 -15
  245. package/dist/packets/subscribe.request.packet.js.map +0 -1
  246. package/dist/packets/subscribe.response.packet.d.ts +0 -14
  247. package/dist/packets/subscribe.response.packet.js +0 -35
  248. package/dist/packets/subscribe.response.packet.js.map +0 -1
  249. package/dist/packets/unsubscribe.request.packet.d.ts +0 -7
  250. package/dist/packets/unsubscribe.request.packet.js +0 -13
  251. package/dist/packets/unsubscribe.request.packet.js.map +0 -1
  252. package/dist/packets/unsubscribe.response.packet.d.ts +0 -5
  253. package/dist/packets/unsubscribe.response.packet.js +0 -14
  254. package/dist/packets/unsubscribe.response.packet.js.map +0 -1
  255. package/dist/reconnect-strategy/index.d.ts +0 -2
  256. package/dist/reconnect-strategy/index.js.map +0 -1
  257. package/dist/reconnect-strategy/mqtts.reconnect-strategy.d.ts +0 -14
  258. package/dist/reconnect-strategy/mqtts.reconnect-strategy.default.d.ts +0 -24
  259. package/dist/reconnect-strategy/mqtts.reconnect-strategy.default.js +0 -56
  260. package/dist/reconnect-strategy/mqtts.reconnect-strategy.default.js.map +0 -1
  261. package/dist/reconnect-strategy/mqtts.reconnect-strategy.js.map +0 -1
  262. package/dist/transport/index.d.ts +0 -5
  263. package/dist/transport/index.js.map +0 -1
  264. package/dist/transport/socks-tls.transport.d.ts +0 -13
  265. package/dist/transport/socks-tls.transport.js +0 -54
  266. package/dist/transport/socks-tls.transport.js.map +0 -1
  267. package/dist/transport/tcp.transport.d.ts +0 -12
  268. package/dist/transport/tcp.transport.js +0 -26
  269. package/dist/transport/tcp.transport.js.map +0 -1
  270. package/dist/transport/tls.transport.d.ts +0 -13
  271. package/dist/transport/tls.transport.js +0 -44
  272. package/dist/transport/tls.transport.js.map +0 -1
  273. package/dist/transport/transport.d.ts +0 -19
  274. package/dist/transport/transport.js +0 -16
  275. package/dist/transport/transport.js.map +0 -1
  276. package/dist/transport/websocket.transport.d.ts +0 -15
  277. package/dist/transport/websocket.transport.js +0 -40
  278. package/dist/transport/websocket.transport.js.map +0 -1
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.writeUnsubscribePacket = writeUnsubscribePacket;
4
- function writeUnsubscribePacket(stream, options) {
5
- stream.writeWord(options.identifier);
6
- const topics = typeof options.topics === 'string' ? [options.topics] : options.topics;
7
- if (topics.length === 0)
8
- throw new Error('The Payload of an UNSUBSCRIBE packet MUST contain at least one Topic Filter');
9
- for (const topic of topics)
10
- stream.writeString(topic);
11
- return { flags: 2, identifier: options.identifier };
12
- }
13
- //# sourceMappingURL=unsubscribe.request.packet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unsubscribe.request.packet.js","sourceRoot":"","sources":["../../src/packets/unsubscribe.request.packet.ts"],"names":[],"mappings":";;AAQA,wDAOC;AAPD,SAAgB,sBAAsB,CAAC,MAAoB,EAAE,OAAiC;IAC1F,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACtF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IACnG,KAAK,MAAM,KAAK,IAAI,MAAM;QAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACtD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;AACxD,CAAC"}
@@ -1,5 +0,0 @@
1
- import { IdentifierPacket } from '../mqtt.packet';
2
- import { PacketStream } from '../packet-stream';
3
- export declare class UnsubscribeResponsePacket extends IdentifierPacket {
4
- }
5
- export declare function readUnsubscribePacket(stream: PacketStream, remaining: number): UnsubscribeResponsePacket;
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UnsubscribeResponsePacket = void 0;
4
- exports.readUnsubscribePacket = readUnsubscribePacket;
5
- const mqtt_packet_1 = require("../mqtt.packet");
6
- const mqtt_utilities_1 = require("../mqtt.utilities");
7
- class UnsubscribeResponsePacket extends mqtt_packet_1.IdentifierPacket {
8
- }
9
- exports.UnsubscribeResponsePacket = UnsubscribeResponsePacket;
10
- function readUnsubscribePacket(stream, remaining) {
11
- (0, mqtt_utilities_1.expectRemainingLength)(remaining, 2);
12
- return new UnsubscribeResponsePacket(stream.readWord());
13
- }
14
- //# sourceMappingURL=unsubscribe.response.packet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unsubscribe.response.packet.js","sourceRoot":"","sources":["../../src/packets/unsubscribe.response.packet.ts"],"names":[],"mappings":";;;AAMA,sDAGC;AATD,gDAAkD;AAElD,sDAA0D;AAE1D,MAAa,yBAA0B,SAAQ,8BAAgB;CAAG;AAAlE,8DAAkE;AAElE,SAAgB,qBAAqB,CAAC,MAAoB,EAAE,SAAiB;IACzE,IAAA,sCAAqB,EAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACpC,OAAO,IAAI,yBAAyB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5D,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from './mqtts.reconnect-strategy';
2
- export * from './mqtts.reconnect-strategy.default';
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reconnect-strategy/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,qEAAmD"}
@@ -1,14 +0,0 @@
1
- export interface MqttsReconnectStrategy {
2
- /**
3
- * Whether reconnect should happen or not
4
- */
5
- check(reason?: any): boolean;
6
- /**
7
- * Reconnect when wait resolves
8
- */
9
- wait(): Promise<any>;
10
- /**
11
- * Reset reconnect attempts
12
- */
13
- reset(): any;
14
- }
@@ -1,24 +0,0 @@
1
- import { MqttsReconnectStrategy } from './mqtts.reconnect-strategy';
2
- export declare class MqttsReconnectStrategyDefault implements MqttsReconnectStrategy {
3
- #private;
4
- /**
5
- * Maximum attempts amount
6
- */
7
- private maximum;
8
- /**
9
- * Interval between attempts, milliseconds
10
- */
11
- private interval;
12
- constructor(
13
- /**
14
- * Maximum attempts amount
15
- */
16
- maximum?: number,
17
- /**
18
- * Interval between attempts, milliseconds
19
- */
20
- interval?: number);
21
- check(reason?: any): boolean;
22
- wait(): Promise<void>;
23
- reset(): void;
24
- }
@@ -1,56 +0,0 @@
1
- "use strict";
2
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
- };
7
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
8
- if (kind === "m") throw new TypeError("Private method is not writable");
9
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
10
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
11
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
12
- };
13
- var _MqttsReconnectStrategyDefault_attempts;
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.MqttsReconnectStrategyDefault = void 0;
16
- const errors_1 = require("../errors");
17
- const util_1 = require("util");
18
- const sleep = (0, util_1.promisify)(setTimeout);
19
- class MqttsReconnectStrategyDefault {
20
- constructor(
21
- /**
22
- * Maximum attempts amount
23
- */
24
- maximum = 10,
25
- /**
26
- * Interval between attempts, milliseconds
27
- */
28
- interval = 3000) {
29
- this.maximum = maximum;
30
- this.interval = interval;
31
- /**
32
- * Internal attempts counter
33
- */
34
- _MqttsReconnectStrategyDefault_attempts.set(this, 1);
35
- }
36
- check(reason) {
37
- if (reason instanceof errors_1.ConnectError) {
38
- return ['IdentifierRejected', 'ServerUnavailable'].includes(reason.status);
39
- }
40
- if (typeof reason === 'string' && ['Soft disconnect', 'Forced disconnect'].includes(reason)) {
41
- return false;
42
- }
43
- return __classPrivateFieldGet(this, _MqttsReconnectStrategyDefault_attempts, "f") <= this.maximum;
44
- }
45
- wait() {
46
- var _a;
47
- __classPrivateFieldSet(this, _MqttsReconnectStrategyDefault_attempts, (_a = __classPrivateFieldGet(this, _MqttsReconnectStrategyDefault_attempts, "f"), _a++, _a), "f");
48
- return sleep(this.interval);
49
- }
50
- reset() {
51
- __classPrivateFieldSet(this, _MqttsReconnectStrategyDefault_attempts, 1, "f");
52
- }
53
- }
54
- exports.MqttsReconnectStrategyDefault = MqttsReconnectStrategyDefault;
55
- _MqttsReconnectStrategyDefault_attempts = new WeakMap();
56
- //# sourceMappingURL=mqtts.reconnect-strategy.default.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mqtts.reconnect-strategy.default.js","sourceRoot":"","sources":["../../src/reconnect-strategy/mqtts.reconnect-strategy.default.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,sCAAyC;AACzC,+BAAiC;AACjC,MAAM,KAAK,GAAG,IAAA,gBAAS,EAAC,UAAU,CAAC,CAAC;AAEpC,MAAa,6BAA6B;IAKtC;IACI;;OAEG;IACK,UAAkB,EAAE;IAC5B;;OAEG;IACK,WAAmB,IAAI;QAJvB,YAAO,GAAP,OAAO,CAAa;QAIpB,aAAQ,GAAR,QAAQ,CAAe;QAZnC;;WAEG;QACH,kDAAY,CAAC,EAAC;IAUX,CAAC;IACJ,KAAK,CAAC,MAAY;QACd,IAAI,MAAM,YAAY,qBAAY,EAAE,CAAC;YACjC,OAAO,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1F,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,uBAAA,IAAI,+CAAU,IAAI,IAAI,CAAC,OAAO,CAAC;IAC1C,CAAC;IAED,IAAI;;QACA,sEAAA,CAAA,+EAAc,EAAd,IAAgB,IAAA,CAAA,MAAA,CAAC;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IACD,KAAK;QACD,uBAAA,IAAI,2CAAa,CAAC,MAAA,CAAC;IACvB,CAAC;CACJ;AAhCD,sEAgCC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mqtts.reconnect-strategy.js","sourceRoot":"","sources":["../../src/reconnect-strategy/mqtts.reconnect-strategy.ts"],"names":[],"mappings":""}
@@ -1,5 +0,0 @@
1
- export * from './transport';
2
- export * from './tls.transport';
3
- export * from './tcp.transport';
4
- export * from './websocket.transport';
5
- export * from './socks-tls.transport';
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,kDAAgC;AAChC,kDAAgC;AAChC,wDAAsC;AACtC,wDAAsC"}
@@ -1,13 +0,0 @@
1
- import { Transport } from './transport';
2
- import { TlsTransportOptions } from './tls.transport';
3
- import { SocksProxy } from 'socks';
4
- import { Duplex } from 'stream';
5
- export interface SocksTlsTransportOptions extends TlsTransportOptions {
6
- proxyOptions: SocksProxy;
7
- }
8
- export declare class SocksTlsTransport extends Transport<SocksTlsTransportOptions> {
9
- duplex?: Duplex;
10
- constructor(options: SocksTlsTransportOptions);
11
- reset(): void;
12
- connect(): Promise<void>;
13
- }
@@ -1,54 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SocksTlsTransport = void 0;
4
- const transport_1 = require("./transport");
5
- const socks_1 = require("socks");
6
- const tls_1 = require("tls");
7
- const errors_1 = require("../errors");
8
- class SocksTlsTransport extends transport_1.Transport {
9
- constructor(options) {
10
- super(options);
11
- this.reset();
12
- }
13
- reset() {
14
- if (this.duplex && !this.duplex.destroyed)
15
- this.duplex.destroy();
16
- this.duplex = undefined;
17
- }
18
- async connect() {
19
- if (this.duplex)
20
- throw new errors_1.IllegalStateError('Still connected.');
21
- const info = await socks_1.SocksClient.createConnection({
22
- proxy: this.options.proxyOptions,
23
- destination: {
24
- host: this.options.host,
25
- port: this.options.port,
26
- },
27
- command: 'connect',
28
- });
29
- return new Promise((resolve, reject) => {
30
- const tlsSocket = (0, tls_1.connect)({
31
- ...this.options.additionalOptions,
32
- socket: info.socket,
33
- host: this.options.host,
34
- port: this.options.port,
35
- });
36
- this.duplex = tlsSocket;
37
- tlsSocket.once('secureConnect', () => {
38
- resolve();
39
- });
40
- tlsSocket.once('error', (err) => {
41
- reject(err);
42
- });
43
- tlsSocket.once('end', () => {
44
- reject(new Error('TLS socket closed before handshake'));
45
- });
46
- tlsSocket.setTimeout(10000, () => {
47
- tlsSocket.destroy();
48
- reject(new Error('OB TLS handshake timeout'));
49
- });
50
- });
51
- }
52
- }
53
- exports.SocksTlsTransport = SocksTlsTransport;
54
- //# sourceMappingURL=socks-tls.transport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"socks-tls.transport.js","sourceRoot":"","sources":["../../src/transport/socks-tls.transport.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAExC,iCAAgD;AAChD,6BAA8B;AAE9B,sCAA8C;AAM9C,MAAa,iBAAkB,SAAQ,qBAAmC;IAGtE,YAAY,OAAiC;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,KAAK;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;YAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAEjE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAO;QACT,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,0BAAiB,CAAC,kBAAkB,CAAC,CAAC;QAEjE,MAAM,IAAI,GAAG,MAAM,mBAAW,CAAC,gBAAgB,CAAC;YAC5C,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;YAChC,WAAW,EAAE;gBACT,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;aAC1B;YACD,OAAO,EAAE,SAAS;SACrB,CAAC,CAAC;QAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,SAAS,GAAG,IAAA,aAAO,EAAC;gBACtB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB;gBACjC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;aAC1B,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YAExB,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE;gBACjC,OAAO,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBACnC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;gBACvB,MAAM,CAAC,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;YAEH,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE;gBAC7B,SAAS,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAtDD,8CAsDC"}
@@ -1,12 +0,0 @@
1
- import { Transport } from './transport';
2
- import { Socket } from 'net';
3
- export interface TcpTransportOptions {
4
- host: string;
5
- port: number;
6
- }
7
- export declare class TcpTransport extends Transport<TcpTransportOptions> {
8
- duplex?: Socket;
9
- constructor(options: TcpTransportOptions);
10
- reset(): void;
11
- connect(): Promise<void>;
12
- }
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TcpTransport = void 0;
4
- const transport_1 = require("./transport");
5
- const net_1 = require("net");
6
- const errors_1 = require("../errors");
7
- class TcpTransport extends transport_1.Transport {
8
- constructor(options) {
9
- super(options);
10
- this.reset();
11
- }
12
- reset() {
13
- if (this.duplex && !this.duplex.destroyed)
14
- this.duplex.destroy();
15
- this.duplex = undefined;
16
- }
17
- connect() {
18
- if (this.duplex)
19
- throw new errors_1.IllegalStateError('TcpSocket still connected');
20
- return new Promise(resolve => (this.duplex = (0, net_1.connect)(this.options.port, this.options.host, () => {
21
- resolve();
22
- })));
23
- }
24
- }
25
- exports.TcpTransport = TcpTransport;
26
- //# sourceMappingURL=tcp.transport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tcp.transport.js","sourceRoot":"","sources":["../../src/transport/tcp.transport.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,6BAAsC;AACtC,sCAA8C;AAO9C,MAAa,YAAa,SAAQ,qBAA8B;IAG5D,YAAY,OAA4B;QACpC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,KAAK;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;YAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAEjE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,OAAO;QACH,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,0BAAiB,CAAC,2BAA2B,CAAC,CAAC;QAE1E,OAAO,IAAI,OAAO,CACd,OAAO,CAAC,EAAE,CACN,CAAC,IAAI,CAAC,MAAM,GAAG,IAAA,aAAO,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE;YAC9D,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,CAAC,CACV,CAAC;IACN,CAAC;CACJ;AAxBD,oCAwBC"}
@@ -1,13 +0,0 @@
1
- import { Transport } from './transport';
2
- import { ConnectionOptions, TLSSocket } from 'tls';
3
- export interface TlsTransportOptions {
4
- host: string;
5
- port: number;
6
- additionalOptions?: ConnectionOptions;
7
- }
8
- export declare class TlsTransport extends Transport<TlsTransportOptions> {
9
- duplex?: TLSSocket;
10
- constructor(options: TlsTransportOptions);
11
- reset(): void;
12
- connect(): Promise<void>;
13
- }
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TlsTransport = void 0;
4
- const transport_1 = require("./transport");
5
- const tls_1 = require("tls");
6
- const errors_1 = require("../errors");
7
- class TlsTransport extends transport_1.Transport {
8
- constructor(options) {
9
- super(options);
10
- this.reset();
11
- }
12
- reset() {
13
- if (this.duplex && !this.duplex.destroyed)
14
- this.duplex.destroy();
15
- this.duplex = undefined;
16
- }
17
- connect() {
18
- if (this.duplex)
19
- throw new errors_1.IllegalStateError('Still connected.');
20
- return new Promise((resolve, reject) => {
21
- const tlsSocket = (0, tls_1.connect)({
22
- ...this.options.additionalOptions,
23
- host: this.options.host,
24
- port: this.options.port,
25
- });
26
- this.duplex = tlsSocket;
27
- tlsSocket.once('secureConnect', () => {
28
- resolve();
29
- });
30
- tlsSocket.once('error', (err) => {
31
- reject(err);
32
- });
33
- tlsSocket.once('end', () => {
34
- reject(new Error('TLS socket closed before handshake'));
35
- });
36
- tlsSocket.setTimeout(10000, () => {
37
- tlsSocket.destroy();
38
- reject(new Error('OB TLS handshake timeout'));
39
- });
40
- });
41
- }
42
- }
43
- exports.TlsTransport = TlsTransport;
44
- //# sourceMappingURL=tls.transport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tls.transport.js","sourceRoot":"","sources":["../../src/transport/tls.transport.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,6BAA4D;AAC5D,sCAA8C;AAO9C,MAAa,YAAa,SAAQ,qBAA8B;IAG5D,YAAY,OAA4B;QACpC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,KAAK;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;YAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAEjE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,OAAO;QACH,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,0BAAiB,CAAC,kBAAkB,CAAC,CAAC;QAEjE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,SAAS,GAAG,IAAA,aAAO,EAAC;gBACtB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB;gBACjC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;aAC1B,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YAExB,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE;gBACjC,OAAO,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBACnC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;gBACvB,MAAM,CAAC,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;YAEH,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE;gBAC7B,SAAS,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AA5CD,oCA4CC"}
@@ -1,19 +0,0 @@
1
- import { Duplex } from 'stream';
2
- export declare abstract class Transport<T> {
3
- protected options: T;
4
- /**
5
- * The stream the client will use
6
- * @type {Duplex}
7
- */
8
- abstract duplex?: Duplex;
9
- get active(): boolean;
10
- /**
11
- * @param options These will be set by the MqttClient
12
- */
13
- constructor(options: T);
14
- abstract connect(): Promise<void>;
15
- /**
16
- * Close any open connections
17
- */
18
- abstract reset(): void;
19
- }
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Transport = void 0;
4
- class Transport {
5
- get active() {
6
- return !!this.duplex && !this.duplex.destroyed;
7
- }
8
- /**
9
- * @param options These will be set by the MqttClient
10
- */
11
- constructor(options) {
12
- this.options = options;
13
- }
14
- }
15
- exports.Transport = Transport;
16
- //# sourceMappingURL=transport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/transport/transport.ts"],"names":[],"mappings":";;;AAEA,MAAsB,SAAS;IAO3B,IAAW,MAAM;QACb,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,YAA6B,OAAU;QAAV,YAAO,GAAP,OAAO,CAAG;IAAG,CAAC;CAQ9C;AAtBD,8BAsBC"}
@@ -1,15 +0,0 @@
1
- import { Transport } from './transport';
2
- import { ClientOptions } from 'ws';
3
- import { Duplex } from 'stream';
4
- export interface WebsocketTransportOptions {
5
- url: string;
6
- additionalOptions?: ClientOptions;
7
- protocols?: string | string[];
8
- }
9
- export declare class WebsocketTransport extends Transport<WebsocketTransportOptions> {
10
- duplex?: Duplex;
11
- private socket?;
12
- constructor(options: WebsocketTransportOptions);
13
- reset(): void;
14
- connect(): Promise<void>;
15
- }
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WebsocketTransport = void 0;
4
- const transport_1 = require("./transport");
5
- const ws_1 = require("ws");
6
- const errors_1 = require("../errors");
7
- class WebsocketTransport extends transport_1.Transport {
8
- constructor(options) {
9
- super(options);
10
- this.reset();
11
- }
12
- reset() {
13
- if (this.socket)
14
- this.socket.close();
15
- if (this.duplex && !this.duplex.destroyed)
16
- this.duplex.destroy();
17
- this.socket = undefined;
18
- this.duplex = undefined;
19
- }
20
- connect() {
21
- if (this.socket || this.duplex)
22
- throw new errors_1.IllegalStateError('WebSocket still connected.');
23
- this.socket = new ws_1.WebSocket(this.options.url, this.options.protocols, this.options.additionalOptions);
24
- this.duplex = (0, ws_1.createWebSocketStream)(this.socket, { objectMode: true });
25
- const socket = this.socket;
26
- const duplex = this.duplex;
27
- return new Promise((resolve, reject) => {
28
- socket.once('open', () => {
29
- resolve();
30
- duplex.removeAllListeners('error');
31
- });
32
- duplex.once('error', e => {
33
- reject(e);
34
- socket.removeAllListeners('open');
35
- });
36
- });
37
- }
38
- }
39
- exports.WebsocketTransport = WebsocketTransport;
40
- //# sourceMappingURL=websocket.transport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"websocket.transport.js","sourceRoot":"","sources":["../../src/transport/websocket.transport.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,2BAAqE;AAErE,sCAA8C;AAQ9C,MAAa,kBAAmB,SAAQ,qBAAoC;IAIxE,YAAY,OAAkC;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,KAAK;QACD,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAErC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;YAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAEjE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,OAAO;QACH,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,0BAAiB,CAAC,4BAA4B,CAAC,CAAC;QAE1F,IAAI,CAAC,MAAM,GAAG,IAAI,cAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACtG,IAAI,CAAC,MAAM,GAAG,IAAA,0BAAqB,EAAC,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;gBACrB,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;gBACrB,MAAM,CAAC,CAAC,CAAC,CAAC;gBACV,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AApCD,gDAoCC"}