@cexy/hoonfca 1.0.6 → 2.0.1

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 (191) hide show
  1. package/LICENSE +3 -0
  2. package/examples/login-with-cookies.js +102 -0
  3. package/examples/verify.js +70 -0
  4. package/index.js +2 -8
  5. package/package.json +82 -61
  6. package/src/{api/action → apis}/addExternalModule.js +24 -25
  7. package/src/apis/addUserToGroup.js +108 -0
  8. package/src/apis/changeAdminStatus.js +148 -0
  9. package/src/apis/changeArchivedStatus.js +61 -0
  10. package/src/apis/changeAvatar.js +103 -0
  11. package/src/apis/changeBio.js +69 -0
  12. package/src/apis/changeBlockedStatus.js +54 -0
  13. package/src/apis/changeGroupImage.js +136 -0
  14. package/src/apis/changeThreadColor.js +116 -0
  15. package/src/apis/changeThreadEmoji.js +53 -0
  16. package/src/apis/comment.js +207 -0
  17. package/src/apis/createAITheme.js +129 -0
  18. package/src/apis/createNewGroup.js +79 -0
  19. package/src/apis/createPoll.js +73 -0
  20. package/src/apis/deleteMessage.js +44 -0
  21. package/src/apis/deleteThread.js +52 -0
  22. package/src/apis/e2ee.js +17 -0
  23. package/src/apis/editMessage.js +70 -0
  24. package/src/apis/emoji.js +124 -0
  25. package/src/apis/fetchThemeData.js +82 -0
  26. package/src/apis/follow.js +81 -0
  27. package/src/apis/forwardMessage.js +52 -0
  28. package/src/apis/friend.js +243 -0
  29. package/src/apis/gcmember.js +122 -0
  30. package/src/apis/gcname.js +123 -0
  31. package/src/apis/gcrule.js +119 -0
  32. package/src/apis/getAccess.js +111 -0
  33. package/src/apis/getBotInfo.js +88 -0
  34. package/src/apis/getBotInitialData.js +43 -0
  35. package/src/apis/getFriendsList.js +79 -0
  36. package/src/apis/getMessage.js +423 -0
  37. package/src/apis/getTheme.js +95 -0
  38. package/src/apis/getThemeInfo.js +116 -0
  39. package/src/apis/getThreadHistory.js +239 -0
  40. package/src/apis/getThreadInfo.js +267 -0
  41. package/src/apis/getThreadList.js +232 -0
  42. package/src/apis/getThreadPictures.js +58 -0
  43. package/src/apis/getUserID.js +117 -0
  44. package/src/apis/getUserInfo.js +513 -0
  45. package/src/{api/users → apis}/getUserInfoV2.js +146 -134
  46. package/src/apis/handleMessageRequest.js +50 -0
  47. package/src/apis/httpGet.js +63 -0
  48. package/src/apis/httpPost.js +89 -0
  49. package/src/apis/httpPostFormData.js +69 -0
  50. package/src/apis/listenMqtt.js +1236 -0
  51. package/src/apis/listenSpeed.js +179 -0
  52. package/src/apis/logout.js +87 -0
  53. package/src/apis/markAsDelivered.js +47 -0
  54. package/src/{api/messaging → apis}/markAsRead.js +99 -88
  55. package/src/apis/markAsReadAll.js +40 -0
  56. package/src/apis/markAsSeen.js +70 -0
  57. package/src/apis/mqttDeltaValue.js +278 -0
  58. package/src/apis/muteThread.js +45 -0
  59. package/src/apis/nickname.js +132 -0
  60. package/src/apis/notes.js +163 -0
  61. package/src/apis/pinMessage.js +150 -0
  62. package/src/apis/produceMetaTheme.js +180 -0
  63. package/src/apis/realtime.js +182 -0
  64. package/src/apis/removeUserFromGroup.js +117 -0
  65. package/src/apis/resolvePhotoUrl.js +58 -0
  66. package/src/apis/searchForThread.js +154 -0
  67. package/src/apis/sendMessage.js +354 -0
  68. package/src/apis/sendMessageMqtt.js +249 -0
  69. package/src/apis/sendTypingIndicator.js +91 -0
  70. package/src/apis/setMessageReaction.js +27 -0
  71. package/src/apis/setMessageReactionMqtt.js +61 -0
  72. package/src/apis/setThreadTheme.js +260 -0
  73. package/src/apis/setThreadThemeMqtt.js +94 -0
  74. package/src/apis/share.js +107 -0
  75. package/src/apis/shareContact.js +66 -0
  76. package/src/apis/stickers.js +257 -0
  77. package/src/apis/story.js +181 -0
  78. package/src/apis/theme.js +233 -0
  79. package/src/apis/unfriend.js +47 -0
  80. package/src/apis/unsendMessage.js +17 -0
  81. package/src/engine/client.js +92 -0
  82. package/src/engine/models/buildAPI.js +152 -0
  83. package/src/engine/models/loginHelper.js +519 -0
  84. package/src/engine/models/setOptions.js +88 -0
  85. package/src/security/e2ee.js +109 -0
  86. package/src/types/index.d.ts +498 -0
  87. package/src/utils/antiSuspension.js +506 -0
  88. package/src/utils/auth-helpers.js +149 -0
  89. package/src/utils/autoReLogin.js +336 -0
  90. package/src/utils/axios.js +436 -0
  91. package/src/utils/cache.js +54 -0
  92. package/src/utils/clients.js +282 -0
  93. package/src/utils/constants.js +410 -23
  94. package/src/utils/formatters/data/formatAttachment.js +370 -0
  95. package/src/utils/formatters/data/formatDelta.js +109 -0
  96. package/src/utils/formatters/index.js +159 -0
  97. package/src/utils/formatters/value/formatCookie.js +91 -0
  98. package/src/utils/formatters/value/formatDate.js +36 -0
  99. package/src/utils/formatters/value/formatID.js +16 -0
  100. package/src/utils/formatters.js +1373 -0
  101. package/src/utils/headers.js +214 -99
  102. package/src/utils/index.js +153 -0
  103. package/src/utils/monitoring.js +333 -0
  104. package/src/utils/rateLimiter.js +319 -0
  105. package/src/utils/tokenRefresh.js +657 -0
  106. package/src/utils/user-agents.js +238 -0
  107. package/src/utils/validation.js +157 -0
  108. package/CHANGELOG.md +0 -181
  109. package/DOCS.md +0 -2636
  110. package/LICENSE-MIT +0 -21
  111. package/README.md +0 -632
  112. package/func/checkUpdate.js +0 -231
  113. package/func/logger.js +0 -48
  114. package/index.d.ts +0 -746
  115. package/module/config.js +0 -67
  116. package/module/login.js +0 -154
  117. package/module/loginHelper.js +0 -1034
  118. package/module/options.js +0 -54
  119. package/src/api/action/changeAvatar.js +0 -137
  120. package/src/api/action/changeBio.js +0 -75
  121. package/src/api/action/enableAutoSaveAppState.js +0 -73
  122. package/src/api/action/getCurrentUserID.js +0 -7
  123. package/src/api/action/handleFriendRequest.js +0 -57
  124. package/src/api/action/logout.js +0 -76
  125. package/src/api/action/refreshFb_dtsg.js +0 -48
  126. package/src/api/action/setPostReaction.js +0 -106
  127. package/src/api/action/unfriend.js +0 -54
  128. package/src/api/http/httpGet.js +0 -46
  129. package/src/api/http/httpPost.js +0 -52
  130. package/src/api/http/postFormData.js +0 -47
  131. package/src/api/messaging/addUserToGroup.js +0 -68
  132. package/src/api/messaging/changeAdminStatus.js +0 -122
  133. package/src/api/messaging/changeArchivedStatus.js +0 -55
  134. package/src/api/messaging/changeBlockedStatus.js +0 -48
  135. package/src/api/messaging/changeGroupImage.js +0 -90
  136. package/src/api/messaging/changeNickname.js +0 -70
  137. package/src/api/messaging/changeThreadColor.js +0 -79
  138. package/src/api/messaging/changeThreadEmoji.js +0 -106
  139. package/src/api/messaging/createNewGroup.js +0 -88
  140. package/src/api/messaging/createPoll.js +0 -43
  141. package/src/api/messaging/createThemeAI.js +0 -98
  142. package/src/api/messaging/deleteMessage.js +0 -56
  143. package/src/api/messaging/deleteThread.js +0 -56
  144. package/src/api/messaging/editMessage.js +0 -68
  145. package/src/api/messaging/forwardAttachment.js +0 -51
  146. package/src/api/messaging/getEmojiUrl.js +0 -29
  147. package/src/api/messaging/getFriendsList.js +0 -82
  148. package/src/api/messaging/getMessage.js +0 -829
  149. package/src/api/messaging/getThemePictures.js +0 -62
  150. package/src/api/messaging/handleMessageRequest.js +0 -65
  151. package/src/api/messaging/markAsDelivered.js +0 -57
  152. package/src/api/messaging/markAsReadAll.js +0 -49
  153. package/src/api/messaging/markAsSeen.js +0 -61
  154. package/src/api/messaging/muteThread.js +0 -50
  155. package/src/api/messaging/removeUserFromGroup.js +0 -106
  156. package/src/api/messaging/resolvePhotoUrl.js +0 -43
  157. package/src/api/messaging/scheduler.js +0 -264
  158. package/src/api/messaging/searchForThread.js +0 -52
  159. package/src/api/messaging/sendMessage.js +0 -272
  160. package/src/api/messaging/sendTypingIndicator.js +0 -67
  161. package/src/api/messaging/setMessageReaction.js +0 -76
  162. package/src/api/messaging/setTitle.js +0 -119
  163. package/src/api/messaging/shareContact.js +0 -49
  164. package/src/api/messaging/threadColors.js +0 -128
  165. package/src/api/messaging/unsendMessage.js +0 -81
  166. package/src/api/messaging/uploadAttachment.js +0 -94
  167. package/src/api/socket/core/connectMqtt.js +0 -255
  168. package/src/api/socket/core/emitAuth.js +0 -106
  169. package/src/api/socket/core/getSeqID.js +0 -40
  170. package/src/api/socket/core/getTaskResponseData.js +0 -22
  171. package/src/api/socket/core/markDelivery.js +0 -12
  172. package/src/api/socket/core/parseDelta.js +0 -391
  173. package/src/api/socket/detail/buildStream.js +0 -208
  174. package/src/api/socket/detail/constants.js +0 -24
  175. package/src/api/socket/listenMqtt.js +0 -364
  176. package/src/api/socket/middleware/index.js +0 -216
  177. package/src/api/threads/getThreadHistory.js +0 -664
  178. package/src/api/threads/getThreadInfo.js +0 -438
  179. package/src/api/threads/getThreadList.js +0 -293
  180. package/src/api/threads/getThreadPictures.js +0 -78
  181. package/src/api/users/getUserID.js +0 -65
  182. package/src/api/users/getUserInfo.js +0 -327
  183. package/src/core/sendReqMqtt.js +0 -96
  184. package/src/database/models/index.js +0 -87
  185. package/src/database/models/thread.js +0 -45
  186. package/src/database/models/user.js +0 -46
  187. package/src/database/threadData.js +0 -98
  188. package/src/database/userData.js +0 -89
  189. package/src/utils/client.js +0 -320
  190. package/src/utils/format.js +0 -1115
  191. package/src/utils/request.js +0 -305
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Formats a cookie array into a string for use in a cookie jar.
5
+ * @param {Array<string>} arr - An array containing cookie parts.
6
+ * @param {string} url - The base URL for the cookie domain.
7
+ * @returns {string} The formatted cookie string.
8
+ */
9
+ function formatCookie(arr, url) {
10
+ return (
11
+ arr[0] + "=" + arr[1] + "; Path=" + arr[3] + "; Domain=" + url + ".com"
12
+ );
13
+ }
14
+
15
+ /**
16
+ * Normalizes cookie header strings by removing malformed inputs and cleaning up the format.
17
+ * Handles various cookie formats including headers with "Cookie:" prefix and multiline inputs.
18
+ * @param {string} cookieString - The raw cookie string to normalize.
19
+ * @returns {Array<string>} An array of normalized cookie key-value pairs.
20
+ */
21
+ function normalizeCookieHeaderString(cookieString) {
22
+ let str = String(cookieString || "").trim();
23
+ if (!str) return [];
24
+
25
+ if (/^cookie\s*:/i.test(str)) {
26
+ str = str.replace(/^cookie\s*:/i, "").trim();
27
+ }
28
+
29
+ str = str.replace(/\r?\n/g, " ").replace(/\s*;\s*/g, ";");
30
+
31
+ const parts = str.split(";").map(v => v.trim()).filter(Boolean);
32
+ const output = [];
33
+
34
+ for (const part of parts) {
35
+ const eqIndex = part.indexOf("=");
36
+ if (eqIndex <= 0) continue;
37
+
38
+ const key = part.slice(0, eqIndex).trim();
39
+ const value = part.slice(eqIndex + 1).trim().replace(/^"(.*)"$/, "$1");
40
+
41
+ if (!key) continue;
42
+ output.push(`${key}=${value}`);
43
+ }
44
+
45
+ return output;
46
+ }
47
+
48
+ /**
49
+ * Sets cookies in a jar from an array of key-value pairs with domain-aware logic.
50
+ * Ensures cookies are properly set across .facebook.com and .messenger.com domains.
51
+ * @param {object} jar - The cookie jar instance.
52
+ * @param {Array<string>} cookiePairs - Array of cookie strings in "key=value" format.
53
+ * @param {string} domain - The domain to set cookies for (defaults to ".facebook.com").
54
+ * @returns {void}
55
+ */
56
+ function setJarFromPairs(jar, cookiePairs, domain = ".facebook.com") {
57
+ const expires = new Date(Date.now() + 31536000000).toUTCString();
58
+ const domains = [".facebook.com", ".messenger.com"];
59
+
60
+ for (const cookiePair of cookiePairs) {
61
+ for (const cookieDomain of domains) {
62
+ const cookieStr = `${cookiePair}; expires=${expires}; domain=${cookieDomain}; path=/;`;
63
+ try {
64
+ if (typeof jar.setCookieSync === 'function') {
65
+ jar.setCookieSync(cookieStr, `https://${cookieDomain}`);
66
+ } else if (typeof jar.setCookie === 'function') {
67
+ jar.setCookie(cookieStr, `https://${cookieDomain}`);
68
+ }
69
+ } catch (err) {
70
+ }
71
+ }
72
+ }
73
+ }
74
+
75
+ /**
76
+ * Enhanced cookie formatter with multi-domain support.
77
+ * @param {Array<string>} arr - An array containing cookie parts [name, value, ...].
78
+ * @param {string} service - The service name ('facebook' or 'messenger').
79
+ * @returns {string} The formatted cookie string with proper domain.
80
+ */
81
+ function formatCookieWithDomain(arr, service = 'facebook') {
82
+ const name = String(arr?.[0] || "");
83
+ const value = String(arr?.[1] || "");
84
+ return `${name}=${value}; Domain=.${service}.com; Path=/; Secure`;
85
+ }
86
+
87
+ module.exports = formatCookie;
88
+ module.exports.formatCookie = formatCookie;
89
+ module.exports.normalizeCookieHeaderString = normalizeCookieHeaderString;
90
+ module.exports.setJarFromPairs = setJarFromPairs;
91
+ module.exports.formatCookieWithDomain = formatCookieWithDomain;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ const { NUM_TO_MONTH, NUM_TO_DAY } = require("../../constants");
4
+
5
+ /**
6
+ * Formats a Date object into a GMT string.
7
+ * @param {Date} date The date to format.
8
+ */
9
+ function formatDate(date) {
10
+ let d = date.getUTCDate();
11
+ d = d >= 10 ? d : "0" + d;
12
+ let h = date.getUTCHours();
13
+ h = h >= 10 ? h : "0" + h;
14
+ let m = date.getUTCMinutes();
15
+ m = m >= 10 ? m : "0" + m;
16
+ let s = date.getUTCSeconds();
17
+ s = s >= 10 ? s : "0" + s;
18
+ return (
19
+ NUM_TO_DAY[date.getUTCDay()] +
20
+ ", " +
21
+ d +
22
+ " " +
23
+ NUM_TO_MONTH[date.getUTCMonth()] +
24
+ " " +
25
+ date.getUTCFullYear() +
26
+ " " +
27
+ h +
28
+ ":" +
29
+ m +
30
+ ":" +
31
+ s +
32
+ " GMT"
33
+ );
34
+ }
35
+
36
+ module.exports = formatDate;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Strips "fbid:" or "id:" prefixes from a Facebook ID string.
5
+ * @param {string} id The ID to format.
6
+ * @returns {string} The formatted ID.
7
+ */
8
+ function formatID(id) {
9
+ if (id != undefined && id != null) {
10
+ return id.replace(/(fb)?id[:.]/, "");
11
+ } else {
12
+ return id;
13
+ }
14
+ }
15
+
16
+ module.exports = formatID;