abmqtts 0.0.3 → 0.0.5

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 +181 -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 +101 -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 +24 -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 +77 -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 +60 -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 +197 -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 +35 -44
  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
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./mixin"), exports);
18
+ __exportStar(require("./message-sync.mixin"), exports);
19
+ __exportStar(require("./realtime-sub.mixin"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/realtime/mixins/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,uDAAqC;AACrC,uDAAqC"}
@@ -0,0 +1,8 @@
1
+ import { Mixin } from './mixin';
2
+ import { RealtimeClient } from '../realtime.client';
3
+ export declare class MessageSyncMixin extends Mixin {
4
+ apply(client: RealtimeClient): void;
5
+ private handleMessageSync;
6
+ private static getThreadIdFromPath;
7
+ get name(): string;
8
+ }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessageSyncMixin = void 0;
4
+ const mixin_1 = require("./mixin");
5
+ const constants_1 = require("../../constants");
6
+ const shared_1 = require("../../shared");
7
+ const obmqtt_1 = require("obmqtt");
8
+ class MessageSyncMixin extends mixin_1.Mixin {
9
+ apply(client) {
10
+ (0, mixin_1.hook)(client, 'connect', {
11
+ post: () => {
12
+ if (!client.mqtt) {
13
+ throw new obmqtt_1.IllegalStateError('No mqtt client created');
14
+ }
15
+ client.mqtt.listen({
16
+ topic: constants_1.Topics.MESSAGE_SYNC.id,
17
+ transformer: async ({ payload }) => constants_1.Topics.MESSAGE_SYNC.parser
18
+ .parseMessage(constants_1.Topics.MESSAGE_SYNC, await (0, shared_1.tryUnzipAsync)(payload))
19
+ .map(msg => msg.data),
20
+ }, data => this.handleMessageSync(client, data));
21
+ },
22
+ });
23
+ }
24
+ handleMessageSync(client, syncData) {
25
+ for (const element of syncData) {
26
+ const data = element.data;
27
+ if (!data) {
28
+ client.emit('iris', element);
29
+ continue;
30
+ }
31
+ delete element.data;
32
+ data.forEach(e => {
33
+ if (!e.path) {
34
+ client.emit('iris', { ...element, ...e });
35
+ }
36
+ if (e.path.startsWith('/direct_v2/threads') && e.value) {
37
+ client.emit('message', {
38
+ ...element,
39
+ message: {
40
+ path: e.path,
41
+ op: e.op,
42
+ thread_id: MessageSyncMixin.getThreadIdFromPath(e.path),
43
+ ...JSON.parse(e.value),
44
+ },
45
+ });
46
+ }
47
+ else {
48
+ client.emit('threadUpdate', {
49
+ ...element,
50
+ meta: {
51
+ path: e.path,
52
+ op: e.op,
53
+ thread_id: MessageSyncMixin.getThreadIdFromPath(e.path),
54
+ },
55
+ update: {
56
+ ...JSON.parse(e.value),
57
+ },
58
+ });
59
+ }
60
+ });
61
+ }
62
+ }
63
+ static getThreadIdFromPath(path) {
64
+ const itemMatch = path.match(/^\/direct_v2\/threads\/(\d+)/);
65
+ if (itemMatch)
66
+ return itemMatch[1];
67
+ const inboxMatch = path.match(/^\/direct_v2\/inbox\/threads\/(\d+)/);
68
+ if (inboxMatch)
69
+ return inboxMatch[1];
70
+ return undefined;
71
+ }
72
+ get name() {
73
+ return 'Message Sync';
74
+ }
75
+ }
76
+ exports.MessageSyncMixin = MessageSyncMixin;
77
+ //# sourceMappingURL=message-sync.mixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-sync.mixin.js","sourceRoot":"","sources":["../../../src/realtime/mixins/message-sync.mixin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { RealtimeClient } from '../realtime.client';
2
+ import { IgApiClient } from 'instagram-private-api';
3
+ export declare abstract class Mixin {
4
+ abstract apply(client: RealtimeClient, ig: IgApiClient): void;
5
+ abstract get name(): string;
6
+ }
7
+ export declare function applyMixins(mixins: Mixin[], client: RealtimeClient, ig: IgApiClient): void;
8
+ export declare function hook<K extends string, Fn extends (...args: any[]) => any>(target: {
9
+ [x in K]: Fn;
10
+ }, key: K, hooks: {
11
+ pre?: (...args: Parameters<Fn>) => void | {
12
+ returnValue: ReturnType<Fn>;
13
+ overrideReturn: boolean;
14
+ };
15
+ post?: (returnValue: ReturnType<Fn>, ...args: Parameters<Fn>) => void | {
16
+ returnValue: ReturnType<Fn>;
17
+ overrideReturn: boolean;
18
+ };
19
+ }): void;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Mixin = void 0;
4
+ exports.applyMixins = applyMixins;
5
+ exports.hook = hook;
6
+ class Mixin {
7
+ }
8
+ exports.Mixin = Mixin;
9
+ function applyMixins(mixins, client, ig) {
10
+ for (const mixin of mixins)
11
+ mixin.apply(client, ig);
12
+ }
13
+ function hook(target, key, hooks) {
14
+ const base = target[key];
15
+ const wrapper = (...args) => {
16
+ let returnValue;
17
+ let overrideReturn = false;
18
+ if (hooks.pre) {
19
+ const res = hooks.pre.apply(target, args);
20
+ if (typeof res === 'object' && res.overrideReturn) {
21
+ overrideReturn = true;
22
+ returnValue = res.returnValue;
23
+ }
24
+ }
25
+ const actualReturn = base.apply(target, args);
26
+ if (!overrideReturn)
27
+ returnValue = actualReturn;
28
+ if (hooks.post) {
29
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- it's always defined
30
+ const res = hooks.post.apply(target, [returnValue, ...args]);
31
+ if (typeof res === 'object' && res.overrideReturn) {
32
+ returnValue = res.returnValue;
33
+ }
34
+ }
35
+ // @ts-expect-error -- return value will be set [if pre sets it, else overrideReturn is false and it will be set by the actual function
36
+ return returnValue;
37
+ };
38
+ // @ts-expect-error -- any[] vs Parameters<Fn>
39
+ target[key] = wrapper.bind(target);
40
+ }
41
+ //# sourceMappingURL=mixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mixin.js","sourceRoot":"","sources":["../../../src/realtime/mixins/mixin.ts"],"names":[],"mappings":";;;AAQA,kCAEC;AAED,oBAqCC;AA9CD,MAAsB,KAAK;CAG1B;AAHD,sBAGC;AAED,SAAgB,WAAW,CAAC,MAAe,EAAE,MAAsB,EAAE,EAAe;IACjF,KAAK,MAAM,KAAK,IAAI,MAAM;QAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,SAAgB,IAAI,CACjB,MAAwB,EACxB,GAAM,EACN,KAMC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,OAAO,GAAG,CAAC,GAAG,IAAoB,EAAkB,EAAE;QACzD,IAAI,WAA2B,CAAC;QAChC,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;gBACjD,cAAc,GAAG,IAAI,CAAC;gBACtB,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;YACjC,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,cAAc;YAAE,WAAW,GAAG,YAAY,CAAC;QAEhD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACd,2FAA2F;YAC3F,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,WAAY,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;YAC9D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;gBACjD,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;YACjC,CAAC;QACJ,CAAC;QACD,uIAAuI;QACvI,OAAO,WAAW,CAAC;IACtB,CAAC,CAAC;IACF,8CAA8C;IAC9C,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { Mixin } from './mixin';
2
+ import { RealtimeClient } from '../realtime.client';
3
+ export declare class RealtimeSubMixin extends Mixin {
4
+ apply(client: RealtimeClient): void;
5
+ private handleRealtimeSub;
6
+ private emitDirectEvent;
7
+ get name(): string;
8
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RealtimeSubMixin = void 0;
4
+ const mixin_1 = require("./mixin");
5
+ const constants_1 = require("../../constants");
6
+ const shared_1 = require("../../shared");
7
+ const subscriptions_1 = require("../subscriptions");
8
+ const obmqtt_1 = require("obmqtt");
9
+ class RealtimeSubMixin extends mixin_1.Mixin {
10
+ apply(client) {
11
+ (0, mixin_1.hook)(client, 'connect', {
12
+ post: () => {
13
+ if (!client.mqtt) {
14
+ throw new obmqtt_1.IllegalStateError('No mqtt client created');
15
+ }
16
+ client.mqtt.listen({
17
+ topic: constants_1.Topics.REALTIME_SUB.id,
18
+ transformer: async ({ payload }) => constants_1.Topics.REALTIME_SUB.parser.parseMessage(constants_1.Topics.REALTIME_SUB, await (0, shared_1.tryUnzipAsync)(payload)),
19
+ }, data => this.handleRealtimeSub(client, data));
20
+ },
21
+ });
22
+ }
23
+ handleRealtimeSub(client, { data, topic: messageTopic }) {
24
+ const { message } = data;
25
+ client.emit('realtimeSub', { data, topic: messageTopic });
26
+ if (typeof message === 'string') {
27
+ this.emitDirectEvent(client, JSON.parse(message));
28
+ }
29
+ else {
30
+ const { topic, payload, json } = message;
31
+ switch (topic) {
32
+ case 'direct': {
33
+ this.emitDirectEvent(client, json);
34
+ break;
35
+ }
36
+ default: {
37
+ const entries = Object.entries(subscriptions_1.QueryIDs);
38
+ const query = entries.find(e => e[1] === topic);
39
+ if (query) {
40
+ client.emit(query[0], json || payload);
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
46
+ emitDirectEvent(client, parsed) {
47
+ parsed.data = parsed.data.map((e) => {
48
+ if (typeof e.value === 'string') {
49
+ e.value = JSON.parse(e.value);
50
+ }
51
+ return e;
52
+ });
53
+ parsed.data.forEach((data) => client.emit('direct', data));
54
+ }
55
+ get name() {
56
+ return 'Realtime Sub';
57
+ }
58
+ }
59
+ exports.RealtimeSubMixin = RealtimeSubMixin;
60
+ //# sourceMappingURL=realtime-sub.mixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realtime-sub.mixin.js","sourceRoot":"","sources":["../../../src/realtime/mixins/realtime-sub.mixin.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AAEtC,+CAAyC;AACzC,yCAA6C;AAE7C,oDAA4C;AAE5C,mCAA2C;AAE3C,MAAa,gBAAiB,SAAQ,aAAK;IACxC,KAAK,CAAC,MAAsB;QACzB,IAAA,YAAI,EAAC,MAAM,EAAE,SAAS,EAAE;YACrB,IAAI,EAAE,GAAG,EAAE;gBACR,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;oBAChB,MAAM,IAAI,0BAAiB,CAAC,wBAAwB,CAAC,CAAC;gBACzD,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,MAAM,CACf;oBACG,KAAK,EAAE,kBAAM,CAAC,YAAY,CAAC,EAAE;oBAC7B,WAAW,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAChC,kBAAM,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,kBAAM,CAAC,YAAY,EAAE,MAAM,IAAA,sBAAa,EAAC,OAAO,CAAC,CAAC;iBAC/F,EACD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAC9C,CAAC;YACL,CAAC;SACH,CAAC,CAAC;IACN,CAAC;IAEO,iBAAiB,CAAC,MAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAiC;QAC3G,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAC1D,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACL,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;YACzC,QAAQ,KAAK,EAAE,CAAC;gBACb,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACb,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBACnC,MAAM;gBACT,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC;oBACP,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,wBAAQ,CAAC,CAAC;oBACzC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;oBAChD,IAAI,KAAK,EAAE,CAAC;wBACT,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAA0B,EAAE,IAAI,IAAI,OAAO,CAAC,CAAC;oBACnE,CAAC;gBACJ,CAAC;YACJ,CAAC;QACJ,CAAC;IACJ,CAAC;IAEO,eAAe,CAAC,MAAsB,EAAE,MAAW;QACxD,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;YACtC,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC/B,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAkC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,IAAI,IAAI;QACL,OAAO,cAAc,CAAC;IACzB,CAAC;CACH;AAvDD,4CAuDC"}
@@ -0,0 +1,14 @@
1
+ import { ParsedMessage, Parser } from './parser';
2
+ import { Topic } from '../../topic';
3
+ import { ThriftPacketDescriptor } from '../../thrift';
4
+ export declare class GraphqlParser implements Parser<GraphQlMessage> {
5
+ static descriptors: ThriftPacketDescriptor[];
6
+ parseMessage(topic: Topic, payload: Buffer): ParsedMessage<GraphQlMessage>;
7
+ }
8
+ export interface GraphQlMessage {
9
+ message: string | {
10
+ topic: string;
11
+ payload: string;
12
+ json: any;
13
+ };
14
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GraphqlParser = void 0;
4
+ const thrift_1 = require("../../thrift");
5
+ const shared_1 = require("../../shared");
6
+ class GraphqlParser {
7
+ parseMessage(topic, payload) {
8
+ const message = (0, shared_1.isJson)(payload)
9
+ ? payload.toString()
10
+ : (0, thrift_1.thriftReadToObject)(payload, GraphqlParser.descriptors) ?? '';
11
+ if (message.payload) {
12
+ message.json = JSON.parse(message.payload);
13
+ }
14
+ return { topic, data: { message } };
15
+ }
16
+ }
17
+ exports.GraphqlParser = GraphqlParser;
18
+ GraphqlParser.descriptors = [
19
+ thrift_1.ThriftDescriptors.binary('topic', 1),
20
+ thrift_1.ThriftDescriptors.binary('payload', 2),
21
+ ];
22
+ //# sourceMappingURL=graphql.parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql.parser.js","sourceRoot":"","sources":["../../../src/realtime/parsers/graphql.parser.ts"],"names":[],"mappings":";;;AAEA,yCAA6F;AAC7F,yCAAsC;AAEtC,MAAa,aAAa;IAMhB,YAAY,CAAC,KAAY,EAAE,OAAe;QAC9C,MAAM,OAAO,GAAQ,IAAA,eAAM,EAAC,OAAO,CAAC;YACjC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE;YACpB,CAAC,CAAC,IAAA,2BAAkB,EAAqC,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACtG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;IACvC,CAAC;;AAdJ,sCAeC;AAdgB,yBAAW,GAA6B;IACnD,0BAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACpC,0BAAiB,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;CACxC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './graphql.parser';
2
+ export * from './iris.parser';
3
+ export * from './json.parser';
4
+ export * from './parser';
5
+ export * from './region-hint.parser';
6
+ export * from './skywalker.parser';
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./graphql.parser"), exports);
18
+ __exportStar(require("./iris.parser"), exports);
19
+ __exportStar(require("./json.parser"), exports);
20
+ __exportStar(require("./parser"), exports);
21
+ __exportStar(require("./region-hint.parser"), exports);
22
+ __exportStar(require("./skywalker.parser"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/realtime/parsers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,gDAA8B;AAC9B,gDAA8B;AAC9B,2CAAyB;AACzB,uDAAqC;AACrC,qDAAmC"}
@@ -0,0 +1,16 @@
1
+ import { ParsedMessage, Parser } from './parser';
2
+ import { Topic } from '../../topic';
3
+ export declare class IrisParser implements Parser<IrisParserData> {
4
+ parseMessage(topic: Topic, payload: Buffer): ParsedMessage<IrisParserData>[];
5
+ }
6
+ export interface IrisParserData {
7
+ event: 'patch' | string;
8
+ data?: any[];
9
+ message_type: number;
10
+ seq_id: number;
11
+ mutation_token: null | string;
12
+ realtime: boolean;
13
+ op?: 'add' | 'replace' | string;
14
+ path?: string;
15
+ sampled?: boolean;
16
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IrisParser = void 0;
4
+ class IrisParser {
5
+ parseMessage(topic, payload) {
6
+ return JSON.parse(payload.toString('utf8')).map((x) => ({ topic, data: x }));
7
+ }
8
+ }
9
+ exports.IrisParser = IrisParser;
10
+ //# sourceMappingURL=iris.parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iris.parser.js","sourceRoot":"","sources":["../../../src/realtime/parsers/iris.parser.ts"],"names":[],"mappings":";;;AAGA,MAAa,UAAU;IACb,YAAY,CAAC,KAAY,EAAE,OAAe;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAiB,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChG,CAAC;CACH;AAJD,gCAIC"}
@@ -0,0 +1,5 @@
1
+ import { ParsedMessage, Parser } from './parser';
2
+ import { Topic } from '../../topic';
3
+ export declare class JsonParser implements Parser<any> {
4
+ parseMessage(topic: Topic, payload: Buffer): ParsedMessage<any>;
5
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonParser = void 0;
4
+ class JsonParser {
5
+ parseMessage(topic, payload) {
6
+ return { topic, data: payload.length > 0 ? JSON.parse(payload.toString()) : {} };
7
+ }
8
+ }
9
+ exports.JsonParser = JsonParser;
10
+ //# sourceMappingURL=json.parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.parser.js","sourceRoot":"","sources":["../../../src/realtime/parsers/json.parser.ts"],"names":[],"mappings":";;;AAGA,MAAa,UAAU;IACb,YAAY,CAAC,KAAY,EAAE,OAAe;QAC9C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpF,CAAC;CACH;AAJD,gCAIC"}
@@ -0,0 +1,8 @@
1
+ import { Topic } from '../../topic';
2
+ export interface Parser<T> {
3
+ parseMessage(topic: Topic, payload: Buffer): ParsedMessage<T>[] | ParsedMessage<T>;
4
+ }
5
+ export interface ParsedMessage<T> {
6
+ topic: Topic;
7
+ data: T;
8
+ }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=packet-flow.js.map
3
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/realtime/parsers/parser.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { ParsedMessage, Parser } from './parser';
2
+ import { Topic } from '../../topic';
3
+ import { ThriftToObjectResult } from '../../thrift';
4
+ export declare class RegionHintParser implements Parser<ThriftToObjectResult<{
5
+ hint: string;
6
+ }>> {
7
+ static descriptors: import("../../thrift").ThriftPacketDescriptor[];
8
+ parseMessage: (topic: Topic, payload: Buffer) => ParsedMessage<ThriftToObjectResult<{
9
+ hint: string;
10
+ }>>;
11
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RegionHintParser = void 0;
4
+ const thrift_1 = require("../../thrift");
5
+ class RegionHintParser {
6
+ constructor() {
7
+ this.parseMessage = (topic, payload) => ({
8
+ topic,
9
+ data: (0, thrift_1.thriftReadToObject)(payload, RegionHintParser.descriptors),
10
+ });
11
+ }
12
+ }
13
+ exports.RegionHintParser = RegionHintParser;
14
+ RegionHintParser.descriptors = [thrift_1.ThriftDescriptors.binary('hint', 1)];
15
+ //# sourceMappingURL=region-hint.parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"region-hint.parser.js","sourceRoot":"","sources":["../../../src/realtime/parsers/region-hint.parser.ts"],"names":[],"mappings":";;;AAEA,yCAA2F;AAE3F,MAAa,gBAAgB;IAA7B;QAGU,iBAAY,GAAG,CAAC,KAAY,EAAE,OAAe,EAAyD,EAAE,CAAC,CAAC;YAC9G,KAAK;YACL,IAAI,EAAE,IAAA,2BAAkB,EAAC,OAAO,EAAE,gBAAgB,CAAC,WAAW,CAAC;SACjE,CAAC,CAAC;IACN,CAAC;;AAPD,4CAOC;AANgB,4BAAW,GAAG,CAAC,0BAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,AAAxC,CAAyC"}
@@ -0,0 +1,11 @@
1
+ import { ParsedMessage, Parser } from './parser';
2
+ import { Topic } from '../../topic';
3
+ import { ThriftToObjectResult } from '../../thrift';
4
+ export declare class SkywalkerParser implements Parser<ThriftToObjectResult<SkywalkerResult>> {
5
+ static descriptors: import("../../thrift").ThriftPacketDescriptor[];
6
+ parseMessage(topic: Topic, payload: Buffer): ParsedMessage<ThriftToObjectResult<SkywalkerResult>>;
7
+ }
8
+ export interface SkywalkerResult {
9
+ topic: number;
10
+ payload: string;
11
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SkywalkerParser = void 0;
4
+ const thrift_1 = require("../../thrift");
5
+ class SkywalkerParser {
6
+ parseMessage(topic, payload) {
7
+ return {
8
+ topic,
9
+ data: (0, thrift_1.thriftReadToObject)(payload, SkywalkerParser.descriptors),
10
+ };
11
+ }
12
+ }
13
+ exports.SkywalkerParser = SkywalkerParser;
14
+ SkywalkerParser.descriptors = [thrift_1.ThriftDescriptors.int32('topic', 1), thrift_1.ThriftDescriptors.binary('payload', 2)];
15
+ //# sourceMappingURL=skywalker.parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skywalker.parser.js","sourceRoot":"","sources":["../../../src/realtime/parsers/skywalker.parser.ts"],"names":[],"mappings":";;;AAEA,yCAA2F;AAE3F,MAAa,eAAe;IAGlB,YAAY,CAAC,KAAY,EAAE,OAAe;QAC9C,OAAO;YACJ,KAAK;YACL,IAAI,EAAE,IAAA,2BAAkB,EAAC,OAAO,EAAE,eAAe,CAAC,WAAW,CAAC;SAChE,CAAC;IACL,CAAC;;AARJ,0CASC;AARgB,2BAAW,GAAG,CAAC,0BAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,0BAAiB,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { IgApiClient } from 'instagram-private-api';
2
+ import { Commands, DirectCommands } from './commands';
3
+ import { ToEventFn } from '../shared';
4
+ import { MQTToTClient, MQTToTConnectionClientInfo } from '../mqttot';
5
+ import { MqttMessageOutgoing } from 'obmqtt';
6
+ import { EventEmitter } from 'eventemitter3';
7
+ import { RealtimeClientEvents } from './realtime.client.events';
8
+ import { Mixin } from './mixins';
9
+ import { SocksProxy } from 'socks';
10
+ import { ConnectionOptions } from 'tls';
11
+ export interface RealtimeClientInitOptions {
12
+ graphQlSubs?: string[];
13
+ skywalkerSubs?: string[];
14
+ irisData?: {
15
+ seq_id: number;
16
+ snapshot_at_ms: number;
17
+ };
18
+ connectOverrides?: MQTToTConnectionClientInfo;
19
+ enableTrace?: boolean;
20
+ autoReconnect?: boolean;
21
+ mixins?: Mixin[];
22
+ socksOptions?: SocksProxy;
23
+ additionalTlsOptions?: ConnectionOptions;
24
+ }
25
+ export declare class RealtimeClient extends EventEmitter<ToEventFn<RealtimeClientEvents>> {
26
+ get mqtt(): MQTToTClient | undefined;
27
+ private realtimeDebug;
28
+ private messageDebug;
29
+ private _mqtt?;
30
+ private connection?;
31
+ private readonly ig;
32
+ private initOptions?;
33
+ private safeDisconnect;
34
+ commands?: Commands;
35
+ direct?: DirectCommands;
36
+ /**
37
+ *
38
+ * @param {IgApiClient} ig
39
+ * @param mixins - by default MessageSync and Realtime mixins are used
40
+ */
41
+ constructor(ig: IgApiClient, mixins?: Mixin[]);
42
+ private setInitOptions;
43
+ private constructConnection;
44
+ connect(initOptions?: RealtimeClientInitOptions | string[]): Promise<any>;
45
+ private emitError;
46
+ private emitWarning;
47
+ disconnect(): Promise<void>;
48
+ graphQlSubscribe(sub: string | string[]): Promise<MqttMessageOutgoing>;
49
+ skywalkerSubscribe(sub: string | string[]): Promise<MqttMessageOutgoing>;
50
+ irisSubscribe({ seq_id, snapshot_at_ms, }: {
51
+ seq_id: number;
52
+ snapshot_at_ms: number;
53
+ }): Promise<MqttMessageOutgoing>;
54
+ }
@@ -0,0 +1,35 @@
1
+ import { GraphQlMessage, IrisParserData, ParsedMessage } from './parsers';
2
+ import { AppPresenceEventWrapper, MessageSyncMessageWrapper, RealtimeSubDirectDataWrapper } from './messages';
3
+ import { Topic } from '../topic';
4
+ import { MqttMessage } from 'obmqtt';
5
+ import { QueryIDs } from './subscriptions';
6
+ import { ThreadUpdateWrapper } from './messages/thread-update.message';
7
+ type ReceiveEvent<T> = [Topic<T>, ParsedMessage<T>[]?];
8
+ export type RealtimeClientEvents = MergedRealtimeSubPayloads & {
9
+ error: Error;
10
+ warning: Error;
11
+ receive: ReceiveEvent<unknown>;
12
+ receiveRaw: MqttMessage;
13
+ close: [];
14
+ disconnect: [];
15
+ realtimeSub: ParsedMessage<GraphQlMessage>;
16
+ direct: RealtimeSubDirectDataWrapper;
17
+ iris: Partial<IrisParserData>;
18
+ message: MessageSyncMessageWrapper;
19
+ threadUpdate: ThreadUpdateWrapper;
20
+ clientConfigUpdate: {
21
+ client_config_update_event: {
22
+ publish_id: string;
23
+ client_config_name: string;
24
+ backing: 'QE' | string;
25
+ client_subscription_id: '17849856529644700' | string;
26
+ };
27
+ };
28
+ };
29
+ export type MergedRealtimeSubPayloads = {
30
+ [x in keyof typeof QueryIDs]: string | Record<string, unknown>;
31
+ } & KnownRealtimeSubPayloads;
32
+ export type KnownRealtimeSubPayloads = {
33
+ appPresence: AppPresenceEventWrapper;
34
+ };
35
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=realtime.client.events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realtime.client.events.js","sourceRoot":"","sources":["../../src/realtime/realtime.client.events.ts"],"names":[],"mappings":""}