@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.
- package/LICENSE +3 -0
- package/README.md +199 -0
- package/examples/login-with-cookies.js +102 -0
- package/examples/verify.js +70 -0
- package/index.js +2 -0
- package/package.json +84 -0
- package/src/apis/addExternalModule.js +24 -0
- package/src/apis/addUserToGroup.js +108 -0
- package/src/apis/changeAdminStatus.js +148 -0
- package/src/apis/changeArchivedStatus.js +61 -0
- package/src/apis/changeAvatar.js +103 -0
- package/src/apis/changeBio.js +69 -0
- package/src/apis/changeBlockedStatus.js +54 -0
- package/src/apis/changeGroupImage.js +136 -0
- package/src/apis/changeThreadColor.js +116 -0
- package/src/apis/changeThreadEmoji.js +53 -0
- package/src/apis/comment.js +207 -0
- package/src/apis/createAITheme.js +129 -0
- package/src/apis/createNewGroup.js +79 -0
- package/src/apis/createPoll.js +73 -0
- package/src/apis/deleteMessage.js +44 -0
- package/src/apis/deleteThread.js +52 -0
- package/src/apis/editMessage.js +70 -0
- package/src/apis/emoji.js +124 -0
- package/src/apis/enableAutoSaveAppState.js +69 -0
- package/src/apis/fetchThemeData.js +113 -0
- package/src/apis/follow.js +81 -0
- package/src/apis/forwardAttachment.js +178 -0
- package/src/apis/forwardMessage.js +52 -0
- package/src/apis/friend.js +243 -0
- package/src/apis/gcmember.js +122 -0
- package/src/apis/gcname.js +123 -0
- package/src/apis/gcrule.js +119 -0
- package/src/apis/getAccess.js +111 -0
- package/src/apis/getBotInfo.js +88 -0
- package/src/apis/getBotInitialData.js +43 -0
- package/src/apis/getEmojiUrl.js +40 -0
- package/src/apis/getFriendsList.js +79 -0
- package/src/apis/getMessage.js +423 -0
- package/src/apis/getTheme.js +123 -0
- package/src/apis/getThemeInfo.js +116 -0
- package/src/apis/getThemePictures.js +87 -0
- package/src/apis/getThreadColors.js +119 -0
- package/src/apis/getThreadHistory.js +239 -0
- package/src/apis/getThreadInfo.js +267 -0
- package/src/apis/getThreadList.js +232 -0
- package/src/apis/getThreadPictures.js +58 -0
- package/src/apis/getUserID.js +117 -0
- package/src/apis/getUserInfo.js +513 -0
- package/src/apis/getUserInfoV2.js +146 -0
- package/src/apis/handleFriendRequest.js +66 -0
- package/src/apis/handleMessageRequest.js +50 -0
- package/src/apis/httpGet.js +63 -0
- package/src/apis/httpPost.js +89 -0
- package/src/apis/httpPostFormData.js +69 -0
- package/src/apis/listenMqtt.js +924 -0
- package/src/apis/listenSpeed.js +178 -0
- package/src/apis/logout.js +63 -0
- package/src/apis/markAsDelivered.js +47 -0
- package/src/apis/markAsRead.js +95 -0
- package/src/apis/markAsReadAll.js +40 -0
- package/src/apis/markAsSeen.js +70 -0
- package/src/apis/mqttDeltaValue.js +252 -0
- package/src/apis/muteThread.js +45 -0
- package/src/apis/nickname.js +132 -0
- package/src/apis/notes.js +163 -0
- package/src/apis/pinMessage.js +150 -0
- package/src/apis/produceMetaTheme.js +160 -0
- package/src/apis/realtime.js +182 -0
- package/src/apis/refreshFb_dtsg.js +94 -0
- package/src/apis/removeUserFromGroup.js +117 -0
- package/src/apis/resolvePhotoUrl.js +58 -0
- package/src/apis/searchForThread.js +154 -0
- package/src/apis/sendEffect.js +306 -0
- package/src/apis/sendMessage.js +353 -0
- package/src/apis/sendMessageMqtt.js +255 -0
- package/src/apis/sendTypingIndicator.js +40 -0
- package/src/apis/setMessageReaction.js +27 -0
- package/src/apis/setMessageReactionMqtt.js +61 -0
- package/src/apis/setPostReaction.js +118 -0
- package/src/apis/setThreadTheme.js +210 -0
- package/src/apis/setThreadThemeMqtt.js +94 -0
- package/src/apis/setTitle.js +26 -0
- package/src/apis/share.js +106 -0
- package/src/apis/shareContact.js +66 -0
- package/src/apis/stickers.js +257 -0
- package/src/apis/story.js +181 -0
- package/src/apis/theme.js +233 -0
- package/src/apis/unfriend.js +47 -0
- package/src/apis/unsendMessage.js +17 -0
- package/src/apis/uploadAttachment.js +87 -0
- package/src/database/appStateBackup.js +189 -0
- package/src/database/models/index.js +56 -0
- package/src/database/models/thread.js +31 -0
- package/src/database/models/user.js +32 -0
- package/src/database/threadData.js +101 -0
- package/src/database/userData.js +90 -0
- package/src/engine/client.js +92 -0
- package/src/engine/models/buildAPI.js +118 -0
- package/src/engine/models/loginHelper.js +492 -0
- package/src/engine/models/setOptions.js +88 -0
- package/src/types/index.d.ts +498 -0
- package/src/utils/antiSuspension.js +516 -0
- package/src/utils/auth-helpers.js +149 -0
- package/src/utils/autoReLogin.js +237 -0
- package/src/utils/axios.js +368 -0
- package/src/utils/cache.js +54 -0
- package/src/utils/clients.js +279 -0
- package/src/utils/constants.js +525 -0
- package/src/utils/formatters/data/formatAttachment.js +370 -0
- package/src/utils/formatters/data/formatDelta.js +109 -0
- package/src/utils/formatters/index.js +159 -0
- package/src/utils/formatters/value/formatCookie.js +91 -0
- package/src/utils/formatters/value/formatDate.js +36 -0
- package/src/utils/formatters/value/formatID.js +16 -0
- package/src/utils/formatters.js +1369 -0
- package/src/utils/headers.js +235 -0
- package/src/utils/index.js +152 -0
- package/src/utils/monitoring.js +333 -0
- package/src/utils/rateLimiter.js +251 -0
- package/src/utils/tokenRefresh.js +285 -0
- package/src/utils/user-agents.js +238 -0
- 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
|
+
};
|