bb-fca 2.0.2 → 2.0.3

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.
@@ -269,6 +269,90 @@ function default_1(defaultFuncs, api, ctx) {
269
269
  throw err;
270
270
  }
271
271
  },
272
+ /**
273
+ * Cancels a sent friend request (hủy lời mời kết bạn đã gửi).
274
+ * @async
275
+ * @param {string} userID The ID of the user whose friend request is to be cancelled.
276
+ * @returns {Promise<Object>} A promise that resolves to the API response data upon successful cancellation.
277
+ * @throws {Error} If the userID is missing or the API request fails.
278
+ */
279
+ cancelRequest: async function (userID) {
280
+ try {
281
+ if (!userID)
282
+ throw new Error('userID is required.');
283
+ const variables = {
284
+ input: {
285
+ cancelled_friend_requestee_id: userID,
286
+ click_correlation_id: Date.now().toString(),
287
+ click_proof_validation_result: '{"validated":true}',
288
+ friending_channel: 'PROFILE_BUTTON',
289
+ actor_id: ctx.userID,
290
+ client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
291
+ },
292
+ scale: 1,
293
+ };
294
+ const form = {
295
+ av: ctx.userID,
296
+ __user: ctx.userID,
297
+ __a: '1',
298
+ fb_dtsg: ctx.fb_dtsg,
299
+ jazoest: ctx.jazoest,
300
+ lsd: ctx.lsd,
301
+ fb_api_caller_class: 'RelayModern',
302
+ fb_api_req_friendly_name: 'FriendingCometFriendRequestCancelMutation',
303
+ variables: JSON.stringify(variables),
304
+ doc_id: '24453541284254355',
305
+ };
306
+ const res = await defaultFuncs.post('https://www.facebook.com/api/graphql/', ctx.jar, form, {});
307
+ if (res.data.errors)
308
+ throw new Error(JSON.stringify(res.data.errors));
309
+ return res.data.data;
310
+ }
311
+ catch (err) {
312
+ throw err;
313
+ }
314
+ },
315
+ /**
316
+ * Unfriends a user (hủy kết bạn).
317
+ * @async
318
+ * @param {string} userID The ID of the user to unfriend.
319
+ * @returns {Promise<Object>} A promise that resolves to the API response data upon successful unfriending.
320
+ * @throws {Error} If the userID is missing or the API request fails.
321
+ */
322
+ unfriend: async function (userID) {
323
+ try {
324
+ if (!userID)
325
+ throw new Error('userID is required.');
326
+ const variables = {
327
+ input: {
328
+ source: 'bd_profile_button',
329
+ unfriended_user_id: userID,
330
+ actor_id: ctx.userID,
331
+ client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
332
+ },
333
+ scale: 1,
334
+ };
335
+ const form = {
336
+ av: ctx.userID,
337
+ __user: ctx.userID,
338
+ __a: '1',
339
+ fb_dtsg: ctx.fb_dtsg,
340
+ jazoest: ctx.jazoest,
341
+ lsd: ctx.lsd,
342
+ fb_api_caller_class: 'RelayModern',
343
+ fb_api_req_friendly_name: 'FriendingCometUnfriendMutation',
344
+ variables: JSON.stringify(variables),
345
+ doc_id: '24028849793460009',
346
+ };
347
+ const res = await defaultFuncs.post('https://www.facebook.com/api/graphql/', ctx.jar, form, {});
348
+ if (res.data.errors)
349
+ throw new Error(JSON.stringify(res.data.errors));
350
+ return res.data.data;
351
+ }
352
+ catch (err) {
353
+ throw err;
354
+ }
355
+ },
272
356
  suggest: {
273
357
  /**
274
358
  * Fetches a list of suggested friends (People You May Know).
@@ -1 +1 @@
1
- {"version":3,"file":"friend.js","sourceRoot":"","sources":["../../../../src/deltas/apis/posting/friend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"friend.js","sourceRoot":"","sources":["../../../../src/deltas/apis/posting/friend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = default_1;
4
+ /**
5
+ * @ChoruOfficial
6
+ * @description A module for updating the Facebook profile bio (tiểu sử).
7
+ * Calls ProfileCometBioFieldSaveMutation via /api/graphql/.
8
+ * @param {Object} defaultFuncs The default functions provided by the API wrapper.
9
+ * @param {Object} api The full API object.
10
+ * @param {Object} ctx The context object containing the user's session state.
11
+ * @returns {Function} An async function that updates the account's bio.
12
+ */
13
+ function default_1(defaultFuncs, api, ctx) {
14
+ /**
15
+ * Updates the profile bio (tiểu sử) of the logged-in user.
16
+ * @async
17
+ * @param {string} bio The new bio text to set. Pass an empty string to clear the bio.
18
+ * @returns {Promise<Object>} A promise that resolves to the API response data on success.
19
+ * @throws {Error} If the API request fails.
20
+ *
21
+ * @example
22
+ * await api.changeBio('day la tieu su doi toi');
23
+ * await api.changeBio(''); // clear bio
24
+ */
25
+ return async function changeBio(bio) {
26
+ if (bio === undefined || bio === null) {
27
+ throw new Error('bio is required. Pass an empty string to clear it.');
28
+ }
29
+ // sectionToken = base64("app_section:<userID>:2327158227")
30
+ const sectionToken = Buffer.from(`app_section:${ctx.userID}:2327158227`).toString('base64');
31
+ const variables = {
32
+ collectionToken: 'UNKNOWN',
33
+ input: {
34
+ bio: bio,
35
+ profile_field_section_type: 'DIRECTORY_BIO',
36
+ actor_id: ctx.userID,
37
+ client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
38
+ },
39
+ scale: 1,
40
+ sectionToken: sectionToken,
41
+ };
42
+ const form = {
43
+ av: ctx.userID,
44
+ __user: ctx.userID,
45
+ __a: '1',
46
+ fb_dtsg: ctx.fb_dtsg,
47
+ jazoest: ctx.jazoest,
48
+ lsd: ctx.lsd,
49
+ fb_api_caller_class: 'RelayModern',
50
+ fb_api_req_friendly_name: 'ProfileCometBioFieldSaveMutation',
51
+ variables: JSON.stringify(variables),
52
+ server_timestamps: 'true',
53
+ doc_id: '26787878704133086',
54
+ };
55
+ const res = await defaultFuncs.post('https://www.facebook.com/api/graphql/', ctx.jar, form, {});
56
+ if (res.data.errors)
57
+ throw new Error(JSON.stringify(res.data.errors));
58
+ return res.data.data;
59
+ };
60
+ }
61
+ //# sourceMappingURL=changeBio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changeBio.js","sourceRoot":"","sources":["../../../../src/deltas/apis/users/changeBio.ts"],"names":[],"mappings":";;AASA,4BA0DC;AAnED;;;;;;;;GAQG;AACH,mBAAyB,YAAiB,EAAE,GAAQ,EAAE,GAAQ;IAC5D;;;;;;;;;;OAUG;IACH,OAAO,KAAK,UAAU,SAAS,CAAC,GAAW;QACzC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,2DAA2D;QAC3D,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAC9B,eAAe,GAAG,CAAC,MAAM,aAAa,CACvC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAErB,MAAM,SAAS,GAAG;YAChB,eAAe,EAAE,SAAS;YAC1B,KAAK,EAAE;gBACL,GAAG,EAAE,GAAG;gBACR,0BAA0B,EAAE,eAAe;gBAC3C,QAAQ,EAAE,GAAG,CAAC,MAAM;gBACpB,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;aAClE;YACD,KAAK,EAAE,CAAC;YACR,YAAY,EAAE,YAAY;SAC3B,CAAC;QAEF,MAAM,IAAI,GAAG;YACX,EAAE,EAAE,GAAG,CAAC,MAAM;YACd,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,EAAE,GAAG;YACR,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,mBAAmB,EAAE,aAAa;YAClC,wBAAwB,EAAE,kCAAkC;YAC5D,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YACpC,iBAAiB,EAAE,MAAM;YACzB,MAAM,EAAE,mBAAmB;SAC5B,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,CACjC,uCAAuC,EACvC,GAAG,CAAC,GAAG,EACP,IAAI,EACJ,EAAE,CACH,CAAC;QAEF,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACtE,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.default = default_1;
37
+ const fs = __importStar(require("fs"));
38
+ const utils = require("../../../utils");
39
+ /**
40
+ * @description A module for uploading a new profile picture (avatar) to Facebook.
41
+ * Two-step process:
42
+ * 1. Upload: sends the image file via multipart/form-data to /profile/picture/upload/
43
+ * 2. Set: calls ProfileCometProfilePictureSetMutation to apply the photo as avatar with optional caption
44
+ * @param {Object} defaultFuncs The default functions provided by the API wrapper.
45
+ * @param {Object} api The full API object.
46
+ * @param {Object} ctx The context object containing the user's session state.
47
+ * @returns {Function} An async function that uploads an avatar image.
48
+ */
49
+ function default_1(defaultFuncs, api, ctx) {
50
+ /**
51
+ * Step 2 — Apply the uploaded photo as avatar via ProfileCometProfilePictureSetMutation.
52
+ * @private
53
+ * @param {string} photoID The ID of the uploaded photo.
54
+ * @param {string} profileID The profile ID.
55
+ * @param {string} caption Optional caption for the avatar.
56
+ */
57
+ async function setProfilePicture(photoID, profileID, caption = '') {
58
+ const variables = {
59
+ input: {
60
+ attribution_id_v2: `ProfileCometTimelineListViewRoot.react,comet.profile.timeline.list,via_cold_start,${Date.now()},473818,190055527696468,,`,
61
+ caption: caption,
62
+ existing_photo_id: photoID,
63
+ expiration_time: null,
64
+ profile_id: profileID,
65
+ profile_pic_method: 'EXISTING',
66
+ profile_pic_source: 'TIMELINE',
67
+ scaled_crop_rect: { height: 0.56328, width: 1, x: 0, y: 0.21836 },
68
+ skip_cropping: true,
69
+ actor_id: ctx.userID,
70
+ client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
71
+ },
72
+ isPage: false,
73
+ isProfile: true,
74
+ sectionToken: 'UNKNOWN',
75
+ collectionToken: 'UNKNOWN',
76
+ scale: 1,
77
+ '__relay_internal__pv__ProfileGeminiIsCoinFlipEnabledrelayprovider': false,
78
+ };
79
+ const form = {
80
+ av: ctx.userID,
81
+ __user: ctx.userID,
82
+ __a: '1',
83
+ fb_dtsg: ctx.fb_dtsg,
84
+ jazoest: ctx.jazoest,
85
+ lsd: ctx.lsd,
86
+ fb_api_caller_class: 'RelayModern',
87
+ fb_api_req_friendly_name: 'ProfileCometProfilePictureSetMutation',
88
+ variables: JSON.stringify(variables),
89
+ server_timestamps: 'true',
90
+ doc_id: '26101621736123633',
91
+ };
92
+ const res = await defaultFuncs.post('https://www.facebook.com/api/graphql/', ctx.jar, form, {});
93
+ if (res.data.errors)
94
+ throw new Error(JSON.stringify(res.data.errors));
95
+ return res.data;
96
+ }
97
+ /**
98
+ * Uploads a new profile picture (avatar) for the logged-in user, then sets it as avatar with optional caption.
99
+ * @async
100
+ * @param {string} imagePath The local file path to the image to upload.
101
+ * @param {string} [caption=''] Optional caption for the profile picture post.
102
+ * @param {string} [profileID=ctx.userID] The profile ID to upload the avatar for. Defaults to the logged-in user.
103
+ * @param {Function} [callback] Optional callback function.
104
+ * @returns {Promise<Object>} A promise that resolves with { upload, set } data on success.
105
+ * @throws {Error} If the imagePath is missing, the file does not exist, or any step fails.
106
+ *
107
+ * @example
108
+ * await api.uploadAvatar('/path/to/photo.jpg');
109
+ * await api.uploadAvatar('/path/to/photo.jpg', 'My new avatar!');
110
+ * await api.uploadAvatar('/path/to/photo.jpg', 'Caption', '61588408996667');
111
+ */
112
+ return async function uploadAvatar(imagePath, caption = '', profileID = ctx.userID, callback) {
113
+ let resolveFunc = function () { };
114
+ let rejectFunc = function () { };
115
+ const returnPromise = new Promise(function (resolve, reject) {
116
+ resolveFunc = resolve;
117
+ rejectFunc = reject;
118
+ });
119
+ callback =
120
+ callback ||
121
+ function (err, data) {
122
+ if (err)
123
+ return rejectFunc(err);
124
+ resolveFunc(data);
125
+ };
126
+ try {
127
+ if (!imagePath)
128
+ throw new Error('imagePath is required.');
129
+ if (typeof imagePath !== 'string')
130
+ throw new Error('imagePath must be a string.');
131
+ if (!fs.existsSync(imagePath))
132
+ throw new Error(`File not found: ${imagePath}`);
133
+ // Step 1: Upload the photo
134
+ const photoStream = fs.createReadStream(imagePath);
135
+ const url = new URL('https://www.facebook.com/profile/picture/upload/');
136
+ url.searchParams.append('photo_source', '57');
137
+ url.searchParams.append('profile_id', profileID);
138
+ url.searchParams.append('av', ctx.userID);
139
+ url.searchParams.append('__aaid', '0');
140
+ url.searchParams.append('__user', ctx.userID);
141
+ url.searchParams.append('__a', '1');
142
+ url.searchParams.append('fb_dtsg', ctx.fb_dtsg);
143
+ url.searchParams.append('jazoest', ctx.jazoest);
144
+ url.searchParams.append('lsd', ctx.lsd);
145
+ const uploadResponse = await utils.postFormData(url.toString(), ctx.jar, { file: photoStream }, ctx.globalOptions, ctx);
146
+ const uploadResult = JSON.parse(uploadResponse.body.toString().replace(/^for \(;;\);/, ''));
147
+ if (uploadResult.error || uploadResult.errors) {
148
+ throw new Error(JSON.stringify(uploadResult.error || uploadResult.errors));
149
+ }
150
+ const photoID = uploadResult.payload?.fbid ||
151
+ uploadResult.payload?.photoID ||
152
+ uploadResult.payload?.photo_id ||
153
+ null;
154
+ if (!photoID) {
155
+ throw new Error('Upload succeeded but could not extract photo ID from response.');
156
+ }
157
+ // Step 2: Set as profile picture with caption
158
+ const setResult = await setProfilePicture(photoID, profileID, caption);
159
+ const result = {
160
+ success: true,
161
+ photoID: photoID,
162
+ upload: uploadResult,
163
+ set: setResult,
164
+ };
165
+ callback(null, result);
166
+ }
167
+ catch (err) {
168
+ utils.error('uploadAvatar', err);
169
+ callback(err);
170
+ }
171
+ return returnPromise;
172
+ };
173
+ }
174
+ //# sourceMappingURL=uploadAvatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploadAvatar.js","sourceRoot":"","sources":["../../../../src/deltas/apis/users/uploadAvatar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.default = default_1;
37
+ const fs = __importStar(require("fs"));
38
+ const utils = require("../../../utils");
39
+ /**
40
+ * @ChoruOfficial
41
+ * @description A module for uploading a new cover photo (ảnh bìa) to Facebook.
42
+ * Two-step process:
43
+ * 1. Upload: sends the image file via multipart/form-data to /profile/cover/comet_upload/
44
+ * 2. Confirm: calls ProfileCometCoverPhotoUpdateMutation to apply the photo as cover
45
+ * @param {Object} defaultFuncs The default functions provided by the API wrapper.
46
+ * @param {Object} api The full API object.
47
+ * @param {Object} ctx The context object containing the user's session state.
48
+ * @returns {Function} An async function that uploads a cover photo.
49
+ */
50
+ function default_1(defaultFuncs, api, ctx) {
51
+ /**
52
+ * Step 2 — Confirm the uploaded photo as cover via ProfileCometCoverPhotoUpdateMutation.
53
+ * @private
54
+ * @param {string} photoID The ID of the uploaded photo.
55
+ * @param {string} profileID The profile ID.
56
+ * @param {{ x: number, y: number }} [focus] Optional focus point. Defaults to center {x:0.5, y:0.5}.
57
+ */
58
+ async function setCoverPhoto(photoID, profileID, focus = { x: 0.5, y: 0.5 }) {
59
+ const variables = {
60
+ input: {
61
+ attribution_id_v2: `ProfileCometAboutTabRoot.react,comet.profile.collection.about,via_cold_start,${Date.now()},670164,,,`,
62
+ cover_photo_id: photoID,
63
+ focus: focus,
64
+ target_user_id: profileID,
65
+ actor_id: ctx.userID,
66
+ client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
67
+ },
68
+ scale: 1,
69
+ contextualProfileContext: null,
70
+ };
71
+ const form = {
72
+ av: ctx.userID,
73
+ __user: ctx.userID,
74
+ __a: '1',
75
+ fb_dtsg: ctx.fb_dtsg,
76
+ jazoest: ctx.jazoest,
77
+ lsd: ctx.lsd,
78
+ fb_api_caller_class: 'RelayModern',
79
+ fb_api_req_friendly_name: 'ProfileCometCoverPhotoUpdateMutation',
80
+ variables: JSON.stringify(variables),
81
+ server_timestamps: 'true',
82
+ doc_id: '31388044007461211',
83
+ };
84
+ const res = await defaultFuncs.post('https://www.facebook.com/api/graphql/', ctx.jar, form, {});
85
+ if (res.data.errors)
86
+ throw new Error(JSON.stringify(res.data.errors));
87
+ return res.data;
88
+ }
89
+ /**
90
+ * Uploads a new cover photo (ảnh bìa) for the logged-in user, then confirms it as the cover.
91
+ * @async
92
+ * @param {string} imagePath The local file path to the image to upload.
93
+ * @param {string} [profileID=ctx.userID] The profile ID. Defaults to the logged-in user.
94
+ * @param {{ x: number, y: number }} [focus] Optional focus point for cropping. Defaults to {x:0.5, y:0.5}.
95
+ * @param {Function} [callback] Optional callback function.
96
+ * @returns {Promise<Object>} A promise that resolves with { upload, set } data on success.
97
+ * @throws {Error} If the imagePath is missing, the file does not exist, or any step fails.
98
+ *
99
+ * @example
100
+ * await api.uploadCover('/path/to/cover.jpg');
101
+ * await api.uploadCover('/path/to/cover.jpg', '61588408996667');
102
+ * await api.uploadCover('/path/to/cover.jpg', ctx.userID, { x: 0.5, y: 0.3 });
103
+ */
104
+ return async function uploadCover(imagePath, profileID = ctx.userID, focus = { x: 0.5, y: 0.5 }, callback) {
105
+ let resolveFunc = function () { };
106
+ let rejectFunc = function () { };
107
+ const returnPromise = new Promise(function (resolve, reject) {
108
+ resolveFunc = resolve;
109
+ rejectFunc = reject;
110
+ });
111
+ callback =
112
+ callback ||
113
+ function (err, data) {
114
+ if (err)
115
+ return rejectFunc(err);
116
+ resolveFunc(data);
117
+ };
118
+ try {
119
+ if (!imagePath)
120
+ throw new Error('imagePath is required.');
121
+ if (typeof imagePath !== 'string')
122
+ throw new Error('imagePath must be a string.');
123
+ if (!fs.existsSync(imagePath))
124
+ throw new Error(`File not found: ${imagePath}`);
125
+ // Step 1: Upload the photo
126
+ const photoStream = fs.createReadStream(imagePath);
127
+ const url = new URL('https://www.facebook.com/profile/cover/comet_upload/');
128
+ url.searchParams.append('profile_id', profileID);
129
+ url.searchParams.append('av', ctx.userID);
130
+ url.searchParams.append('__aaid', '0');
131
+ url.searchParams.append('__user', ctx.userID);
132
+ url.searchParams.append('__a', '1');
133
+ url.searchParams.append('fb_dtsg', ctx.fb_dtsg);
134
+ url.searchParams.append('jazoest', ctx.jazoest);
135
+ url.searchParams.append('lsd', ctx.lsd);
136
+ const uploadResponse = await utils.postFormData(url.toString(), ctx.jar, { file: photoStream }, ctx.globalOptions, ctx);
137
+ const uploadResult = JSON.parse(uploadResponse.body.toString().replace(/^for \(;;\);/, ''));
138
+ if (uploadResult.error || uploadResult.errors) {
139
+ throw new Error(JSON.stringify(uploadResult.error || uploadResult.errors));
140
+ }
141
+ const photoID = uploadResult.payload?.fbid ||
142
+ uploadResult.payload?.photoID ||
143
+ uploadResult.payload?.photo_id ||
144
+ null;
145
+ if (!photoID) {
146
+ throw new Error('Upload succeeded but could not extract photo ID from response.');
147
+ }
148
+ // Step 2: Confirm as cover photo
149
+ const setResult = await setCoverPhoto(photoID, profileID, focus);
150
+ const result = {
151
+ success: true,
152
+ photoID: photoID,
153
+ upload: uploadResult,
154
+ set: setResult,
155
+ };
156
+ callback(null, result);
157
+ }
158
+ catch (err) {
159
+ utils.error('uploadCover', err);
160
+ callback(err);
161
+ }
162
+ return returnPromise;
163
+ };
164
+ }
165
+ //# sourceMappingURL=uploadCover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploadCover.js","sourceRoot":"","sources":["../../../../src/deltas/apis/users/uploadCover.ts"],"names":[],"mappings":"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"}
@@ -57,6 +57,22 @@ export default function (defaultFuncs: any, api: any, ctx: any): {
57
57
  * @throws {Error} If the userID is missing or the API request fails.
58
58
  */
59
59
  add: (userID: any) => Promise<any>;
60
+ /**
61
+ * Cancels a sent friend request (hủy lời mời kết bạn đã gửi).
62
+ * @async
63
+ * @param {string} userID The ID of the user whose friend request is to be cancelled.
64
+ * @returns {Promise<Object>} A promise that resolves to the API response data upon successful cancellation.
65
+ * @throws {Error} If the userID is missing or the API request fails.
66
+ */
67
+ cancelRequest: (userID: any) => Promise<any>;
68
+ /**
69
+ * Unfriends a user (hủy kết bạn).
70
+ * @async
71
+ * @param {string} userID The ID of the user to unfriend.
72
+ * @returns {Promise<Object>} A promise that resolves to the API response data upon successful unfriending.
73
+ * @throws {Error} If the userID is missing or the API request fails.
74
+ */
75
+ unfriend: (userID: any) => Promise<any>;
60
76
  suggest: {
61
77
  /**
62
78
  * Fetches a list of suggested friends (People You May Know).
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @ChoruOfficial
3
+ * @description A module for updating the Facebook profile bio (tiểu sử).
4
+ * Calls ProfileCometBioFieldSaveMutation via /api/graphql/.
5
+ * @param {Object} defaultFuncs The default functions provided by the API wrapper.
6
+ * @param {Object} api The full API object.
7
+ * @param {Object} ctx The context object containing the user's session state.
8
+ * @returns {Function} An async function that updates the account's bio.
9
+ */
10
+ export default function (defaultFuncs: any, api: any, ctx: any): (bio: string) => Promise<any>;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @description A module for uploading a new profile picture (avatar) to Facebook.
3
+ * Two-step process:
4
+ * 1. Upload: sends the image file via multipart/form-data to /profile/picture/upload/
5
+ * 2. Set: calls ProfileCometProfilePictureSetMutation to apply the photo as avatar with optional caption
6
+ * @param {Object} defaultFuncs The default functions provided by the API wrapper.
7
+ * @param {Object} api The full API object.
8
+ * @param {Object} ctx The context object containing the user's session state.
9
+ * @returns {Function} An async function that uploads an avatar image.
10
+ */
11
+ export default function (defaultFuncs: any, api: any, ctx: any): (imagePath: string, caption?: string, profileID?: string, callback?: any) => Promise<any>;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @ChoruOfficial
3
+ * @description A module for uploading a new cover photo (ảnh bìa) to Facebook.
4
+ * Two-step process:
5
+ * 1. Upload: sends the image file via multipart/form-data to /profile/cover/comet_upload/
6
+ * 2. Confirm: calls ProfileCometCoverPhotoUpdateMutation to apply the photo as cover
7
+ * @param {Object} defaultFuncs The default functions provided by the API wrapper.
8
+ * @param {Object} api The full API object.
9
+ * @param {Object} ctx The context object containing the user's session state.
10
+ * @returns {Function} An async function that uploads a cover photo.
11
+ */
12
+ export default function (defaultFuncs: any, api: any, ctx: any): (imagePath: string, profileID?: string, focus?: {
13
+ x: number;
14
+ y: number;
15
+ }, callback?: any) => Promise<any>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bb-fca",
3
- "version": "2.0.2",
3
+ "version": "2.0.3",
4
4
  "description": "BB-FCA is a powerful and user-friendly Facebook Chat API wrapper for Node.js, designed to simplify the process of creating chatbots and automating interactions on Facebook Messenger. With BB-FCA, developers can easily send messages, manage conversations, and interact with the Facebook Messenger platform using a simple and intuitive API.",
5
5
  "main": "dist/core/client.js",
6
6
  "types": "dist/index.d.ts",
@@ -301,6 +301,96 @@ export default function (defaultFuncs: any, api: any, ctx: any) {
301
301
  }
302
302
  },
303
303
 
304
+ /**
305
+ * Cancels a sent friend request (hủy lời mời kết bạn đã gửi).
306
+ * @async
307
+ * @param {string} userID The ID of the user whose friend request is to be cancelled.
308
+ * @returns {Promise<Object>} A promise that resolves to the API response data upon successful cancellation.
309
+ * @throws {Error} If the userID is missing or the API request fails.
310
+ */
311
+ cancelRequest: async function (userID) {
312
+ try {
313
+ if (!userID) throw new Error('userID is required.');
314
+ const variables = {
315
+ input: {
316
+ cancelled_friend_requestee_id: userID,
317
+ click_correlation_id: Date.now().toString(),
318
+ click_proof_validation_result: '{"validated":true}',
319
+ friending_channel: 'PROFILE_BUTTON',
320
+ actor_id: ctx.userID,
321
+ client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
322
+ },
323
+ scale: 1,
324
+ };
325
+ const form = {
326
+ av: ctx.userID,
327
+ __user: ctx.userID,
328
+ __a: '1',
329
+ fb_dtsg: ctx.fb_dtsg,
330
+ jazoest: ctx.jazoest,
331
+ lsd: ctx.lsd,
332
+ fb_api_caller_class: 'RelayModern',
333
+ fb_api_req_friendly_name: 'FriendingCometFriendRequestCancelMutation',
334
+ variables: JSON.stringify(variables),
335
+ doc_id: '24453541284254355',
336
+ };
337
+ const res = await defaultFuncs.post(
338
+ 'https://www.facebook.com/api/graphql/',
339
+ ctx.jar,
340
+ form,
341
+ {},
342
+ );
343
+ if (res.data.errors) throw new Error(JSON.stringify(res.data.errors));
344
+ return res.data.data;
345
+ } catch (err) {
346
+ throw err;
347
+ }
348
+ },
349
+
350
+ /**
351
+ * Unfriends a user (hủy kết bạn).
352
+ * @async
353
+ * @param {string} userID The ID of the user to unfriend.
354
+ * @returns {Promise<Object>} A promise that resolves to the API response data upon successful unfriending.
355
+ * @throws {Error} If the userID is missing or the API request fails.
356
+ */
357
+ unfriend: async function (userID) {
358
+ try {
359
+ if (!userID) throw new Error('userID is required.');
360
+ const variables = {
361
+ input: {
362
+ source: 'bd_profile_button',
363
+ unfriended_user_id: userID,
364
+ actor_id: ctx.userID,
365
+ client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
366
+ },
367
+ scale: 1,
368
+ };
369
+ const form = {
370
+ av: ctx.userID,
371
+ __user: ctx.userID,
372
+ __a: '1',
373
+ fb_dtsg: ctx.fb_dtsg,
374
+ jazoest: ctx.jazoest,
375
+ lsd: ctx.lsd,
376
+ fb_api_caller_class: 'RelayModern',
377
+ fb_api_req_friendly_name: 'FriendingCometUnfriendMutation',
378
+ variables: JSON.stringify(variables),
379
+ doc_id: '24028849793460009',
380
+ };
381
+ const res = await defaultFuncs.post(
382
+ 'https://www.facebook.com/api/graphql/',
383
+ ctx.jar,
384
+ form,
385
+ {},
386
+ );
387
+ if (res.data.errors) throw new Error(JSON.stringify(res.data.errors));
388
+ return res.data.data;
389
+ } catch (err) {
390
+ throw err;
391
+ }
392
+ },
393
+
304
394
  suggest: {
305
395
  /**
306
396
  * Fetches a list of suggested friends (People You May Know).
@@ -0,0 +1,68 @@
1
+ /**
2
+ * @ChoruOfficial
3
+ * @description A module for updating the Facebook profile bio (tiểu sử).
4
+ * Calls ProfileCometBioFieldSaveMutation via /api/graphql/.
5
+ * @param {Object} defaultFuncs The default functions provided by the API wrapper.
6
+ * @param {Object} api The full API object.
7
+ * @param {Object} ctx The context object containing the user's session state.
8
+ * @returns {Function} An async function that updates the account's bio.
9
+ */
10
+ export default function (defaultFuncs: any, api: any, ctx: any) {
11
+ /**
12
+ * Updates the profile bio (tiểu sử) of the logged-in user.
13
+ * @async
14
+ * @param {string} bio The new bio text to set. Pass an empty string to clear the bio.
15
+ * @returns {Promise<Object>} A promise that resolves to the API response data on success.
16
+ * @throws {Error} If the API request fails.
17
+ *
18
+ * @example
19
+ * await api.changeBio('day la tieu su doi toi');
20
+ * await api.changeBio(''); // clear bio
21
+ */
22
+ return async function changeBio(bio: string): Promise<any> {
23
+ if (bio === undefined || bio === null) {
24
+ throw new Error('bio is required. Pass an empty string to clear it.');
25
+ }
26
+
27
+ // sectionToken = base64("app_section:<userID>:2327158227")
28
+ const sectionToken = Buffer.from(
29
+ `app_section:${ctx.userID}:2327158227`,
30
+ ).toString('base64');
31
+
32
+ const variables = {
33
+ collectionToken: 'UNKNOWN',
34
+ input: {
35
+ bio: bio,
36
+ profile_field_section_type: 'DIRECTORY_BIO',
37
+ actor_id: ctx.userID,
38
+ client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
39
+ },
40
+ scale: 1,
41
+ sectionToken: sectionToken,
42
+ };
43
+
44
+ const form = {
45
+ av: ctx.userID,
46
+ __user: ctx.userID,
47
+ __a: '1',
48
+ fb_dtsg: ctx.fb_dtsg,
49
+ jazoest: ctx.jazoest,
50
+ lsd: ctx.lsd,
51
+ fb_api_caller_class: 'RelayModern',
52
+ fb_api_req_friendly_name: 'ProfileCometBioFieldSaveMutation',
53
+ variables: JSON.stringify(variables),
54
+ server_timestamps: 'true',
55
+ doc_id: '26787878704133086',
56
+ };
57
+
58
+ const res = await defaultFuncs.post(
59
+ 'https://www.facebook.com/api/graphql/',
60
+ ctx.jar,
61
+ form,
62
+ {},
63
+ );
64
+
65
+ if (res.data.errors) throw new Error(JSON.stringify(res.data.errors));
66
+ return res.data.data;
67
+ };
68
+ }
@@ -0,0 +1,172 @@
1
+ import * as fs from 'fs';
2
+ import utils = require('../../../utils');
3
+
4
+ /**
5
+ * @description A module for uploading a new profile picture (avatar) to Facebook.
6
+ * Two-step process:
7
+ * 1. Upload: sends the image file via multipart/form-data to /profile/picture/upload/
8
+ * 2. Set: calls ProfileCometProfilePictureSetMutation to apply the photo as avatar with optional caption
9
+ * @param {Object} defaultFuncs The default functions provided by the API wrapper.
10
+ * @param {Object} api The full API object.
11
+ * @param {Object} ctx The context object containing the user's session state.
12
+ * @returns {Function} An async function that uploads an avatar image.
13
+ */
14
+ export default function (defaultFuncs: any, api: any, ctx: any) {
15
+ /**
16
+ * Step 2 — Apply the uploaded photo as avatar via ProfileCometProfilePictureSetMutation.
17
+ * @private
18
+ * @param {string} photoID The ID of the uploaded photo.
19
+ * @param {string} profileID The profile ID.
20
+ * @param {string} caption Optional caption for the avatar.
21
+ */
22
+ async function setProfilePicture(photoID: string, profileID: string, caption = '') {
23
+ const variables = {
24
+ input: {
25
+ attribution_id_v2: `ProfileCometTimelineListViewRoot.react,comet.profile.timeline.list,via_cold_start,${Date.now()},473818,190055527696468,,`,
26
+ caption: caption,
27
+ existing_photo_id: photoID,
28
+ expiration_time: null,
29
+ profile_id: profileID,
30
+ profile_pic_method: 'EXISTING',
31
+ profile_pic_source: 'TIMELINE',
32
+ scaled_crop_rect: { height: 0.56328, width: 1, x: 0, y: 0.21836 },
33
+ skip_cropping: true,
34
+ actor_id: ctx.userID,
35
+ client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
36
+ },
37
+ isPage: false,
38
+ isProfile: true,
39
+ sectionToken: 'UNKNOWN',
40
+ collectionToken: 'UNKNOWN',
41
+ scale: 1,
42
+ '__relay_internal__pv__ProfileGeminiIsCoinFlipEnabledrelayprovider': false,
43
+ };
44
+
45
+ const form = {
46
+ av: ctx.userID,
47
+ __user: ctx.userID,
48
+ __a: '1',
49
+ fb_dtsg: ctx.fb_dtsg,
50
+ jazoest: ctx.jazoest,
51
+ lsd: ctx.lsd,
52
+ fb_api_caller_class: 'RelayModern',
53
+ fb_api_req_friendly_name: 'ProfileCometProfilePictureSetMutation',
54
+ variables: JSON.stringify(variables),
55
+ server_timestamps: 'true',
56
+ doc_id: '26101621736123633',
57
+ };
58
+
59
+ const res = await defaultFuncs.post(
60
+ 'https://www.facebook.com/api/graphql/',
61
+ ctx.jar,
62
+ form,
63
+ {},
64
+ );
65
+ if (res.data.errors) throw new Error(JSON.stringify(res.data.errors));
66
+ return res.data;
67
+ }
68
+
69
+ /**
70
+ * Uploads a new profile picture (avatar) for the logged-in user, then sets it as avatar with optional caption.
71
+ * @async
72
+ * @param {string} imagePath The local file path to the image to upload.
73
+ * @param {string} [caption=''] Optional caption for the profile picture post.
74
+ * @param {string} [profileID=ctx.userID] The profile ID to upload the avatar for. Defaults to the logged-in user.
75
+ * @param {Function} [callback] Optional callback function.
76
+ * @returns {Promise<Object>} A promise that resolves with { upload, set } data on success.
77
+ * @throws {Error} If the imagePath is missing, the file does not exist, or any step fails.
78
+ *
79
+ * @example
80
+ * await api.uploadAvatar('/path/to/photo.jpg');
81
+ * await api.uploadAvatar('/path/to/photo.jpg', 'My new avatar!');
82
+ * await api.uploadAvatar('/path/to/photo.jpg', 'Caption', '61588408996667');
83
+ */
84
+ return async function uploadAvatar(
85
+ imagePath: string,
86
+ caption: string = '',
87
+ profileID: string = ctx.userID,
88
+ callback?,
89
+ ): Promise<any> {
90
+ let resolveFunc: Function = function () { };
91
+ let rejectFunc: Function = function () { };
92
+
93
+ const returnPromise = new Promise<any>(function (resolve, reject) {
94
+ resolveFunc = resolve;
95
+ rejectFunc = reject;
96
+ });
97
+
98
+ callback =
99
+ callback ||
100
+ function (err, data) {
101
+ if (err) return rejectFunc(err);
102
+ resolveFunc(data);
103
+ };
104
+
105
+ try {
106
+ if (!imagePath) throw new Error('imagePath is required.');
107
+ if (typeof imagePath !== 'string')
108
+ throw new Error('imagePath must be a string.');
109
+ if (!fs.existsSync(imagePath))
110
+ throw new Error(`File not found: ${imagePath}`);
111
+
112
+ // Step 1: Upload the photo
113
+ const photoStream = fs.createReadStream(imagePath);
114
+
115
+ const url = new URL('https://www.facebook.com/profile/picture/upload/');
116
+ url.searchParams.append('photo_source', '57');
117
+ url.searchParams.append('profile_id', profileID);
118
+ url.searchParams.append('av', ctx.userID);
119
+ url.searchParams.append('__aaid', '0');
120
+ url.searchParams.append('__user', ctx.userID);
121
+ url.searchParams.append('__a', '1');
122
+ url.searchParams.append('fb_dtsg', ctx.fb_dtsg);
123
+ url.searchParams.append('jazoest', ctx.jazoest);
124
+ url.searchParams.append('lsd', ctx.lsd);
125
+
126
+ const uploadResponse = await utils.postFormData(
127
+ url.toString(),
128
+ ctx.jar,
129
+ { file: photoStream },
130
+ ctx.globalOptions,
131
+ ctx,
132
+ );
133
+
134
+ const uploadResult = JSON.parse(
135
+ uploadResponse.body.toString().replace(/^for \(;;\);/, ''),
136
+ );
137
+
138
+ if (uploadResult.error || uploadResult.errors) {
139
+ throw new Error(
140
+ JSON.stringify(uploadResult.error || uploadResult.errors),
141
+ );
142
+ }
143
+
144
+ const photoID =
145
+ uploadResult.payload?.fbid ||
146
+ uploadResult.payload?.photoID ||
147
+ uploadResult.payload?.photo_id ||
148
+ null;
149
+
150
+ if (!photoID) {
151
+ throw new Error('Upload succeeded but could not extract photo ID from response.');
152
+ }
153
+
154
+ // Step 2: Set as profile picture with caption
155
+ const setResult = await setProfilePicture(photoID, profileID, caption);
156
+
157
+ const result = {
158
+ success: true,
159
+ photoID: photoID,
160
+ upload: uploadResult,
161
+ set: setResult,
162
+ };
163
+
164
+ callback(null, result);
165
+ } catch (err) {
166
+ utils.error('uploadAvatar', err);
167
+ callback(err);
168
+ }
169
+
170
+ return returnPromise;
171
+ };
172
+ }
@@ -0,0 +1,167 @@
1
+ import * as fs from 'fs';
2
+ import utils = require('../../../utils');
3
+
4
+ /**
5
+ * @ChoruOfficial
6
+ * @description A module for uploading a new cover photo (ảnh bìa) to Facebook.
7
+ * Two-step process:
8
+ * 1. Upload: sends the image file via multipart/form-data to /profile/cover/comet_upload/
9
+ * 2. Confirm: calls ProfileCometCoverPhotoUpdateMutation to apply the photo as cover
10
+ * @param {Object} defaultFuncs The default functions provided by the API wrapper.
11
+ * @param {Object} api The full API object.
12
+ * @param {Object} ctx The context object containing the user's session state.
13
+ * @returns {Function} An async function that uploads a cover photo.
14
+ */
15
+ export default function (defaultFuncs: any, api: any, ctx: any) {
16
+ /**
17
+ * Step 2 — Confirm the uploaded photo as cover via ProfileCometCoverPhotoUpdateMutation.
18
+ * @private
19
+ * @param {string} photoID The ID of the uploaded photo.
20
+ * @param {string} profileID The profile ID.
21
+ * @param {{ x: number, y: number }} [focus] Optional focus point. Defaults to center {x:0.5, y:0.5}.
22
+ */
23
+ async function setCoverPhoto(
24
+ photoID: string,
25
+ profileID: string,
26
+ focus = { x: 0.5, y: 0.5 },
27
+ ) {
28
+ const variables = {
29
+ input: {
30
+ attribution_id_v2: `ProfileCometAboutTabRoot.react,comet.profile.collection.about,via_cold_start,${Date.now()},670164,,,`,
31
+ cover_photo_id: photoID,
32
+ focus: focus,
33
+ target_user_id: profileID,
34
+ actor_id: ctx.userID,
35
+ client_mutation_id: Math.floor(Math.random() * 10 + 1).toString(),
36
+ },
37
+ scale: 1,
38
+ contextualProfileContext: null,
39
+ };
40
+
41
+ const form = {
42
+ av: ctx.userID,
43
+ __user: ctx.userID,
44
+ __a: '1',
45
+ fb_dtsg: ctx.fb_dtsg,
46
+ jazoest: ctx.jazoest,
47
+ lsd: ctx.lsd,
48
+ fb_api_caller_class: 'RelayModern',
49
+ fb_api_req_friendly_name: 'ProfileCometCoverPhotoUpdateMutation',
50
+ variables: JSON.stringify(variables),
51
+ server_timestamps: 'true',
52
+ doc_id: '31388044007461211',
53
+ };
54
+
55
+ const res = await defaultFuncs.post(
56
+ 'https://www.facebook.com/api/graphql/',
57
+ ctx.jar,
58
+ form,
59
+ {},
60
+ );
61
+ if (res.data.errors) throw new Error(JSON.stringify(res.data.errors));
62
+ return res.data;
63
+ }
64
+
65
+ /**
66
+ * Uploads a new cover photo (ảnh bìa) for the logged-in user, then confirms it as the cover.
67
+ * @async
68
+ * @param {string} imagePath The local file path to the image to upload.
69
+ * @param {string} [profileID=ctx.userID] The profile ID. Defaults to the logged-in user.
70
+ * @param {{ x: number, y: number }} [focus] Optional focus point for cropping. Defaults to {x:0.5, y:0.5}.
71
+ * @param {Function} [callback] Optional callback function.
72
+ * @returns {Promise<Object>} A promise that resolves with { upload, set } data on success.
73
+ * @throws {Error} If the imagePath is missing, the file does not exist, or any step fails.
74
+ *
75
+ * @example
76
+ * await api.uploadCover('/path/to/cover.jpg');
77
+ * await api.uploadCover('/path/to/cover.jpg', '61588408996667');
78
+ * await api.uploadCover('/path/to/cover.jpg', ctx.userID, { x: 0.5, y: 0.3 });
79
+ */
80
+ return async function uploadCover(
81
+ imagePath: string,
82
+ profileID: string = ctx.userID,
83
+ focus = { x: 0.5, y: 0.5 },
84
+ callback?,
85
+ ): Promise<any> {
86
+ let resolveFunc: Function = function () { };
87
+ let rejectFunc: Function = function () { };
88
+
89
+ const returnPromise = new Promise<any>(function (resolve, reject) {
90
+ resolveFunc = resolve;
91
+ rejectFunc = reject;
92
+ });
93
+
94
+ callback =
95
+ callback ||
96
+ function (err, data) {
97
+ if (err) return rejectFunc(err);
98
+ resolveFunc(data);
99
+ };
100
+
101
+ try {
102
+ if (!imagePath) throw new Error('imagePath is required.');
103
+ if (typeof imagePath !== 'string')
104
+ throw new Error('imagePath must be a string.');
105
+ if (!fs.existsSync(imagePath))
106
+ throw new Error(`File not found: ${imagePath}`);
107
+
108
+ // Step 1: Upload the photo
109
+ const photoStream = fs.createReadStream(imagePath);
110
+
111
+ const url = new URL('https://www.facebook.com/profile/cover/comet_upload/');
112
+ url.searchParams.append('profile_id', profileID);
113
+ url.searchParams.append('av', ctx.userID);
114
+ url.searchParams.append('__aaid', '0');
115
+ url.searchParams.append('__user', ctx.userID);
116
+ url.searchParams.append('__a', '1');
117
+ url.searchParams.append('fb_dtsg', ctx.fb_dtsg);
118
+ url.searchParams.append('jazoest', ctx.jazoest);
119
+ url.searchParams.append('lsd', ctx.lsd);
120
+
121
+ const uploadResponse = await utils.postFormData(
122
+ url.toString(),
123
+ ctx.jar,
124
+ { file: photoStream },
125
+ ctx.globalOptions,
126
+ ctx,
127
+ );
128
+
129
+ const uploadResult = JSON.parse(
130
+ uploadResponse.body.toString().replace(/^for \(;;\);/, ''),
131
+ );
132
+
133
+ if (uploadResult.error || uploadResult.errors) {
134
+ throw new Error(
135
+ JSON.stringify(uploadResult.error || uploadResult.errors),
136
+ );
137
+ }
138
+
139
+ const photoID =
140
+ uploadResult.payload?.fbid ||
141
+ uploadResult.payload?.photoID ||
142
+ uploadResult.payload?.photo_id ||
143
+ null;
144
+
145
+ if (!photoID) {
146
+ throw new Error('Upload succeeded but could not extract photo ID from response.');
147
+ }
148
+
149
+ // Step 2: Confirm as cover photo
150
+ const setResult = await setCoverPhoto(photoID, profileID, focus);
151
+
152
+ const result = {
153
+ success: true,
154
+ photoID: photoID,
155
+ upload: uploadResult,
156
+ set: setResult,
157
+ };
158
+
159
+ callback(null, result);
160
+ } catch (err) {
161
+ utils.error('uploadCover', err);
162
+ callback(err);
163
+ }
164
+
165
+ return returnPromise;
166
+ };
167
+ }