@cexy/hoonfca 1.0.0 → 1.0.2

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 (98) hide show
  1. package/.travis.yml +6 -0
  2. package/LICENSE-MIT +21 -0
  3. package/index.d.ts +620 -0
  4. package/index.js +745 -433
  5. package/package.json +45 -6
  6. package/src/addExternalModule.js +14 -16
  7. package/src/addUserToGroup.js +45 -30
  8. package/src/changeAdminStatus.js +39 -42
  9. package/src/changeApprovalMode.js +79 -0
  10. package/src/changeArchivedStatus.js +19 -15
  11. package/src/changeBio.js +18 -16
  12. package/src/changeBlockedStatus.js +14 -12
  13. package/src/changeBlockedStatusMqtt.js +38 -17
  14. package/src/changeGroupImage.js +100 -77
  15. package/src/changeNickname.js +12 -11
  16. package/src/changeThreadColor.js +25 -16
  17. package/src/changeThreadEmoji.js +11 -10
  18. package/src/createNewGroup.js +21 -14
  19. package/src/createPoll.js +87 -21
  20. package/src/deleteMessage.js +18 -17
  21. package/src/deleteThread.js +18 -17
  22. package/src/editMessage.js +28 -31
  23. package/src/forwardAttachment.js +22 -19
  24. package/src/forwardMessage.js +63 -0
  25. package/src/getCurrentUserID.js +4 -2
  26. package/src/getEmojiUrl.js +20 -9
  27. package/src/getFriendsList.js +21 -18
  28. package/src/getGroupsList.js +83 -0
  29. package/src/getMarketplace.js +84 -0
  30. package/src/getNotifications.js +86 -0
  31. package/src/getPagesList.js +83 -0
  32. package/src/getStories.js +88 -0
  33. package/src/getThreadHistory.js +277 -126
  34. package/src/getThreadInfo.js +143 -115
  35. package/src/getThreadList.js +216 -143
  36. package/src/getThreadPictures.js +26 -32
  37. package/src/getUserID.js +13 -14
  38. package/src/getUserInfo.js +107 -68
  39. package/src/handleFriendRequest.js +16 -15
  40. package/src/handleMessageRequest.js +15 -15
  41. package/src/httpGet.js +36 -31
  42. package/src/httpPost.js +36 -31
  43. package/src/listenMqtt.js +705 -370
  44. package/src/logout.js +26 -28
  45. package/src/markAsDelivered.js +22 -17
  46. package/src/markAsRead.js +63 -49
  47. package/src/markAsReadAll.js +17 -13
  48. package/src/markAsSeen.js +23 -19
  49. package/src/muteThread.js +17 -14
  50. package/src/pinMessage.js +23 -22
  51. package/src/removeUserFromGroup.js +42 -22
  52. package/src/resolvePhotoUrl.js +15 -17
  53. package/src/searchForThread.js +18 -20
  54. package/src/searchUsers.js +89 -0
  55. package/src/sendComment.js +161 -0
  56. package/src/sendMessage.js +65 -52
  57. package/src/sendTypingIndicator.js +173 -48
  58. package/src/setBio.js +86 -0
  59. package/src/setMessageReaction.js +76 -16
  60. package/src/setPostReaction.js +29 -61
  61. package/src/setTheme.js +313 -0
  62. package/src/setTitle.js +27 -37
  63. package/src/shareContact.js +34 -82
  64. package/src/shareLink.js +56 -99
  65. package/src/threadColors.js +35 -97
  66. package/src/unfriend.js +15 -20
  67. package/src/unsendMessage.js +71 -18
  68. package/utils.js +1000 -472
  69. package/README.md +0 -83
  70. package/replit.nix +0 -3
  71. package/src/changeAvatar.js +0 -89
  72. package/src/changeCover.js +0 -92
  73. package/src/changeName.js +0 -106
  74. package/src/changeUsername.js +0 -80
  75. package/src/createCommentPost.js +0 -196
  76. package/src/createPost.js +0 -285
  77. package/src/data/getThreadInfo.json +0 -1
  78. package/src/follow.js +0 -71
  79. package/src/getAccess.js +0 -130
  80. package/src/getAvatarUser.js +0 -88
  81. package/src/getBotInitialData.js +0 -59
  82. package/src/getCtx.js +0 -5
  83. package/src/getMessage.js +0 -827
  84. package/src/getOptions.js +0 -5
  85. package/src/getRegion.js +0 -7
  86. package/src/getThreadHistoryDeprecated.js +0 -95
  87. package/src/getThreadInfoDeprecated.js +0 -77
  88. package/src/getThreadListDeprecated.js +0 -86
  89. package/src/httpPostFormData.js +0 -58
  90. package/src/listenNotification.js +0 -96
  91. package/src/refreshFb_dtsg.js +0 -75
  92. package/src/searchStickers.js +0 -59
  93. package/src/sendMessageMqtt.js +0 -326
  94. package/src/setMessageReactionMqtt.js +0 -74
  95. package/src/setProfileGuard.js +0 -66
  96. package/src/setStoryReaction.js +0 -97
  97. package/src/stopListenMqtt.js +0 -47
  98. package/src/uploadAttachment.js +0 -98
@@ -1,89 +1,128 @@
1
1
  "use strict";
2
2
 
3
- const utils = require("../utils");
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
4
5
 
5
- module.exports = (defaultFuncs, api, ctx) => {
6
- return (id, callback) => {
7
- let resolveFunc = () => {};
8
- let rejectFunc = () => {};
9
- const returnPromise = new Promise((resolve, reject) => {
6
+ function formatData(ctx, data) {
7
+ var retObj = {};
8
+
9
+ for (var prop in data) {
10
+ // eslint-disable-next-line no-prototype-builtins
11
+ if (data.hasOwnProperty(prop)) {
12
+ var innerObj = data[prop];
13
+ let udata = {
14
+ _id: prop,
15
+ name: innerObj.name,
16
+ firstName: innerObj.firstName,
17
+ vanity: innerObj.vanity,
18
+ thumbSrc: innerObj.thumbSrc,
19
+ profileUrl: innerObj.uri,
20
+ gender: innerObj.gender,
21
+ type: innerObj.type,
22
+ isFriend: innerObj.is_friend,
23
+ isBirthday: !!innerObj.is_birthday,
24
+ };
25
+ utils.usersCache.addOne(udata);
26
+ setInterval(
27
+ () => utils.usersCache.deleteOneUsingId(`${prop}`),
28
+ ctx.globalOptions.cacheTime,
29
+ );
30
+ retObj[prop] = udata;
31
+ }
32
+ }
33
+
34
+ return retObj;
35
+ }
36
+
37
+ module.exports = function (defaultFuncs, api, ctx) {
38
+ return function getUserInfo(id, callback, no_cache) {
39
+ if (utils.getType(id) !== "Array") {
40
+ id = [id];
41
+ }
42
+
43
+ var resolveFunc = function () {};
44
+ var rejectFunc = function () {};
45
+ var returnPromise = new Promise(function (resolve, reject) {
10
46
  resolveFunc = resolve;
11
47
  rejectFunc = reject;
12
48
  });
13
49
 
14
- if (!callback) {
15
- callback = (err, data) => {
50
+ if (!no_cache && typeof callback == "boolean") no_cache = callback;
51
+ if (!callback || (callback && typeof callback != "function")) {
52
+ callback = function (err, friendList) {
16
53
  if (err) {
17
54
  return rejectFunc(err);
18
55
  }
19
- resolveFunc(data);
56
+ resolveFunc(friendList);
20
57
  };
21
58
  }
22
59
 
23
- if (utils.getType(id) !== "Array") {
24
- id = [id];
25
- }
60
+ if (!no_cache) {
61
+ let dataCache = [];
62
+ let noCache = [];
26
63
 
27
- const form = {};
28
- // বাগ ফিক্স: .map() এর পরিবর্তে standard .forEach() ব্যবহার করা হলো
29
- id.forEach((v, i) => {
30
- form[`ids[${i}]`] = v;
31
- });
64
+ for (let uid of id) {
65
+ const cache = utils.usersCache.findOneById(`${uid}`);
66
+ if (!cache) {
67
+ noCache.push(uid);
68
+ continue;
69
+ }
70
+ dataCache.push(cache);
71
+ }
32
72
 
33
- defaultFuncs
34
- .post("https://www.facebook.com/chat/user_info/", ctx.jar, form)
35
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
36
- .then(resData => {
37
- if (resData?.error && resData?.error !== 3252001) throw resData;
38
-
39
- const retObj = {};
40
- const profiles = resData?.payload?.profiles;
41
-
42
- if (profiles) {
43
- for (const prop in profiles) {
44
- // eslint-disable-next-line no-prototype-builtins
45
- if (Object.prototype.hasOwnProperty.call(profiles, prop)) {
46
- const innerObj = profiles[prop];
47
- retObj[prop] = {
48
- name: innerObj.name,
49
- firstName: innerObj.firstName,
50
- vanity: innerObj.vanity,
51
- thumbSrc: innerObj.thumbSrc,
52
- profileUrl: innerObj.uri,
53
- gender: innerObj.gender,
54
- type: innerObj.type,
55
- isFriend: innerObj.is_friend,
56
- isBirthday: !!innerObj.is_birthday,
57
- searchTokens: innerObj.searchTokens,
58
- alternateName: innerObj.alternateName
59
- };
73
+ if (noCache.length != 0) {
74
+ var form = {};
75
+ noCache.map(function (v, i) {
76
+ form["ids[" + i + "]"] = v;
77
+ });
78
+ defaultFuncs
79
+ .post("https://www.facebook.com/chat/user_info/", ctx.jar, form)
80
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
81
+ .then(function (resData) {
82
+ if (resData.error) {
83
+ throw resData;
60
84
  }
61
- }
62
- } else {
63
- // কোনো কারণে ডাটা না পাওয়া গেলে ফলব্যাক প্রোফাইল জেনারেট করা হচ্ছে
64
- for (const prop of id) {
65
- retObj[prop] = {
66
- name: "Facebook User",
67
- firstName: "Facebook",
68
- vanity: prop,
69
- thumbSrc: "https://i.imgur.com/xPiHPW9.jpeg",
70
- profileUrl: `https://www.facebook.com/profile.php?id=${prop}`,
71
- gender: 0,
72
- type: "user",
73
- isFriend: false,
74
- isBirthday: false,
75
- searchTokens: ["User", "Facebook"],
76
- alternateName: ""
77
- };
78
- }
85
+ let data = formatData(ctx, resData.payload.profiles);
86
+ for (let cdata of dataCache) {
87
+ data[cdata._id] = cdata;
88
+ }
89
+ return callback(null, data);
90
+ })
91
+ .catch(function (err) {
92
+ log.error("getUserInfo", err);
93
+ return callback(err);
94
+ });
95
+
96
+ return returnPromise;
97
+ } else {
98
+ let data = {};
99
+ for (let cdata of dataCache) {
100
+ data[cdata._id] = cdata;
79
101
  }
80
- return callback(null, retObj);
81
- })
82
- .catch(err => {
83
- utils.error("getUserInfo", err);
84
- return callback(err);
102
+ callback(null, data);
103
+ return returnPromise;
104
+ }
105
+ } else {
106
+ var form = {};
107
+ id.map(function (v, i) {
108
+ form["ids[" + i + "]"] = v;
85
109
  });
110
+ console.log(form);
111
+ defaultFuncs
112
+ .post("https://www.facebook.com/chat/user_info/", ctx.jar, form)
113
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
114
+ .then(function (resData) {
115
+ if (resData.error) {
116
+ throw resData;
117
+ }
118
+ return callback(null, formatData(resData.payload.profiles));
119
+ })
120
+ .catch(function (err) {
121
+ log.error("getUserInfo", err);
122
+ return callback(err);
123
+ });
86
124
 
87
- return returnPromise;
125
+ return returnPromise;
126
+ }
88
127
  };
89
128
  };
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
- const utils = require("../utils");
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
4
5
 
5
6
  module.exports = function (defaultFuncs, api, ctx) {
6
7
  return function handleFriendRequest(userID, accept, callback) {
@@ -10,23 +11,23 @@ module.exports = function (defaultFuncs, api, ctx) {
10
11
  };
11
12
  }
12
13
 
13
- let resolveFunc = () => {};
14
- let rejectFunc = () => {};
15
- const returnPromise = new Promise((resolve, reject) => {
14
+ var resolveFunc = function () {};
15
+ var rejectFunc = function () {};
16
+ var returnPromise = new Promise(function (resolve, reject) {
16
17
  resolveFunc = resolve;
17
18
  rejectFunc = reject;
18
19
  });
19
20
 
20
21
  if (!callback) {
21
- callback = (err, data) => {
22
+ callback = function (err, friendList) {
22
23
  if (err) {
23
24
  return rejectFunc(err);
24
25
  }
25
- resolveFunc(data);
26
+ resolveFunc(friendList);
26
27
  };
27
28
  }
28
29
 
29
- const form = {
30
+ var form = {
30
31
  viewer_id: ctx.userID,
31
32
  "frefs[0]": "jwl",
32
33
  floc: "friend_center_requests",
@@ -37,17 +38,17 @@ module.exports = function (defaultFuncs, api, ctx) {
37
38
  defaultFuncs
38
39
  .post("https://www.facebook.com/requests/friends/ajax/", ctx.jar, form)
39
40
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
40
- .then(resData => {
41
- // এরর চেকিং ফিক্স করা হলো (error এবং err দুটোই কভার করা হয়েছে)
42
- const error = resData?.error || resData?.err;
43
- if (error) {
44
- throw { error };
41
+ .then(function (resData) {
42
+ if (resData.payload.err) {
43
+ throw {
44
+ err: resData.payload.err,
45
+ };
45
46
  }
46
47
 
47
- return callback(null, true);
48
+ return callback();
48
49
  })
49
- .catch(err => {
50
- utils.error("handleFriendRequest", err);
50
+ .catch(function (err) {
51
+ log.error("handleFriendRequest", err);
51
52
  return callback(err);
52
53
  });
53
54
 
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
- const utils = require("../utils");
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
4
5
 
5
6
  module.exports = function (defaultFuncs, api, ctx) {
6
7
  return function handleMessageRequest(threadID, accept, callback) {
@@ -10,15 +11,15 @@ module.exports = function (defaultFuncs, api, ctx) {
10
11
  };
11
12
  }
12
13
 
13
- let resolveFunc = () => {};
14
- let rejectFunc = () => {};
15
- const returnPromise = new Promise((resolve, reject) => {
14
+ var resolveFunc = function () {};
15
+ var rejectFunc = function () {};
16
+ var returnPromise = new Promise(function (resolve, reject) {
16
17
  resolveFunc = resolve;
17
18
  rejectFunc = reject;
18
19
  });
19
20
 
20
21
  if (!callback) {
21
- callback = (err, friendList) => {
22
+ callback = function (err, friendList) {
22
23
  if (err) {
23
24
  return rejectFunc(err);
24
25
  }
@@ -26,7 +27,7 @@ module.exports = function (defaultFuncs, api, ctx) {
26
27
  };
27
28
  }
28
29
 
29
- const form = {
30
+ var form = {
30
31
  client: "mercury",
31
32
  };
32
33
 
@@ -34,12 +35,11 @@ module.exports = function (defaultFuncs, api, ctx) {
34
35
  threadID = [threadID];
35
36
  }
36
37
 
37
- const messageBox = accept ? "inbox" : "other";
38
+ var messageBox = accept ? "inbox" : "other";
38
39
 
39
- // ওল্ড-স্কুল for লুপের জায়গায় মডার্ন forEach ব্যবহার করা হলো
40
- threadID.forEach((id, index) => {
41
- form[`${messageBox}[${index}]`] = id;
42
- });
40
+ for (var i = 0; i < threadID.length; i++) {
41
+ form[messageBox + "[" + i + "]"] = threadID[i];
42
+ }
43
43
 
44
44
  defaultFuncs
45
45
  .post(
@@ -48,15 +48,15 @@ module.exports = function (defaultFuncs, api, ctx) {
48
48
  form,
49
49
  )
50
50
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
51
- .then(resData => {
51
+ .then(function (resData) {
52
52
  if (resData.error) {
53
53
  throw resData;
54
54
  }
55
55
 
56
- return callback(null, true);
56
+ return callback();
57
57
  })
58
- .catch(err => {
59
- utils.error("handleMessageRequest", err);
58
+ .catch(function (err) {
59
+ log.error("handleMessageRequest", err);
60
60
  return callback(err);
61
61
  });
62
62
 
package/src/httpGet.js CHANGED
@@ -1,52 +1,57 @@
1
1
  "use strict";
2
2
 
3
- const utils = require("../utils");
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
4
5
 
5
6
  module.exports = function (defaultFuncs, api, ctx) {
6
- return function httpGet(url, form, customHeader, callback, notAPI) {
7
- let resolveFunc = () => {};
8
- let rejectFunc = () => {};
7
+ return function httpGet(url, form, callback, notAPI) {
8
+ var resolveFunc = function () {};
9
+ var rejectFunc = function () {};
9
10
 
10
- const returnPromise = new Promise((resolve, reject) => {
11
+ var returnPromise = new Promise(function (resolve, reject) {
11
12
  resolveFunc = resolve;
12
13
  rejectFunc = reject;
13
14
  });
14
15
 
15
- // আর্গুমেন্ট শিফটিং লজিক অপ্টিমাইজেশন
16
- const formType = utils.getType(form);
17
- if (formType === "Function" || formType === "AsyncFunction") {
16
+ if (
17
+ !callback &&
18
+ (utils.getType(form) == "Function" ||
19
+ utils.getType(form) == "AsyncFunction")
20
+ ) {
18
21
  callback = form;
19
22
  form = {};
20
23
  }
21
24
 
22
- const headerType = utils.getType(customHeader);
23
- if (headerType === "Function" || headerType === "AsyncFunction") {
24
- callback = customHeader;
25
- customHeader = {};
26
- }
27
-
28
- customHeader = customHeader || {};
25
+ form = form || {};
29
26
 
30
- if (!callback) {
31
- callback = (err, data) => {
27
+ callback =
28
+ callback ||
29
+ function (err, data) {
32
30
  if (err) return rejectFunc(err);
33
31
  resolveFunc(data);
34
32
  };
35
- }
36
33
 
37
- // রিকোয়েস্ট মেথড ডিসিশন (API নাকি সাধারণ GET রিকোয়েস্ট)
38
- const requestPromise = notAPI
39
- ? utils.get(url, ctx.jar, form, ctx.globalOptions, ctx, customHeader)
40
- : defaultFuncs.get(url, ctx.jar, form, null, customHeader);
41
-
42
- requestPromise
43
- .then(resData => {
44
- callback(null, resData.body.toString());
45
- })
46
- .catch(err => {
47
- utils.error("httpGet", err);
48
- return callback(err);
49
- });
34
+ if (notAPI) {
35
+ utils
36
+ .get(url, ctx.jar, form, ctx.globalOptions)
37
+ .then(function (resData) {
38
+ callback(null, resData.body.toString());
39
+ })
40
+ .catch(function (err) {
41
+ log.error("httpGet", err);
42
+ return callback(err);
43
+ });
44
+ } else {
45
+ defaultFuncs
46
+ .get(url, ctx.jar, form)
47
+ .then(function (resData) {
48
+ callback(null, resData.body.toString());
49
+ })
50
+ .catch(function (err) {
51
+ log.error("httpGet", err);
52
+ return callback(err);
53
+ });
54
+ }
50
55
 
51
56
  return returnPromise;
52
57
  };
package/src/httpPost.js CHANGED
@@ -1,52 +1,57 @@
1
1
  "use strict";
2
2
 
3
- const utils = require("../utils");
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
4
5
 
5
6
  module.exports = function (defaultFuncs, api, ctx) {
6
- return function httpPost(url, form, customHeader, callback, notAPI) {
7
- let resolveFunc = () => {};
8
- let rejectFunc = () => {};
7
+ return function httpGet(url, form, callback, notAPI) {
8
+ var resolveFunc = function () {};
9
+ var rejectFunc = function () {};
9
10
 
10
- const returnPromise = new Promise((resolve, reject) => {
11
+ var returnPromise = new Promise(function (resolve, reject) {
11
12
  resolveFunc = resolve;
12
13
  rejectFunc = reject;
13
14
  });
14
15
 
15
- // আর্গুমেন্ট শিফটিং লজিক অপ্টিমাইজেশন
16
- const formType = utils.getType(form);
17
- if (formType === "Function" || formType === "AsyncFunction") {
16
+ if (
17
+ !callback &&
18
+ (utils.getType(form) == "Function" ||
19
+ utils.getType(form) == "AsyncFunction")
20
+ ) {
18
21
  callback = form;
19
22
  form = {};
20
23
  }
21
24
 
22
- const headerType = utils.getType(customHeader);
23
- if (headerType === "Function" || headerType === "AsyncFunction") {
24
- callback = customHeader;
25
- customHeader = {};
26
- }
27
-
28
- customHeader = customHeader || {};
25
+ form = form || {};
29
26
 
30
- if (!callback) {
31
- callback = (err, data) => {
27
+ callback =
28
+ callback ||
29
+ function (err, data) {
32
30
  if (err) return rejectFunc(err);
33
31
  resolveFunc(data);
34
32
  };
35
- }
36
33
 
37
- // রিকোয়েস্ট মেথড ডিসিশন (API নাকি সাধারণ POST রিকোয়েস্ট)
38
- const requestPromise = notAPI
39
- ? utils.post(url, ctx.jar, form, ctx.globalOptions, ctx, customHeader)
40
- : defaultFuncs.post(url, ctx.jar, form, {}, customHeader);
41
-
42
- requestPromise
43
- .then(resData => {
44
- callback(null, resData.body.toString());
45
- })
46
- .catch(err => {
47
- utils.error("httpPost", err);
48
- return callback(err);
49
- });
34
+ if (notAPI) {
35
+ utils
36
+ .post(url, ctx.jar, form, ctx.globalOptions)
37
+ .then(function (resData) {
38
+ callback(null, resData.body.toString());
39
+ })
40
+ .catch(function (err) {
41
+ log.error("httpPost", err);
42
+ return callback(err);
43
+ });
44
+ } else {
45
+ defaultFuncs
46
+ .post(url, ctx.jar, form, {})
47
+ .then(function (resData) {
48
+ callback(null, resData.body.toString());
49
+ })
50
+ .catch(function (err) {
51
+ log.error("httpPost", err);
52
+ return callback(err);
53
+ });
54
+ }
50
55
 
51
56
  return returnPromise;
52
57
  };