@cexy/hoonfca 1.0.0 → 1.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 (188) hide show
  1. package/LICENSE +3 -0
  2. package/README.md +451 -43
  3. package/examples/login-with-cookies.js +102 -0
  4. package/examples/verify.js +70 -0
  5. package/index.js +1 -466
  6. package/package.json +98 -6
  7. package/src/apis/addExternalModule.js +24 -0
  8. package/src/apis/addUserToGroup.js +108 -0
  9. package/src/apis/changeAdminStatus.js +148 -0
  10. package/src/apis/changeArchivedStatus.js +61 -0
  11. package/src/apis/changeAvatar.js +103 -0
  12. package/src/apis/changeBio.js +69 -0
  13. package/src/apis/changeBlockedStatus.js +54 -0
  14. package/src/apis/changeGroupImage.js +136 -0
  15. package/src/apis/changeThreadColor.js +116 -0
  16. package/src/{changeThreadEmoji.js → apis/changeThreadEmoji.js} +7 -8
  17. package/src/apis/comment.js +207 -0
  18. package/src/apis/createAITheme.js +129 -0
  19. package/src/apis/createNewGroup.js +79 -0
  20. package/src/apis/createPoll.js +73 -0
  21. package/src/apis/deleteMessage.js +44 -0
  22. package/src/apis/deleteThread.js +52 -0
  23. package/src/apis/e2ee.js +17 -0
  24. package/src/apis/editMessage.js +70 -0
  25. package/src/apis/emoji.js +124 -0
  26. package/src/apis/fetchThemeData.js +82 -0
  27. package/src/apis/follow.js +81 -0
  28. package/src/apis/forwardMessage.js +52 -0
  29. package/src/apis/friend.js +243 -0
  30. package/src/apis/gcmember.js +122 -0
  31. package/src/apis/gcname.js +123 -0
  32. package/src/apis/gcrule.js +119 -0
  33. package/src/apis/getAccess.js +111 -0
  34. package/src/apis/getBotInfo.js +88 -0
  35. package/src/apis/getBotInitialData.js +43 -0
  36. package/src/apis/getFriendsList.js +79 -0
  37. package/src/apis/getMessage.js +423 -0
  38. package/src/apis/getTheme.js +95 -0
  39. package/src/apis/getThemeInfo.js +116 -0
  40. package/src/apis/getThreadHistory.js +239 -0
  41. package/src/apis/getThreadInfo.js +267 -0
  42. package/src/apis/getThreadList.js +232 -0
  43. package/src/apis/getThreadPictures.js +58 -0
  44. package/src/apis/getUserID.js +117 -0
  45. package/src/apis/getUserInfo.js +513 -0
  46. package/src/apis/getUserInfoV2.js +146 -0
  47. package/src/apis/handleMessageRequest.js +50 -0
  48. package/src/apis/httpGet.js +63 -0
  49. package/src/apis/httpPost.js +89 -0
  50. package/src/apis/httpPostFormData.js +69 -0
  51. package/src/apis/listenMqtt.js +1236 -0
  52. package/src/apis/listenSpeed.js +179 -0
  53. package/src/apis/logout.js +87 -0
  54. package/src/apis/markAsDelivered.js +47 -0
  55. package/src/apis/markAsRead.js +99 -0
  56. package/src/apis/markAsReadAll.js +40 -0
  57. package/src/apis/markAsSeen.js +70 -0
  58. package/src/apis/mqttDeltaValue.js +278 -0
  59. package/src/apis/muteThread.js +45 -0
  60. package/src/apis/nickname.js +132 -0
  61. package/src/apis/notes.js +163 -0
  62. package/src/apis/pinMessage.js +150 -0
  63. package/src/apis/produceMetaTheme.js +180 -0
  64. package/src/apis/realtime.js +182 -0
  65. package/src/apis/removeUserFromGroup.js +117 -0
  66. package/src/apis/resolvePhotoUrl.js +58 -0
  67. package/src/apis/searchForThread.js +154 -0
  68. package/src/apis/sendMessage.js +354 -0
  69. package/src/apis/sendMessageMqtt.js +249 -0
  70. package/src/apis/sendTypingIndicator.js +91 -0
  71. package/src/apis/setMessageReaction.js +27 -0
  72. package/src/apis/setMessageReactionMqtt.js +61 -0
  73. package/src/apis/setThreadTheme.js +260 -0
  74. package/src/apis/setThreadThemeMqtt.js +94 -0
  75. package/src/apis/share.js +107 -0
  76. package/src/apis/shareContact.js +66 -0
  77. package/src/apis/stickers.js +257 -0
  78. package/src/apis/story.js +181 -0
  79. package/src/apis/theme.js +233 -0
  80. package/src/apis/unfriend.js +47 -0
  81. package/src/apis/unsendMessage.js +17 -0
  82. package/src/engine/client.js +92 -0
  83. package/src/engine/models/buildAPI.js +152 -0
  84. package/src/engine/models/loginHelper.js +519 -0
  85. package/src/engine/models/setOptions.js +88 -0
  86. package/src/security/e2ee.js +109 -0
  87. package/src/types/index.d.ts +498 -0
  88. package/src/utils/antiSuspension.js +506 -0
  89. package/src/utils/auth-helpers.js +149 -0
  90. package/src/utils/autoReLogin.js +336 -0
  91. package/src/utils/axios.js +436 -0
  92. package/src/utils/cache.js +54 -0
  93. package/src/utils/clients.js +282 -0
  94. package/src/utils/constants.js +410 -0
  95. package/src/utils/formatters/data/formatAttachment.js +370 -0
  96. package/src/utils/formatters/data/formatDelta.js +109 -0
  97. package/src/utils/formatters/index.js +159 -0
  98. package/src/utils/formatters/value/formatCookie.js +91 -0
  99. package/src/utils/formatters/value/formatDate.js +36 -0
  100. package/src/utils/formatters/value/formatID.js +16 -0
  101. package/src/utils/formatters.js +1373 -0
  102. package/src/utils/headers.js +230 -0
  103. package/src/utils/index.js +153 -0
  104. package/src/utils/monitoring.js +333 -0
  105. package/src/utils/rateLimiter.js +319 -0
  106. package/src/utils/tokenRefresh.js +657 -0
  107. package/src/utils/user-agents.js +238 -0
  108. package/src/utils/validation.js +157 -0
  109. package/replit.nix +0 -3
  110. package/src/addExternalModule.js +0 -25
  111. package/src/addUserToGroup.js +0 -98
  112. package/src/changeAdminStatus.js +0 -98
  113. package/src/changeArchivedStatus.js +0 -51
  114. package/src/changeAvatar.js +0 -89
  115. package/src/changeBio.js +0 -74
  116. package/src/changeBlockedStatus.js +0 -45
  117. package/src/changeBlockedStatusMqtt.js +0 -65
  118. package/src/changeCover.js +0 -92
  119. package/src/changeGroupImage.js +0 -110
  120. package/src/changeName.js +0 -106
  121. package/src/changeNickname.js +0 -58
  122. package/src/changeThreadColor.js +0 -62
  123. package/src/changeUsername.js +0 -80
  124. package/src/createCommentPost.js +0 -196
  125. package/src/createNewGroup.js +0 -81
  126. package/src/createPoll.js +0 -64
  127. package/src/createPost.js +0 -285
  128. package/src/data/getThreadInfo.json +0 -1
  129. package/src/deleteMessage.js +0 -55
  130. package/src/deleteThread.js +0 -55
  131. package/src/editMessage.js +0 -66
  132. package/src/follow.js +0 -71
  133. package/src/forwardAttachment.js +0 -57
  134. package/src/getAccess.js +0 -130
  135. package/src/getAvatarUser.js +0 -88
  136. package/src/getBotInitialData.js +0 -59
  137. package/src/getCtx.js +0 -5
  138. package/src/getCurrentUserID.js +0 -5
  139. package/src/getEmojiUrl.js +0 -18
  140. package/src/getFriendsList.js +0 -81
  141. package/src/getMessage.js +0 -827
  142. package/src/getOptions.js +0 -5
  143. package/src/getRegion.js +0 -7
  144. package/src/getThreadHistory.js +0 -496
  145. package/src/getThreadHistoryDeprecated.js +0 -95
  146. package/src/getThreadInfo.js +0 -194
  147. package/src/getThreadInfoDeprecated.js +0 -77
  148. package/src/getThreadList.js +0 -219
  149. package/src/getThreadListDeprecated.js +0 -86
  150. package/src/getThreadPictures.js +0 -85
  151. package/src/getUserID.js +0 -67
  152. package/src/getUserInfo.js +0 -89
  153. package/src/handleFriendRequest.js +0 -56
  154. package/src/handleMessageRequest.js +0 -65
  155. package/src/httpGet.js +0 -53
  156. package/src/httpPost.js +0 -53
  157. package/src/httpPostFormData.js +0 -58
  158. package/src/listenMqtt.js +0 -683
  159. package/src/listenNotification.js +0 -96
  160. package/src/logout.js +0 -77
  161. package/src/markAsDelivered.js +0 -53
  162. package/src/markAsRead.js +0 -74
  163. package/src/markAsReadAll.js +0 -46
  164. package/src/markAsSeen.js +0 -57
  165. package/src/muteThread.js +0 -49
  166. package/src/pinMessage.js +0 -60
  167. package/src/refreshFb_dtsg.js +0 -75
  168. package/src/removeUserFromGroup.js +0 -59
  169. package/src/resolvePhotoUrl.js +0 -47
  170. package/src/searchForThread.js +0 -55
  171. package/src/searchStickers.js +0 -59
  172. package/src/sendMessage.js +0 -444
  173. package/src/sendMessageMqtt.js +0 -326
  174. package/src/sendTypingIndicator.js +0 -54
  175. package/src/setMessageReaction.js +0 -126
  176. package/src/setMessageReactionMqtt.js +0 -74
  177. package/src/setPostReaction.js +0 -103
  178. package/src/setProfileGuard.js +0 -66
  179. package/src/setStoryReaction.js +0 -97
  180. package/src/setTitle.js +0 -100
  181. package/src/shareContact.js +0 -101
  182. package/src/shareLink.js +0 -105
  183. package/src/stopListenMqtt.js +0 -47
  184. package/src/threadColors.js +0 -119
  185. package/src/unfriend.js +0 -58
  186. package/src/unsendMessage.js +0 -51
  187. package/src/uploadAttachment.js +0 -98
  188. package/utils.js +0 -919
@@ -1,66 +0,0 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
-
5
- module.exports = (defaultFuncs, api, ctx) => {
6
- return (guard, callback) => {
7
- let resolveFunc = function () {};
8
- let rejectFunc = function () {};
9
- const returnPromise = new Promise(function (resolve, reject) {
10
- resolveFunc = resolve;
11
- rejectFunc = reject;
12
- });
13
-
14
- if (!callback) {
15
- callback = function (err, data) {
16
- if (err) {
17
- return rejectFunc(err);
18
- }
19
- resolveFunc(data);
20
- };
21
- }
22
-
23
- if (utils.getType(guard) !== "Boolean") {
24
- return callback({
25
- error: "Please pass a boolean as a second argument.",
26
- });
27
- }
28
-
29
- const uid = ctx.userID;
30
- const form = {
31
- av: uid,
32
- variables: JSON.stringify({
33
- input: {
34
- is_shielded: guard ? true : false,
35
- actor_id: uid,
36
- client_mutation_id: "1"
37
- },
38
- scale: 1
39
- }),
40
- doc_id: "1477043292367183",
41
- fb_api_req_friendly_name: "IsShieldedSetMutation",
42
- fb_api_caller_class: "IsShieldedSetMutation"
43
- };
44
-
45
- defaultFuncs
46
- .post("https://www.facebook.com/api/graphql", ctx.jar, form)
47
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
48
- .then(function(resData) {
49
- if (!resData) {
50
- throw { error: "setProfileGuard returned empty response." };
51
- }
52
- if (resData.err || resData.errors || resData.error) {
53
- throw {
54
- error: resData.err || resData.errors || resData.error
55
- };
56
- }
57
- return callback(null, resData);
58
- })
59
- .catch(err => {
60
- utils.error("setProfileGuard", err);
61
- return callback(err);
62
- });
63
-
64
- return returnPromise;
65
- };
66
- };
@@ -1,97 +0,0 @@
1
- 'use strict';
2
-
3
- const utils = require('../utils.js');
4
-
5
- module.exports = function(defaultFuncs, api, ctx) {
6
- return function setStoryReaction(storyID, react, callback) {
7
- var cb;
8
- var returnPromise = new Promise(function(resolve, reject) {
9
- cb = error => error ? reject(error) : resolve();
10
- });
11
-
12
- if (typeof react == 'function') {
13
- callback = react;
14
- react = 1;
15
- }
16
- if (typeof callback == 'function') {
17
- cb = callback;
18
- }
19
-
20
- if (!storyID) {
21
- return cb({ error: 'setStoryReaction: storyID is required.' });
22
- }
23
-
24
- // সাপোর্ট করা রিঅ্যাকশন ও তাদের টেক্সট ফরম্যাট ম্যাপিং
25
- var map = {
26
- 1: '👍',
27
- 2: '❤️',
28
- 3: '🤗',
29
- 4: '😆',
30
- 5: '😮',
31
- 6: '😢',
32
- 7: '😡'
33
- };
34
-
35
- var aliasMap = {
36
- 'like': 1, 'thumbsup': 1, '👍': 1,
37
- 'heart': 2, 'love': 2, '❤️': 2,
38
- 'care': 3, 'hug': 3, '🤗': 3,
39
- 'haha': 4, 'laugh': 4, '😆': 4,
40
- 'wow': 5, 'shock': 5, '😮': 5,
41
- 'sad': 6, 'cry': 6, '😢': 6,
42
- 'angry': 7, 'rage': 7, '😡': 7
43
- };
44
-
45
- // রিঅ্যাকশন ইনপুট পার্স করা
46
- var targetReact = 1;
47
- if (react !== undefined && react !== null) {
48
- var reactStr = String(react).toLowerCase().trim();
49
- if (aliasMap[reactStr] !== undefined) {
50
- targetReact = aliasMap[reactStr];
51
- } else {
52
- var reactNum = Number(react);
53
- if (!isNaN(reactNum) && map[reactNum] !== undefined) {
54
- targetReact = reactNum;
55
- }
56
- }
57
- }
58
-
59
- var form = {
60
- fb_api_req_friendly_name: 'useStoriesSendReplyMutation',
61
- variables: JSON.stringify({
62
- input: {
63
- attribution_id_v2: `StoriesCometSuspenseRoot.react,comet.stories.viewer,unexpected,${Date.now()},538296,,;CometHomeRoot.react,comet.home,via_cold_start,${Date.now()},850302,4748854339,`,
64
- lightweight_reaction_actions: {
65
- offsets: [0],
66
- reaction: map[targetReact]
67
- },
68
- message: map[targetReact],
69
- story_id: storyID.toString(),
70
- story_reply_type: "LIGHT_WEIGHT",
71
- actor_id: ctx.userID,
72
- client_mutation_id: String(parseInt(Math.random() * 16))
73
- }
74
- }),
75
- doc_id: '4826141330837571'
76
- };
77
-
78
- defaultFuncs
79
- .post('https://www.facebook.com/api/graphql/', ctx.jar, form)
80
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
81
- .then(function(res) {
82
- if (!res) {
83
- throw { error: "setStoryReaction returned empty response." };
84
- }
85
- if (res.errors) {
86
- throw res;
87
- }
88
- return cb();
89
- })
90
- .catch(function(err) {
91
- utils.error('setStoryReaction', err);
92
- return cb(err);
93
- });
94
-
95
- return returnPromise;
96
- }
97
- }
package/src/setTitle.js DELETED
@@ -1,100 +0,0 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
-
5
- module.exports = function (defaultFuncs, api, ctx) {
6
- return function setTitle(newTitle, threadID, callback) {
7
- let resolveFunc = function () {};
8
- let rejectFunc = function () {};
9
- const returnPromise = new Promise(function (resolve, reject) {
10
- resolveFunc = resolve;
11
- rejectFunc = reject;
12
- });
13
-
14
- if (!callback) {
15
- if (
16
- utils.getType(threadID) === "Function" ||
17
- utils.getType(threadID) === "AsyncFunction"
18
- ) {
19
- callback = threadID;
20
- threadID = undefined;
21
- } else {
22
- callback = function (err, data) {
23
- if (err) {
24
- return rejectFunc(err);
25
- }
26
- resolveFunc(data);
27
- };
28
- }
29
- }
30
-
31
- if (!threadID) {
32
- return callback({ error: "Please pass a threadID as a second argument." });
33
- }
34
-
35
- const titleStr = newTitle !== null && newTitle !== undefined ? newTitle.toString() : "";
36
- const threadIDStr = threadID.toString();
37
- const messageAndOTID = utils.generateOfflineThreadingID();
38
-
39
- const form = {
40
- client: "mercury",
41
- action_type: "ma-type:log-message",
42
- author: "fbid:" + (ctx.userID),
43
- author_email: "",
44
- coordinates: "",
45
- timestamp: Date.now(),
46
- timestamp_absolute: "Today",
47
- timestamp_relative: utils.generateTimestampRelative(),
48
- timestamp_time_passed: "0",
49
- is_unread: false,
50
- is_cleared: false,
51
- is_forward: false,
52
- is_filtered_content: false,
53
- is_spoof_warning: false,
54
- source: "source:chat:web",
55
- "source_tags[0]": "source:chat",
56
- status: "0",
57
- offline_threading_id: messageAndOTID,
58
- message_id: messageAndOTID,
59
- threading_id: utils.generateThreadingID(ctx.clientID),
60
- manual_retry_cnt: "0",
61
- thread_fbid: threadIDStr,
62
- thread_name: titleStr,
63
- thread_id: threadIDStr,
64
- log_message_type: "log:thread-name",
65
- };
66
-
67
- defaultFuncs
68
- .post(
69
- "https://www.facebook.com/messaging/set_thread_name/",
70
- ctx.jar,
71
- form,
72
- )
73
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
74
- .then(function (resData) {
75
- if (!resData) {
76
- throw { error: "setTitle returned empty response." };
77
- }
78
-
79
- if (resData.error && resData.error === 1545012) {
80
- throw { error: "Cannot change chat title: Not member of chat." };
81
- }
82
-
83
- if (resData.error && resData.error === 1545003) {
84
- throw { error: "Cannot set title of single-user chat." };
85
- }
86
-
87
- if (resData.error) {
88
- throw resData;
89
- }
90
-
91
- return callback(null);
92
- })
93
- .catch(function (err) {
94
- utils.error("setTitle", err);
95
- return callback(err);
96
- });
97
-
98
- return returnPromise;
99
- };
100
- };
@@ -1,101 +0,0 @@
1
- "use strict";
2
-
3
- var utils = require("../utils");
4
-
5
- module.exports = function(defaultFuncs, api, ctx) {
6
- return function shareContact(text, senderID, threadID, callback) {
7
- var resolveFunc = function () {};
8
- var rejectFunc = function () {};
9
- const returnPromise = new Promise(function (resolve, reject) {
10
- resolveFunc = resolve;
11
- rejectFunc = reject;
12
- });
13
-
14
- if (!callback) {
15
- callback = function (err, data) {
16
- if (err) {
17
- return rejectFunc(err);
18
- }
19
- resolveFunc(data);
20
- };
21
- }
22
-
23
- if (!ctx.mqttClient) {
24
- return callback(new Error('Not connected to MQTT'));
25
- }
26
-
27
- if (!senderID || !threadID) {
28
- return callback({ error: "senderID and threadID are required." });
29
- }
30
-
31
- // safe initialization of request counters
32
- if (ctx.wsReqNumber === undefined || ctx.wsReqNumber === null) {
33
- ctx.wsReqNumber = 0;
34
- }
35
- if (ctx.wsTaskNumber === undefined || ctx.wsTaskNumber === null) {
36
- ctx.wsTaskNumber = 0;
37
- }
38
-
39
- ctx.wsReqNumber += 1;
40
- ctx.wsTaskNumber += 1;
41
-
42
- const queryPayload = {
43
- contact_id: senderID.toString(),
44
- sync_group: 1,
45
- text: text || "",
46
- thread_id: threadID.toString()
47
- };
48
-
49
- const query = {
50
- failure_count: null,
51
- label: '359',
52
- payload: JSON.stringify(queryPayload),
53
- queue_name: 'messenger_contact_sharing', // xma_open_contact_share
54
- task_id: Math.floor(Math.random() * 1001),
55
- };
56
-
57
- const context = {
58
- app_id: '2220391788200892',
59
- payload: {
60
- tasks: [query],
61
- epoch_id: parseInt(utils.generateOfflineThreadingID()),
62
- version_id: '7214102258676893',
63
- },
64
- request_id: ctx.wsReqNumber,
65
- type: 3,
66
- };
67
-
68
- context.payload = JSON.stringify(context.payload);
69
-
70
- // safe callback mapping to prevent crashes
71
- if (typeof callback === 'function') {
72
- if (!ctx.callback_Task) {
73
- ctx.callback_Task = {};
74
- }
75
- ctx.callback_Task[ctx.wsReqNumber] = { callback, type: "shareContact" };
76
-
77
- // also fallback to reqCallbacks if your bot utilizes it
78
- if (ctx.reqCallbacks) {
79
- ctx.reqCallbacks[ctx.wsReqNumber] = callback;
80
- }
81
- }
82
-
83
- ctx.mqttClient.publish(
84
- '/ls_req',
85
- JSON.stringify(context),
86
- { qos: 1, retain: false },
87
- function (err, data) {
88
- if (err) {
89
- utils.error("shareContact", err);
90
- return callback(err);
91
- }
92
- // If not using callback listeners in state, trigger immediately
93
- if (!ctx.callback_Task && !ctx.reqCallbacks) {
94
- callback(null, data);
95
- }
96
- }
97
- );
98
-
99
- return returnPromise;
100
- };
101
- };
package/src/shareLink.js DELETED
@@ -1,105 +0,0 @@
1
- "use strict";
2
-
3
- var utils = require("../utils");
4
-
5
- module.exports = function (defaultFuncs, api, ctx) {
6
- return async function shareLink(text, url, threadID, callback) {
7
- var resolveFunc = function () {};
8
- var rejectFunc = function () {};
9
- var returnPromise = new Promise(function (resolve, reject) {
10
- resolveFunc = resolve;
11
- rejectFunc = reject;
12
- });
13
-
14
- if (!callback) {
15
- callback = function (err, data) {
16
- if (err) return rejectFunc(err);
17
- resolveFunc(data);
18
- };
19
- }
20
-
21
- if (!ctx.mqttClient) {
22
- return callback({ error: "Not connected to MQTT" });
23
- }
24
-
25
- if (!threadID) {
26
- return callback({ error: "ThreadID is required." });
27
- }
28
-
29
- if (!url) {
30
- return callback({ error: "URL is required." });
31
- }
32
-
33
- // safe initialization of request counters
34
- if (ctx.req_ID === undefined || ctx.req_ID === null) {
35
- ctx.req_ID = 0;
36
- }
37
- if (!ctx.callback_Task) {
38
- ctx.callback_Task = {};
39
- }
40
-
41
- const currentReqID = ++ctx.req_ID;
42
- const threadIDStr = threadID.toString();
43
-
44
- const payload = {
45
- "app_id": "2220391788200892",
46
- "payload": JSON.stringify({
47
- tasks: [{
48
- label: 46,
49
- payload: JSON.stringify({
50
- "otid": utils.generateOfflineThreadingID(),
51
- "source": 524289,
52
- "sync_group": 1,
53
- "send_type": 6,
54
- "mark_thread_read": 0,
55
- "url": url,
56
- "text": text || "",
57
- "thread_id": threadIDStr,
58
- "initiating_source": 0
59
- }),
60
- queue_name: threadIDStr,
61
- task_id: Math.floor(Math.random() * 1001),
62
- failure_count: null,
63
- }],
64
- epoch_id: parseInt(utils.generateOfflineThreadingID()),
65
- version_id: '7191105584331330',
66
- }),
67
- "request_id": currentReqID,
68
- "type": 3
69
- };
70
-
71
- ctx.callback_Task[currentReqID] = {
72
- callback,
73
- type: "shareLink"
74
- };
75
-
76
- // fallback trigger to reqCallbacks if used by the library
77
- if (ctx.reqCallbacks) {
78
- ctx.reqCallbacks[currentReqID] = callback;
79
- }
80
-
81
- ctx.mqttClient.publish(
82
- '/ls_req',
83
- JSON.stringify(payload),
84
- {
85
- qos: 1,
86
- retain: false,
87
- },
88
- function (err, data) {
89
- if (err) {
90
- utils.error("shareLink", err);
91
- // clean up callback store on error
92
- delete ctx.callback_Task[currentReqID];
93
- if (ctx.reqCallbacks) delete ctx.reqCallbacks[currentReqID];
94
- return callback(err);
95
- }
96
- // if there is no global listener, execute immediately on success
97
- if (!ctx.reqCallbacks && ctx.callback_Task[currentReqID]) {
98
- callback(null, data);
99
- }
100
- }
101
- );
102
-
103
- return returnPromise;
104
- };
105
- };
@@ -1,47 +0,0 @@
1
- "use strict";
2
-
3
- var utils = require("../utils");
4
-
5
- module.exports = function (defaultFuncs, api, ctx) {
6
- return function stopListenMqtt(callback) {
7
- var resolveFunc = function () {};
8
- var rejectFunc = function () {};
9
- const returnPromise = new Promise(function (resolve, reject) {
10
- resolveFunc = resolve;
11
- rejectFunc = reject;
12
- });
13
-
14
- if (!callback) {
15
- callback = function (err, data) {
16
- if (err) {
17
- return rejectFunc(err);
18
- }
19
- resolveFunc(data);
20
- };
21
- }
22
-
23
- if (!ctx.mqttClient) {
24
- return callback(new Error("Not connected to MQTT"));
25
- }
26
-
27
- utils.log("stopListenMqtt", "Stopping...");
28
-
29
- try {
30
- ctx.mqttClient.unsubscribe("/webrtc");
31
- ctx.mqttClient.unsubscribe("/rtc_multi");
32
- ctx.mqttClient.unsubscribe("/onevc");
33
- ctx.mqttClient.publish("/browser_close", "{}");
34
-
35
- ctx.mqttClient.end(false, function (...data) {
36
- utils.log("stopListenMqtt", "Stopped");
37
- ctx.mqttClient = null;
38
- return callback(null, data);
39
- });
40
- } catch (err) {
41
- utils.error("stopListenMqtt", err);
42
- return callback(err);
43
- }
44
-
45
- return returnPromise;
46
- };
47
- };
@@ -1,119 +0,0 @@
1
- "use strict";
2
-
3
- module.exports = function (_defaultFuncs, _api, _ctx) {
4
- const themes = {
5
- // #region Backward compatibility mapping
6
- MessengerBlue: "196241301102133", // DefaultBlue
7
- Viking: "1928399724138152", // TealBlue
8
- GoldenPoppy: "174636906462322", // Yellow
9
- RadicalRed: "2129984390566328", // Red
10
- Shocking: "2058653964378557", // LavenderPurple
11
- FreeSpeechGreen: "2136751179887052", // Green
12
- Pumpkin: "175615189761153", // Orange
13
- LightCoral: "980963458735625", // CoralPink
14
- MediumSlateBlue: "234137870477637", // BrightPurple
15
- DeepSkyBlue: "2442142322678320", // AquaBlue
16
- BrilliantRose: "169463077092846", // HotPink
17
- // #endregion
18
-
19
- DefaultBlue: "196241301102133",
20
- HotPink: "169463077092846",
21
- AquaBlue: "2442142322678320",
22
- BrightPurple: "234137870477637",
23
- CoralPink: "980963458735625",
24
- Orange: "175615189761153",
25
- Green: "2136751179887052",
26
- LavenderPurple: "2058653964378557",
27
- Red: "2129984390566328",
28
- Yellow: "174636906462322",
29
- TealBlue: "1928399724138152",
30
- Aqua: "417639218648241",
31
- Mango: "930060997172551",
32
- Berry: "164535220883264",
33
- Citrus: "370940413392601",
34
- Candy: "205488546921017",
35
-
36
- Earth: "1833559466821043",
37
- Support: "365557122117011",
38
- Music: "339021464972092",
39
- Pride: "1652456634878319",
40
- DoctorStrange: "538280997628317",
41
- LoFi: "1060619084701625",
42
- Sky: "3190514984517598",
43
- LunarNewYear: "357833546030778",
44
- Celebration: "627144732056021",
45
- Chill: "390127158985345",
46
- StrangerThings: "1059859811490132",
47
- Dune: "1455149831518874",
48
- Care: "275041734441112",
49
- Astrology: "3082966625307060",
50
- JBalvin: "184305226956268",
51
- Birthday: "621630955405500",
52
- Cottagecore: "539927563794799",
53
- Ocean: "736591620215564",
54
- Love: "741311439775765",
55
- TieDye: "230032715012014",
56
- Monochrome: "788274591712841",
57
- Default: "3259963564026002",
58
- Rocket: "582065306070020",
59
- Berry2: "724096885023603",
60
- Candy2: "624266884847972",
61
- Unicorn: "273728810607574",
62
- Tropical: "262191918210707",
63
- Maple: "2533652183614000",
64
- Sushi: "909695489504566",
65
- Citrus2: "557344741607350",
66
- Lollipop: "280333826736184",
67
- Shadow: "271607034185782",
68
- Rose: "1257453361255152",
69
- Lavender: "571193503540759",
70
- Tulip: "2873642949430623",
71
- Classic: "3273938616164733",
72
- Peach: "3022526817824329",
73
- Honey: "672058580051520",
74
- Kiwi: "3151463484918004",
75
- Grape: "193497045377796",
76
-
77
- NonBinary: "737761000603635",
78
-
79
- ThankfulForFriends: "1318983195536293",
80
- Transgender: "504518465021637",
81
- TaylorSwift: "769129927636836",
82
- NationalComingOutDay: "788102625833584",
83
- Autumn: "822549609168155",
84
- Cyberpunk2077: "780962576430091",
85
-
86
- MothersDay: "1288506208402340",
87
- APAHM: "121771470870245",
88
- Parenthood: "810978360551741",
89
- StarWars: "1438011086532622",
90
- GuardianOfTheGalaxy: "101275642962533",
91
- Bloom: "158263147151440",
92
- BubbleTea: "195296273246380",
93
- Basketball: "6026716157422736",
94
- ElephantsAndFlowers: "693996545771691"
95
- };
96
-
97
- // কেস-ইনসেনসিটিভ সার্চ বা ফলব্যাকের সুবিধাসহ অবজেক্টটি রিটার্ন করা হচ্ছে
98
- const themeMap = { ...themes };
99
-
100
- // ডাইনামিকালি আইডি বের করার একটি হেল্পার মেথড
101
- themeMap.getThemeID = function (name) {
102
- if (!name) return themes.DefaultBlue;
103
- const searchName = name.toString().toLowerCase().replace(/\s+/g, "");
104
-
105
- // থিমের অবজেক্ট থেকে মিলিয়ে দেখা হচ্ছে
106
- for (const key of Object.keys(themes)) {
107
- if (key.toLowerCase() === searchName) {
108
- return themes[key];
109
- }
110
- }
111
- // যদি আইডি সরাসরি পাস করা হয়, সেটিই ফেরত যাবে
112
- if (/^\d+$/.test(name)) {
113
- return name.toString();
114
- }
115
- return themes.DefaultBlue;
116
- };
117
-
118
- return themeMap;
119
- };
package/src/unfriend.js DELETED
@@ -1,58 +0,0 @@
1
- "use strict";
2
-
3
- var utils = require("../utils");
4
-
5
- module.exports = function(defaultFuncs, api, ctx) {
6
- return function unFriend(userID, callback) {
7
- var resolveFunc = function(){};
8
- var rejectFunc = function(){};
9
- var returnPromise = new Promise(function (resolve, reject) {
10
- resolveFunc = resolve;
11
- rejectFunc = reject;
12
- });
13
-
14
- if (!callback) {
15
- callback = function (err, data) {
16
- if (err) {
17
- return rejectFunc(err);
18
- }
19
- resolveFunc(data);
20
- };
21
- }
22
-
23
- if (!userID) {
24
- return callback({ error: "unFriend: userID is required." });
25
- }
26
-
27
- var form = {
28
- uid: userID.toString(),
29
- unref: "bd_friends_tab",
30
- floc: "friends_tab",
31
- "nctr[_mod]": "pagelet_timeline_app_collection_" + ctx.userID + ":2356318349:2"
32
- };
33
-
34
- defaultFuncs
35
- .post(
36
- "https://www.facebook.com/ajax/profile/removefriendconfirm.php",
37
- ctx.jar,
38
- form
39
- )
40
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
41
- .then(function(resData) {
42
- if (!resData) {
43
- throw { error: "unFriend returned empty response." };
44
- }
45
- if (resData.error) {
46
- throw resData;
47
- }
48
-
49
- return callback(null, resData);
50
- })
51
- .catch(function(err) {
52
- utils.error("unFriend", err);
53
- return callback(err);
54
- });
55
-
56
- return returnPromise;
57
- };
58
- };