@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
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
5
+
6
+ module.exports = function (defaultFuncs, api, ctx) {
7
+ /**
8
+ * Get list of groups user belongs to
9
+ * @param {number} limit - Number of groups to fetch
10
+ * @param {function} callback - Callback function
11
+ */
12
+ return function getGroupsList(limit, callback) {
13
+ var resolveFunc = function () {};
14
+ var rejectFunc = function () {};
15
+ var returnPromise = new Promise(function (resolve, reject) {
16
+ resolveFunc = resolve;
17
+ rejectFunc = reject;
18
+ });
19
+
20
+ if (!callback) {
21
+ if (utils.getType(limit) == "Function") {
22
+ callback = limit;
23
+ limit = 20;
24
+ } else {
25
+ callback = function (err, data) {
26
+ if (err) {
27
+ return rejectFunc(err);
28
+ }
29
+ resolveFunc(data);
30
+ };
31
+ }
32
+ }
33
+
34
+ if (utils.getType(limit) != "Number") {
35
+ limit = 20;
36
+ }
37
+
38
+ var form = {
39
+ av: ctx.userID,
40
+ fb_api_caller_class: "RelayModern",
41
+ fb_api_req_friendly_name: "GroupsListQuery",
42
+ doc_id: "7214102258676893",
43
+ variables: JSON.stringify({
44
+ first: limit,
45
+ }),
46
+ };
47
+
48
+ defaultFuncs
49
+ .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
50
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
51
+ .then(function (resData) {
52
+ if (resData.errors) {
53
+ throw resData;
54
+ }
55
+
56
+ var groups = [];
57
+ if (
58
+ resData.data &&
59
+ resData.data.viewer &&
60
+ resData.data.viewer.groups &&
61
+ resData.data.viewer.groups.edges
62
+ ) {
63
+ groups = resData.data.viewer.groups.edges.map(function (edge) {
64
+ return {
65
+ id: edge.node.id,
66
+ name: edge.node.name,
67
+ memberCount: edge.node.member_count,
68
+ url: edge.node.url,
69
+ };
70
+ });
71
+ }
72
+
73
+ log.info("getGroupsList", "Fetched " + groups.length + " groups");
74
+ return callback(null, groups);
75
+ })
76
+ .catch(function (err) {
77
+ log.error("getGroupsList", err);
78
+ return callback(err);
79
+ });
80
+
81
+ return returnPromise;
82
+ };
83
+ };
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
5
+
6
+ module.exports = function (defaultFuncs, api, ctx) {
7
+ /**
8
+ * Get marketplace listings
9
+ * @param {number} limit - Number of listings to fetch
10
+ * @param {function} callback - Callback function
11
+ */
12
+ return function getMarketplace(limit, callback) {
13
+ var resolveFunc = function () {};
14
+ var rejectFunc = function () {};
15
+ var returnPromise = new Promise(function (resolve, reject) {
16
+ resolveFunc = resolve;
17
+ rejectFunc = reject;
18
+ });
19
+
20
+ if (!callback) {
21
+ if (utils.getType(limit) == "Function") {
22
+ callback = limit;
23
+ limit = 20;
24
+ } else {
25
+ callback = function (err, data) {
26
+ if (err) {
27
+ return rejectFunc(err);
28
+ }
29
+ resolveFunc(data);
30
+ };
31
+ }
32
+ }
33
+
34
+ if (utils.getType(limit) != "Number") {
35
+ limit = 20;
36
+ }
37
+
38
+ var form = {
39
+ av: ctx.userID,
40
+ fb_api_caller_class: "RelayModern",
41
+ fb_api_req_friendly_name: "MarketplaceQuery",
42
+ doc_id: "25393437286970779",
43
+ variables: JSON.stringify({
44
+ first: limit,
45
+ }),
46
+ };
47
+
48
+ defaultFuncs
49
+ .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
50
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
51
+ .then(function (resData) {
52
+ if (resData.errors) {
53
+ throw resData;
54
+ }
55
+
56
+ var listings = [];
57
+ if (
58
+ resData.data &&
59
+ resData.data.marketplace &&
60
+ resData.data.marketplace.listings
61
+ ) {
62
+ listings = resData.data.marketplace.listings.map(function (item) {
63
+ return {
64
+ id: item.id,
65
+ title: item.title,
66
+ price: item.price,
67
+ location: item.location,
68
+ url: item.url,
69
+ imageUrl: item.image ? item.image.uri : null,
70
+ };
71
+ });
72
+ }
73
+
74
+ log.info("getMarketplace", "Fetched " + listings.length + " listings");
75
+ return callback(null, listings);
76
+ })
77
+ .catch(function (err) {
78
+ log.error("getMarketplace", err);
79
+ return callback(err);
80
+ });
81
+
82
+ return returnPromise;
83
+ };
84
+ };
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
5
+
6
+ module.exports = function (defaultFuncs, api, ctx) {
7
+ /**
8
+ * Get user notifications
9
+ * @param {number} limit - Number of notifications to fetch
10
+ * @param {function} callback - Callback function
11
+ */
12
+ return function getNotifications(limit, callback) {
13
+ var resolveFunc = function () {};
14
+ var rejectFunc = function () {};
15
+ var returnPromise = new Promise(function (resolve, reject) {
16
+ resolveFunc = resolve;
17
+ rejectFunc = reject;
18
+ });
19
+
20
+ if (!callback) {
21
+ if (utils.getType(limit) == "Function") {
22
+ callback = limit;
23
+ limit = 20;
24
+ } else {
25
+ callback = function (err, data) {
26
+ if (err) {
27
+ return rejectFunc(err);
28
+ }
29
+ resolveFunc(data);
30
+ };
31
+ }
32
+ }
33
+
34
+ if (utils.getType(limit) != "Number") {
35
+ limit = 20;
36
+ }
37
+
38
+ var form = {
39
+ av: ctx.userID,
40
+ fb_api_caller_class: "RelayModern",
41
+ fb_api_req_friendly_name: "NotificationsQuery",
42
+ doc_id: "24804310205905615",
43
+ variables: JSON.stringify({
44
+ first: limit,
45
+ }),
46
+ };
47
+
48
+ defaultFuncs
49
+ .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
50
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
51
+ .then(function (resData) {
52
+ if (resData.errors) {
53
+ throw resData;
54
+ }
55
+
56
+ var notifications = [];
57
+ if (
58
+ resData.data &&
59
+ resData.data.viewer &&
60
+ resData.data.viewer.notifications &&
61
+ resData.data.viewer.notifications.edges
62
+ ) {
63
+ notifications = resData.data.viewer.notifications.edges.map(
64
+ function (edge) {
65
+ return {
66
+ id: edge.node.id,
67
+ text: edge.node.body ? edge.node.body.text : "",
68
+ timestamp: edge.node.timestamp,
69
+ isRead: edge.node.is_read,
70
+ icon: edge.node.icon ? edge.node.icon.uri : null,
71
+ };
72
+ }
73
+ );
74
+ }
75
+
76
+ log.info("getNotifications", "Fetched " + notifications.length + " notifications");
77
+ return callback(null, notifications);
78
+ })
79
+ .catch(function (err) {
80
+ log.error("getNotifications", err);
81
+ return callback(err);
82
+ });
83
+
84
+ return returnPromise;
85
+ };
86
+ };
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
5
+
6
+ module.exports = function (defaultFuncs, api, ctx) {
7
+ /**
8
+ * Get list of pages user manages
9
+ * @param {number} limit - Number of pages to fetch
10
+ * @param {function} callback - Callback function
11
+ */
12
+ return function getPagesList(limit, callback) {
13
+ var resolveFunc = function () {};
14
+ var rejectFunc = function () {};
15
+ var returnPromise = new Promise(function (resolve, reject) {
16
+ resolveFunc = resolve;
17
+ rejectFunc = reject;
18
+ });
19
+
20
+ if (!callback) {
21
+ if (utils.getType(limit) == "Function") {
22
+ callback = limit;
23
+ limit = 20;
24
+ } else {
25
+ callback = function (err, data) {
26
+ if (err) {
27
+ return rejectFunc(err);
28
+ }
29
+ resolveFunc(data);
30
+ };
31
+ }
32
+ }
33
+
34
+ if (utils.getType(limit) != "Number") {
35
+ limit = 20;
36
+ }
37
+
38
+ var form = {
39
+ av: ctx.userID,
40
+ fb_api_caller_class: "RelayModern",
41
+ fb_api_req_friendly_name: "PagesListQuery",
42
+ doc_id: "25909428212080747",
43
+ variables: JSON.stringify({
44
+ first: limit,
45
+ }),
46
+ };
47
+
48
+ defaultFuncs
49
+ .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
50
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
51
+ .then(function (resData) {
52
+ if (resData.errors) {
53
+ throw resData;
54
+ }
55
+
56
+ var pages = [];
57
+ if (
58
+ resData.data &&
59
+ resData.data.viewer &&
60
+ resData.data.viewer.managed_pages &&
61
+ resData.data.viewer.managed_pages.edges
62
+ ) {
63
+ pages = resData.data.viewer.managed_pages.edges.map(function (edge) {
64
+ return {
65
+ id: edge.node.id,
66
+ name: edge.node.name,
67
+ url: edge.node.url,
68
+ fanCount: edge.node.fan_count,
69
+ };
70
+ });
71
+ }
72
+
73
+ log.info("getPagesList", "Fetched " + pages.length + " pages");
74
+ return callback(null, pages);
75
+ })
76
+ .catch(function (err) {
77
+ log.error("getPagesList", err);
78
+ return callback(err);
79
+ });
80
+
81
+ return returnPromise;
82
+ };
83
+ };
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
5
+
6
+ module.exports = function (defaultFuncs, api, ctx) {
7
+ /**
8
+ * Get stories from friends
9
+ * @param {number} limit - Number of stories to fetch
10
+ * @param {function} callback - Callback function
11
+ */
12
+ return function getStories(limit, callback) {
13
+ var resolveFunc = function () {};
14
+ var rejectFunc = function () {};
15
+ var returnPromise = new Promise(function (resolve, reject) {
16
+ resolveFunc = resolve;
17
+ rejectFunc = reject;
18
+ });
19
+
20
+ if (!callback) {
21
+ if (utils.getType(limit) == "Function") {
22
+ callback = limit;
23
+ limit = 20;
24
+ } else {
25
+ callback = function (err, data) {
26
+ if (err) {
27
+ return rejectFunc(err);
28
+ }
29
+ resolveFunc(data);
30
+ };
31
+ }
32
+ }
33
+
34
+ if (utils.getType(limit) != "Number") {
35
+ limit = 20;
36
+ }
37
+
38
+ var form = {
39
+ av: ctx.userID,
40
+ fb_api_caller_class: "RelayModern",
41
+ fb_api_req_friendly_name: "StoriesQuery",
42
+ doc_id: "8768858626531631",
43
+ variables: JSON.stringify({
44
+ first: limit,
45
+ }),
46
+ };
47
+
48
+ defaultFuncs
49
+ .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
50
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
51
+ .then(function (resData) {
52
+ if (resData.errors) {
53
+ throw resData;
54
+ }
55
+
56
+ var stories = [];
57
+ if (
58
+ resData.data &&
59
+ resData.data.viewer &&
60
+ resData.data.viewer.stories &&
61
+ resData.data.viewer.stories.edges
62
+ ) {
63
+ stories = resData.data.viewer.stories.edges.map(function (edge) {
64
+ return {
65
+ id: edge.node.id,
66
+ owner: edge.node.owner
67
+ ? {
68
+ id: edge.node.owner.id,
69
+ name: edge.node.owner.name,
70
+ }
71
+ : null,
72
+ timestamp: edge.node.created_time,
73
+ url: edge.node.url,
74
+ };
75
+ });
76
+ }
77
+
78
+ log.info("getStories", "Fetched " + stories.length + " stories");
79
+ return callback(null, stories);
80
+ })
81
+ .catch(function (err) {
82
+ log.error("getStories", err);
83
+ return callback(err);
84
+ });
85
+
86
+ return returnPromise;
87
+ };
88
+ };