alicezetion 1.9.6 → 1.9.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (292) hide show
  1. package/.cache/replit/modules/nodejs-20.res +1 -0
  2. package/.cache/replit/modules/replit.res +1 -0
  3. package/.cache/typescript/5.4/node_modules/.package-lock.json +137 -0
  4. package/.cache/typescript/5.4/node_modules/@types/bluebird/LICENSE +21 -0
  5. package/.cache/typescript/5.4/node_modules/@types/bluebird/README.md +15 -0
  6. package/.cache/typescript/5.4/node_modules/@types/bluebird/index.d.ts +1365 -0
  7. package/.cache/typescript/5.4/node_modules/@types/bluebird/package.json +25 -0
  8. package/.cache/typescript/5.4/node_modules/@types/caseless/LICENSE +21 -0
  9. package/.cache/typescript/5.4/node_modules/@types/caseless/README.md +48 -0
  10. package/.cache/typescript/5.4/node_modules/@types/caseless/index.d.ts +29 -0
  11. package/.cache/typescript/5.4/node_modules/@types/caseless/package.json +35 -0
  12. package/.cache/typescript/5.4/node_modules/@types/cheerio/LICENSE +21 -0
  13. package/.cache/typescript/5.4/node_modules/@types/cheerio/README.md +15 -0
  14. package/.cache/typescript/5.4/node_modules/@types/cheerio/index.d.ts +318 -0
  15. package/.cache/typescript/5.4/node_modules/@types/cheerio/package.json +71 -0
  16. package/.cache/typescript/5.4/node_modules/@types/node/LICENSE +21 -0
  17. package/.cache/typescript/5.4/node_modules/@types/node/README.md +15 -0
  18. package/.cache/typescript/5.4/node_modules/@types/node/assert/strict.d.ts +8 -0
  19. package/.cache/typescript/5.4/node_modules/@types/node/assert.d.ts +1040 -0
  20. package/.cache/typescript/5.4/node_modules/@types/node/async_hooks.d.ts +541 -0
  21. package/.cache/typescript/5.4/node_modules/@types/node/buffer.d.ts +2363 -0
  22. package/.cache/typescript/5.4/node_modules/@types/node/child_process.d.ts +1544 -0
  23. package/.cache/typescript/5.4/node_modules/@types/node/cluster.d.ts +578 -0
  24. package/.cache/typescript/5.4/node_modules/@types/node/console.d.ts +452 -0
  25. package/.cache/typescript/5.4/node_modules/@types/node/constants.d.ts +19 -0
  26. package/.cache/typescript/5.4/node_modules/@types/node/crypto.d.ts +4523 -0
  27. package/.cache/typescript/5.4/node_modules/@types/node/dgram.d.ts +596 -0
  28. package/.cache/typescript/5.4/node_modules/@types/node/diagnostics_channel.d.ts +554 -0
  29. package/.cache/typescript/5.4/node_modules/@types/node/dns/promises.d.ts +476 -0
  30. package/.cache/typescript/5.4/node_modules/@types/node/dns.d.ts +864 -0
  31. package/.cache/typescript/5.4/node_modules/@types/node/dom-events.d.ts +124 -0
  32. package/.cache/typescript/5.4/node_modules/@types/node/domain.d.ts +170 -0
  33. package/.cache/typescript/5.4/node_modules/@types/node/events.d.ts +931 -0
  34. package/.cache/typescript/5.4/node_modules/@types/node/fs/promises.d.ts +1245 -0
  35. package/.cache/typescript/5.4/node_modules/@types/node/fs.d.ts +4317 -0
  36. package/.cache/typescript/5.4/node_modules/@types/node/globals.d.ts +412 -0
  37. package/.cache/typescript/5.4/node_modules/@types/node/globals.global.d.ts +1 -0
  38. package/.cache/typescript/5.4/node_modules/@types/node/http.d.ts +1908 -0
  39. package/.cache/typescript/5.4/node_modules/@types/node/http2.d.ts +2418 -0
  40. package/.cache/typescript/5.4/node_modules/@types/node/https.d.ts +550 -0
  41. package/.cache/typescript/5.4/node_modules/@types/node/index.d.ts +89 -0
  42. package/.cache/typescript/5.4/node_modules/@types/node/inspector.d.ts +2746 -0
  43. package/.cache/typescript/5.4/node_modules/@types/node/module.d.ts +315 -0
  44. package/.cache/typescript/5.4/node_modules/@types/node/net.d.ts +999 -0
  45. package/.cache/typescript/5.4/node_modules/@types/node/os.d.ts +495 -0
  46. package/.cache/typescript/5.4/node_modules/@types/node/package.json +217 -0
  47. package/.cache/typescript/5.4/node_modules/@types/node/path.d.ts +191 -0
  48. package/.cache/typescript/5.4/node_modules/@types/node/perf_hooks.d.ts +905 -0
  49. package/.cache/typescript/5.4/node_modules/@types/node/process.d.ts +1754 -0
  50. package/.cache/typescript/5.4/node_modules/@types/node/punycode.d.ts +117 -0
  51. package/.cache/typescript/5.4/node_modules/@types/node/querystring.d.ts +153 -0
  52. package/.cache/typescript/5.4/node_modules/@types/node/readline/promises.d.ts +150 -0
  53. package/.cache/typescript/5.4/node_modules/@types/node/readline.d.ts +540 -0
  54. package/.cache/typescript/5.4/node_modules/@types/node/repl.d.ts +430 -0
  55. package/.cache/typescript/5.4/node_modules/@types/node/sea.d.ts +153 -0
  56. package/.cache/typescript/5.4/node_modules/@types/node/stream/consumers.d.ts +12 -0
  57. package/.cache/typescript/5.4/node_modules/@types/node/stream/promises.d.ts +83 -0
  58. package/.cache/typescript/5.4/node_modules/@types/node/stream/web.d.ts +367 -0
  59. package/.cache/typescript/5.4/node_modules/@types/node/stream.d.ts +1707 -0
  60. package/.cache/typescript/5.4/node_modules/@types/node/string_decoder.d.ts +67 -0
  61. package/.cache/typescript/5.4/node_modules/@types/node/test.d.ts +1718 -0
  62. package/.cache/typescript/5.4/node_modules/@types/node/timers/promises.d.ts +97 -0
  63. package/.cache/typescript/5.4/node_modules/@types/node/timers.d.ts +240 -0
  64. package/.cache/typescript/5.4/node_modules/@types/node/tls.d.ts +1217 -0
  65. package/.cache/typescript/5.4/node_modules/@types/node/trace_events.d.ts +197 -0
  66. package/.cache/typescript/5.4/node_modules/@types/node/tty.d.ts +208 -0
  67. package/.cache/typescript/5.4/node_modules/@types/node/url.d.ts +952 -0
  68. package/.cache/typescript/5.4/node_modules/@types/node/util.d.ts +2292 -0
  69. package/.cache/typescript/5.4/node_modules/@types/node/v8.d.ts +808 -0
  70. package/.cache/typescript/5.4/node_modules/@types/node/vm.d.ts +924 -0
  71. package/.cache/typescript/5.4/node_modules/@types/node/wasi.d.ts +181 -0
  72. package/.cache/typescript/5.4/node_modules/@types/node/worker_threads.d.ts +694 -0
  73. package/.cache/typescript/5.4/node_modules/@types/node/zlib.d.ts +530 -0
  74. package/.cache/typescript/5.4/node_modules/@types/npmlog/LICENSE +21 -0
  75. package/.cache/typescript/5.4/node_modules/@types/npmlog/README.md +15 -0
  76. package/.cache/typescript/5.4/node_modules/@types/npmlog/index.d.ts +84 -0
  77. package/.cache/typescript/5.4/node_modules/@types/npmlog/package.json +32 -0
  78. package/.cache/typescript/5.4/node_modules/@types/request/LICENSE +21 -0
  79. package/.cache/typescript/5.4/node_modules/@types/request/README.md +15 -0
  80. package/.cache/typescript/5.4/node_modules/@types/request/index.d.ts +395 -0
  81. package/.cache/typescript/5.4/node_modules/@types/request/package.json +70 -0
  82. package/.cache/typescript/5.4/node_modules/@types/tough-cookie/LICENSE +21 -0
  83. package/.cache/typescript/5.4/node_modules/@types/tough-cookie/README.md +15 -0
  84. package/.cache/typescript/5.4/node_modules/@types/tough-cookie/index.d.ts +321 -0
  85. package/.cache/typescript/5.4/node_modules/@types/tough-cookie/package.json +35 -0
  86. package/.cache/typescript/5.4/node_modules/asynckit/LICENSE +21 -0
  87. package/.cache/typescript/5.4/node_modules/asynckit/README.md +233 -0
  88. package/.cache/typescript/5.4/node_modules/asynckit/bench.js +76 -0
  89. package/.cache/typescript/5.4/node_modules/asynckit/index.js +6 -0
  90. package/.cache/typescript/5.4/node_modules/asynckit/lib/abort.js +29 -0
  91. package/.cache/typescript/5.4/node_modules/asynckit/lib/async.js +34 -0
  92. package/.cache/typescript/5.4/node_modules/asynckit/lib/defer.js +26 -0
  93. package/.cache/typescript/5.4/node_modules/asynckit/lib/iterate.js +75 -0
  94. package/.cache/typescript/5.4/node_modules/asynckit/lib/readable_asynckit.js +91 -0
  95. package/.cache/typescript/5.4/node_modules/asynckit/lib/readable_parallel.js +25 -0
  96. package/.cache/typescript/5.4/node_modules/asynckit/lib/readable_serial.js +25 -0
  97. package/.cache/typescript/5.4/node_modules/asynckit/lib/readable_serial_ordered.js +29 -0
  98. package/.cache/typescript/5.4/node_modules/asynckit/lib/state.js +37 -0
  99. package/.cache/typescript/5.4/node_modules/asynckit/lib/streamify.js +141 -0
  100. package/.cache/typescript/5.4/node_modules/asynckit/lib/terminator.js +29 -0
  101. package/.cache/typescript/5.4/node_modules/asynckit/package.json +63 -0
  102. package/.cache/typescript/5.4/node_modules/asynckit/parallel.js +43 -0
  103. package/.cache/typescript/5.4/node_modules/asynckit/serial.js +17 -0
  104. package/.cache/typescript/5.4/node_modules/asynckit/serialOrdered.js +75 -0
  105. package/.cache/typescript/5.4/node_modules/asynckit/stream.js +21 -0
  106. package/.cache/typescript/5.4/node_modules/combined-stream/License +19 -0
  107. package/.cache/typescript/5.4/node_modules/combined-stream/Readme.md +138 -0
  108. package/.cache/typescript/5.4/node_modules/combined-stream/lib/combined_stream.js +208 -0
  109. package/.cache/typescript/5.4/node_modules/combined-stream/package.json +25 -0
  110. package/.cache/typescript/5.4/node_modules/combined-stream/yarn.lock +17 -0
  111. package/.cache/typescript/5.4/node_modules/delayed-stream/License +19 -0
  112. package/.cache/typescript/5.4/node_modules/delayed-stream/Makefile +7 -0
  113. package/.cache/typescript/5.4/node_modules/delayed-stream/Readme.md +141 -0
  114. package/.cache/typescript/5.4/node_modules/delayed-stream/lib/delayed_stream.js +107 -0
  115. package/.cache/typescript/5.4/node_modules/delayed-stream/package.json +27 -0
  116. package/.cache/typescript/5.4/node_modules/form-data/License +19 -0
  117. package/.cache/typescript/5.4/node_modules/form-data/README.md +350 -0
  118. package/.cache/typescript/5.4/node_modules/form-data/README.md.bak +350 -0
  119. package/.cache/typescript/5.4/node_modules/form-data/index.d.ts +51 -0
  120. package/.cache/typescript/5.4/node_modules/form-data/lib/browser.js +2 -0
  121. package/.cache/typescript/5.4/node_modules/form-data/lib/form_data.js +483 -0
  122. package/.cache/typescript/5.4/node_modules/form-data/lib/populate.js +10 -0
  123. package/.cache/typescript/5.4/node_modules/form-data/package.json +68 -0
  124. package/.cache/typescript/5.4/node_modules/mime-db/HISTORY.md +507 -0
  125. package/.cache/typescript/5.4/node_modules/mime-db/LICENSE +23 -0
  126. package/.cache/typescript/5.4/node_modules/mime-db/README.md +100 -0
  127. package/.cache/typescript/5.4/node_modules/mime-db/db.json +8519 -0
  128. package/.cache/typescript/5.4/node_modules/mime-db/index.js +12 -0
  129. package/.cache/typescript/5.4/node_modules/mime-db/package.json +60 -0
  130. package/.cache/typescript/5.4/node_modules/mime-types/HISTORY.md +397 -0
  131. package/.cache/typescript/5.4/node_modules/mime-types/LICENSE +23 -0
  132. package/.cache/typescript/5.4/node_modules/mime-types/README.md +113 -0
  133. package/.cache/typescript/5.4/node_modules/mime-types/index.js +188 -0
  134. package/.cache/typescript/5.4/node_modules/mime-types/package.json +44 -0
  135. package/.cache/typescript/5.4/node_modules/types-registry/README.md +2 -0
  136. package/.cache/typescript/5.4/node_modules/types-registry/index.json +1 -0
  137. package/.cache/typescript/5.4/node_modules/types-registry/package.json +20 -0
  138. package/.cache/typescript/5.4/node_modules/undici-types/README.md +6 -0
  139. package/.cache/typescript/5.4/node_modules/undici-types/agent.d.ts +31 -0
  140. package/.cache/typescript/5.4/node_modules/undici-types/api.d.ts +43 -0
  141. package/.cache/typescript/5.4/node_modules/undici-types/balanced-pool.d.ts +18 -0
  142. package/.cache/typescript/5.4/node_modules/undici-types/cache.d.ts +36 -0
  143. package/.cache/typescript/5.4/node_modules/undici-types/client.d.ts +97 -0
  144. package/.cache/typescript/5.4/node_modules/undici-types/connector.d.ts +34 -0
  145. package/.cache/typescript/5.4/node_modules/undici-types/content-type.d.ts +21 -0
  146. package/.cache/typescript/5.4/node_modules/undici-types/cookies.d.ts +28 -0
  147. package/.cache/typescript/5.4/node_modules/undici-types/diagnostics-channel.d.ts +67 -0
  148. package/.cache/typescript/5.4/node_modules/undici-types/dispatcher.d.ts +241 -0
  149. package/.cache/typescript/5.4/node_modules/undici-types/errors.d.ts +128 -0
  150. package/.cache/typescript/5.4/node_modules/undici-types/fetch.d.ts +209 -0
  151. package/.cache/typescript/5.4/node_modules/undici-types/file.d.ts +39 -0
  152. package/.cache/typescript/5.4/node_modules/undici-types/filereader.d.ts +54 -0
  153. package/.cache/typescript/5.4/node_modules/undici-types/formdata.d.ts +108 -0
  154. package/.cache/typescript/5.4/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  155. package/.cache/typescript/5.4/node_modules/undici-types/global-origin.d.ts +7 -0
  156. package/.cache/typescript/5.4/node_modules/undici-types/handlers.d.ts +9 -0
  157. package/.cache/typescript/5.4/node_modules/undici-types/header.d.ts +4 -0
  158. package/.cache/typescript/5.4/node_modules/undici-types/index.d.ts +63 -0
  159. package/.cache/typescript/5.4/node_modules/undici-types/interceptors.d.ts +5 -0
  160. package/.cache/typescript/5.4/node_modules/undici-types/mock-agent.d.ts +50 -0
  161. package/.cache/typescript/5.4/node_modules/undici-types/mock-client.d.ts +25 -0
  162. package/.cache/typescript/5.4/node_modules/undici-types/mock-errors.d.ts +12 -0
  163. package/.cache/typescript/5.4/node_modules/undici-types/mock-interceptor.d.ts +93 -0
  164. package/.cache/typescript/5.4/node_modules/undici-types/mock-pool.d.ts +25 -0
  165. package/.cache/typescript/5.4/node_modules/undici-types/package.json +55 -0
  166. package/.cache/typescript/5.4/node_modules/undici-types/patch.d.ts +71 -0
  167. package/.cache/typescript/5.4/node_modules/undici-types/pool-stats.d.ts +19 -0
  168. package/.cache/typescript/5.4/node_modules/undici-types/pool.d.ts +28 -0
  169. package/.cache/typescript/5.4/node_modules/undici-types/proxy-agent.d.ts +30 -0
  170. package/.cache/typescript/5.4/node_modules/undici-types/readable.d.ts +61 -0
  171. package/.cache/typescript/5.4/node_modules/undici-types/webidl.d.ts +220 -0
  172. package/.cache/typescript/5.4/node_modules/undici-types/websocket.d.ts +131 -0
  173. package/.cache/typescript/5.4/package-lock.json +149 -0
  174. package/.cache/typescript/5.4/package.json +1 -0
  175. package/index.js +290 -70
  176. package/leiamnash/addExternalModule.js +15 -0
  177. package/leiamnash/addUserToGroup.js +77 -0
  178. package/leiamnash/changeAdminStatus.js +47 -0
  179. package/leiamnash/changeArchivedStatus.js +41 -0
  180. package/{src → leiamnash}/changeAvatar.js +3 -2
  181. package/leiamnash/changeBio.js +64 -0
  182. package/leiamnash/changeBlockedStatus.js +36 -0
  183. package/leiamnash/changeGroupImage.js +105 -0
  184. package/leiamnash/changeNickname.js +43 -0
  185. package/leiamnash/changeThreadColor.js +61 -0
  186. package/leiamnash/changeThreadEmoji.js +41 -0
  187. package/{src → leiamnash}/chat.js +4 -29
  188. package/leiamnash/createNewGroup.js +70 -0
  189. package/leiamnash/createPoll.js +59 -0
  190. package/leiamnash/deleteMessage.js +44 -0
  191. package/leiamnash/deleteThread.js +42 -0
  192. package/leiamnash/editMessage.js +62 -0
  193. package/leiamnash/forwardAttachment.js +47 -0
  194. package/leiamnash/forwardMessage.js +0 -0
  195. package/leiamnash/getCurrentUserID.js +7 -0
  196. package/leiamnash/getEmojiUrl.js +27 -0
  197. package/leiamnash/getFriendsList.js +73 -0
  198. package/leiamnash/getInfoVideo.js +134 -0
  199. package/leiamnash/getThreadHistory.js +537 -0
  200. package/leiamnash/getThreadHistoryDeprecated.js +71 -0
  201. package/leiamnash/getThreadInfo.js +171 -0
  202. package/leiamnash/getThreadInfoDeprecated.js +56 -0
  203. package/leiamnash/getThreadList.js +213 -0
  204. package/leiamnash/getThreadListDeprecated.js +46 -0
  205. package/leiamnash/getThreadPictures.js +59 -0
  206. package/leiamnash/getUserID.js +61 -0
  207. package/leiamnash/getUserInfo.js +66 -0
  208. package/leiamnash/handleFriendRequest.js +46 -0
  209. package/leiamnash/handleMessageRequest.js +47 -0
  210. package/leiamnash/httpGet.js +47 -0
  211. package/leiamnash/httpPost.js +47 -0
  212. package/leiamnash/httpPostFormData.js +42 -0
  213. package/leiamnash/listenMqtt.js +843 -0
  214. package/leiamnash/logout.js +68 -0
  215. package/leiamnash/markAsDelivered.js +47 -0
  216. package/leiamnash/markAsRead.js +70 -0
  217. package/leiamnash/markAsReadAll.js +40 -0
  218. package/leiamnash/markAsSeen.js +48 -0
  219. package/leiamnash/muteThread.js +45 -0
  220. package/leiamnash/pinMessage.js +58 -0
  221. package/leiamnash/react.js +109 -0
  222. package/{src → leiamnash}/refreshFb_dtsg.js +1 -1
  223. package/leiamnash/removeUserFromGroup.js +45 -0
  224. package/leiamnash/resolvePhotoUrl.js +36 -0
  225. package/leiamnash/searchForThread.js +42 -0
  226. package/leiamnash/seen.js +40 -0
  227. package/leiamnash/sendMessage.js +315 -0
  228. package/leiamnash/sendTypingIndicator.js +70 -0
  229. package/leiamnash/setMessageReaction.js +103 -0
  230. package/leiamnash/setPostReaction.js +63 -0
  231. package/leiamnash/setTitle.js +70 -0
  232. package/leiamnash/threadColors.js +41 -0
  233. package/leiamnash/token.js +112 -0
  234. package/leiamnash/unfriend.js +42 -0
  235. package/leiamnash/unsendMessage.js +39 -0
  236. package/{src → leiamnash}/uploadAttachment.js +2 -1
  237. package/package.json +3 -2
  238. package/utils.js +1345 -1382
  239. package/.cache/replit/modules/nodejs-20:v28-20240213-3f08513.res +0 -1
  240. package/.cache/replit/modules/replit:v5-20240209-9e3a339.res +0 -1
  241. package/.replit +0 -1
  242. package/src/addExternalModule.js +0 -19
  243. package/src/addUserToGroup.js +0 -113
  244. package/src/changeAdminStatus.js +0 -79
  245. package/src/changeArchivedStatus.js +0 -55
  246. package/src/changeBio.js +0 -77
  247. package/src/changeBlockedStatus.js +0 -47
  248. package/src/changeGroupImage.js +0 -132
  249. package/src/changeNickname.js +0 -59
  250. package/src/changeThreadColor.js +0 -65
  251. package/src/changeThreadEmoji.js +0 -55
  252. package/src/createNewGroup.js +0 -86
  253. package/src/createPoll.js +0 -71
  254. package/src/deleteMessage.js +0 -56
  255. package/src/deleteThread.js +0 -56
  256. package/src/edit.js +0 -66
  257. package/src/forwardAttachment.js +0 -60
  258. package/src/getCurrentUserID.js +0 -7
  259. package/src/getEmojiUrl.js +0 -29
  260. package/src/getFriendsList.js +0 -83
  261. package/src/getThreadHistory.js +0 -666
  262. package/src/getThreadInfo.js +0 -232
  263. package/src/getThreadList.js +0 -241
  264. package/src/getThreadPictures.js +0 -79
  265. package/src/getUserID.js +0 -66
  266. package/src/getUserInfo.js +0 -74
  267. package/src/handleFriendRequest.js +0 -61
  268. package/src/handleMessageRequest.js +0 -65
  269. package/src/httpGet.js +0 -57
  270. package/src/httpPost.js +0 -57
  271. package/src/httpPostFormData.js +0 -63
  272. package/src/listenMqtt.js +0 -854
  273. package/src/logout.js +0 -75
  274. package/src/markAsDelivered.js +0 -58
  275. package/src/markAsRead.js +0 -80
  276. package/src/markAsReadAll.js +0 -50
  277. package/src/markAsSeen.js +0 -59
  278. package/src/muteThread.js +0 -52
  279. package/src/react.js +0 -121
  280. package/src/removeUserFromGroup.js +0 -79
  281. package/src/resolvePhotoUrl.js +0 -45
  282. package/src/searchForThread.js +0 -53
  283. package/src/seen.js +0 -50
  284. package/src/sendMessage.js +0 -477
  285. package/src/sendTypingIndicator.js +0 -103
  286. package/src/setMessageReaction.js +0 -121
  287. package/src/setPostReaction.js +0 -109
  288. package/src/setTitle.js +0 -86
  289. package/src/threadColors.js +0 -131
  290. package/src/unfriend.js +0 -52
  291. package/src/unsendMessage.js +0 -49
  292. /package/{src → leiamnash}/getMessage.js +0 -0
@@ -1,666 +0,0 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
- const log = require("npmlog");
5
-
6
-
7
- function getExtension(original_extension, filename = "") {
8
- if (original_extension) {
9
- return original_extension;
10
- }
11
- else {
12
- const extension = filename.split(".").pop();
13
- if (extension === filename) {
14
- return "";
15
- }
16
- else {
17
- return extension;
18
- }
19
- }
20
- }
21
-
22
- function formatAttachmentsGraphQLResponse(attachment) {
23
- switch (attachment.__typename) {
24
- case "MessageImage":
25
- return {
26
- type: "photo",
27
- ID: attachment.legacy_attachment_id,
28
- filename: attachment.filename,
29
- original_extension: getExtension(attachment.original_extension, attachment.filename),
30
- thumbnailUrl: attachment.thumbnail.uri,
31
-
32
- previewUrl: attachment.preview.uri,
33
- previewWidth: attachment.preview.width,
34
- previewHeight: attachment.preview.height,
35
-
36
- largePreviewUrl: attachment.large_preview.uri,
37
- largePreviewHeight: attachment.large_preview.height,
38
- largePreviewWidth: attachment.large_preview.width,
39
-
40
- // You have to query for the real image. See below.
41
- url: attachment.large_preview.uri, // @Legacy
42
- width: attachment.large_preview.width, // @Legacy
43
- height: attachment.large_preview.height, // @Legacy
44
- name: attachment.filename, // @Legacy
45
-
46
- // @Undocumented
47
- attributionApp: attachment.attribution_app
48
- ? {
49
- attributionAppID: attachment.attribution_app.id,
50
- name: attachment.attribution_app.name,
51
- logo: attachment.attribution_app.square_logo
52
- }
53
- : null
54
-
55
- // @TODO No idea what this is, should we expose it?
56
- // Ben - July 15th 2017
57
- // renderAsSticker: attachment.render_as_sticker,
58
-
59
- // This is _not_ the real URI, this is still just a large preview.
60
- // To get the URL we'll need to support a POST query to
61
- //
62
- // https://www.facebook.com/webgraphql/query/
63
- //
64
- // With the following query params:
65
- //
66
- // query_id:728987990612546
67
- // variables:{"id":"100009069356507","photoID":"10213724771692996"}
68
- // dpr:1
69
- //
70
- // No special form though.
71
- };
72
- case "MessageAnimatedImage":
73
- return {
74
- type: "animated_image",
75
- ID: attachment.legacy_attachment_id,
76
- filename: attachment.filename,
77
- original_extension: getExtension(attachment.original_extension, attachment.filename),
78
-
79
- previewUrl: attachment.preview_image.uri,
80
- previewWidth: attachment.preview_image.width,
81
- previewHeight: attachment.preview_image.height,
82
-
83
- url: attachment.animated_image.uri,
84
- width: attachment.animated_image.width,
85
- height: attachment.animated_image.height,
86
-
87
- thumbnailUrl: attachment.preview_image.uri, // @Legacy
88
- name: attachment.filename, // @Legacy
89
- facebookUrl: attachment.animated_image.uri, // @Legacy
90
- rawGifImage: attachment.animated_image.uri, // @Legacy
91
- animatedGifUrl: attachment.animated_image.uri, // @Legacy
92
- animatedGifPreviewUrl: attachment.preview_image.uri, // @Legacy
93
- animatedWebpUrl: attachment.animated_image.uri, // @Legacy
94
- animatedWebpPreviewUrl: attachment.preview_image.uri, // @Legacy
95
-
96
- // @Undocumented
97
- attributionApp: attachment.attribution_app
98
- ? {
99
- attributionAppID: attachment.attribution_app.id,
100
- name: attachment.attribution_app.name,
101
- logo: attachment.attribution_app.square_logo
102
- }
103
- : null
104
- };
105
- case "MessageVideo":
106
- return {
107
- type: "video",
108
- ID: attachment.legacy_attachment_id,
109
- filename: attachment.filename,
110
- original_extension: getExtension(attachment.original_extension, attachment.filename),
111
- duration: attachment.playable_duration_in_ms,
112
-
113
- thumbnailUrl: attachment.large_image.uri, // @Legacy
114
-
115
- previewUrl: attachment.large_image.uri,
116
- previewWidth: attachment.large_image.width,
117
- previewHeight: attachment.large_image.height,
118
-
119
- url: attachment.playable_url,
120
- width: attachment.original_dimensions.x,
121
- height: attachment.original_dimensions.y,
122
-
123
- videoType: attachment.video_type.toLowerCase()
124
- };
125
- case "MessageFile":
126
- return {
127
- type: "file",
128
- ID: attachment.message_file_fbid,
129
- filename: attachment.filename,
130
- original_extension: getExtension(attachment.original_extension, attachment.filename),
131
-
132
- url: attachment.url,
133
- isMalicious: attachment.is_malicious,
134
- contentType: attachment.content_type,
135
-
136
- name: attachment.filename, // @Legacy
137
- mimeType: "", // @Legacy
138
- fileSize: -1 // @Legacy
139
- };
140
- case "MessageAudio":
141
- return {
142
- type: "audio",
143
- ID: attachment.url_shimhash, // Not fowardable
144
- filename: attachment.filename,
145
- original_extension: getExtension(attachment.original_extension, attachment.filename),
146
-
147
- duration: attachment.playable_duration_in_ms,
148
- audioType: attachment.audio_type,
149
- url: attachment.playable_url,
150
-
151
- isVoiceMail: attachment.is_voicemail
152
- };
153
- default:
154
- return {
155
- error: "Don't know about attachment type " + attachment.__typename
156
- };
157
- }
158
- }
159
-
160
- function formatExtensibleAttachment(attachment) {
161
- if (attachment.story_attachment) {
162
- return {
163
- type: "share",
164
- ID: attachment.legacy_attachment_id,
165
- url: attachment.story_attachment.url,
166
-
167
- title: attachment.story_attachment.title_with_entities.text,
168
- description:
169
- attachment.story_attachment.description &&
170
- attachment.story_attachment.description.text,
171
- source:
172
- attachment.story_attachment.source == null
173
- ? null
174
- : attachment.story_attachment.source.text,
175
-
176
- image:
177
- attachment.story_attachment.media == null
178
- ? null
179
- : attachment.story_attachment.media.animated_image == null &&
180
- attachment.story_attachment.media.image == null
181
- ? null
182
- : (
183
- attachment.story_attachment.media.animated_image ||
184
- attachment.story_attachment.media.image
185
- ).uri,
186
- width:
187
- attachment.story_attachment.media == null
188
- ? null
189
- : attachment.story_attachment.media.animated_image == null &&
190
- attachment.story_attachment.media.image == null
191
- ? null
192
- : (
193
- attachment.story_attachment.media.animated_image ||
194
- attachment.story_attachment.media.image
195
- ).width,
196
- height:
197
- attachment.story_attachment.media == null
198
- ? null
199
- : attachment.story_attachment.media.animated_image == null &&
200
- attachment.story_attachment.media.image == null
201
- ? null
202
- : (
203
- attachment.story_attachment.media.animated_image ||
204
- attachment.story_attachment.media.image
205
- ).height,
206
- playable:
207
- attachment.story_attachment.media == null
208
- ? null
209
- : attachment.story_attachment.media.is_playable,
210
- duration:
211
- attachment.story_attachment.media == null
212
- ? null
213
- : attachment.story_attachment.media.playable_duration_in_ms,
214
- playableUrl:
215
- attachment.story_attachment.media == null
216
- ? null
217
- : attachment.story_attachment.media.playable_url,
218
-
219
- subattachments: attachment.story_attachment.subattachments,
220
-
221
- // Format example:
222
- //
223
- // [{
224
- // key: "width",
225
- // value: { text: "1280" }
226
- // }]
227
- //
228
- // That we turn into:
229
- //
230
- // {
231
- // width: "1280"
232
- // }
233
- //
234
- properties: attachment.story_attachment.properties.reduce(function (
235
- obj,
236
- cur
237
- ) {
238
- obj[cur.key] = cur.value.text;
239
- return obj;
240
- },
241
- {}),
242
-
243
- // Deprecated fields
244
- animatedImageSize: "", // @Legacy
245
- facebookUrl: "", // @Legacy
246
- styleList: "", // @Legacy
247
- target: "", // @Legacy
248
- thumbnailUrl:
249
- attachment.story_attachment.media == null
250
- ? null
251
- : attachment.story_attachment.media.animated_image == null &&
252
- attachment.story_attachment.media.image == null
253
- ? null
254
- : (
255
- attachment.story_attachment.media.animated_image ||
256
- attachment.story_attachment.media.image
257
- ).uri, // @Legacy
258
- thumbnailWidth:
259
- attachment.story_attachment.media == null
260
- ? null
261
- : attachment.story_attachment.media.animated_image == null &&
262
- attachment.story_attachment.media.image == null
263
- ? null
264
- : (
265
- attachment.story_attachment.media.animated_image ||
266
- attachment.story_attachment.media.image
267
- ).width, // @Legacy
268
- thumbnailHeight:
269
- attachment.story_attachment.media == null
270
- ? null
271
- : attachment.story_attachment.media.animated_image == null &&
272
- attachment.story_attachment.media.image == null
273
- ? null
274
- : (
275
- attachment.story_attachment.media.animated_image ||
276
- attachment.story_attachment.media.image
277
- ).height // @Legacy
278
- };
279
- } else {
280
- return { error: "Don't know what to do with extensible_attachment." };
281
- }
282
- }
283
-
284
- function formatReactionsGraphQL(reaction) {
285
- return {
286
- reaction: reaction.reaction,
287
- userID: reaction.user.id
288
- };
289
- }
290
-
291
- function formatEventData(event) {
292
- if (event == null) {
293
- return {};
294
- }
295
-
296
- switch (event.__typename) {
297
- case "ThemeColorExtensibleMessageAdminText":
298
- return {
299
- color: event.theme_color
300
- };
301
- case "ThreadNicknameExtensibleMessageAdminText":
302
- return {
303
- nickname: event.nickname,
304
- participantID: event.participant_id
305
- };
306
- case "ThreadIconExtensibleMessageAdminText":
307
- return {
308
- threadIcon: event.thread_icon
309
- };
310
- case "InstantGameUpdateExtensibleMessageAdminText":
311
- return {
312
- gameID: (event.game == null ? null : event.game.id),
313
- update_type: event.update_type,
314
- collapsed_text: event.collapsed_text,
315
- expanded_text: event.expanded_text,
316
- instant_game_update_data: event.instant_game_update_data
317
- };
318
- case "GameScoreExtensibleMessageAdminText":
319
- return {
320
- game_type: event.game_type
321
- };
322
- case "RtcCallLogExtensibleMessageAdminText":
323
- return {
324
- event: event.event,
325
- is_video_call: event.is_video_call,
326
- server_info_data: event.server_info_data
327
- };
328
- case "GroupPollExtensibleMessageAdminText":
329
- return {
330
- event_type: event.event_type,
331
- total_count: event.total_count,
332
- question: event.question
333
- };
334
- case "AcceptPendingThreadExtensibleMessageAdminText":
335
- return {
336
- accepter_id: event.accepter_id,
337
- requester_id: event.requester_id
338
- };
339
- case "ConfirmFriendRequestExtensibleMessageAdminText":
340
- return {
341
- friend_request_recipient: event.friend_request_recipient,
342
- friend_request_sender: event.friend_request_sender
343
- };
344
- case "AddContactExtensibleMessageAdminText":
345
- return {
346
- contact_added_id: event.contact_added_id,
347
- contact_adder_id: event.contact_adder_id
348
- };
349
- case "AdExtensibleMessageAdminText":
350
- return {
351
- ad_client_token: event.ad_client_token,
352
- ad_id: event.ad_id,
353
- ad_preferences_link: event.ad_preferences_link,
354
- ad_properties: event.ad_properties
355
- };
356
- // never data
357
- case "ParticipantJoinedGroupCallExtensibleMessageAdminText":
358
- case "ThreadEphemeralTtlModeExtensibleMessageAdminText":
359
- case "StartedSharingVideoExtensibleMessageAdminText":
360
- case "LightweightEventCreateExtensibleMessageAdminText":
361
- case "LightweightEventNotifyExtensibleMessageAdminText":
362
- case "LightweightEventNotifyBeforeEventExtensibleMessageAdminText":
363
- case "LightweightEventUpdateTitleExtensibleMessageAdminText":
364
- case "LightweightEventUpdateTimeExtensibleMessageAdminText":
365
- case "LightweightEventUpdateLocationExtensibleMessageAdminText":
366
- case "LightweightEventDeleteExtensibleMessageAdminText":
367
- return {};
368
- default:
369
- return {
370
- error: "Don't know what to with event data type " + event.__typename
371
- };
372
- }
373
- }
374
-
375
- function formatMessagesGraphQLResponse(data) {
376
- const messageThread = data.o0.data.message_thread;
377
- const threadID = messageThread.thread_key.thread_fbid
378
- ? messageThread.thread_key.thread_fbid
379
- : messageThread.thread_key.other_user_id;
380
-
381
- const messages = messageThread.messages.nodes.map(function (d) {
382
- switch (d.__typename) {
383
- case "UserMessage":
384
- // Give priority to stickers. They're seen as normal messages but we've
385
- // been considering them as attachments.
386
- var maybeStickerAttachment;
387
- if (d.sticker) {
388
- maybeStickerAttachment = [
389
- {
390
- type: "sticker",
391
- ID: d.sticker.id,
392
- url: d.sticker.url,
393
-
394
- packID: d.sticker.pack ? d.sticker.pack.id : null,
395
- spriteUrl: d.sticker.sprite_image,
396
- spriteUrl2x: d.sticker.sprite_image_2x,
397
- width: d.sticker.width,
398
- height: d.sticker.height,
399
-
400
- caption: d.snippet, // Not sure what the heck caption was.
401
- description: d.sticker.label, // Not sure about this one either.
402
-
403
- frameCount: d.sticker.frame_count,
404
- frameRate: d.sticker.frame_rate,
405
- framesPerRow: d.sticker.frames_per_row,
406
- framesPerCol: d.sticker.frames_per_col,
407
-
408
- stickerID: d.sticker.id, // @Legacy
409
- spriteURI: d.sticker.sprite_image, // @Legacy
410
- spriteURI2x: d.sticker.sprite_image_2x // @Legacy
411
- }
412
- ];
413
- }
414
-
415
- var mentionsObj = {};
416
- if (d.message !== null) {
417
- d.message.ranges.forEach(e => {
418
- mentionsObj[e.entity.id] = d.message.text.substr(e.offset, e.length);
419
- });
420
- }
421
-
422
- return {
423
- type: "message",
424
- attachments: maybeStickerAttachment
425
- ? maybeStickerAttachment
426
- : d.blob_attachments && d.blob_attachments.length > 0
427
- ? d.blob_attachments.map(formatAttachmentsGraphQLResponse)
428
- : d.extensible_attachment
429
- ? [formatExtensibleAttachment(d.extensible_attachment)]
430
- : [],
431
- body: d.message !== null ? d.message.text : '',
432
- isGroup: messageThread.thread_type === "GROUP",
433
- messageID: d.message_id,
434
- senderID: d.message_sender.id,
435
- threadID: threadID,
436
- timestamp: d.timestamp_precise,
437
-
438
- mentions: mentionsObj,
439
- isUnread: d.unread,
440
-
441
- // New
442
- messageReactions: d.message_reactions
443
- ? d.message_reactions.map(formatReactionsGraphQL)
444
- : null,
445
- isSponsored: d.is_sponsored,
446
- snippet: d.snippet
447
- };
448
- case "ThreadNameMessage":
449
- return {
450
- type: "event",
451
- messageID: d.message_id,
452
- threadID: threadID,
453
- isGroup: messageThread.thread_type === "GROUP",
454
- senderID: d.message_sender.id,
455
- timestamp: d.timestamp_precise,
456
- eventType: "change_thread_name",
457
- snippet: d.snippet,
458
- eventData: {
459
- threadName: d.thread_name
460
- },
461
-
462
- // @Legacy
463
- author: d.message_sender.id,
464
- logMessageType: "log:thread-name",
465
- logMessageData: { name: d.thread_name }
466
- };
467
- case "ThreadImageMessage":
468
- return {
469
- type: "event",
470
- messageID: d.message_id,
471
- threadID: threadID,
472
- isGroup: messageThread.thread_type === "GROUP",
473
- senderID: d.message_sender.id,
474
- timestamp: d.timestamp_precise,
475
- eventType: "change_thread_image",
476
- snippet: d.snippet,
477
- eventData:
478
- d.image_with_metadata == null
479
- ? {} /* removed image */
480
- : {
481
- /* image added */
482
- threadImage: {
483
- attachmentID: d.image_with_metadata.legacy_attachment_id,
484
- width: d.image_with_metadata.original_dimensions.x,
485
- height: d.image_with_metadata.original_dimensions.y,
486
- url: d.image_with_metadata.preview.uri
487
- }
488
- },
489
-
490
- // @Legacy
491
- logMessageType: "log:thread-icon",
492
- logMessageData: {
493
- thread_icon: d.image_with_metadata
494
- ? d.image_with_metadata.preview.uri
495
- : null
496
- }
497
- };
498
- case "ParticipantLeftMessage":
499
- return {
500
- type: "event",
501
- messageID: d.message_id,
502
- threadID: threadID,
503
- isGroup: messageThread.thread_type === "GROUP",
504
- senderID: d.message_sender.id,
505
- timestamp: d.timestamp_precise,
506
- eventType: "remove_participants",
507
- snippet: d.snippet,
508
- eventData: {
509
- // Array of IDs.
510
- participantsRemoved: d.participants_removed.map(function (p) {
511
- return p.id;
512
- })
513
- },
514
-
515
- // @Legacy
516
- logMessageType: "log:unsubscribe",
517
- logMessageData: {
518
- leftParticipantFbId: d.participants_removed.map(function (p) {
519
- return p.id;
520
- })
521
- }
522
- };
523
- case "ParticipantsAddedMessage":
524
- return {
525
- type: "event",
526
- messageID: d.message_id,
527
- threadID: threadID,
528
- isGroup: messageThread.thread_type === "GROUP",
529
- senderID: d.message_sender.id,
530
- timestamp: d.timestamp_precise,
531
- eventType: "add_participants",
532
- snippet: d.snippet,
533
- eventData: {
534
- // Array of IDs.
535
- participantsAdded: d.participants_added.map(function (p) {
536
- return p.id;
537
- })
538
- },
539
-
540
- // @Legacy
541
- logMessageType: "log:subscribe",
542
- logMessageData: {
543
- addedParticipants: d.participants_added.map(function (p) {
544
- return p.id;
545
- })
546
- }
547
- };
548
- case "VideoCallMessage":
549
- return {
550
- type: "event",
551
- messageID: d.message_id,
552
- threadID: threadID,
553
- isGroup: messageThread.thread_type === "GROUP",
554
- senderID: d.message_sender.id,
555
- timestamp: d.timestamp_precise,
556
- eventType: "video_call",
557
- snippet: d.snippet,
558
-
559
- // @Legacy
560
- logMessageType: "other"
561
- };
562
- case "VoiceCallMessage":
563
- return {
564
- type: "event",
565
- messageID: d.message_id,
566
- threadID: threadID,
567
- isGroup: messageThread.thread_type === "GROUP",
568
- senderID: d.message_sender.id,
569
- timestamp: d.timestamp_precise,
570
- eventType: "voice_call",
571
- snippet: d.snippet,
572
-
573
- // @Legacy
574
- logMessageType: "other"
575
- };
576
- case "GenericAdminTextMessage":
577
- return {
578
- type: "event",
579
- messageID: d.message_id,
580
- threadID: threadID,
581
- isGroup: messageThread.thread_type === "GROUP",
582
- senderID: d.message_sender.id,
583
- timestamp: d.timestamp_precise,
584
- snippet: d.snippet,
585
- eventType: d.extensible_message_admin_text_type.toLowerCase(),
586
- eventData: formatEventData(d.extensible_message_admin_text),
587
-
588
- // @Legacy
589
- logMessageType: utils.getAdminTextMessageType(
590
- d.extensible_message_admin_text_type
591
- ),
592
- logMessageData: d.extensible_message_admin_text // Maybe different?
593
- };
594
- default:
595
- return { error: "Don't know about message type " + d.__typename };
596
- }
597
- });
598
- return messages;
599
- }
600
-
601
- module.exports = function (defaultFuncs, api, ctx) {
602
- return function getThreadHistoryGraphQL(
603
- threadID,
604
- amount,
605
- timestamp,
606
- callback
607
- ) {
608
- let resolveFunc = function () { };
609
- let rejectFunc = function () { };
610
- const returnPromise = new Promise(function (resolve, reject) {
611
- resolveFunc = resolve;
612
- rejectFunc = reject;
613
- });
614
-
615
- if (!callback) {
616
- callback = function (err, data) {
617
- if (err) {
618
- return rejectFunc(err);
619
- }
620
- resolveFunc(data);
621
- };
622
- }
623
-
624
- // `queries` has to be a string. I couldn't tell from the dev console. This
625
- // took me a really long time to figure out. I deserve a cookie for this.
626
- const form = {
627
- "av": ctx.globalOptions.pageID,
628
- queries: JSON.stringify({
629
- o0: {
630
- // This doc_id was valid on February 2nd 2017.
631
- doc_id: "1498317363570230",
632
- query_params: {
633
- id: threadID,
634
- message_limit: amount,
635
- load_messages: 1,
636
- load_read_receipts: false,
637
- before: timestamp
638
- }
639
- }
640
- })
641
- };
642
-
643
- defaultFuncs
644
- .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form)
645
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
646
- .then(function (resData) {
647
- if (resData.error) {
648
- throw resData;
649
- }
650
- // This returns us an array of things. The last one is the success /
651
- // failure one.
652
- // @TODO What do we do in this case?
653
- if (resData[resData.length - 1].error_results !== 0) {
654
- throw new Error("There was an error_result.");
655
- }
656
-
657
- callback(null, formatMessagesGraphQLResponse(resData[0]));
658
- })
659
- .catch(function (err) {
660
- log.error("getThreadHistoryGraphQL", err);
661
- return callback(err);
662
- });
663
-
664
- return returnPromise;
665
- };
666
- };