@lazyneoaz/nkxchat 1.0.0

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 (123) hide show
  1. package/LICENSE +3 -0
  2. package/README.md +199 -0
  3. package/examples/login-with-cookies.js +102 -0
  4. package/examples/verify.js +70 -0
  5. package/index.js +2 -0
  6. package/package.json +84 -0
  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/apis/changeThreadEmoji.js +53 -0
  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/editMessage.js +70 -0
  24. package/src/apis/emoji.js +124 -0
  25. package/src/apis/enableAutoSaveAppState.js +69 -0
  26. package/src/apis/fetchThemeData.js +113 -0
  27. package/src/apis/follow.js +81 -0
  28. package/src/apis/forwardAttachment.js +178 -0
  29. package/src/apis/forwardMessage.js +52 -0
  30. package/src/apis/friend.js +243 -0
  31. package/src/apis/gcmember.js +122 -0
  32. package/src/apis/gcname.js +123 -0
  33. package/src/apis/gcrule.js +119 -0
  34. package/src/apis/getAccess.js +111 -0
  35. package/src/apis/getBotInfo.js +88 -0
  36. package/src/apis/getBotInitialData.js +43 -0
  37. package/src/apis/getEmojiUrl.js +40 -0
  38. package/src/apis/getFriendsList.js +79 -0
  39. package/src/apis/getMessage.js +423 -0
  40. package/src/apis/getTheme.js +123 -0
  41. package/src/apis/getThemeInfo.js +116 -0
  42. package/src/apis/getThemePictures.js +87 -0
  43. package/src/apis/getThreadColors.js +119 -0
  44. package/src/apis/getThreadHistory.js +239 -0
  45. package/src/apis/getThreadInfo.js +267 -0
  46. package/src/apis/getThreadList.js +232 -0
  47. package/src/apis/getThreadPictures.js +58 -0
  48. package/src/apis/getUserID.js +117 -0
  49. package/src/apis/getUserInfo.js +513 -0
  50. package/src/apis/getUserInfoV2.js +146 -0
  51. package/src/apis/handleFriendRequest.js +66 -0
  52. package/src/apis/handleMessageRequest.js +50 -0
  53. package/src/apis/httpGet.js +63 -0
  54. package/src/apis/httpPost.js +89 -0
  55. package/src/apis/httpPostFormData.js +69 -0
  56. package/src/apis/listenMqtt.js +924 -0
  57. package/src/apis/listenSpeed.js +178 -0
  58. package/src/apis/logout.js +63 -0
  59. package/src/apis/markAsDelivered.js +47 -0
  60. package/src/apis/markAsRead.js +95 -0
  61. package/src/apis/markAsReadAll.js +40 -0
  62. package/src/apis/markAsSeen.js +70 -0
  63. package/src/apis/mqttDeltaValue.js +252 -0
  64. package/src/apis/muteThread.js +45 -0
  65. package/src/apis/nickname.js +132 -0
  66. package/src/apis/notes.js +163 -0
  67. package/src/apis/pinMessage.js +150 -0
  68. package/src/apis/produceMetaTheme.js +160 -0
  69. package/src/apis/realtime.js +182 -0
  70. package/src/apis/refreshFb_dtsg.js +94 -0
  71. package/src/apis/removeUserFromGroup.js +117 -0
  72. package/src/apis/resolvePhotoUrl.js +58 -0
  73. package/src/apis/searchForThread.js +154 -0
  74. package/src/apis/sendEffect.js +306 -0
  75. package/src/apis/sendMessage.js +353 -0
  76. package/src/apis/sendMessageMqtt.js +255 -0
  77. package/src/apis/sendTypingIndicator.js +40 -0
  78. package/src/apis/setMessageReaction.js +27 -0
  79. package/src/apis/setMessageReactionMqtt.js +61 -0
  80. package/src/apis/setPostReaction.js +118 -0
  81. package/src/apis/setThreadTheme.js +210 -0
  82. package/src/apis/setThreadThemeMqtt.js +94 -0
  83. package/src/apis/setTitle.js +26 -0
  84. package/src/apis/share.js +106 -0
  85. package/src/apis/shareContact.js +66 -0
  86. package/src/apis/stickers.js +257 -0
  87. package/src/apis/story.js +181 -0
  88. package/src/apis/theme.js +233 -0
  89. package/src/apis/unfriend.js +47 -0
  90. package/src/apis/unsendMessage.js +17 -0
  91. package/src/apis/uploadAttachment.js +87 -0
  92. package/src/database/appStateBackup.js +189 -0
  93. package/src/database/models/index.js +56 -0
  94. package/src/database/models/thread.js +31 -0
  95. package/src/database/models/user.js +32 -0
  96. package/src/database/threadData.js +101 -0
  97. package/src/database/userData.js +90 -0
  98. package/src/engine/client.js +92 -0
  99. package/src/engine/models/buildAPI.js +118 -0
  100. package/src/engine/models/loginHelper.js +492 -0
  101. package/src/engine/models/setOptions.js +88 -0
  102. package/src/types/index.d.ts +498 -0
  103. package/src/utils/antiSuspension.js +516 -0
  104. package/src/utils/auth-helpers.js +149 -0
  105. package/src/utils/autoReLogin.js +237 -0
  106. package/src/utils/axios.js +368 -0
  107. package/src/utils/cache.js +54 -0
  108. package/src/utils/clients.js +279 -0
  109. package/src/utils/constants.js +525 -0
  110. package/src/utils/formatters/data/formatAttachment.js +370 -0
  111. package/src/utils/formatters/data/formatDelta.js +109 -0
  112. package/src/utils/formatters/index.js +159 -0
  113. package/src/utils/formatters/value/formatCookie.js +91 -0
  114. package/src/utils/formatters/value/formatDate.js +36 -0
  115. package/src/utils/formatters/value/formatID.js +16 -0
  116. package/src/utils/formatters.js +1369 -0
  117. package/src/utils/headers.js +235 -0
  118. package/src/utils/index.js +152 -0
  119. package/src/utils/monitoring.js +333 -0
  120. package/src/utils/rateLimiter.js +251 -0
  121. package/src/utils/tokenRefresh.js +285 -0
  122. package/src/utils/user-agents.js +238 -0
  123. package/src/utils/validation.js +157 -0
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ const utils = require("../utils");
4
+
5
+ /**
6
+ * Accepts or declines an incoming friend request.
7
+ *
8
+ * @example
9
+ * await api.handleFriendRequest(userID, true); // accept
10
+ * await api.handleFriendRequest(userID, false); // decline
11
+ *
12
+ * @param {string} userID The Facebook user ID of the person who sent the request.
13
+ * @param {boolean} accept true = accept, false = decline.
14
+ * @param {Function} [callback]
15
+ * @returns {Promise<void>}
16
+ */
17
+ module.exports = function (defaultFuncs, api, ctx) {
18
+ return function handleFriendRequest(userID, accept, callback) {
19
+ if (typeof accept !== "boolean") {
20
+ throw new Error("handleFriendRequest: second argument must be a boolean (true = accept, false = decline).");
21
+ }
22
+
23
+ let resolveFunc, rejectFunc;
24
+ const promise = new Promise((resolve, reject) => {
25
+ resolveFunc = resolve;
26
+ rejectFunc = reject;
27
+ });
28
+ if (!callback) {
29
+ callback = (err, data) => { if (err) return rejectFunc(err); resolveFunc(data); };
30
+ }
31
+
32
+ if (!userID) return callback(new Error("userID is required"));
33
+
34
+ const form = {
35
+ viewer_id: ctx.userID,
36
+ "frefs[0]": "jwl",
37
+ floc: "friend_center_requests",
38
+ ref: "/reqs.php",
39
+ action: accept ? "confirm" : "reject",
40
+ friend_requester_id: String(userID),
41
+ fb_dtsg: ctx.fb_dtsg,
42
+ lsd: ctx.lsd || ctx.fb_dtsg,
43
+ jazoest: ctx.jazoest,
44
+ };
45
+
46
+ defaultFuncs
47
+ .post("https://www.facebook.com/requests/friends/ajax/", ctx.jar, form)
48
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
49
+ .then((resData) => {
50
+ if (resData && resData.payload && resData.payload.err) {
51
+ throw new Error(JSON.stringify(resData.payload.err));
52
+ }
53
+ callback(null, {
54
+ userID,
55
+ action: accept ? "accepted" : "declined",
56
+ success: true,
57
+ });
58
+ })
59
+ .catch((err) => {
60
+ utils.error("handleFriendRequest", err.message || err);
61
+ callback(err instanceof Error ? err : new Error(String(err.message || err)));
62
+ });
63
+
64
+ return promise;
65
+ };
66
+ };
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ const utils = require('../utils');
4
+
5
+ module.exports = (defaultFuncs, api, ctx) => {
6
+ return async function handleMessageRequest(threadID, accept, callback) {
7
+ let resolveFunc = () => {};
8
+ let rejectFunc = () => {};
9
+ const returnPromise = new Promise((resolve, reject) => {
10
+ resolveFunc = resolve;
11
+ rejectFunc = reject;
12
+ });
13
+
14
+ if (!callback) {
15
+ callback = (err, result) => {
16
+ if (err) return rejectFunc(err);
17
+ resolveFunc(result);
18
+ };
19
+ }
20
+
21
+ try {
22
+ if (utils.getType(accept) === "Function") {
23
+ callback = accept;
24
+ accept = true;
25
+ }
26
+
27
+ const form = {
28
+ ids: `ids[${threadID}]=${threadID}`,
29
+ action: accept ? "accept" : "reject"
30
+ };
31
+
32
+ const res = await defaultFuncs.post(
33
+ "https://www.facebook.com/ajax/mercury/handle_message_requests.php",
34
+ ctx.jar,
35
+ form
36
+ ).then(utils.parseAndCheckLogin(ctx, defaultFuncs));
37
+
38
+ if (res && res.error) {
39
+ throw res;
40
+ }
41
+
42
+ return callback(null, { success: true, accepted: accept });
43
+ } catch (err) {
44
+ utils.error("handleMessageRequest", err);
45
+ callback(err);
46
+ }
47
+
48
+ return returnPromise;
49
+ };
50
+ };
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ const utils = require('../utils');
4
+
5
+ module.exports = function (defaultFuncs, api, ctx) {
6
+ return function httpGet(url, form, customHeader, callback, notAPI) {
7
+ let resolveFunc = function () {};
8
+ let rejectFunc = function () {};
9
+
10
+ const returnPromise = new Promise(function (resolve, reject) {
11
+ resolveFunc = resolve;
12
+ rejectFunc = reject;
13
+ });
14
+
15
+ if (
16
+ utils.getType(form) == "Function" ||
17
+ utils.getType(form) == "AsyncFunction"
18
+ ) {
19
+ callback = form;
20
+ form = {};
21
+ }
22
+
23
+ if (
24
+ utils.getType(customHeader) == "Function" ||
25
+ utils.getType(customHeader) == "AsyncFunction"
26
+ ) {
27
+ callback = customHeader;
28
+ customHeader = {};
29
+ }
30
+
31
+ customHeader = customHeader || {};
32
+
33
+ callback =
34
+ callback ||
35
+ function (err, data) {
36
+ if (err) return rejectFunc(err);
37
+ resolveFunc(data);
38
+ };
39
+
40
+ if (notAPI) {
41
+ utils
42
+ .get(url, ctx.jar, form, ctx.globalOptions, ctx, customHeader)
43
+ .then(function (resData) {
44
+ callback(null, resData.body.toString());
45
+ })
46
+ .catch(function (err) {
47
+ utils.error("httpGet", err);
48
+ return callback(err);
49
+ });
50
+ } else {
51
+ defaultFuncs
52
+ .get(url, ctx.jar, form, ctx, customHeader)
53
+ .then(function (resData) {
54
+ callback(null, resData.body.toString());
55
+ })
56
+ .catch(function (err) {
57
+ utils.error("httpGet", err);
58
+ return callback(err);
59
+ });
60
+ }
61
+ return returnPromise;
62
+ };
63
+ };
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ const utils = require('../utils');
4
+
5
+ module.exports = function (defaultFuncs, api, ctx) {
6
+ return function httpPost(url, form, customHeader, callback, notAPI) {
7
+ let resolveFunc = function () {};
8
+ let rejectFunc = function () {};
9
+
10
+ const returnPromise = new Promise(function (resolve, reject) {
11
+ resolveFunc = resolve;
12
+ rejectFunc = reject;
13
+ });
14
+
15
+ if (
16
+ utils.getType(form) == "Function" ||
17
+ utils.getType(form) == "AsyncFunction"
18
+ ) {
19
+ callback = form;
20
+ form = {};
21
+ }
22
+
23
+ if (
24
+ utils.getType(customHeader) == "Function" ||
25
+ utils.getType(customHeader) == "AsyncFunction"
26
+ ) {
27
+ callback = customHeader;
28
+ customHeader = {};
29
+ }
30
+
31
+ customHeader = customHeader || {};
32
+
33
+ callback =
34
+ callback ||
35
+ function (err, data) {
36
+ if (err) return rejectFunc(err);
37
+ resolveFunc(data);
38
+ };
39
+
40
+ const normalizeBody = function(body) {
41
+ if (body === null || body === undefined) {
42
+ return String(body);
43
+ }
44
+
45
+ if (Buffer.isBuffer(body) || body instanceof Uint8Array) {
46
+ return body.toString('utf8');
47
+ }
48
+
49
+ if (typeof body === 'string') {
50
+ return body;
51
+ }
52
+
53
+ if (typeof body === 'object') {
54
+ try {
55
+ return JSON.stringify(body);
56
+ } catch (err) {
57
+ return String(body);
58
+ }
59
+ }
60
+
61
+ return String(body);
62
+ };
63
+
64
+ if (notAPI) {
65
+ utils
66
+ .post(url, ctx.jar, form, ctx.globalOptions, ctx, customHeader)
67
+ .then(function (resData) {
68
+ const body = normalizeBody(resData.body);
69
+ callback(null, body);
70
+ })
71
+ .catch(function (err) {
72
+ utils.error("httpPost", err);
73
+ return callback(err);
74
+ });
75
+ } else {
76
+ defaultFuncs
77
+ .post(url, ctx.jar, form, ctx, customHeader)
78
+ .then(function (resData) {
79
+ const body = normalizeBody(resData.body);
80
+ callback(null, body);
81
+ })
82
+ .catch(function (err) {
83
+ utils.error("httpPost", err);
84
+ return callback(err);
85
+ });
86
+ }
87
+ return returnPromise;
88
+ };
89
+ };
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ const utils = require('../utils');
4
+
5
+ module.exports = function (defaultFuncs, api, ctx) {
6
+ return function httpPostFormData(url, form, customHeader, callback, notAPI) {
7
+ let resolveFunc = function () {};
8
+ let rejectFunc = function () {};
9
+
10
+ const returnPromise = new Promise(function (resolve, reject) {
11
+ resolveFunc = resolve;
12
+ rejectFunc = reject;
13
+ });
14
+
15
+ if (
16
+ utils.getType(form) == "Function" ||
17
+ utils.getType(form) == "AsyncFunction"
18
+ ) {
19
+ callback = form;
20
+ form = {};
21
+ }
22
+
23
+ if (
24
+ utils.getType(customHeader) == "Function" ||
25
+ utils.getType(customHeader) == "AsyncFunction"
26
+ ) {
27
+ callback = customHeader;
28
+ customHeader = {};
29
+ }
30
+
31
+ customHeader = customHeader || {};
32
+
33
+ if (utils.getType(callback) == "Boolean") {
34
+ notAPI = callback;
35
+ callback = null;
36
+ }
37
+
38
+ callback =
39
+ callback ||
40
+ function (err, data) {
41
+ if (err) return rejectFunc(err);
42
+ resolveFunc(data);
43
+ };
44
+
45
+ if (notAPI) {
46
+ utils
47
+ .postFormData(url, ctx.jar, form, ctx.globalOptions, ctx, customHeader)
48
+ .then(function (resData) {
49
+ callback(null, resData.body.toString());
50
+ })
51
+ .catch(function (err) {
52
+ utils.error("httpPostFormData", err);
53
+ return callback(err);
54
+ });
55
+ } else {
56
+ defaultFuncs
57
+ .postFormData(url, ctx.jar, form, null, ctx)
58
+ .then(function (resData) {
59
+ callback(null, resData.body.toString());
60
+ })
61
+ .catch(function (err) {
62
+ utils.error("httpPostFormData", err);
63
+ return callback(err);
64
+ });
65
+ }
66
+
67
+ return returnPromise;
68
+ };
69
+ };