nodejs-insta-private-api-mqt 1.3.70

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 (240) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3677 -0
  3. package/dist/constants/constants.js +342 -0
  4. package/dist/constants/index.js +58 -0
  5. package/dist/core/client.js +419 -0
  6. package/dist/core/nav-chain.js +282 -0
  7. package/dist/core/repository.js +7 -0
  8. package/dist/core/request.js +390 -0
  9. package/dist/core/state.js +1473 -0
  10. package/dist/core/utils.js +786 -0
  11. package/dist/downloadMedia.js +381 -0
  12. package/dist/errors/index.d.ts +16 -0
  13. package/dist/errors/index.js +38 -0
  14. package/dist/errors/index.js.map +1 -0
  15. package/dist/extend.js +167 -0
  16. package/dist/fbns/fbns.client.d.ts +32 -0
  17. package/dist/fbns/fbns.client.events.d.ts +41 -0
  18. package/dist/fbns/fbns.client.events.js +3 -0
  19. package/dist/fbns/fbns.client.events.js.map +1 -0
  20. package/dist/fbns/fbns.client.js +252 -0
  21. package/dist/fbns/fbns.client.js.map +1 -0
  22. package/dist/fbns/fbns.device-auth.d.ts +17 -0
  23. package/dist/fbns/fbns.device-auth.js +54 -0
  24. package/dist/fbns/fbns.device-auth.js.map +1 -0
  25. package/dist/fbns/fbns.types.d.ts +83 -0
  26. package/dist/fbns/fbns.types.js +3 -0
  27. package/dist/fbns/fbns.types.js.map +1 -0
  28. package/dist/fbns/fbns.utilities.d.ts +2 -0
  29. package/dist/fbns/fbns.utilities.js +79 -0
  30. package/dist/fbns/fbns.utilities.js.map +1 -0
  31. package/dist/fbns/index.d.ts +4 -0
  32. package/dist/fbns/index.js +21 -0
  33. package/dist/fbns/index.js.map +1 -0
  34. package/dist/index.js +139 -0
  35. package/dist/mqtt-shim.d.ts +96 -0
  36. package/dist/mqtt-shim.js +15 -0
  37. package/dist/mqttot/index.d.ts +4 -0
  38. package/dist/mqttot/index.js +21 -0
  39. package/dist/mqttot/index.js.map +1 -0
  40. package/dist/mqttot/mqttot.client.d.ts +39 -0
  41. package/dist/mqttot/mqttot.client.js +318 -0
  42. package/dist/mqttot/mqttot.client.js.map +1 -0
  43. package/dist/mqttot/mqttot.connect.request.packet.d.ts +7 -0
  44. package/dist/mqttot/mqttot.connect.request.packet.js +9 -0
  45. package/dist/mqttot/mqttot.connect.request.packet.js.map +1 -0
  46. package/dist/mqttot/mqttot.connect.response.packet.d.ts +7 -0
  47. package/dist/mqttot/mqttot.connect.response.packet.js +24 -0
  48. package/dist/mqttot/mqttot.connect.response.packet.js.map +1 -0
  49. package/dist/mqttot/mqttot.connection.d.ts +57 -0
  50. package/dist/mqttot/mqttot.connection.js +79 -0
  51. package/dist/mqttot/mqttot.connection.js.map +1 -0
  52. package/dist/package.json +59 -0
  53. package/dist/realtime/commands/commands.d.ts +15 -0
  54. package/dist/realtime/commands/commands.js +71 -0
  55. package/dist/realtime/commands/commands.js.map +1 -0
  56. package/dist/realtime/commands/direct.commands.d.ts +75 -0
  57. package/dist/realtime/commands/direct.commands.js +417 -0
  58. package/dist/realtime/commands/direct.commands.js.map +1 -0
  59. package/dist/realtime/commands/enhanced.direct.commands.js +1731 -0
  60. package/dist/realtime/commands/enhanced.direct.commands.js.bak +967 -0
  61. package/dist/realtime/commands/index.d.ts +2 -0
  62. package/dist/realtime/commands/index.js +20 -0
  63. package/dist/realtime/commands/index.js.map +1 -0
  64. package/dist/realtime/delta-sync.manager.js +293 -0
  65. package/dist/realtime/features/dm-sender.js +88 -0
  66. package/dist/realtime/features/error-handler.js +185 -0
  67. package/dist/realtime/features/gap-handler.js +61 -0
  68. package/dist/realtime/features/persistent-logger.js +186 -0
  69. package/dist/realtime/features/presence.manager.js +66 -0
  70. package/dist/realtime/features/session-health-monitor.js +345 -0
  71. package/dist/realtime/index.js +30 -0
  72. package/dist/realtime/messages/app-presence.event.d.ts +9 -0
  73. package/dist/realtime/messages/app-presence.event.js +3 -0
  74. package/dist/realtime/messages/app-presence.event.js.map +1 -0
  75. package/dist/realtime/messages/index.d.ts +3 -0
  76. package/dist/realtime/messages/index.js +20 -0
  77. package/dist/realtime/messages/index.js.map +1 -0
  78. package/dist/realtime/messages/message-sync.message.d.ts +222 -0
  79. package/dist/realtime/messages/message-sync.message.js +43 -0
  80. package/dist/realtime/messages/message-sync.message.js.map +1 -0
  81. package/dist/realtime/messages/realtime-sub.direct.data.d.ts +11 -0
  82. package/dist/realtime/messages/realtime-sub.direct.data.js +3 -0
  83. package/dist/realtime/messages/realtime-sub.direct.data.js.map +1 -0
  84. package/dist/realtime/messages/thread-update.message.d.ts +68 -0
  85. package/dist/realtime/messages/thread-update.message.js +3 -0
  86. package/dist/realtime/messages/thread-update.message.js.map +1 -0
  87. package/dist/realtime/mixins/index.d.ts +3 -0
  88. package/dist/realtime/mixins/index.js +20 -0
  89. package/dist/realtime/mixins/index.js.map +1 -0
  90. package/dist/realtime/mixins/message-sync.mixin.d.ts +8 -0
  91. package/dist/realtime/mixins/message-sync.mixin.js +596 -0
  92. package/dist/realtime/mixins/message-sync.mixin.js.map +1 -0
  93. package/dist/realtime/mixins/mixin.d.ts +19 -0
  94. package/dist/realtime/mixins/mixin.js +41 -0
  95. package/dist/realtime/mixins/mixin.js.map +1 -0
  96. package/dist/realtime/mixins/presence-typing.mixin.js +33 -0
  97. package/dist/realtime/mixins/realtime-sub.mixin.d.ts +8 -0
  98. package/dist/realtime/mixins/realtime-sub.mixin.js +181 -0
  99. package/dist/realtime/mixins/realtime-sub.mixin.js.map +1 -0
  100. package/dist/realtime/parsers/graphql-parser.js +43 -0
  101. package/dist/realtime/parsers/graphql.parser.d.ts +15 -0
  102. package/dist/realtime/parsers/graphql.parser.js +22 -0
  103. package/dist/realtime/parsers/graphql.parser.js.map +1 -0
  104. package/dist/realtime/parsers/index.d.ts +6 -0
  105. package/dist/realtime/parsers/index.js +23 -0
  106. package/dist/realtime/parsers/index.js.map +1 -0
  107. package/dist/realtime/parsers/iris-parser.js +43 -0
  108. package/dist/realtime/parsers/iris.parser.d.ts +17 -0
  109. package/dist/realtime/parsers/iris.parser.js +10 -0
  110. package/dist/realtime/parsers/iris.parser.js.map +1 -0
  111. package/dist/realtime/parsers/json-parser.js +43 -0
  112. package/dist/realtime/parsers/json.parser.d.ts +6 -0
  113. package/dist/realtime/parsers/json.parser.js +10 -0
  114. package/dist/realtime/parsers/json.parser.js.map +1 -0
  115. package/dist/realtime/parsers/parser.d.ts +9 -0
  116. package/dist/realtime/parsers/parser.js +3 -0
  117. package/dist/realtime/parsers/parser.js.map +1 -0
  118. package/dist/realtime/parsers/region-hint-parser.js +43 -0
  119. package/dist/realtime/parsers/region-hint.parser.d.ts +12 -0
  120. package/dist/realtime/parsers/region-hint.parser.js +15 -0
  121. package/dist/realtime/parsers/region-hint.parser.js.map +1 -0
  122. package/dist/realtime/parsers/skywalker-parser.js +43 -0
  123. package/dist/realtime/parsers/skywalker.parser.d.ts +12 -0
  124. package/dist/realtime/parsers/skywalker.parser.js +15 -0
  125. package/dist/realtime/parsers/skywalker.parser.js.map +1 -0
  126. package/dist/realtime/parsers-advanced.js +158 -0
  127. package/dist/realtime/proto/common.proto +38 -0
  128. package/dist/realtime/proto/direct.proto +65 -0
  129. package/dist/realtime/proto/ig-messages.proto +83 -0
  130. package/dist/realtime/proto/iris.proto +188 -0
  131. package/dist/realtime/proto-parser.js +195 -0
  132. package/dist/realtime/protocols/iris.handshake.js +74 -0
  133. package/dist/realtime/protocols/proto-definitions.js +80 -0
  134. package/dist/realtime/protocols/skywalker.protocol.js +91 -0
  135. package/dist/realtime/realtime.client.events.js +3 -0
  136. package/dist/realtime/realtime.client.js +1915 -0
  137. package/dist/realtime/realtime.service.js +462 -0
  138. package/dist/realtime/reconnect.manager.js +88 -0
  139. package/dist/realtime/session.manager.js +121 -0
  140. package/dist/realtime/subscriptions/graphql.subscription.d.ts +47 -0
  141. package/dist/realtime/subscriptions/graphql.subscription.js +99 -0
  142. package/dist/realtime/subscriptions/graphql.subscription.js.map +1 -0
  143. package/dist/realtime/subscriptions/index.d.ts +2 -0
  144. package/dist/realtime/subscriptions/index.js +19 -0
  145. package/dist/realtime/subscriptions/index.js.map +1 -0
  146. package/dist/realtime/subscriptions/skywalker.subscription.d.ts +4 -0
  147. package/dist/realtime/subscriptions/skywalker.subscription.js +13 -0
  148. package/dist/realtime/subscriptions/skywalker.subscription.js.map +1 -0
  149. package/dist/realtime/topic-map.js +71 -0
  150. package/dist/realtime/topic.js +80 -0
  151. package/dist/repositories/account.repository.js +575 -0
  152. package/dist/repositories/bloks.repository.js +70 -0
  153. package/dist/repositories/captcha.repository.js +44 -0
  154. package/dist/repositories/challenge.repository.js +120 -0
  155. package/dist/repositories/clip.repository.js +165 -0
  156. package/dist/repositories/close-friends.repository.js +46 -0
  157. package/dist/repositories/collection.repository.js +68 -0
  158. package/dist/repositories/direct-thread.repository.js +446 -0
  159. package/dist/repositories/direct.repository.js +232 -0
  160. package/dist/repositories/explore.repository.js +70 -0
  161. package/dist/repositories/fbsearch.repository.js +140 -0
  162. package/dist/repositories/feed.repository.js +245 -0
  163. package/dist/repositories/friendship.repository.js +296 -0
  164. package/dist/repositories/fundraiser.repository.js +49 -0
  165. package/dist/repositories/hashtag.repository.js +99 -0
  166. package/dist/repositories/highlights.repository.js +121 -0
  167. package/dist/repositories/insights.repository.js +82 -0
  168. package/dist/repositories/location.repository.js +84 -0
  169. package/dist/repositories/media.repository.js +395 -0
  170. package/dist/repositories/multiple-accounts.repository.js +41 -0
  171. package/dist/repositories/news.repository.js +35 -0
  172. package/dist/repositories/note.repository.js +57 -0
  173. package/dist/repositories/notification.repository.js +79 -0
  174. package/dist/repositories/share.repository.js +35 -0
  175. package/dist/repositories/signup.repository.js +218 -0
  176. package/dist/repositories/story.repository.js +290 -0
  177. package/dist/repositories/timeline.repository.js +60 -0
  178. package/dist/repositories/totp.repository.js +139 -0
  179. package/dist/repositories/track.repository.js +53 -0
  180. package/dist/repositories/upload.repository.js +204 -0
  181. package/dist/repositories/user.repository.js +360 -0
  182. package/dist/sendmedia/index.js +27 -0
  183. package/dist/sendmedia/sendFile.js +72 -0
  184. package/dist/sendmedia/sendPhoto.js +142 -0
  185. package/dist/sendmedia/sendRavenPhoto.js +153 -0
  186. package/dist/sendmedia/sendRavenVideo.js +158 -0
  187. package/dist/sendmedia/uploadPhoto.js +107 -0
  188. package/dist/sendmedia/uploadfFile.js +130 -0
  189. package/dist/services/live.service.js +139 -0
  190. package/dist/services/search.service.js +115 -0
  191. package/dist/shared/index.js +96 -0
  192. package/dist/shared/shared.js +86 -0
  193. package/dist/thrift/index.d.ts +3 -0
  194. package/dist/thrift/index.js +20 -0
  195. package/dist/thrift/index.js.map +1 -0
  196. package/dist/thrift/thrift.d.ts +59 -0
  197. package/dist/thrift/thrift.js +101 -0
  198. package/dist/thrift/thrift.js.map +1 -0
  199. package/dist/thrift/thrift.reading.d.ts +41 -0
  200. package/dist/thrift/thrift.reading.js +327 -0
  201. package/dist/thrift/thrift.reading.js.map +1 -0
  202. package/dist/thrift/thrift.writing.d.ts +44 -0
  203. package/dist/thrift/thrift.writing.js +342 -0
  204. package/dist/thrift/thrift.writing.js.map +1 -0
  205. package/dist/types/index.js +285 -0
  206. package/dist/useMultiFileAuthState.js +1768 -0
  207. package/dist/utils/helper-1.js +1 -0
  208. package/dist/utils/helper-10.js +1 -0
  209. package/dist/utils/helper-11.js +1 -0
  210. package/dist/utils/helper-12.js +1 -0
  211. package/dist/utils/helper-13.js +1 -0
  212. package/dist/utils/helper-14.js +1 -0
  213. package/dist/utils/helper-15.js +1 -0
  214. package/dist/utils/helper-16.js +1 -0
  215. package/dist/utils/helper-17.js +1 -0
  216. package/dist/utils/helper-18.js +1 -0
  217. package/dist/utils/helper-19.js +1 -0
  218. package/dist/utils/helper-2.js +1 -0
  219. package/dist/utils/helper-20.js +1 -0
  220. package/dist/utils/helper-21.js +1 -0
  221. package/dist/utils/helper-22.js +1 -0
  222. package/dist/utils/helper-23.js +1 -0
  223. package/dist/utils/helper-24.js +1 -0
  224. package/dist/utils/helper-25.js +1 -0
  225. package/dist/utils/helper-26.js +1 -0
  226. package/dist/utils/helper-27.js +1 -0
  227. package/dist/utils/helper-28.js +1 -0
  228. package/dist/utils/helper-29.js +1 -0
  229. package/dist/utils/helper-3.js +1 -0
  230. package/dist/utils/helper-30.js +1 -0
  231. package/dist/utils/helper-4.js +1 -0
  232. package/dist/utils/helper-5.js +1 -0
  233. package/dist/utils/helper-6.js +1 -0
  234. package/dist/utils/helper-7.js +1 -0
  235. package/dist/utils/helper-8.js +1 -0
  236. package/dist/utils/helper-9.js +1 -0
  237. package/dist/utils/index.js +280 -0
  238. package/dist/utils/insta-mqtt-helper.js +128 -0
  239. package/examples/listen-to-messages.js +86 -0
  240. package/package.json +82 -0
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FbnsClient = void 0;
4
+ const constants_1 = require("../constants");
5
+ const fbns_device_auth_1 = require("./fbns.device-auth");
6
+ const shared_1 = require("../shared");
7
+ const mqttot_1 = require("../mqttot");
8
+ const chance_1 = require("chance");
9
+ const mqtts_1 = require("../mqtt-shim");
10
+ const errors_1 = require("../errors");
11
+ const eventemitter3_1 = require("eventemitter3");
12
+ const fbns_utilities_1 = require("./fbns.utilities");
13
+
14
+ /**
15
+ * FbnsClient
16
+ *
17
+ * Lightweight wrapper around MQTToTClient to handle FBNS-specific connection
18
+ * payloads, registration, message handling and safe disconnect behavior.
19
+ *
20
+ * NOTE: This file contains a small but important robustness change:
21
+ * when receiving an empty CONNACK payload we no longer force a disconnect.
22
+ * Instagram sometimes returns a successful CONNACK with an empty payload;
23
+ * treating that as a fatal error causes unnecessary disconnect loops.
24
+ */
25
+ class FbnsClient extends eventemitter3_1.EventEmitter {
26
+ get auth() {
27
+ return this._auth;
28
+ }
29
+ set auth(value) {
30
+ this._auth = value;
31
+ }
32
+ constructor(ig) {
33
+ super();
34
+ this.ig = ig;
35
+ this.fbnsDebug = (0, shared_1.debugChannel)('fbns');
36
+ this.safeDisconnect = false;
37
+ this._auth = new fbns_device_auth_1.FbnsDeviceAuth(this.ig);
38
+ }
39
+
40
+ buildConnection() {
41
+ this.fbnsDebug('Constructing connection');
42
+ this.conn = new mqttot_1.MQTToTConnection({
43
+ clientIdentifier: this._auth.clientId,
44
+ clientInfo: {
45
+ userId: BigInt(this._auth.userId),
46
+ userAgent: (0, shared_1.createFbnsUserAgent)(this.ig),
47
+ clientCapabilities: 183,
48
+ endpointCapabilities: 128,
49
+ publishFormat: 1,
50
+ noAutomaticForeground: true,
51
+ makeUserAvailableInForeground: false,
52
+ deviceId: this._auth.deviceId,
53
+ isInitiallyForeground: false,
54
+ networkType: 1,
55
+ networkSubtype: 0,
56
+ clientMqttSessionId: BigInt(Date.now()) & BigInt(0xffffffff),
57
+ subscribeTopics: [76, 80, 231],
58
+ clientType: 'device_auth',
59
+ appId: BigInt(567310203415052),
60
+ deviceSecret: this._auth.deviceSecret,
61
+ anotherUnknown: BigInt(-1),
62
+ clientStack: 3,
63
+ },
64
+ password: this._auth.password,
65
+ });
66
+ }
67
+
68
+ /**
69
+ * Connect to FBNS (Firebase/FBNS equivalent over Instagram MQTT)
70
+ *
71
+ * Options:
72
+ * - enableTrace
73
+ * - autoReconnect
74
+ * - socksOptions
75
+ * - additionalTlsOptions
76
+ *
77
+ * Important robustness changes:
78
+ * - Do not force disconnect on empty CONNACK payload; log and continue.
79
+ * - Use clean:false to prefer session resume on reconnect (less aggressive).
80
+ */
81
+ async connect({ enableTrace, autoReconnect, socksOptions, additionalTlsOptions, } = {}) {
82
+ this.fbnsDebug('Connecting to FBNS...');
83
+ // Ensure auth info is up-to-date
84
+ this.auth.update();
85
+
86
+ this.client = new mqttot_1.MQTToTClient({
87
+ url: constants_1.FBNS.HOST_NAME_V6,
88
+ payloadProvider: () => {
89
+ this.buildConnection();
90
+ if (!this.conn) {
91
+ throw new errors_1.InvalidStateError("No connection created - can't build provider");
92
+ }
93
+ return (0, shared_1.compressDeflate)(this.conn.toThrift());
94
+ },
95
+ enableTrace,
96
+ autoReconnect: autoReconnect ?? true,
97
+ requirePayload: false,
98
+ socksOptions,
99
+ additionalOptions: additionalTlsOptions,
100
+ });
101
+
102
+ // Re-emit warnings/errors to outer listeners
103
+ this.client.on('warning', w => this.emit('warning', w));
104
+ this.client.on('error', e => this.emit('error', e));
105
+
106
+ // If disconnect happens and safeDisconnect is false, emit error to upper layer
107
+ this.client.on('disconnect', reason => this.safeDisconnect
108
+ ? this.emit('disconnect', reason && JSON.stringify(reason))
109
+ : this.emit('error', new errors_1.ClientDisconnectedError(`MQTToTClient got disconnected. Reason: ${reason && JSON.stringify(reason)}`)));
110
+
111
+ // Listen for FBNS messages and transform them accordingly
112
+ this.client.listen(constants_1.FbnsTopics.FBNS_MESSAGE.id, msg => this.handleMessage(msg));
113
+ this.client.listen({
114
+ topic: constants_1.FbnsTopics.FBNS_EXP_LOGGING.id,
115
+ transformer: async (msg) => JSON.parse((await (0, shared_1.tryUnzipAsync)(msg.payload)).toString()),
116
+ }, msg => this.emit('logging', msg));
117
+ this.client.listen(constants_1.FbnsTopics.PP.id, msg => this.emit('pp', msg.payload.toString()));
118
+
119
+ // Handle connect event from the underlying mqtt client
120
+ this.client.on('connect', async (res) => {
121
+ if (!this.client) {
122
+ throw new mqtts_1.IllegalStateError('No client registered but an event was received');
123
+ }
124
+
125
+ this.fbnsDebug('Connected to MQTT');
126
+
127
+ // IMPORTANT: Instagram sometimes returns a valid CONNACK with an empty payload.
128
+ // Historically this library treated that as an error and disconnected.
129
+ // That behavior causes unnecessary reconnect loops. Instead, log and continue.
130
+ if (!res.payload?.length) {
131
+ this.fbnsDebug(`Received empty connect packet. Reason: ${res.errorName} (continuing without disconnect)`);
132
+ // Emit a warning but do not disconnect.
133
+ this.emit('warning', new errors_1.EmptyPacketError('Received empty connect packet (continuing).'));
134
+ // NOTE: we do not return here because some flows expect the registration step below.
135
+ // If you prefer to skip registration on empty payload, uncomment the next line:
136
+ // return;
137
+ } else {
138
+ // If payload present, read auth as before
139
+ try {
140
+ const payload = res.payload.toString('utf8');
141
+ this.fbnsDebug(`Received auth: ${payload}`);
142
+ this._auth.read(payload);
143
+ this.emit('auth', this.auth);
144
+ } catch (e) {
145
+ this.fbnsDebug(`Failed to parse connect payload: ${e?.message || e}`);
146
+ this.emit('error', e);
147
+ // do not force disconnect here - let reconnect logic handle transient issues
148
+ }
149
+ }
150
+
151
+ // Continue with registration attempt if possible.
152
+ try {
153
+ await this.client.mqttotPublish({
154
+ topic: constants_1.FbnsTopics.FBNS_REG_REQ.id,
155
+ payload: Buffer.from(JSON.stringify({
156
+ pkg_name: constants_1.INSTAGRAM_PACKAGE_NAME,
157
+ appid: this.ig.state.fbAnalyticsApplicationId,
158
+ }), 'utf8'),
159
+ qosLevel: 1,
160
+ });
161
+ } catch (e) {
162
+ // Log registration publish error but don't necessarily abort connection entirely here
163
+ this.fbnsDebug(`FBNS_REG_REQ publish failed: ${e?.message || e}`);
164
+ this.emit('warning', e);
165
+ }
166
+ });
167
+
168
+ // Set up the register response listener BEFORE connecting
169
+ // because the response can arrive before connect() returns
170
+ const regRespPromise = (0, shared_1.listenOnce)(this.client, constants_1.FbnsTopics.FBNS_REG_RESP.id);
171
+
172
+ // Establish connection with conservative options (prefer session resume)
173
+ await this.client
174
+ .connect({
175
+ keepAlive: 60,
176
+ protocolLevel: 3,
177
+ // Use clean: false to allow session resume where the broker supports it.
178
+ // If you have issues with stale state, consider setting clean: true.
179
+ clean: false,
180
+ connectDelay: 60 * 1000,
181
+ })
182
+ .catch(e => {
183
+ this.fbnsDebug(`Connection failed: ${e}`);
184
+ throw e;
185
+ });
186
+
187
+ // Subscribe to FBNS message topic
188
+ await this.client.subscribe({ topic: constants_1.FbnsTopics.FBNS_MESSAGE.id });
189
+
190
+ // Wait for the register response (listener was set up before connect)
191
+ const msg = await regRespPromise;
192
+ const data = await (0, shared_1.tryUnzipAsync)(msg.payload);
193
+ const payload = data.toString('utf8');
194
+ this.fbnsDebug(`Received register response: ${payload}`);
195
+ const { token, error } = JSON.parse(payload);
196
+ if (error) {
197
+ this.emit('error', error);
198
+ throw error;
199
+ }
200
+ try {
201
+ await this.sendPushRegister(token);
202
+ }
203
+ catch (e) {
204
+ if (e instanceof Error) {
205
+ this.emit('error', e);
206
+ }
207
+ throw e;
208
+ }
209
+ }
210
+
211
+ disconnect() {
212
+ this.safeDisconnect = true;
213
+ if (!this.client) {
214
+ return Promise.resolve();
215
+ }
216
+ return this.client.disconnect();
217
+ }
218
+
219
+ async handleMessage(msg) {
220
+ const payload = JSON.parse((await (0, shared_1.tryUnzipAsync)(msg.payload)).toString('utf8'));
221
+ if ((0, shared_1.notUndefined)(payload.fbpushnotif)) {
222
+ const notification = (0, fbns_utilities_1.createNotificationFromJson)(payload.fbpushnotif);
223
+ this.emit('push', notification);
224
+ if (notification.collapseKey)
225
+ this.emit(notification.collapseKey, notification);
226
+ }
227
+ else {
228
+ this.fbnsDebug(`Received a message without 'fbpushnotif': ${JSON.stringify(payload)}`);
229
+ this.emit('message', payload);
230
+ }
231
+ }
232
+
233
+ async sendPushRegister(token) {
234
+ const { body } = await this.ig.request.send({
235
+ url: `/api/v1/push/register/`,
236
+ method: 'POST',
237
+ form: {
238
+ device_type: 'android_mqtt',
239
+ is_main_push_channel: true,
240
+ device_sub_type: 2,
241
+ device_token: token,
242
+ guid: this.ig.state.uuid,
243
+ uuid: this.ig.state.uuid,
244
+ users: this.ig.state.cookieUserId,
245
+ family_device_id: new chance_1.Chance().guid({ version: 4 }),
246
+ },
247
+ });
248
+ return body;
249
+ }
250
+ }
251
+ exports.FbnsClient = FbnsClient;
252
+ //# sourceMappingURL=fbns.client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fbns.client.js","sourceRoot":"","sources":["../../src/fbns/fbns.client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { IgApiClient } from 'instagram-private-api';
2
+ export declare class FbnsDeviceAuth {
3
+ private authLog;
4
+ clientId: string;
5
+ userId: number;
6
+ password: string;
7
+ deviceId: string;
8
+ deviceSecret: string;
9
+ sr?: string;
10
+ rc?: string;
11
+ private json?;
12
+ private ig;
13
+ constructor(ig: IgApiClient);
14
+ update(): void;
15
+ read(jsonStr: string): void;
16
+ toString(): string;
17
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.FbnsDeviceAuth = void 0;
10
+ const decorators_1 = require("instagram-private-api/dist/decorators");
11
+ const shared_1 = require("../shared");
12
+ class FbnsDeviceAuth {
13
+ constructor(ig) {
14
+ this.authLog = (0, shared_1.debugChannel)('fbns', 'device-auth');
15
+ this.ig = ig;
16
+ this.clientId = this.ig.state.phoneId?.substr(0, 20) || '';
17
+ this.deviceId = '';
18
+ this.userId = 0;
19
+ this.deviceSecret = '';
20
+ this.password = '';
21
+ }
22
+ update() {
23
+ if (this.clientId === '') {
24
+ this.clientId = this.ig.state.phoneId?.substr(0, 20) || '';
25
+ }
26
+ }
27
+ read(jsonStr) {
28
+ this.authLog(`Reading auth json ${jsonStr ?? 'empty'}`);
29
+ if (!jsonStr)
30
+ return;
31
+ this.json = jsonStr;
32
+ const { ck, cs, di, ds, sr, rc } = JSON.parse(jsonStr);
33
+ this.userId = ck || this.userId;
34
+ this.password = cs || this.password;
35
+ if (di) {
36
+ this.deviceId = di;
37
+ this.clientId = this.deviceId.substr(0, 20);
38
+ }
39
+ else {
40
+ this.deviceId = '';
41
+ }
42
+ this.deviceSecret = ds || this.deviceSecret;
43
+ this.sr = sr || this.sr;
44
+ this.rc = rc || this.rc;
45
+ }
46
+ toString() {
47
+ return this.json || '';
48
+ }
49
+ }
50
+ exports.FbnsDeviceAuth = FbnsDeviceAuth;
51
+ __decorate([
52
+ (0, decorators_1.Enumerable)(false)
53
+ ], FbnsDeviceAuth.prototype, "ig", void 0);
54
+ //# sourceMappingURL=fbns.device-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fbns.device-auth.js","sourceRoot":"","sources":["../../src/fbns/fbns.device-auth.ts"],"names":[],"mappings":";;;;;;;;;AACA,sEAAmE;AACnE,sCAAyC;AAEzC,MAAa,cAAc;IAgBxB,YAAmB,EAAe;QAf1B,YAAO,GAAG,IAAA,qBAAY,EAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAgBnD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3D,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACtB,CAAC;IAEM,MAAM;QACV,IAAI,IAAI,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QAC9D,CAAC;IACJ,CAAC;IAEM,IAAI,CAAC,OAAe;QACxB,IAAI,CAAC,OAAO,CAAC,qBAAqB,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QACpB,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC;QACpC,IAAI,EAAE,EAAE,CAAC;YACN,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACL,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC;QAC5C,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;IAC3B,CAAC;IAEM,QAAQ;QACZ,OAAO,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAC1B,CAAC;CACH;AApDD,wCAoDC;AAtCU;IADP,IAAA,uBAAU,EAAC,KAAK,CAAC;0CACM"}
@@ -0,0 +1,83 @@
1
+ import { FbnsDeviceAuth } from './fbns.device-auth';
2
+ export interface FbnsMessageData {
3
+ token?: string;
4
+ pn?: string;
5
+ nid?: string;
6
+ ck?: string;
7
+ fbpushnotif?: string;
8
+ num_endpoints?: string;
9
+ }
10
+ export interface FbPushNotif {
11
+ t?: string;
12
+ m?: string;
13
+ tt?: string;
14
+ ig?: string;
15
+ collapse_key?: string;
16
+ i?: string;
17
+ a?: string;
18
+ sound?: string;
19
+ pi?: string;
20
+ c?: string;
21
+ u?: string;
22
+ s?: string;
23
+ igo?: string;
24
+ bc?: string;
25
+ ia?: string;
26
+ it?: string;
27
+ si?: string;
28
+ PushNotifID?: string;
29
+ }
30
+ export interface FbnsBadgeCount {
31
+ direct?: number;
32
+ ds?: number;
33
+ activities?: number;
34
+ }
35
+ export type FbnsNotificationUnknown = FbnsNotification<unknown>;
36
+ export interface FbnsNotification<T> {
37
+ original: FbPushNotif;
38
+ title?: string;
39
+ message?: string;
40
+ tickerText?: string;
41
+ igAction?: string;
42
+ igActionOverride?: string;
43
+ optionalImage?: string;
44
+ optionalAvatarUrl?: string;
45
+ collapseKey?: string;
46
+ sound?: string;
47
+ pushId?: string;
48
+ pushCategory?: string;
49
+ intendedRecipientUserId?: string;
50
+ sourceUserId?: string;
51
+ badgeCount?: FbnsBadgeCount;
52
+ inAppActors?: string;
53
+ actionPath?: string;
54
+ actionParams?: T;
55
+ higherPriorityApps?: string;
56
+ }
57
+ export type NotificationCallback<N, A> = FuncArg<N, FbnsNotification<A>>;
58
+ export type FuncArg<E, T> = [E, (e: T) => void];
59
+ /**
60
+ * See: https://github.com/mgp25/Instagram-API/blob/master/src/Push.php
61
+ * TODO: inspect
62
+ * TODO: add regex?
63
+ * The following events are emitted:
64
+ */
65
+ export type NotificationEventCallback = FuncArg<'warning' | 'error', Error | Record<string, any>> | FuncArg<'auth', FbnsDeviceAuth> | FuncArg<'push' | 'silent_push', FbnsNotificationUnknown> | FuncArg<'exp_logging', {
66
+ beacon_id: number;
67
+ }> | FuncArg<'pp', string> | FuncArg<'message', FbnsMessageData> | NotificationCallback<'post', {
68
+ id: string;
69
+ }> | NotificationCallback<'first_post', {
70
+ username: string;
71
+ }> | NotificationCallback<'resurrected_user_post', {
72
+ id: string;
73
+ }> | NotificationCallback<'recent_follow_post', {
74
+ id: string;
75
+ }> | NotificationCallback<'fb_first_post', {
76
+ username: string;
77
+ }> | NotificationCallback<'first_bestie_post', {
78
+ username: string;
79
+ launch_reel?: string;
80
+ }> | NotificationCallback<'first_reel_post', {
81
+ username: string;
82
+ launch_reel?: string;
83
+ }> | NotificationCallback<'resurrected_reel_post' | 'story_poll_vote' | 'story_poll_close' | 'story_producer_expire_media' | 'story_poll_result_share' | 'story_daily_digest' | 'new_follower' | 'private_user_follow_request' | 'follow_request_approved' | 'contactjoined' | 'contact_joined_email' | 'fb_friend_connected' | 'follower_follow' | 'follower_activity_reminders' | 'comment' | 'mentioned_comment' | 'comment_on_tag' | 'comment_subscribed' | 'comment_subscribed_on_like' | 'reply_to_comment_with_threading' | 'like' | 'like_on_tag' | 'comment_like' | 'direct_v2_message' | 'live_broadcast' | 'live_with_broadcast' | 'live_broadcast_revoke' | 'aymt' | 'ad_preview' | 'branded_content_tagged' | 'business_profile' | 'usertag' | 'video_view_count' | 'copyright_video' | 'report_updated' | 'promote_account' | 'unseen_notification_reminders', unknown> | FuncArg<string, any> | [string, (...args: string[]) => void];
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=fbns.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fbns.types.js","sourceRoot":"","sources":["../../src/fbns/fbns.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import { FbnsNotificationUnknown } from './fbns.types';
2
+ export declare function createNotificationFromJson(json: string): FbnsNotificationUnknown;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createNotificationFromJson = void 0;
4
+ const shared_1 = require("../shared");
5
+ const querystring = require("querystring");
6
+ const URL = require("url");
7
+ function createNotificationFromJson(json) {
8
+ const data = JSON.parse(json);
9
+ const notification = Object.defineProperty({}, 'description', {
10
+ enumerable: false,
11
+ value: data,
12
+ });
13
+ if ((0, shared_1.notUndefined)(data.t)) {
14
+ notification.title = data.t;
15
+ }
16
+ if ((0, shared_1.notUndefined)(data.m)) {
17
+ notification.message = data.m;
18
+ }
19
+ if ((0, shared_1.notUndefined)(data.tt)) {
20
+ notification.tickerText = data.tt;
21
+ }
22
+ if ((0, shared_1.notUndefined)(data.ig)) {
23
+ notification.igAction = data.ig;
24
+ const url = URL.parse(data.ig);
25
+ if (url.pathname) {
26
+ notification.actionPath = url.pathname;
27
+ }
28
+ if (url.query) {
29
+ notification.actionParams = querystring.decode(url.query);
30
+ }
31
+ }
32
+ if ((0, shared_1.notUndefined)(data.collapse_key)) {
33
+ notification.collapseKey = data.collapse_key;
34
+ }
35
+ if ((0, shared_1.notUndefined)(data.i)) {
36
+ notification.optionalImage = data.i;
37
+ }
38
+ if ((0, shared_1.notUndefined)(data.a)) {
39
+ notification.optionalAvatarUrl = data.a;
40
+ }
41
+ if ((0, shared_1.notUndefined)(data.sound)) {
42
+ notification.sound = data.sound;
43
+ }
44
+ if ((0, shared_1.notUndefined)(data.pi)) {
45
+ notification.pushId = data.pi;
46
+ }
47
+ if ((0, shared_1.notUndefined)(data.c)) {
48
+ notification.pushCategory = data.c;
49
+ }
50
+ if ((0, shared_1.notUndefined)(data.u)) {
51
+ notification.intendedRecipientUserId = data.u;
52
+ }
53
+ if ((0, shared_1.notUndefined)(data.s) && data.s !== 'None') {
54
+ notification.sourceUserId = data.s;
55
+ }
56
+ if ((0, shared_1.notUndefined)(data.igo)) {
57
+ notification.igActionOverride = data.igo;
58
+ }
59
+ if ((0, shared_1.notUndefined)(data.bc)) {
60
+ const badgeCount = {};
61
+ const parsed = JSON.parse(data.bc);
62
+ if ((0, shared_1.notUndefined)(parsed.di)) {
63
+ badgeCount.direct = parsed.di;
64
+ }
65
+ if ((0, shared_1.notUndefined)(parsed.ds)) {
66
+ badgeCount.ds = parsed.ds;
67
+ }
68
+ if ((0, shared_1.notUndefined)(parsed.ac)) {
69
+ badgeCount.activities = parsed.ac;
70
+ }
71
+ notification.badgeCount = badgeCount;
72
+ }
73
+ if ((0, shared_1.notUndefined)(data.ia)) {
74
+ notification.inAppActors = data.ia;
75
+ }
76
+ return notification;
77
+ }
78
+ exports.createNotificationFromJson = createNotificationFromJson;
79
+ //# sourceMappingURL=fbns.utilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fbns.utilities.js","sourceRoot":"","sources":["../../src/fbns/fbns.utilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './fbns.client';
2
+ export * from './fbns.device-auth';
3
+ export * from './fbns.types';
4
+ export * from './fbns.utilities';
@@ -0,0 +1,21 @@
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("./fbns.client"), exports);
18
+ __exportStar(require("./fbns.device-auth"), exports);
19
+ __exportStar(require("./fbns.types"), exports);
20
+ __exportStar(require("./fbns.utilities"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fbns/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,qDAAmC;AACnC,+CAA6B;AAC7B,mDAAiC"}