nodejs-insta-private-api-mqtt 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/README.md +1650 -0
  2. package/dist/constants/constants.js +280 -0
  3. package/dist/constants/index.js +41 -0
  4. package/dist/core/client.js +243 -0
  5. package/dist/core/repository.js +7 -0
  6. package/dist/core/request.js +212 -0
  7. package/dist/core/state.js +1456 -0
  8. package/dist/core/utils.js +786 -0
  9. package/dist/downloadMedia.js +381 -0
  10. package/dist/errors/index.d.ts +16 -0
  11. package/dist/errors/index.js +30 -0
  12. package/dist/errors/index.js.map +1 -0
  13. package/dist/fbns/fbns.client.d.ts +32 -0
  14. package/dist/fbns/fbns.client.events.d.ts +41 -0
  15. package/dist/fbns/fbns.client.events.js +3 -0
  16. package/dist/fbns/fbns.client.events.js.map +1 -0
  17. package/dist/fbns/fbns.client.js +179 -0
  18. package/dist/fbns/fbns.client.js.map +1 -0
  19. package/dist/fbns/fbns.device-auth.d.ts +17 -0
  20. package/dist/fbns/fbns.device-auth.js +54 -0
  21. package/dist/fbns/fbns.device-auth.js.map +1 -0
  22. package/dist/fbns/fbns.types.d.ts +83 -0
  23. package/dist/fbns/fbns.types.js +3 -0
  24. package/dist/fbns/fbns.types.js.map +1 -0
  25. package/dist/fbns/fbns.utilities.d.ts +2 -0
  26. package/dist/fbns/fbns.utilities.js +79 -0
  27. package/dist/fbns/fbns.utilities.js.map +1 -0
  28. package/dist/fbns/index.d.ts +4 -0
  29. package/dist/fbns/index.js +21 -0
  30. package/dist/fbns/index.js.map +1 -0
  31. package/dist/index.js +39 -0
  32. package/dist/mqttot/index.d.ts +4 -0
  33. package/dist/mqttot/index.js +21 -0
  34. package/dist/mqttot/index.js.map +1 -0
  35. package/dist/mqttot/mqttot.client.d.ts +39 -0
  36. package/dist/mqttot/mqttot.client.js +120 -0
  37. package/dist/mqttot/mqttot.client.js.map +1 -0
  38. package/dist/mqttot/mqttot.connect.request.packet.d.ts +7 -0
  39. package/dist/mqttot/mqttot.connect.request.packet.js +9 -0
  40. package/dist/mqttot/mqttot.connect.request.packet.js.map +1 -0
  41. package/dist/mqttot/mqttot.connect.response.packet.d.ts +7 -0
  42. package/dist/mqttot/mqttot.connect.response.packet.js +24 -0
  43. package/dist/mqttot/mqttot.connect.response.packet.js.map +1 -0
  44. package/dist/mqttot/mqttot.connection.d.ts +57 -0
  45. package/dist/mqttot/mqttot.connection.js +56 -0
  46. package/dist/mqttot/mqttot.connection.js.map +1 -0
  47. package/dist/package.json +59 -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 +75 -0
  52. package/dist/realtime/commands/direct.commands.js +186 -0
  53. package/dist/realtime/commands/direct.commands.js.map +1 -0
  54. package/dist/realtime/commands/enhanced.direct.commands.js +987 -0
  55. package/dist/realtime/commands/index.d.ts +2 -0
  56. package/dist/realtime/commands/index.js +19 -0
  57. package/dist/realtime/commands/index.js.map +1 -0
  58. package/dist/realtime/delta-sync.manager.js +293 -0
  59. package/dist/realtime/features/dm-sender.js +88 -0
  60. package/dist/realtime/features/error-handler.js +73 -0
  61. package/dist/realtime/features/gap-handler.js +61 -0
  62. package/dist/realtime/features/presence.manager.js +66 -0
  63. package/dist/realtime/index.js +30 -0
  64. package/dist/realtime/messages/app-presence.event.d.ts +9 -0
  65. package/dist/realtime/messages/app-presence.event.js +3 -0
  66. package/dist/realtime/messages/app-presence.event.js.map +1 -0
  67. package/dist/realtime/messages/index.d.ts +3 -0
  68. package/dist/realtime/messages/index.js +20 -0
  69. package/dist/realtime/messages/index.js.map +1 -0
  70. package/dist/realtime/messages/message-sync.message.d.ts +222 -0
  71. package/dist/realtime/messages/message-sync.message.js +43 -0
  72. package/dist/realtime/messages/message-sync.message.js.map +1 -0
  73. package/dist/realtime/messages/realtime-sub.direct.data.d.ts +11 -0
  74. package/dist/realtime/messages/realtime-sub.direct.data.js +3 -0
  75. package/dist/realtime/messages/realtime-sub.direct.data.js.map +1 -0
  76. package/dist/realtime/messages/thread-update.message.d.ts +68 -0
  77. package/dist/realtime/messages/thread-update.message.js +3 -0
  78. package/dist/realtime/messages/thread-update.message.js.map +1 -0
  79. package/dist/realtime/mixins/index.d.ts +3 -0
  80. package/dist/realtime/mixins/index.js +20 -0
  81. package/dist/realtime/mixins/index.js.map +1 -0
  82. package/dist/realtime/mixins/message-sync.mixin.d.ts +8 -0
  83. package/dist/realtime/mixins/message-sync.mixin.js +381 -0
  84. package/dist/realtime/mixins/message-sync.mixin.js.map +1 -0
  85. package/dist/realtime/mixins/mixin.d.ts +19 -0
  86. package/dist/realtime/mixins/mixin.js +41 -0
  87. package/dist/realtime/mixins/mixin.js.map +1 -0
  88. package/dist/realtime/mixins/presence-typing.mixin.js +33 -0
  89. package/dist/realtime/mixins/realtime-sub.mixin.d.ts +8 -0
  90. package/dist/realtime/mixins/realtime-sub.mixin.js +55 -0
  91. package/dist/realtime/mixins/realtime-sub.mixin.js.map +1 -0
  92. package/dist/realtime/parsers/graphql-parser.js +43 -0
  93. package/dist/realtime/parsers/graphql.parser.d.ts +15 -0
  94. package/dist/realtime/parsers/graphql.parser.js +22 -0
  95. package/dist/realtime/parsers/graphql.parser.js.map +1 -0
  96. package/dist/realtime/parsers/index.d.ts +6 -0
  97. package/dist/realtime/parsers/index.js +23 -0
  98. package/dist/realtime/parsers/index.js.map +1 -0
  99. package/dist/realtime/parsers/iris-parser.js +43 -0
  100. package/dist/realtime/parsers/iris.parser.d.ts +17 -0
  101. package/dist/realtime/parsers/iris.parser.js +10 -0
  102. package/dist/realtime/parsers/iris.parser.js.map +1 -0
  103. package/dist/realtime/parsers/json-parser.js +43 -0
  104. package/dist/realtime/parsers/json.parser.d.ts +6 -0
  105. package/dist/realtime/parsers/json.parser.js +10 -0
  106. package/dist/realtime/parsers/json.parser.js.map +1 -0
  107. package/dist/realtime/parsers/parser.d.ts +9 -0
  108. package/dist/realtime/parsers/parser.js +3 -0
  109. package/dist/realtime/parsers/parser.js.map +1 -0
  110. package/dist/realtime/parsers/region-hint-parser.js +43 -0
  111. package/dist/realtime/parsers/region-hint.parser.d.ts +12 -0
  112. package/dist/realtime/parsers/region-hint.parser.js +15 -0
  113. package/dist/realtime/parsers/region-hint.parser.js.map +1 -0
  114. package/dist/realtime/parsers/skywalker-parser.js +43 -0
  115. package/dist/realtime/parsers/skywalker.parser.d.ts +12 -0
  116. package/dist/realtime/parsers/skywalker.parser.js +15 -0
  117. package/dist/realtime/parsers/skywalker.parser.js.map +1 -0
  118. package/dist/realtime/parsers-advanced.js +158 -0
  119. package/dist/realtime/proto/common.proto +38 -0
  120. package/dist/realtime/proto/direct.proto +65 -0
  121. package/dist/realtime/proto/ig-messages.proto +83 -0
  122. package/dist/realtime/proto/iris.proto +188 -0
  123. package/dist/realtime/proto-parser.js +195 -0
  124. package/dist/realtime/protocols/iris.handshake.js +74 -0
  125. package/dist/realtime/protocols/proto-definitions.js +80 -0
  126. package/dist/realtime/protocols/skywalker.protocol.js +91 -0
  127. package/dist/realtime/realtime.client.events.js +3 -0
  128. package/dist/realtime/realtime.client.js +449 -0
  129. package/dist/realtime/realtime.service.js +462 -0
  130. package/dist/realtime/reconnect.manager.js +94 -0
  131. package/dist/realtime/session.manager.js +121 -0
  132. package/dist/realtime/subscriptions/graphql.subscription.d.ts +47 -0
  133. package/dist/realtime/subscriptions/graphql.subscription.js +99 -0
  134. package/dist/realtime/subscriptions/graphql.subscription.js.map +1 -0
  135. package/dist/realtime/subscriptions/index.d.ts +2 -0
  136. package/dist/realtime/subscriptions/index.js +19 -0
  137. package/dist/realtime/subscriptions/index.js.map +1 -0
  138. package/dist/realtime/subscriptions/skywalker.subscription.d.ts +4 -0
  139. package/dist/realtime/subscriptions/skywalker.subscription.js +13 -0
  140. package/dist/realtime/subscriptions/skywalker.subscription.js.map +1 -0
  141. package/dist/realtime/topic-map.js +71 -0
  142. package/dist/realtime/topic.js +80 -0
  143. package/dist/repositories/account.repository.js +261 -0
  144. package/dist/repositories/direct-thread.repository.js +247 -0
  145. package/dist/repositories/direct.repository.js +153 -0
  146. package/dist/repositories/feed.repository.js +233 -0
  147. package/dist/repositories/friendship.repository.js +190 -0
  148. package/dist/repositories/hashtag.repository.js +101 -0
  149. package/dist/repositories/highlights.repository.js +127 -0
  150. package/dist/repositories/location.repository.js +84 -0
  151. package/dist/repositories/media.repository.js +165 -0
  152. package/dist/repositories/story.repository.js +156 -0
  153. package/dist/repositories/upload.repository.js +167 -0
  154. package/dist/repositories/user.repository.js +94 -0
  155. package/dist/sendmedia/index.js +11 -0
  156. package/dist/sendmedia/sendFile.js +154 -0
  157. package/dist/sendmedia/sendPhoto.js +145 -0
  158. package/dist/sendmedia/uploadPhoto.js +175 -0
  159. package/dist/sendmedia/uploadfFile.js +264 -0
  160. package/dist/services/live.service.js +147 -0
  161. package/dist/services/search.service.js +116 -0
  162. package/dist/shared/index.js +35 -0
  163. package/dist/shared/shared.js +86 -0
  164. package/dist/thrift/index.d.ts +3 -0
  165. package/dist/thrift/index.js +20 -0
  166. package/dist/thrift/index.js.map +1 -0
  167. package/dist/thrift/thrift.d.ts +59 -0
  168. package/dist/thrift/thrift.js +101 -0
  169. package/dist/thrift/thrift.js.map +1 -0
  170. package/dist/thrift/thrift.reading.d.ts +41 -0
  171. package/dist/thrift/thrift.reading.js +327 -0
  172. package/dist/thrift/thrift.reading.js.map +1 -0
  173. package/dist/thrift/thrift.writing.d.ts +44 -0
  174. package/dist/thrift/thrift.writing.js +342 -0
  175. package/dist/thrift/thrift.writing.js.map +1 -0
  176. package/dist/types/index.js +285 -0
  177. package/dist/useMultiFileAuthState.js +437 -0
  178. package/dist/utils/helper-1.js +1 -0
  179. package/dist/utils/helper-10.js +1 -0
  180. package/dist/utils/helper-11.js +1 -0
  181. package/dist/utils/helper-12.js +1 -0
  182. package/dist/utils/helper-13.js +1 -0
  183. package/dist/utils/helper-14.js +1 -0
  184. package/dist/utils/helper-15.js +1 -0
  185. package/dist/utils/helper-16.js +1 -0
  186. package/dist/utils/helper-17.js +1 -0
  187. package/dist/utils/helper-18.js +1 -0
  188. package/dist/utils/helper-19.js +1 -0
  189. package/dist/utils/helper-2.js +1 -0
  190. package/dist/utils/helper-20.js +1 -0
  191. package/dist/utils/helper-21.js +1 -0
  192. package/dist/utils/helper-22.js +1 -0
  193. package/dist/utils/helper-23.js +1 -0
  194. package/dist/utils/helper-24.js +1 -0
  195. package/dist/utils/helper-25.js +1 -0
  196. package/dist/utils/helper-26.js +1 -0
  197. package/dist/utils/helper-27.js +1 -0
  198. package/dist/utils/helper-28.js +1 -0
  199. package/dist/utils/helper-29.js +1 -0
  200. package/dist/utils/helper-3.js +1 -0
  201. package/dist/utils/helper-30.js +1 -0
  202. package/dist/utils/helper-4.js +1 -0
  203. package/dist/utils/helper-5.js +1 -0
  204. package/dist/utils/helper-6.js +1 -0
  205. package/dist/utils/helper-7.js +1 -0
  206. package/dist/utils/helper-8.js +1 -0
  207. package/dist/utils/helper-9.js +1 -0
  208. package/dist/utils/index.js +280 -0
  209. package/examples/listen-to-messages.js +86 -0
  210. package/package.json +79 -0
@@ -0,0 +1,280 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PossibleTopics = exports.REALTIME = exports.FBNS = exports.FbnsTopics = exports.INSTAGRAM_PACKAGE_NAME = exports.RealtimeTopicsArray = exports.Topics = void 0;
4
+ const parsers_1 = require("../realtime/parsers");
5
+ exports.Topics = {
6
+ GRAPHQL: {
7
+ id: '9',
8
+ path: '/graphql',
9
+ parser: new parsers_1.GraphqlParser(),
10
+ },
11
+ PUBSUB: {
12
+ id: '88',
13
+ path: '/pubsub',
14
+ parser: new parsers_1.SkywalkerParser(),
15
+ },
16
+ SEND_MESSAGE_RESPONSE: {
17
+ id: '133',
18
+ path: '/ig_send_message_response',
19
+ parser: new parsers_1.JsonParser(),
20
+ },
21
+ IRIS_SUB: {
22
+ id: '134',
23
+ path: '/ig_sub_iris',
24
+ parser: null,
25
+ },
26
+ IRIS_SUB_RESPONSE: {
27
+ id: '135',
28
+ path: '/ig_sub_iris_response',
29
+ parser: new parsers_1.JsonParser(),
30
+ },
31
+ MESSAGE_SYNC: {
32
+ id: '146',
33
+ path: '/ig_message_sync',
34
+ parser: new parsers_1.IrisParser(),
35
+ noParse: true,
36
+ },
37
+ REALTIME_SUB: {
38
+ id: '149',
39
+ path: '/ig_realtime_sub',
40
+ parser: new parsers_1.GraphqlParser(),
41
+ noParse: true,
42
+ },
43
+ REGION_HINT: {
44
+ id: '150',
45
+ path: '/t_region_hint',
46
+ parser: new parsers_1.RegionHintParser(),
47
+ },
48
+ FOREGROUND_STATE: {
49
+ id: '102',
50
+ path: '/t_fs',
51
+ parser: null,
52
+ },
53
+ SEND_MESSAGE: {
54
+ id: '132',
55
+ path: '/ig_send_message',
56
+ parser: null,
57
+ },
58
+ };
59
+ exports.RealtimeTopicsArray = Object.values(exports.Topics);
60
+ exports.INSTAGRAM_PACKAGE_NAME = 'com.instagram.android';
61
+ exports.FbnsTopics = {
62
+ FBNS_MESSAGE: {
63
+ id: '76',
64
+ path: '/fbns_msg',
65
+ },
66
+ FBNS_REG_REQ: {
67
+ id: '79',
68
+ path: '/fbns_reg_req',
69
+ },
70
+ FBNS_REG_RESP: {
71
+ id: '80',
72
+ path: '/fbns_reg_resp',
73
+ },
74
+ FBNS_EXP_LOGGING: {
75
+ id: '231',
76
+ path: '/fbns_exp_logging',
77
+ },
78
+ PP: {
79
+ id: '34',
80
+ path: '/pp',
81
+ },
82
+ };
83
+ exports.FBNS = {
84
+ PACKAGE: 'com.instagram.android',
85
+ APP_ID: '567310203415052',
86
+ HOST_NAME_V6: 'mqtt-mini.facebook.com',
87
+ CLIENT_CAPABILITIES: 439,
88
+ ENDPOINT_CAPABILITIES: 128,
89
+ CLIENT_STACK: 3,
90
+ PUBLISH_FORMAT: 1,
91
+ };
92
+ exports.REALTIME = {
93
+ HOST_NAME_V6: 'edge-mqtt.facebook.com',
94
+ };
95
+ // TODO: exclude in release
96
+ /* eslint @typescript-eslint/no-unused-vars: "off" */
97
+ exports.PossibleTopics = [
98
+ { id: '0', path: '/buddy_list' },
99
+ { id: '1', path: '/create_thread' },
100
+ { id: '2', path: '/create_thread_response' },
101
+ { id: '3', path: '/delete_thread_notification' },
102
+ { id: '4', path: '/delete_messages_notification' },
103
+ { id: '5', path: '/orca_message_notifications' },
104
+ { id: '6', path: '/friending_state_change' },
105
+ { id: '7', path: '/friend_request' },
106
+ { id: '8', path: '/friend_requests_seen' },
107
+ { id: '9', path: '/graphql' },
108
+ { id: '10', path: '/group_msg' },
109
+ { id: '11', path: '/group_notifs_unseen' },
110
+ { id: '12', path: '/group_msgs_unseen' },
111
+ { id: '13', path: '/inbox' },
112
+ { id: '14', path: '/action_id_notification' },
113
+ { id: '15', path: '/aura_notification' },
114
+ { id: '16', path: '/aura_signal' },
115
+ { id: '17', path: '/friends_locations' },
116
+ { id: '18', path: '/mark_thread' },
117
+ { id: '19', path: '/mark_thread_response' },
118
+ { id: '20', path: '/mercury' },
119
+ { id: '21', path: '/messenger_sync' },
120
+ { id: '22', path: '/messenger_sync_ack' },
121
+ { id: '23', path: '/messenger_sync_create_queue' },
122
+ { id: '24', path: '/messenger_sync_get_diffs' },
123
+ { id: '25', path: '/messaging' },
124
+ { id: '26', path: '/messaging_events' },
125
+ { id: '27', path: '/mobile_requests_count' },
126
+ { id: '28', path: '/mobile_video_encode' },
127
+ { id: '29', path: '/orca_notification_updates' },
128
+ { id: '30', path: '/notifications_sync' },
129
+ { id: '31', path: '/notifications_read' },
130
+ { id: '32', path: '/notifications_seen' },
131
+ { id: '33', path: '/push_notification' },
132
+ { id: '34', path: '/pp' },
133
+ { id: '35', path: '/orca_presence' },
134
+ { id: '36', path: '/privacy_changed' },
135
+ { id: '37', path: '/privacy_updates' },
136
+ { id: '38', path: '/send_additional_contacts' },
137
+ { id: '39', path: '/send_chat_event' },
138
+ { id: '40', path: '/send_delivery_receipt' },
139
+ { id: '41', path: '/send_endpoint_capabilities' },
140
+ { id: '42', path: '/foreground_state' },
141
+ { id: '43', path: '/aura_location' },
142
+ { id: '44', path: '/send_location' },
143
+ { id: '45', path: '/send_message2' },
144
+ { id: '46', path: '/send_message' },
145
+ { id: '47', path: '/send_message_response' },
146
+ { id: '48', path: '/ping' },
147
+ { id: '49', path: '/presence' },
148
+ { id: '50', path: '/send_push_notification_ack' },
149
+ { id: '51', path: '/rich_presence' },
150
+ { id: '52', path: '/send_skype' },
151
+ { id: '53', path: '/typing' },
152
+ { id: '54', path: '/set_client_settings' },
153
+ { id: '55', path: '/shoerack_notifications' },
154
+ { id: '56', path: '/orca_ticker_updates' },
155
+ { id: '57', path: '/orca_typing_notifications' },
156
+ { id: '58', path: '/typ' },
157
+ { id: '59', path: '/t_ms' },
158
+ { id: '60', path: '/orca_video_notifications' },
159
+ { id: '61', path: '/orca_visibility_updates' },
160
+ { id: '62', path: '/webrtc' },
161
+ { id: '63', path: '/webrtc_response' },
162
+ { id: '64', path: '/subscribe' },
163
+ { id: '65', path: '/t_p' },
164
+ { id: '66', path: '/push_ack' },
165
+ { id: '68', path: '/webrtc_binary' },
166
+ { id: '69', path: '/t_sm' },
167
+ { id: '70', path: '/t_sm_rp' },
168
+ { id: '71', path: '/t_vs' },
169
+ { id: '72', path: '/t_rtc' },
170
+ { id: '73', path: '/echo' },
171
+ { id: '74', path: '/pages_messaging' },
172
+ { id: '75', path: '/t_omnistore_sync' },
173
+ { id: '76', path: '/fbns_msg' },
174
+ { id: '77', path: '/t_ps' },
175
+ { id: '78', path: '/t_dr_batch' },
176
+ { id: '79', path: '/fbns_reg_req' },
177
+ { id: '80', path: '/fbns_reg_resp' },
178
+ { id: '81', path: '/omnistore_subscribe_collection' },
179
+ { id: '82', path: '/fbns_unreg_req' },
180
+ { id: '83', path: '/fbns_unreg_resp' },
181
+ { id: '84', path: '/omnistore_change_record' },
182
+ { id: '85', path: '/t_dr_response' },
183
+ { id: '86', path: '/quick_promotion_refresh' },
184
+ { id: '87', path: '/v_ios' },
185
+ { id: '88', path: '/pubsub' },
186
+ { id: '89', path: '/get_media' },
187
+ { id: '90', path: '/get_media_resp' },
188
+ { id: '91', path: '/mqtt_health_stats' },
189
+ { id: '92', path: '/t_sp' },
190
+ { id: '93', path: '/groups_landing_updates' },
191
+ { id: '94', path: '/rs' },
192
+ { id: '95', path: '/t_sm_b' },
193
+ { id: '96', path: '/t_sm_b_rsp' },
194
+ { id: '97', path: '/t_ms_gd' },
195
+ { id: '98', path: '/t_rtc_multi' },
196
+ { id: '99', path: '/friend_accepted' },
197
+ { id: '100', path: '/t_tn' },
198
+ { id: '101', path: '/t_mf_as' },
199
+ { id: '102', path: '/t_fs' },
200
+ { id: '103', path: '/t_tp' },
201
+ { id: '104', path: '/t_stp' },
202
+ { id: '105', path: '/t_st' },
203
+ { id: '106', path: '/omni' },
204
+ { id: '107', path: '/t_push' },
205
+ { id: '108', path: '/omni_c' },
206
+ { id: '109', path: '/t_sac' },
207
+ { id: '110', path: '/omnistore_resnapshot' },
208
+ { id: '111', path: '/t_spc' },
209
+ { id: '112', path: '/t_callability_req' },
210
+ { id: '113', path: '/t_callability_resp' },
211
+ { id: '116', path: '/t_ec' },
212
+ { id: '117', path: '/t_tcp' },
213
+ { id: '118', path: '/t_tcpr' },
214
+ { id: '119', path: '/t_ts' },
215
+ { id: '120', path: '/t_ts_rp' },
216
+ { id: '121', path: '/t_mt_req' },
217
+ { id: '122', path: '/t_mt_resp' },
218
+ { id: '123', path: '/t_inbox' },
219
+ { id: '124', path: '/p_a_req' },
220
+ { id: '125', path: '/p_a_resp' },
221
+ { id: '126', path: '/unsubscribe' },
222
+ { id: '127', path: '/t_graphql_req' },
223
+ { id: '128', path: '/t_graphql_resp' },
224
+ { id: '129', path: '/t_app_update' },
225
+ { id: '130', path: '/p_updated' },
226
+ { id: '131', path: '/t_omnistore_sync_low_pri' },
227
+ { id: '132', path: '/ig_send_message' },
228
+ { id: '133', path: '/ig_send_message_response' },
229
+ { id: '134', path: '/ig_sub_iris' },
230
+ { id: '135', path: '/ig_sub_iris_response' },
231
+ { id: '136', path: '/ig_snapshot_response' },
232
+ { id: '137', path: '/fbns_msg_hp' },
233
+ { id: '138', path: '/data_stream' },
234
+ { id: '139', path: '/opened_thread' },
235
+ { id: '140', path: '/t_typ_att' },
236
+ { id: '141', path: '/iris_server_reset' },
237
+ { id: '142', path: '/flash_thread_presence' },
238
+ { id: '143', path: '/flash_send_thread_presence' },
239
+ { id: '144', path: '/flash_thread_typing' },
240
+ { id: '146', path: '/ig_message_sync' },
241
+ { id: '148', path: '/t_omnistore_batched_message' },
242
+ { id: '149', path: '/ig_realtime_sub' },
243
+ { id: '150', path: '/t_region_hint' },
244
+ { id: '151', path: '/t_fb_family_navigation_badge' },
245
+ { id: '152', path: '/t_ig_family_navigation_badge' },
246
+ { id: '153', path: '/parties_notifications' },
247
+ { id: '154', path: '/t_assist' },
248
+ { id: '155', path: '/t_assist_rp' },
249
+ { id: '156', path: '/t_create_group' },
250
+ { id: '157', path: '/t_create_group_rp' },
251
+ { id: '158', path: '/t_create_group_ms' },
252
+ { id: '159', path: '/t_create_group_ms_rp' },
253
+ { id: '160', path: '/t_entity_presence' },
254
+ { id: '161', path: '/ig_region_hint_rp' },
255
+ { id: '162', path: '/buddylist_overlay' },
256
+ { id: '163', path: '/setup_debug' },
257
+ { id: '164', path: '/ig_conn_update' },
258
+ { id: '165', path: '/ig_msg_dr' },
259
+ { id: '166', path: '/parties_notifications_req' },
260
+ { id: '167', path: '/omni_connect_sync' },
261
+ { id: '168', path: '/parties_send_message' },
262
+ { id: '169', path: '/parties_send_message_response' },
263
+ { id: '170', path: '/omni_connect_sync_req' },
264
+ { id: '172', path: '/br_sr' },
265
+ { id: '174', path: '/sr_res' },
266
+ { id: '175', path: '/omni_connect_sync_batch' },
267
+ { id: '176', path: '/notify_disconnect' },
268
+ { id: '177', path: '/omni_mc_ep_push_req' },
269
+ { id: '180', path: '/fbns_msg_ack' },
270
+ { id: '181', path: '/t_add_participants_to_group' },
271
+ { id: '182', path: '/t_add_participants_to_group_rp' },
272
+ { id: '188', path: '/t_aloha_session_req' },
273
+ { id: '195', path: '/t_thread_typing' },
274
+ { id: '201', path: '/video_rt_pipe' },
275
+ { id: '202', path: '/t_update_presence_extra_data' },
276
+ { id: '203', path: '/video_rt_pipe_res' },
277
+ { id: '211', path: '/onevc' },
278
+ { id: '231', path: '/fbns_exp_logging' },
279
+ ];
280
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1,41 @@
1
+ const APP_VERSION = '409.0.0.48.170';
2
+ const APP_VERSION_CODE = '380706635';
3
+ const INSTALL_LOCATION = '0';
4
+ const COMPILED_SDK_VERSION = '36';
5
+ const SIGNATURE_KEY = '9193488027538fd3450b83b7d05286d4ca9599a0f7eeed90d8c85925698a05dc';
6
+ const BREADCRUMB_KEY = 'iN4$aGr0m';
7
+ const SIGNATURE_VERSION = '4';
8
+ const EXPERIMENTS = 'ig_android_direct_voice,ig_android_video_ssim_fix_pts_universe,ig_shopping_checkout_improvements_universe,ig_android_stories_seen_state_serialization,ig_android_stories_music_search_typeahead,android_ard_ig_use_brotli_effect_universe,ig_android_swipe_perf_improvements,ig_android_delayed_comments,ig_android_shopping_bag_null_state_v1,ig_android_igtv_crop_top,ig_android_direct_reshare_chaining,ig_shopping_merchant_profile_bag_android,ig_android_feedback_required,ig_android_zero_rating_carrier_signal,ig_direct_holdout_h1_2019,ig_explore_2019_h1_destination_cover,ig_android_biz_ranked_requests_universe,ig_android_explore_recyclerview_universe,ig_camera_android_subtle_filter_universe,ig_android_direct_add_member_dialog_universe,android_camera_core_cpu_frames_sync,ig_android_quick_promote_universe,ig_ar_shopping_camera_android_universe,ig_android_recyclerview_binder_group_enabled_universe,ig_android_video_exoplayer_2,ig_interactions_project_daisy,ig_rn_branded_content_settings_approval_on_select_save,ig_android_igtv_improved_search,ig_android_stories_music_filters,ig_android_account_insights_shopping_content_universe,ig_android_automated_logging,ig_android_viewmaster_post_capture_universe,ig_threads_clear_notifications_on_has_seen,ig_android_camera_effect_gallery_prefetch,ig_android_fix_ppr_thumbnail_url,ig_interactions_project_daisy_creators_universe,ig_camera_android_gyro_senser_sampling_period_universe,ig_android_xposting_feed_to_stories_reshares_universe,ig_android_flexible_contact_and_category_for_creators,ig_android_enable_zero_rating,ig_android_unfollow_reciprocal_universe,ig_stories_engagement_holdout_2019_h1_universe,ig_android_publisher_stories_migration,ig_android_story_import_intent,ig_android_stories_context_sheets_universe,ig_biz_graph_connection_universe,ig_android_stories_boomerang_v2_universe,ig_android_nametag,ig_hashtag_creation_universe,ig_shopping_insights_wc_copy_update_android,ig_android_camera_stopmotion,ig_android_igtv_reshare,ig_android_explore_reel_loading_state,ig_end_of_feed_universe,ig_android_igtv_feed_sharing_universe,ig_xposting_mention_reshare_stories,ig_email_sent_list_universe,ig_android_follow_request_button_improvements_universe,ig_android_media_streaming_sdk_universe,ig_android_direct_reshares_from_thread,ig_android_cover_frame_upload_skip_story_raven_universe,ig_android_stories_video_prefetch_kb,ig_android_optic_use_new_bitmap_photo_api,ig_inventory_connections,ig_stories_injection_tool_enabled_universe,ig_android_canvas_cookie_universe,ig_android_stories_disable_highlights_media_preloading,ig_android_effect_gallery_post_capture_universe,ig_android_promote_migration_available_audience,ig_android_branded_content_ads_universe,ig_camera_android_attribution_bottomsheet_universe,ig_android_raven_video_segmented_upload_raven_only_universe,ig_android_product_tag_hint_dots,ig_android_story_sharing_holdout,ig_carousel_bumped_organic_impression_client_universe,ig_biz_post_approval_nux_universe,ig_android_ig_personal_account_to_fb_page_linkage_backfill,ig_android_persistent_nux,ig_android_branded_content_upsell_keywords_extension,ig_android_stories_project_eclipse,ig_direct_android_bubble_system,ig_android_shopping_pdp_product_videos,ig_camera_android_segmentation_v106_igdjango_universe,ig_camera_android_new_effect_gallery_entry_point_universe,ig_android_li_session_chaining,ig_android_feed_post_warning_universe,ig_android_search_remove_null_state_sections,ig_direct_android_mentions_receiver,ig_android_do_not_show_social_context_for_likes_page_universe,ig_android_context_feed_recycler_view,ig_fb_notification_universe,ig_android_video_abr_universe,ig_android_nelson_v0_universe,ig_android_unify_graph_management_actions,ig_android_own_profile_sharing_universe,ig_android_vc_cowatch_media_share_universe,ig_challenge_general_v2,ig_android_place_signature_universe,ig_android_direct_inbox_cache_universe,ig_android_business_promote_tooltip,ig_android_follow_requests_ui_improvements,ig_android_direct_aggregated_media_and_reshares,ig_android_story_camera_share_to_feed_universe,ig_android_self_following_v2_universe,ig_android_direct_view_more_qe,ig_android_memory_use_logging_universe,ig_android_insights_audience_tab_native_universe,ig_android_stories_send_client_reels_on_tray_fetch_universe,ig_android_live_use_rtc_upload_universe,ig_android_delay_on_sticker_search_universe,ig_android_live_ama_viewer_universe,ig_smb_ads_holdout_2018_h2_universe,ig_android_camera_post_smile_low_end_universe,ig_cameracore_android_camera2_focus_after_first_frame,ig_android_video_raven_bitrate_ladder_universe,ig_android_live_realtime_comments_universe,ig_smb_ads_holdout_2019_h2_universe,ig_camera_android_filter_optmizations,ig_android_igtv_feed_preview_duration,ig_android_account_insights_shopping_metrics_universe,ig_android_apr_lazy_build_request_infra,ig_cameracore_android_new_optic_camera2_galaxy,ig_android_wellbeing_support_frx_igtv_reporting,ig_android_branded_content_appeal_states,ig_stories_infeed,ig_shopping_checkout_improvements_v2_universe,ig_android_direct_thread_target_queue_universe,ig_android_mediauri_parse_optimization,ig_camera_android_skip_camera_initialization_open_to_post_capture,ig_android_create_page_on_top_universe,ig_android_wellbeing_support_frx_comment_reporting,ig_promote_interactive_poll_sticker_igid_universe,ig_android_image_upload_skip_queue_only_on_wifi,ig_android_igtv_pip,ig_android_ad_watchbrowse_carousel_universe,ig_android_direct_message_reactions,ig_android_remove_unfollow_dialog_universe,ig_android_fix_main_feed_su_cards_size_universe,ig_camera_text_mode_composer_controller_opt_universe,ig_explore_2019_h1_video_autoplay_resume,ig_android_video_upload_quality_qe1,ig_android_save_collaborative_collections,coupon_price_test_boost_instagram_media_acquisition_universe,ig_android_video_outputsurface_handlerthread_universe,ig_android_country_code_fix_universe,ig_android_stories_music_overlay,ig_android_multi_thread_sends,ig_android_low_latency_consumption_universe,ig_android_direct_like_animation_onbind_conflict_fix,ig_graph_chain_unfollow_universe,ig_aggregated_quick_reactions,ig_android_lock_unlock_dex,ig_android_create_mode_templates,ig_android_direct_block_from_group_message_requests,ig_android_react_native_universe_kill_switch,ig_promote_android_native_improvements_19,ig_android_viewpoint_occlusion,ig_android_logged_in_delta_migration,ig_android_push_reliability_universe,ig_android_stories_gallery_video_segmentation,ig_android_interactions_fix_activity_feed_ufi,ig_android_direct_business_holdout,ig_android_xposting_upsell_directly_after_sharing_to_story,ig_android_direct_sticker_search_upgrade_universe,ig_android_camera_focus_low_end_universe,ig_android_client_side_feed_delivery,ig_android_vc_background_call_toast_universe,ig_promote_default_destination_universe,ig_android_delay_segmentation_low_end_universe,ig_disable_fsync_universe,ig_android_direct_media_latency_optimizations,ig_promote_manager_copy_refresh_universe,mi_viewpoint_viewability_universe,android_ard_ig_download_manager_v2,ig_direct_reshare_sharesheet_ranking,ig_shopping_checkout_ig_funded_incentives,ig_android_video_upload_transform_matrix_fix_universe,ig_android_le_videoautoplay_disabled,ig_android_fb_sync_options_universe,ig_android_recommend_accounts_destination_routing_fix,ig_android_building_aymf_universe,ig_android_internal_sticker_universe,ig_traffic_routing_universe,ig_android_downloadable_json_universe,ig_android_intentful_profile_shop,ig_android_page_claim_deeplink_qe,ig_android_camera_effects_order_universe,ig_android_network_onbehavior_change_fix,ig_android_wellbeing_support_frx_direct_reporting,ig_android_account_story_grid_universe,ig_android_camera_3p_in_post,ig_android_main_feed_video_countdown_timer,ig_search_hashtag_content_advisory_remove_snooze,ig_android_kitkat_segmented_upload_universe,ig_payment_checkout_info,ig_android_vc_explicit_intent_for_notification,ig_stories_ads_delivery_rules,ig_android_video_upload_iframe_interval,ig_business_new_value_prop_universe,ig_android_feed_defer_on_interactions,ig_android_power_metrics,ig_android_vio_pipeline_universe,ig_android_gallery_grid_controller_folder_cache,ig_android_suggested_users_background,ig_android_login_onetap_upsell_universe,ig_android_test_not_signing_address_book_unlink_endpoint,ig_close_friends_home_v2,ig_graph_management_production_h2_2019_holdout_universe,ig_ei_option_setting_universe,ig_android_account_insights_native_universe,ig_android_browser_ads_page_content_width_universe,ig_android_livewith_liveswap_optimization_universe,ig_android_jit,ig_android_branding_v2_settings_universe,ig_shopping_checkout_consideration_h2_2019_holdout,ig_android_sr_holdout_universe,ig_android_ar_effect_sticker_universe,ig_direct_android_mentions_sender,ig_android_whats_app_contact_invite_universe,ig_android_igtv_home_icon,ig_android_shimmering_loading_state,ig_android_igtv_refresh_tv_guide_interval,ig_android_gallery_minimum_video_length,ig_android_hashtag_remove_share_hashtag,ig_android_feed_interactions_carousel_overscoll,ig_android_fb_profile_integration_fbnc_universe,ig_shopping_checkout_2x2_platformization_universe,ig_android_direct_bump_active_threads,ig_android_xposting_dual_destination_shortcut_fix,ig_android_show_create_content_pages_universe,ig_android_igsystrace_universe,ig_android_hashtag_limit,ig_android_video_product_specific_abr,ig_android_vc_interop_latency,ig_android_vc_cpu_overuse_universe,ig_android_invite_list_button_redesign_universe,ig_android_react_native_email_sms_settings_universe,ig_ads_experience_holdout_2019_h2,ig_hero_player,ig_android_save_auto_sharing_to_fb_option_on_server,ig_android_whitehat_options_universe,ig_android_keyword_media_serp_page,android_cameracore_preview_frame_listener2_ig_universe,ig_android_direct_message_follow_button,ig_android_video_raven_passthrough,ig_stories_ads_media_based_insertion,ig_threads_sanity_check_thread_viewkeys,ig_android_profile_neue_infra_rollout_universe,ig_android_profile_ppr_fixes,ig_android_inline_composer_animation_fix,ig_discovery_2019_h2_holdout_universe,ig_android_stories_quick_react_gif_universe,ig_android_ig_personal_account_xpost_eligibility_from_server,ig_android_story_bottom_sheet_top_clips_mas,ig_android_jp_reel_tray_location_sticker_text_universe,ig_android_stories_remote_sticker_search,ig_android_vc_capture_universe,ig_create_mode_gifs_client_universe,ig_android_save_to_collections_flow,ig_android_direct_segmented_video,instagram_stories_time_fixes,ig_android_jp_saved_collection_map_universe,ig_android_stories_async_view_inflation_universe,ig_android_product_breakdown_post_insights,ig_android_stories_recently_captured_universe,ig_business_integrity_ipc_universe,ig_android_hide_contacts_list,ig_android_temp_file_cleanup,ig_android_wellbeing_support_frx_stories_reporting,ig_android_smplt_universe,ig_android_vc_missed_call_call_back_action_universe,ig_android_business_attribute_sync,ig_android_view_and_likes_cta_universe,ig_android_dropframe_manager,ig_android_ad_stories_scroll_perf_universe,ig_android_direct_default_group_name,ig_android_tango_cpu_overuse_universe,android_ard_ig_cache_size,ig_android_branded_content_ads_enable_partner_boost,ig_android_direct_remix_visual_messages,ig_camera_android_segmentation_106_ar_class_universe,ig_quick_story_placement_validation_universe,ig_android_custom_story_import_intent,ig_android_search_impression_logging_viewpoint,ig_android_view_info_universe,ig_android_camera_upsell_dialog,ig_android_dead_code_detection,ig_android_promotion_insights_bloks,ig_android_tagging_activity_video_preview,ig_android_ad_watchbrowse_universe,ig_android_pbia_proxy_profile_universe,ig_android_qp_kill_switch,ig_android_new_follower_removal_universe,ig_android_gap_rule_enforcer_universe,ig_android_direct_delete_or_block_from_message_requests,ig_android_direct_left_aligned_navigation_bar,ig_android_feed_load_more_viewpoint_universe,ig_android_stories_reshare_reply_msg,ig_direct_holdout_h2_2018,ig_android_wab_adjust_resize_universe,ig_promote_ctd_post_insights_universe,ig_camera_android_facetracker_v12_universe,ig_sim_api_analytics_reporting,ig_badge_dedup_universe,ig_android_ar_background_effect_universe,ig_android_audience_control,ig_android_stories_cross_sharing_to_fb_holdout_universe,ig_android_refresh_empty_feed_su_universe,ig_android_enable_main_feed_reel_tray_preloading,ig_android_profile_neue_universe,ig_camera_android_paris_filter_universe,ig_android_viewmaster_dial_ordering_universe,ig_company_profile_holdout,ig_rti_inapp_notifications_universe,ig_android_vc_join_timeout_universe,ig_shop_directory_entrypoint,ig_android_direct_rx_thread_update,ig_android_add_ci_upsell_in_normal_account_chaining_universe,ig_android_feed_core_ads_2019_h1_holdout_universe,ar_engine_audio_service_fba_decoder_ig,ar_engine_audio_fba_integration_instagram,ig_android_music_browser_redesign,ig_android_qr_code_nametag,ig_android_viewmaster_ar_memory_improvements,ig_android_claim_location_page,ig_android_direct_inbox_recently_active_presence_dot_universe,ig_android_promotion_manager_migration_universe,ig_android_stories_discussion_sticker_universe,ig_camera_async_gallerycontroller_universe,ig_android_direct_state_observer,ig_android_search_usl,ig_android_video_controls_universe,ig_android_business_tokenless_stories_xposting,ig_android_logging_metric_universe_v2,ig_android_xposting_newly_fbc_people,ig_android_visualcomposer_inapp_notification_universe,ig_android_do_not_show_social_context_on_follow_list_universe,ig_android_contact_point_upload_rate_limit_killswitch,ig_android_webrtc_encoder_factory_universe,ig_android_qpl_class_marker,ig_android_sso_kototoro_app_universe,ig_android_ar_effect_sticker_consumption_universe,ig_android_direct_unread_count_badge,ig_android_profile_thumbnail_impression,ig_android_igtv_autoplay_on_prepare,ig_android_list_adapter_prefetch_infra,ig_branded_content_tagging_upsell,ig_android_live_ama_universe,ig_android_external_gallery_import_affordance,ig_android_video_raven_streaming_upload_universe,ig_android_fix_inbox_flicker_universe,ig_discovery_holdout_universe,ig_android_product_tag_suggestions,ig_android_direct_import_google_photos2,ig_direct_feed_media_sticker_universe,ig_android_igtv_upload_error_messages,ig_android_self_profile_suggest_business_main,ig_android_ads_bottom_sheet_report_flow,ig_android_iris_improvements,ig_android_jp_line_share_universe,ig_android_test_remove_button_main_cta_self_followers_universe,ig_android_stories_viewer_prefetch_improvements,ig_android_camera_leak,ig_android_wellbeing_support_frx_live_reporting,ig_stories_rainbow_ring,ig_android_place_search_profile_image,android_cameracore_safe_makecurrent_ig,ig_android_xposting_reel_memory_share_universe,ig_android_direct_simple_message_comparator_universe,ig_android_profile_unified_follow_view,ig_android_video_upload_hevc_encoding_universe,ig_android_mentions_suggestions,instagram_shopping_hero_carousel_visual_variant_consolidation,ig_android_vc_face_effects_universe,ig_android_fbpage_on_profile_side_tray,ig_android_cx_recommended_categories_change,ig_android_feed_delivery_refactor,ig_branded_content_tagging_approval_request_flow_brand_side_v2,ig_android_wellbeing_support_frx_profile_reporting,ig_android_search_register_recent_store,ig_feed_content_universe,ig_android_disk_usage_logging_universe,ig_android_save_home_create_collection,ig_android_search_without_typed_hashtag_autocomplete,ig_android_stories_layout_universe,ig_android_wellbeing_support_frx_feed_posts_reporting,ig_android_sharedpreferences_qpl_logging,ig_android_mainactivity_trim_fix,ig_android_unified_inbox_ephemeral_media_tooltip_universe,ag_family_bridges_2018_h2_holdout,ig_promote_net_promoter_score_universe,ig_android_recents_and_edit_flow,aymt_instagram_promote_flow_abandonment_ig_universe,ig_android_delete_ssim_compare_img_soon,ig_close_friends_list_suggestions,ig_android_personal_user_xposting_destination_fix,ig_android_felix_video_upload_length,ig_android_biz_conversion_suggest_biz_nux,ig_android_discover_people_nux,ig_android_analytics_background_uploader_schedule,ig_camera_android_boomerang_attribution_universe,ig_android_igtv_browse_long_press,ig_android_fix_reshare_xposting_killswitch_universe,ig_android_igtv_stories_preview,ig_android_stories_weblink_creation,ig_promotion_manager_redesign_universe,ig_profile_company_holdout_h2_2018,ig_android_ads_manager_pause_resume_ads_universe,ig_android_direct_reel_fetching,ig_android_stories_media_seen_batching_universe,ig_android_interactions_nav_to_permalink_followup_universe,ig_camera_discovery_surface_universe,ig_android_le_cold_start_improvements,ig_android_direct_mark_as_read_notif_action,ig_android_not_interested_secondary_options,ig_android_direct_selfie_stickers,ig_cameracore_android_new_optic_camera2,ig_android_secondary_inbox_universe,ig_android_fbc_upsell_on_dp_first_load,ig_android_feed_short_session_new_post_pill,ig_android_rename_share_option_in_dialog_menu_universe,ig_android_stories_sundial_creation_universe,saved_collections_cache_universe,ig_camera_android_bg_processor,ig_android_stories_reel_interactive_tap_target_size,ig_android_video_live_trace_universe,ig_android_direct_fix_realtime_status,ig_android_direct_wellbeing_message_reachability_settings,ig_android_unfollow_from_main_feed_v2,ig_android_self_story_setting_option_in_menu,ig_android_camera_ar_platform_details_view_universe,qe_android_direct_vm_view_modes,ig_android_flexible_profile_universe,ufi_share,ig_android_live_qa_broadcaster_v1_universe,ig_android_cold_start_logging_for_new_users_fix,ig_android_downloadable_fonts_universe,ig_android_business_transaction_in_stories_consumer,ig_android_direct_autoplay_videos_automatically,instagram_android_stories_sticker_tray_redesign,ig_android_branded_content_access_tag,ig_android_business_cross_post_with_biz_id_infra,ig_android_fix_push_setting_logging_universe,ig_android_photo_invites,ig_interactions_h2_2019_team_holdout_universe,ig_android_reel_tray_item_impression_logging_viewpoint,ig_account_identity_2018_h2_lockdown_phone_global_holdout,ig_close_friends_v4,ig_android_ads_history_universe,ig_promote_media_picker_universe,ig_android_location_recyclerview,ig_android_sidecar_report_ssim,ig_android_wait_for_app_initialization_on_push_action_universe,ig_android_pending_media_file_registry,ig_android_interest_follows_universe,ig_android_ig_to_fb_sync_universe,shop_home_hscroll_see_all_button_universe,ig_android_insights_content_tab_native_universe,ig_android_ad_view_ads_native_universe,ig_android_branded_content_tag_redesign_organic,ig_android_igtv_whitelisted_for_web,ig_android_throttled_search_requests,ig_android_igtv_browse_button,ig_close_friends_v4_global,ig_android_share_publish_page_universe,ig_android_new_camera_design_universe,ig_direct_max_participants,ig_promote_hide_local_awareness_universe,ig_android_explore_lru_cache,ig_android_graphql_survey_new_proxy_universe,ig_camera_android_try_on_camera_universe,ig_android_disable_manual_retries,ig_android_fs_creation_flow_tweaks,ig_android_save_to_collections_bottom_sheet_refactor,ig_android_stories_gutter_width_universe,ig_android_fb_profile_integration_universe,ig_android_shopping_bag_optimization_universe,android_ig_cameracore_aspect_ratio_fix,ig_android_photo_upload_jpeg_quality_universe,ig_android_igtv_explore2x2_viewer,ig_camera_android_focus_attribution_universe,ig_android_core_search_2019_h2,ig_early_friending_holdout_universe,ig_android_hashtag_recyclerview,ig_android_vpvd_impressions_universe,ig_android_payload_based_scheduling,ig_android_explore_peek_redesign_universe,ig_android_ard_ptl_universe,ig_android_wishlist_reconsideration_universe,ig_android_camera_formats_ranking_universe,ig_android_spark_studio_promo,ig_android_shop_home_prefetching_universe,ig_background_prefetch,ig_camera_android_focus_in_post_universe,ig_android_time_spent_dashboard,ig_android_camera_effects_initialization_universe,ig_android_camera_async_setup_lowend_focus,ig_android_ad_iab_qpl_kill_switch_universe,ig_android_vc_sounds_universe,ig_android_video_pdq_calculation,ig_android_prefetch_logic_infra,ig_android_self_story_button_non_fbc_accounts,ig_android_self_profile_suggest_business_gating,ig_android_migrate_gifs_to_ig_endpoint,ig_feed_video_autoplay_stop_threshold,ig_android_direct_activator_cards,ig_android_profile_leaks_holdouts,ig_android_video_cached_bandwidth_estimate,ig_android_profile_unified_creation_universe,ig_android_camera_gallery_upload_we_universe,ig_android_business_category_sticky_header_qe,ig_payment_checkout_cvv,ig_android_qr_code_scanner,ig_android_shopping_lightbox,ig_camera_android_async_effect_api_parsing_universe,ig_android_stories_gallery_sticker_universe,ig_promote_enter_error_screens_universe,ig_shopping_checkout_mvp_experiment,ig_android_wellbeing_support_frx_friction_process_education,ig_android_direct_pending_media,ig_android_scroll_main_feed,ig_android_igtv_player_follow_button,ig_android_intialization_chunk_410,ig_android_recognition_tracking_thread_prority_universe,ig_android_stories_music_sticker_position,ig_android_hec_promote_universe,ig_android_nametag_save_experiment_universe,ig_android_fs_new_gallery,ig_android_remove_follow_all_fb_list,ig_android_specific_story_sharing,ig_android_image_exif_metadata_ar_effect_id_universe';
9
+
10
+ const LOGIN_EXPERIMENTS = 'ig_android_fci_onboarding_friend_search,ig_android_device_detection_info_upload,ig_android_account_linking_upsell_universe,ig_android_direct_main_tab_universe_v2,ig_android_allow_account_switch_once_media_upload_finish_universe,ig_android_sign_in_help_only_one_account_family_universe,ig_android_sms_retriever_backtest_universe,ig_android_direct_add_direct_to_android_native_photo_share_sheet,ig_android_spatial_account_switch_universe,ig_growth_android_profile_pic_prefill_with_fb_pic_2,ig_account_identity_logged_out_signals_global_holdout_universe,ig_android_prefill_main_account_username_on_login_screen_universe,ig_android_login_identifier_fuzzy_match,ig_android_mas_remove_close_friends_entrypoint,ig_android_shared_email_reg_universe,ig_android_video_render_codec_low_memory_gc,ig_android_custom_transitions_universe,ig_android_push_fcm,multiple_account_recovery_universe,ig_android_show_login_info_reminder_universe,ig_android_email_fuzzy_matching_universe,ig_android_one_tap_aymh_redesign_universe,ig_android_direct_send_like_from_notification,ig_android_suma_landing_page,ig_android_prefetch_debug_dialog,ig_android_smartlock_hints_universe,ig_android_black_out,ig_activation_global_discretionary_sms_holdout,ig_android_video_ffmpegutil_pts_fix,ig_android_multi_tap_login_new,ig_save_smartlock_universe,ig_android_caption_typeahead_fix_on_o_universe,ig_android_enable_keyboardlistener_redesign,ig_android_sign_in_password_visibility_universe,ig_android_nux_add_email_device,ig_android_direct_remove_view_mode_stickiness_universe,ig_android_hide_contacts_list_in_nux,ig_android_new_users_one_tap_holdout_universe,ig_android_ingestion_video_support_hevc_decoding,ig_android_mas_notification_badging_universe,ig_android_secondary_account_in_main_reg_flow_universe,ig_android_secondary_account_creation_universe,ig_android_account_recovery_auto_login,ig_android_pwd_encrytpion,ig_android_bottom_sheet_keyboard_leaks,ig_android_sim_info_upload,ig_android_mobile_http_flow_device_universe,ig_android_hide_fb_button_when_not_installed_universe,ig_android_account_linking_on_concurrent_user_session_infra_universe,ig_android_targeted_one_tap_upsell_universe,ig_android_gmail_oauth_in_reg,ig_android_account_linking_flow_shorten_universe,ig_android_vc_interop_use_test_igid_universe,ig_android_notification_unpack_universe,ig_android_registration_confirmation_code_universe,ig_android_device_based_country_verification,ig_android_log_suggested_users_cache_on_error,ig_android_reg_modularization_universe,ig_android_device_verification_separate_endpoint,ig_android_universe_noticiation_channels,ig_android_account_linking_universe,ig_android_hsite_prefill_new_carrier,ig_android_one_login_toast_universe,ig_android_retry_create_account_universe,ig_android_family_apps_user_values_provider_universe,ig_android_reg_nux_headers_cleanup_universe,ig_android_mas_ui_polish_universe,ig_android_device_info_foreground_reporting,ig_android_shortcuts_2019,ig_android_device_verification_fb_signup,ig_android_onetaplogin_optimization,ig_android_passwordless_account_password_creation_universe,ig_android_black_out_toggle_universe,ig_video_debug_overlay,ig_android_ask_for_permissions_on_reg,ig_assisted_login_universe,ig_android_security_intent_switchoff,ig_android_device_info_job_based_reporting,ig_android_add_account_button_in_profile_mas_universe,ig_android_add_dialog_when_delinking_from_child_account_universe,ig_android_passwordless_auth,ig_radio_button_universe_2,ig_android_direct_main_tab_account_switch,ig_android_recovery_one_tap_holdout_universe,ig_android_modularized_dynamic_nux_universe,ig_android_fb_account_linking_sampling_freq_universe,ig_android_fix_sms_read_lollipop,ig_android_access_flow_prefil';
11
+
12
+ const FACEBOOK_ANALYTICS_APPLICATION_ID = '567067343352427';
13
+ const FACEBOOK_OTA_FIELDS = 'update%7Bdownload_uri%2Cdownload_uri_delta_base%2Cversion_code_delta_base%2Cdownload_uri_delta%2Cfallback_to_full_update%2Cfile_size_delta%2Cversion_code%2Cpublished_date%2Cfile_size%2Cota_bundle_type%2Cresources_checksum%2Callowed_networks%2Crelease_id%7D';
14
+ const FACEBOOK_ORCA_APPLICATION_ID = '124024574287414';
15
+ const BLOKS_VERSION_ID = '388ece79ebc0e70e87873505ed1b0ff335ae2868a978cc951b6721c41d46a30a';
16
+ const HOSTNAME = 'i.instagram.com';
17
+ const WEB_HOSTNAME = 'www.instagram.com';
18
+ const HOST = `https://${HOSTNAME}/`;
19
+ const WEBHOST = `https://${WEB_HOSTNAME}/`;
20
+
21
+ // Import MQTT constants from constants.js
22
+ const mqttConstants = require('./constants');
23
+
24
+ module.exports = {
25
+ APP_VERSION,
26
+ APP_VERSION_CODE,
27
+ SIGNATURE_KEY,
28
+ BREADCRUMB_KEY,
29
+ SIGNATURE_VERSION,
30
+ EXPERIMENTS,
31
+ LOGIN_EXPERIMENTS,
32
+ FACEBOOK_ANALYTICS_APPLICATION_ID,
33
+ FACEBOOK_OTA_FIELDS,
34
+ FACEBOOK_ORCA_APPLICATION_ID,
35
+ BLOKS_VERSION_ID,
36
+ HOSTNAME,
37
+ WEB_HOSTNAME,
38
+ HOST,
39
+ WEBHOST,
40
+ ...mqttConstants
41
+ };
@@ -0,0 +1,243 @@
1
+ const EventEmitter = require('events');
2
+ const fs = require('fs');
3
+ const path = require('path');
4
+
5
+ const State = require('./state');
6
+ const Request = require('./request');
7
+ const AccountRepository = require('../repositories/account.repository');
8
+ const UserRepository = require('../repositories/user.repository');
9
+ const DirectRepository = require('../repositories/direct.repository');
10
+ const DirectThreadRepository = require('../repositories/direct-thread.repository');
11
+ const MediaRepository = require('../repositories/media.repository');
12
+ const UploadRepository = require('../repositories/upload.repository');
13
+ const StoryRepository = require('../repositories/story.repository');
14
+ const FeedRepository = require('../repositories/feed.repository');
15
+ const FriendshipRepository = require('../repositories/friendship.repository');
16
+ const LocationRepository = require('../repositories/location.repository');
17
+ const HashtagRepository = require('../repositories/hashtag.repository');
18
+ const SearchService = require('../services/search.service');
19
+ const LiveService = require('../services/live.service');
20
+
21
+ /**
22
+ * IgApiClient
23
+ *
24
+ * - Păstrăm în totalitate funcționalitatea existentă (login/logout/isLoggedIn/saveSession/loadSession/isSessionValid/destroy)
25
+ * - Am eliminat complet stratul Realtime (WebSocket). Orice cod dependent de realtime trebuie migrat separat.
26
+ * - Am adăugat un helper generic `retryAsync(fn, opts)` pentru retry/backoff la operații asincrone (utile pentru request-uri).
27
+ */
28
+ class IgApiClient extends EventEmitter {
29
+ constructor() {
30
+ super();
31
+
32
+ this.state = new State();
33
+ this.request = new Request(this);
34
+
35
+ // Initialize repositories
36
+ this.account = new AccountRepository(this);
37
+ this.user = new UserRepository(this);
38
+ this.direct = new DirectRepository(this);
39
+ this.directThread = new DirectThreadRepository(this);
40
+ this.media = new MediaRepository(this);
41
+ this.upload = new UploadRepository(this);
42
+ this.story = new StoryRepository(this);
43
+ this.feed = new FeedRepository(this);
44
+ this.friendship = new FriendshipRepository(this);
45
+ this.location = new LocationRepository(this);
46
+ this.hashtag = new HashtagRepository(this);
47
+
48
+ // Initialize services
49
+ this.search = new SearchService(this);
50
+ this.live = new LiveService(this);
51
+
52
+ // Create dm object for easier access (keeps backward compatibility)
53
+ this.dm = {
54
+ send: this.direct.send.bind(this.direct),
55
+ sendToGroup: this.directThread.sendToGroup.bind(this.directThread),
56
+ sendImage: this.direct.sendImage.bind(this.direct),
57
+ sendVideo: this.direct.sendVideo.bind(this.direct),
58
+ getInbox: this.direct.getInbox.bind(this.direct),
59
+ getThread: this.directThread.getThread.bind(this.directThread)
60
+ };
61
+
62
+ // Proxy debug / verbose
63
+ this.state.verbose = this.state.verbose || false;
64
+
65
+ // Default retry policy for the new helper retryAsync
66
+ this._defaultRetryPolicy = { retries: 3, delayMs: 500 };
67
+
68
+ }
69
+
70
+ /**
71
+ * Login -> uses account.login. Returns whatever account.login returns.
72
+ * NOTE: removed automatic realtime connection attempt.
73
+ */
74
+ async login(credentials) {
75
+ const result = await this.account.login(credentials);
76
+ return result;
77
+ }
78
+
79
+ async logout() {
80
+ return await this.account.logout();
81
+ }
82
+
83
+ isLoggedIn() {
84
+ try {
85
+ return !!this.state.cookieUserId;
86
+ } catch {
87
+ return false;
88
+ }
89
+ }
90
+
91
+ async saveSession() {
92
+ return await this.state.serialize();
93
+ }
94
+
95
+ async loadSession(session) {
96
+ const ret = await this.state.deserialize(session);
97
+ return ret;
98
+ }
99
+
100
+ async isSessionValid() {
101
+ try {
102
+ await this.account.currentUser();
103
+ return true;
104
+ } catch {
105
+ return false;
106
+ }
107
+ }
108
+
109
+ destroy() {
110
+ // Cleanup resources - keep original behaviour for request streams if present
111
+ try { this.request.error$.complete(); } catch (_) {}
112
+ try { this.request.end$.complete(); } catch (_) {}
113
+ }
114
+
115
+ // -------------------------------
116
+ // === UTILITY HELPER METHODS
117
+ // -------------------------------
118
+
119
+ /**
120
+ * Generic retry helper for async functions.
121
+ *
122
+ * Usage:
123
+ * await client.retryAsync(() => client.request.post(...), { retries: 5, delayMs: 1000 });
124
+ *
125
+ * Options:
126
+ * - retries: number (default from this._defaultRetryPolicy.retries)
127
+ * - delayMs: base delay in ms (default from this._defaultRetryPolicy.delayMs)
128
+ * - factor: multiplier for exponential backoff (default 1.5)
129
+ * - onRetry: optional callback (err, attempt) called before next retry
130
+ */
131
+ async retryAsync(fn, options = {}) {
132
+ const retries = typeof options.retries === 'number' ? options.retries : this._defaultRetryPolicy.retries;
133
+ const delayMs = typeof options.delayMs === 'number' ? options.delayMs : this._defaultRetryPolicy.delayMs;
134
+ const factor = typeof options.factor === 'number' ? options.factor : 1.5;
135
+ const onRetry = typeof options.onRetry === 'function' ? options.onRetry : null;
136
+
137
+ let lastErr;
138
+ for (let attempt = 0; attempt <= retries; attempt++) {
139
+ try {
140
+ if (this.state.verbose) {
141
+ console.log(`[Retry] attempt ${attempt + 1}/${retries + 1}`);
142
+ }
143
+ const res = await fn();
144
+ return res;
145
+ } catch (err) {
146
+ lastErr = err;
147
+ if (attempt === retries) break;
148
+ if (onRetry) {
149
+ try { onRetry(err, attempt + 1); } catch (_) {}
150
+ }
151
+ const backoff = Math.round(delayMs * Math.pow(factor, attempt));
152
+ if (this.state.verbose) {
153
+ console.warn(`[Retry] attempt ${attempt + 1} failed: ${err && err.message ? err.message : err}. Backoff ${backoff}ms`);
154
+ }
155
+ await new Promise(r => setTimeout(r, backoff));
156
+ }
157
+ }
158
+ throw lastErr || new Error('retryAsync failed without specific error');
159
+ }
160
+
161
+ /**
162
+ * Set default retry policy for retryAsync.
163
+ * Example: client.setDefaultRetryPolicy({ retries: 5, delayMs: 800 });
164
+ */
165
+ setDefaultRetryPolicy(policy = {}) {
166
+ if (typeof policy.retries === 'number') this._defaultRetryPolicy.retries = policy.retries;
167
+ if (typeof policy.delayMs === 'number') this._defaultRetryPolicy.delayMs = policy.delayMs;
168
+ return this._defaultRetryPolicy;
169
+ }
170
+
171
+ /**
172
+ * Save session object to a file. Path optional (defaults to ./session.json).
173
+ * Will call this.saveSession() internally.
174
+ */
175
+ async saveSessionToFile(filePath) {
176
+ const p = filePath || path.resolve(process.cwd(), 'session.json');
177
+ const data = await this.saveSession();
178
+ // Ensure JSON string
179
+ const json = typeof data === 'string' ? data : JSON.stringify(data, null, 2);
180
+ await fs.promises.writeFile(p, json, { mode: 0o600 });
181
+ if (this.state.verbose) console.log('[Session] Saved session to', p);
182
+ return p;
183
+ }
184
+
185
+ /**
186
+ * Load session from file path (defaults to ./session.json). Returns true on success.
187
+ */
188
+ async loadSessionFromFile(filePath) {
189
+ const p = filePath || path.resolve(process.cwd(), 'session.json');
190
+ if (!fs.existsSync(p)) {
191
+ if (this.state.verbose) console.warn('[Session] loadSessionFromFile: file not found', p);
192
+ return false;
193
+ }
194
+ const raw = await fs.promises.readFile(p, 'utf8');
195
+ let sessionObj;
196
+ try {
197
+ sessionObj = JSON.parse(raw);
198
+ } catch (e) {
199
+ if (this.state.verbose) console.warn('[Session] loadSessionFromFile: invalid JSON in', p);
200
+ throw e;
201
+ }
202
+ await this.loadSession(sessionObj);
203
+ if (this.state.verbose) console.log('[Session] Loaded session from', p);
204
+ return true;
205
+ }
206
+
207
+ /**
208
+ * Attempt to load session JSON if exists and valid, else false.
209
+ * Wrapper helper for convenience.
210
+ */
211
+ async tryLoadSessionFileIfExists(filePath) {
212
+ try {
213
+ const loaded = await this.loadSessionFromFile(filePath);
214
+ if (!loaded) return false;
215
+ return await this.isSessionValid();
216
+ } catch (e) {
217
+ if (this.state.verbose) console.warn('[Session] tryLoadSessionFileIfExists failed:', e && e.message);
218
+ return false;
219
+ }
220
+ }
221
+
222
+ /**
223
+ * Set verbose mode on/off.
224
+ */
225
+ setVerbose(flag) {
226
+ this.state.verbose = !!flag;
227
+ return this.state.verbose;
228
+ }
229
+
230
+ /**
231
+ * safeDestroy: a slightly more robust destroy which attempts to stop requests, etc.
232
+ */
233
+ async safeDestroy() {
234
+ try { if (this.request && this.request.error$ && typeof this.request.error$.complete === 'function') this.request.error$.complete(); } catch (_) {}
235
+ try { if (this.request && this.request.end$ && typeof this.request.end$.complete === 'function') this.request.end$.complete(); } catch (_) {}
236
+
237
+
238
+ // keep original destroy for backward compatibility
239
+ try { this.destroy(); } catch (_) {}
240
+ }
241
+ }
242
+
243
+ module.exports = IgApiClient;
@@ -0,0 +1,7 @@
1
+ class Repository {
2
+ constructor(client) {
3
+ this.client = client;
4
+ }
5
+ }
6
+
7
+ module.exports = Repository;