@cexy/hoonfca 1.0.7 → 2.0.1

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 (191) hide show
  1. package/LICENSE +3 -0
  2. package/examples/login-with-cookies.js +102 -0
  3. package/examples/verify.js +70 -0
  4. package/index.js +2 -8
  5. package/package.json +82 -61
  6. package/src/{api/action → apis}/addExternalModule.js +24 -25
  7. package/src/apis/addUserToGroup.js +108 -0
  8. package/src/apis/changeAdminStatus.js +148 -0
  9. package/src/apis/changeArchivedStatus.js +61 -0
  10. package/src/apis/changeAvatar.js +103 -0
  11. package/src/apis/changeBio.js +69 -0
  12. package/src/apis/changeBlockedStatus.js +54 -0
  13. package/src/apis/changeGroupImage.js +136 -0
  14. package/src/apis/changeThreadColor.js +116 -0
  15. package/src/apis/changeThreadEmoji.js +53 -0
  16. package/src/apis/comment.js +207 -0
  17. package/src/apis/createAITheme.js +129 -0
  18. package/src/apis/createNewGroup.js +79 -0
  19. package/src/apis/createPoll.js +73 -0
  20. package/src/apis/deleteMessage.js +44 -0
  21. package/src/apis/deleteThread.js +52 -0
  22. package/src/apis/e2ee.js +17 -0
  23. package/src/apis/editMessage.js +70 -0
  24. package/src/apis/emoji.js +124 -0
  25. package/src/apis/fetchThemeData.js +82 -0
  26. package/src/apis/follow.js +81 -0
  27. package/src/apis/forwardMessage.js +52 -0
  28. package/src/apis/friend.js +243 -0
  29. package/src/apis/gcmember.js +122 -0
  30. package/src/apis/gcname.js +123 -0
  31. package/src/apis/gcrule.js +119 -0
  32. package/src/apis/getAccess.js +111 -0
  33. package/src/apis/getBotInfo.js +88 -0
  34. package/src/apis/getBotInitialData.js +43 -0
  35. package/src/apis/getFriendsList.js +79 -0
  36. package/src/apis/getMessage.js +423 -0
  37. package/src/apis/getTheme.js +95 -0
  38. package/src/apis/getThemeInfo.js +116 -0
  39. package/src/apis/getThreadHistory.js +239 -0
  40. package/src/apis/getThreadInfo.js +267 -0
  41. package/src/apis/getThreadList.js +232 -0
  42. package/src/apis/getThreadPictures.js +58 -0
  43. package/src/apis/getUserID.js +117 -0
  44. package/src/apis/getUserInfo.js +513 -0
  45. package/src/{api/users → apis}/getUserInfoV2.js +146 -134
  46. package/src/apis/handleMessageRequest.js +50 -0
  47. package/src/apis/httpGet.js +63 -0
  48. package/src/apis/httpPost.js +89 -0
  49. package/src/apis/httpPostFormData.js +69 -0
  50. package/src/apis/listenMqtt.js +1236 -0
  51. package/src/apis/listenSpeed.js +179 -0
  52. package/src/apis/logout.js +87 -0
  53. package/src/apis/markAsDelivered.js +47 -0
  54. package/src/{api/messaging → apis}/markAsRead.js +99 -88
  55. package/src/apis/markAsReadAll.js +40 -0
  56. package/src/apis/markAsSeen.js +70 -0
  57. package/src/apis/mqttDeltaValue.js +278 -0
  58. package/src/apis/muteThread.js +45 -0
  59. package/src/apis/nickname.js +132 -0
  60. package/src/apis/notes.js +163 -0
  61. package/src/apis/pinMessage.js +150 -0
  62. package/src/apis/produceMetaTheme.js +180 -0
  63. package/src/apis/realtime.js +182 -0
  64. package/src/apis/removeUserFromGroup.js +117 -0
  65. package/src/apis/resolvePhotoUrl.js +58 -0
  66. package/src/apis/searchForThread.js +154 -0
  67. package/src/apis/sendMessage.js +354 -0
  68. package/src/apis/sendMessageMqtt.js +249 -0
  69. package/src/apis/sendTypingIndicator.js +91 -0
  70. package/src/apis/setMessageReaction.js +27 -0
  71. package/src/apis/setMessageReactionMqtt.js +61 -0
  72. package/src/apis/setThreadTheme.js +260 -0
  73. package/src/apis/setThreadThemeMqtt.js +94 -0
  74. package/src/apis/share.js +107 -0
  75. package/src/apis/shareContact.js +66 -0
  76. package/src/apis/stickers.js +257 -0
  77. package/src/apis/story.js +181 -0
  78. package/src/apis/theme.js +233 -0
  79. package/src/apis/unfriend.js +47 -0
  80. package/src/apis/unsendMessage.js +17 -0
  81. package/src/engine/client.js +92 -0
  82. package/src/engine/models/buildAPI.js +152 -0
  83. package/src/engine/models/loginHelper.js +519 -0
  84. package/src/engine/models/setOptions.js +88 -0
  85. package/src/security/e2ee.js +109 -0
  86. package/src/types/index.d.ts +498 -0
  87. package/src/utils/antiSuspension.js +506 -0
  88. package/src/utils/auth-helpers.js +149 -0
  89. package/src/utils/autoReLogin.js +336 -0
  90. package/src/utils/axios.js +436 -0
  91. package/src/utils/cache.js +54 -0
  92. package/src/utils/clients.js +282 -0
  93. package/src/utils/constants.js +410 -23
  94. package/src/utils/formatters/data/formatAttachment.js +370 -0
  95. package/src/utils/formatters/data/formatDelta.js +109 -0
  96. package/src/utils/formatters/index.js +159 -0
  97. package/src/utils/formatters/value/formatCookie.js +91 -0
  98. package/src/utils/formatters/value/formatDate.js +36 -0
  99. package/src/utils/formatters/value/formatID.js +16 -0
  100. package/src/utils/formatters.js +1373 -0
  101. package/src/utils/headers.js +214 -99
  102. package/src/utils/index.js +153 -0
  103. package/src/utils/monitoring.js +333 -0
  104. package/src/utils/rateLimiter.js +319 -0
  105. package/src/utils/tokenRefresh.js +657 -0
  106. package/src/utils/user-agents.js +238 -0
  107. package/src/utils/validation.js +157 -0
  108. package/CHANGELOG.md +0 -181
  109. package/DOCS.md +0 -2636
  110. package/LICENSE-MIT +0 -21
  111. package/README.md +0 -632
  112. package/func/checkUpdate.js +0 -233
  113. package/func/logger.js +0 -48
  114. package/index.d.ts +0 -746
  115. package/module/config.js +0 -67
  116. package/module/login.js +0 -154
  117. package/module/loginHelper.js +0 -1034
  118. package/module/options.js +0 -54
  119. package/src/api/action/changeAvatar.js +0 -137
  120. package/src/api/action/changeBio.js +0 -75
  121. package/src/api/action/enableAutoSaveAppState.js +0 -73
  122. package/src/api/action/getCurrentUserID.js +0 -7
  123. package/src/api/action/handleFriendRequest.js +0 -57
  124. package/src/api/action/logout.js +0 -76
  125. package/src/api/action/refreshFb_dtsg.js +0 -48
  126. package/src/api/action/setPostReaction.js +0 -106
  127. package/src/api/action/unfriend.js +0 -54
  128. package/src/api/http/httpGet.js +0 -46
  129. package/src/api/http/httpPost.js +0 -52
  130. package/src/api/http/postFormData.js +0 -47
  131. package/src/api/messaging/addUserToGroup.js +0 -68
  132. package/src/api/messaging/changeAdminStatus.js +0 -122
  133. package/src/api/messaging/changeArchivedStatus.js +0 -55
  134. package/src/api/messaging/changeBlockedStatus.js +0 -48
  135. package/src/api/messaging/changeGroupImage.js +0 -90
  136. package/src/api/messaging/changeNickname.js +0 -70
  137. package/src/api/messaging/changeThreadColor.js +0 -79
  138. package/src/api/messaging/changeThreadEmoji.js +0 -106
  139. package/src/api/messaging/createNewGroup.js +0 -88
  140. package/src/api/messaging/createPoll.js +0 -43
  141. package/src/api/messaging/createThemeAI.js +0 -98
  142. package/src/api/messaging/deleteMessage.js +0 -56
  143. package/src/api/messaging/deleteThread.js +0 -56
  144. package/src/api/messaging/editMessage.js +0 -68
  145. package/src/api/messaging/forwardAttachment.js +0 -51
  146. package/src/api/messaging/getEmojiUrl.js +0 -29
  147. package/src/api/messaging/getFriendsList.js +0 -82
  148. package/src/api/messaging/getMessage.js +0 -829
  149. package/src/api/messaging/getThemePictures.js +0 -62
  150. package/src/api/messaging/handleMessageRequest.js +0 -65
  151. package/src/api/messaging/markAsDelivered.js +0 -57
  152. package/src/api/messaging/markAsReadAll.js +0 -49
  153. package/src/api/messaging/markAsSeen.js +0 -61
  154. package/src/api/messaging/muteThread.js +0 -50
  155. package/src/api/messaging/removeUserFromGroup.js +0 -106
  156. package/src/api/messaging/resolvePhotoUrl.js +0 -43
  157. package/src/api/messaging/scheduler.js +0 -264
  158. package/src/api/messaging/searchForThread.js +0 -52
  159. package/src/api/messaging/sendMessage.js +0 -272
  160. package/src/api/messaging/sendTypingIndicator.js +0 -67
  161. package/src/api/messaging/setMessageReaction.js +0 -76
  162. package/src/api/messaging/setTitle.js +0 -119
  163. package/src/api/messaging/shareContact.js +0 -49
  164. package/src/api/messaging/threadColors.js +0 -128
  165. package/src/api/messaging/unsendMessage.js +0 -81
  166. package/src/api/messaging/uploadAttachment.js +0 -94
  167. package/src/api/socket/core/connectMqtt.js +0 -255
  168. package/src/api/socket/core/emitAuth.js +0 -106
  169. package/src/api/socket/core/getSeqID.js +0 -40
  170. package/src/api/socket/core/getTaskResponseData.js +0 -22
  171. package/src/api/socket/core/markDelivery.js +0 -12
  172. package/src/api/socket/core/parseDelta.js +0 -391
  173. package/src/api/socket/detail/buildStream.js +0 -208
  174. package/src/api/socket/detail/constants.js +0 -24
  175. package/src/api/socket/listenMqtt.js +0 -364
  176. package/src/api/socket/middleware/index.js +0 -216
  177. package/src/api/threads/getThreadHistory.js +0 -664
  178. package/src/api/threads/getThreadInfo.js +0 -438
  179. package/src/api/threads/getThreadList.js +0 -293
  180. package/src/api/threads/getThreadPictures.js +0 -78
  181. package/src/api/users/getUserID.js +0 -65
  182. package/src/api/users/getUserInfo.js +0 -327
  183. package/src/core/sendReqMqtt.js +0 -96
  184. package/src/database/models/index.js +0 -87
  185. package/src/database/models/thread.js +0 -45
  186. package/src/database/models/user.js +0 -46
  187. package/src/database/threadData.js +0 -98
  188. package/src/database/userData.js +0 -89
  189. package/src/utils/client.js +0 -320
  190. package/src/utils/format.js +0 -1115
  191. package/src/utils/request.js +0 -305
package/index.d.ts DELETED
@@ -1,746 +0,0 @@
1
- declare module '@dongdev/fca-unofficial' {
2
- import type EventEmitter from "events";
3
- import type { Duplex, Readable, Transform } from "stream";
4
-
5
- // ============================================================================
6
- // Type Definitions
7
- // ============================================================================
8
-
9
- type ReadableStream = Readable | Duplex | Transform;
10
-
11
- // ============================================================================
12
- // Login Function
13
- // ============================================================================
14
-
15
- function login(
16
- credentials: Partial<{
17
- email: string;
18
- password: string;
19
- appState: AppstateData;
20
- Cookie?: string | string[] | Record<string, string>;
21
- }>,
22
- options: Partial<IFCAU_Options>,
23
- callback: (err: Error | null, api: IFCAU_API) => void
24
- ): void;
25
- function login(
26
- credentials: Partial<{
27
- email: string;
28
- password: string;
29
- appState: AppstateData;
30
- Cookie?: string | string[] | Record<string, string>;
31
- }>,
32
- options: Partial<IFCAU_Options>
33
- ): Promise<IFCAU_API>;
34
- function login(
35
- credentials: Partial<{
36
- email: string;
37
- password: string;
38
- appState: AppstateData;
39
- Cookie?: string | string[] | Record<string, string>;
40
- }>,
41
- callback: (err: Error | null, api: IFCAU_API) => void
42
- ): void;
43
- function login(
44
- credentials: Partial<{
45
- email: string;
46
- password: string;
47
- appState: AppstateData;
48
- Cookie?: string | string[] | Record<string, string>;
49
- }>
50
- ): Promise<IFCAU_API>;
51
-
52
- export default login;
53
- export { login };
54
-
55
- // ============================================================================
56
- // Core Types
57
- // ============================================================================
58
-
59
- export type Cookie = {
60
- key: string;
61
- value: string;
62
- domain: string;
63
- path?: string;
64
- hostOnly?: boolean;
65
- creation?: string;
66
- lastAccessed?: string;
67
- };
68
-
69
- export type AppstateData = {
70
- appState: Cookie[];
71
- };
72
-
73
- export type MessageObject = {
74
- body: string;
75
- sticker?: string;
76
- attachment?: ReadableStream | ReadableStream[];
77
- url?: string;
78
- emoji?: string;
79
- emojiSize?: string;
80
- mentions?: {
81
- tag: string;
82
- id: string;
83
- fromIndex?: number;
84
- }[];
85
- location?: {
86
- latitude: number;
87
- longitude: number;
88
- current?: boolean;
89
- };
90
- };
91
-
92
- // ============================================================================
93
- // Send Message Function
94
- // ============================================================================
95
-
96
- function sendMessage(
97
- message: string | MessageObject,
98
- threadID: string | string[],
99
- callback?: (err?: Error, data?: { threadID: string; messageID: string; timestamp: number }) => void,
100
- replyMessageID?: string,
101
- isGroup?: boolean
102
- ): Promise<{ threadID: string; messageID: string; timestamp: number }>;
103
- function sendMessage(
104
- message: string | MessageObject,
105
- threadID: string | string[],
106
- replyMessageID?: string,
107
- isGroup?: boolean
108
- ): Promise<{ threadID: string; messageID: string; timestamp: number }>;
109
-
110
- // ============================================================================
111
- // API Interface
112
- // ============================================================================
113
-
114
- export type IFCAU_API = {
115
- // Group Management
116
- addUserToGroup: (userID: string, threadID: string, callback?: (err?: Error) => void) => Promise<void>;
117
- removeUserFromGroup: (userID: string, threadID: string, callback?: (err?: Error) => void) => Promise<void>;
118
- createNewGroup: (participantIDs: string[], groupTitle?: string, callback?: (err: Error, threadID: string) => void) => Promise<string>;
119
-
120
- // Admin & Permissions
121
- changeAdminStatus: (threadID: string, adminIDs: string | string[], adminStatus: boolean, callback?: (err?: Error) => void) => Promise<void>;
122
- changeApprovalMode: (approvalMode: 0 | 1, threadID: string, callback?: (err?: Error) => void) => Promise<void>;
123
-
124
- // Thread Management
125
- changeArchivedStatus: (threadOrThreads: string | string[], archive: boolean, callback?: (err?: Error) => void) => Promise<void>;
126
- changeBlockedStatus: (userID: string, blocked: boolean, callback?: (err?: Error) => void) => Promise<void>;
127
- changeGroupImage: (image: ReadableStream, threadID: string, callback?: (err?: Error) => void) => Promise<void>;
128
- changeNickname: (nickname: string, threadID: string, participantID: string, callback?: (err?: Error) => void) => Promise<void>;
129
- changeThreadColor: (color: string, threadID: string, callback?: (err?: Error) => void) => Promise<void>;
130
- changeThreadEmoji: (emoji: string | null, threadID: string, callback?: (err?: Error) => void) => Promise<void>;
131
- setTitle: (newTitle: string, threadID: string, callback?: (err?: Error) => void) => Promise<void>;
132
- deleteThread: (threadOrThreads: string | string[], callback?: (err?: Error) => void) => Promise<void>;
133
- muteThread: (threadID: string, muteSeconds: number, callback?: (err?: Error) => void) => Promise<void>;
134
-
135
- // Messages
136
- sendMessage: typeof sendMessage;
137
- editMessage: (text: string, messageID: string, callback?: (err?: Error) => void) => Promise<void>;
138
- deleteMessage: (messageOrMessages: string | string[], callback?: (err?: Error) => void) => Promise<void>;
139
- unsendMessage: (messageID: string, callback?: (err?: Error) => void) => Promise<void>;
140
- unsendMessageMqtt: (messageID: string, threadID: string, callback?: (err?: Error) => void) => Promise<void>;
141
- forwardMessage: (messageID: string, threadID: string, callback?: (err?: Error) => void) => Promise<void>;
142
- forwardAttachment: (attachmentID: string, userOrUsers: string | string[], callback?: (err?: Error) => void) => Promise<void>;
143
- pinMessage: (pinMode: boolean, messageID: string, threadID: string, callback?: (err?: Error) => void) => Promise<void>;
144
-
145
- // Reactions & Interactions
146
- setMessageReaction: (reaction: string, messageID: string, callback?: (err?: Error) => void, forceCustomReaction?: boolean) => Promise<void>;
147
- setMessageReactionMqtt: (reaction: string, messageID: string, threadID: string, callback?: (err?: Error) => void) => Promise<void>;
148
- sendTypingIndicator: (threadID: string, callback?: (err?: Error) => void) => Promise<void>;
149
- sendTypingIndicatorMqtt: (isTyping: boolean, threadID: string, callback?: (err?: Error) => void) => Promise<void>;
150
-
151
- // Polls
152
- createPoll: (title: string, threadID: string, options?: { [item: string]: boolean }, callback?: (err?: Error) => void) => Promise<void>;
153
-
154
- // Read & Delivery Status
155
- markAsRead: (threadID: string, read?: boolean, callback?: (err?: Error) => void) => Promise<void>;
156
- markAsReadAll: (callback?: (err?: Error) => void) => Promise<void>;
157
- markAsDelivered: (threadID: string, messageID: string, callback?: (err?: Error) => void) => Promise<void>;
158
- markAsSeen: (seenTimestamp?: number, callback?: (err?: Error) => void) => Promise<void>;
159
-
160
- // Thread Information
161
- getThreadInfo: (threadID: string, callback?: (err: Error | null, thread: IFCAU_Thread) => void) => Promise<IFCAU_Thread>;
162
- getThreadList: (limit: number, timestamp: number | null, tags: string[], callback?: (err: Error | null, threads: IFCAU_ThreadList) => void) => Promise<IFCAU_ThreadList>;
163
- getThreadHistory: (threadID: string, amount: number, time?: number, callback?: (err: Error | null, messages: any[]) => void) => Promise<any[]>;
164
- getThreadPictures: (threadID: string, offset: number, limit: number, callback?: (err: Error | null, pictures: string[]) => void) => Promise<string[]>;
165
-
166
- // User Information
167
- getUserInfo: (userOrUsers: string | string[], callback?: (err: Error | null, users: { [id: string]: IFCAU_User }) => void) => Promise<{ [id: string]: IFCAU_User }>;
168
- getUserID: (name: string, callback?: (err: Error | null, obj: IFCAU_UserIDResponse) => void) => Promise<IFCAU_UserIDResponse>;
169
- getFriendsList: (callback?: (err: Error | null, friends: IFCAU_Friend[]) => void) => Promise<IFCAU_Friend[]>;
170
- getCurrentUserID: () => string;
171
-
172
- // Utilities
173
- getAppState: () => any;
174
- getEmojiUrl: (c: string, size: number, pixelRatio: number) => string;
175
- resolvePhotoUrl: (photoID: string, callback?: (err: Error | null, url: string) => void) => Promise<string>;
176
- threadColors: {
177
- [color: string]: string;
178
- };
179
-
180
- // Message Requests
181
- handleMessageRequest: (threadOrThreads: string | string[], accept: boolean, callback?: (err?: Error) => void) => Promise<void>;
182
-
183
- // Event Listeners
184
- listen: (callback?: (err: Error | null, message: IFCAU_ListenMessage) => void) => EventEmitter;
185
- listenMqtt: (callback?: (err: Error | null, message: IFCAU_ListenMessage) => void) => EventEmitter & { stopListening: (callback?: () => void) => void };
186
-
187
- // Middleware System
188
- useMiddleware: (middleware: IFCAU_Middleware | string, fn?: IFCAU_Middleware) => () => void;
189
- removeMiddleware: (identifier: string | IFCAU_Middleware) => boolean;
190
- clearMiddleware: () => void;
191
- listMiddleware: () => string[];
192
- setMiddlewareEnabled: (name: string, enabled: boolean) => boolean;
193
- readonly middlewareCount: number;
194
-
195
- // Configuration & Session
196
- setOptions: (options: Partial<IFCAU_Options>) => void;
197
- logout: (callback?: (err?: Error) => void) => Promise<void>;
198
-
199
- // Message Scheduler
200
- scheduler: {
201
- scheduleMessage: (message: string | MessageObject, threadID: string | string[], when: Date | number | string, options?: { replyMessageID?: string; isGroup?: boolean; callback?: (err?: Error) => void }) => string;
202
- cancelScheduledMessage: (id: string) => boolean;
203
- getScheduledMessage: (id: string) => IFCAU_ScheduledMessage | null;
204
- listScheduledMessages: () => IFCAU_ScheduledMessage[];
205
- cancelAllScheduledMessages: () => number;
206
- getScheduledCount: () => number;
207
- cleanup: () => void;
208
- };
209
-
210
- // Auto-save AppState
211
- enableAutoSaveAppState: (options?: { filePath?: string; interval?: number; saveOnLogin?: boolean }) => () => void;
212
- };
213
-
214
- // ============================================================================
215
- // Listen Message Types
216
- // ============================================================================
217
-
218
- export type IFCAU_ListenMessage =
219
- | {
220
- type: "message";
221
- attachments: IFCAU_Attachment[];
222
- args: string[];
223
- body: string;
224
- isGroup: boolean;
225
- mentions: { [id: string]: string };
226
- messageID: string;
227
- senderID: string;
228
- threadID: string;
229
- isUnread: boolean;
230
- participantIDs: string[];
231
- }
232
- | {
233
- type: "event";
234
- author: string;
235
- logMessageBody: string;
236
- logMessageData: {
237
- image: {
238
- attachmentID: string;
239
- width: number;
240
- height: number;
241
- url: string;
242
- };
243
- };
244
- logMessageType: "log:thread-image";
245
- threadID: string;
246
- }
247
- | {
248
- type: "event";
249
- author: string;
250
- logMessageBody: string;
251
- logMessageData: {
252
- addedParticipants: {
253
- fanoutPolicy: string;
254
- firstName: string;
255
- fullName: string;
256
- groupJoinStatus: string;
257
- initialFolder: string;
258
- initialFolderId: {
259
- systemFolderId: string;
260
- };
261
- lastUnsubscribeTimestampMs: string;
262
- userFbId: string;
263
- isMessengerUser: boolean;
264
- }[];
265
- };
266
- logMessageType: "log:subscribe";
267
- threadID: string;
268
- participantIDs: string[];
269
- }
270
- | {
271
- type: "event";
272
- author: string;
273
- logMessageBody: string;
274
- logMessageData: { leftParticipantFbId: string };
275
- logMessageType: "log:unsubscribe";
276
- threadID: string;
277
- participantIDs: string[];
278
- }
279
- | {
280
- type: "event";
281
- author: string;
282
- logMessageBody: string;
283
- logMessageData: { name: string };
284
- logMessageType: "log:thread-name";
285
- threadID: string;
286
- participantIDs: string[];
287
- }
288
- | {
289
- type: "event";
290
- author: string;
291
- logMessageBody: string;
292
- logMessageData: {
293
- theme_color: string;
294
- gradient?: string;
295
- should_show_icon: string;
296
- theme_id: string;
297
- accessibility_label: string;
298
- theme_name_with_subtitle: string;
299
- theme_emoji?: string;
300
- };
301
- logMessageType: "log:thread-color";
302
- threadID: string;
303
- participantIDs: string[];
304
- }
305
- | {
306
- type: "event";
307
- author: string;
308
- logMessageBody: string;
309
- logMessageData: {
310
- thread_quick_reaction_instruction_key_id: string;
311
- thread_quick_reaction_emoji: string;
312
- thread_quick_reaction_emoji_url: string;
313
- };
314
- logMessageType: "log:thread-icon";
315
- threadID: string;
316
- participantIDs: string[];
317
- }
318
- | {
319
- type: "event";
320
- author: string;
321
- logMessageBody: string;
322
- logMessageData: {
323
- nickname: string;
324
- participant_id: string;
325
- };
326
- logMessageType: "log:user-nickname";
327
- threadID: string;
328
- participantIDs: string[];
329
- }
330
- | {
331
- type: "event";
332
- author: string;
333
- logMessageBody: string;
334
- logMessageData: {
335
- THREAD_CATEGORY: string;
336
- TARGET_ID: string;
337
- ADMIN_TYPE: string;
338
- ADMIN_EVENT: 'add_admin' | 'remove_admin';
339
- };
340
- logMessageType: "log:thread-admins";
341
- threadID: string;
342
- participantIDs: string[];
343
- }
344
- | {
345
- type: "event";
346
- author: string;
347
- logMessageBody: string;
348
- logMessageData: {
349
- removed_option_ids: string;
350
- question_json: string;
351
- event_type: 'question_creation' | 'update_vote' | 'add_unvoted_option' | 'multiple_updates';
352
- added_option_ids: string;
353
- new_option_texts: string;
354
- new_option_ids: string;
355
- question_id: string;
356
- };
357
- logMessageType: "log:thread-poll";
358
- threadID: string;
359
- participantIDs: string[];
360
- }
361
- | {
362
- type: "event";
363
- author: string;
364
- logMessageBody: string;
365
- logMessageData: { APPROVAL_MODE: '0' | '1'; THREAD_CATEGORY: string };
366
- logMessageType: "log:thread-approval-mode";
367
- threadID: string;
368
- participantIDs: string[];
369
- }
370
- | {
371
- type: "event";
372
- author: string;
373
- logMessageBody: string;
374
- logMessageData: any;
375
- logMessageType: "log:thread-call";
376
- threadID: string;
377
- participantIDs: string[];
378
- }
379
- | {
380
- type: "typ";
381
- from: string;
382
- fromMobile: boolean;
383
- isTyping: boolean;
384
- threadID: string;
385
- }
386
- | {
387
- type: "read";
388
- threadID: string;
389
- time: number;
390
- }
391
- | {
392
- type: "read_receipt";
393
- reader: string;
394
- threadID: string;
395
- time: number;
396
- }
397
- | {
398
- type: "message_reaction";
399
- threadID: string;
400
- messageID: string;
401
- reaction: string;
402
- senderID: string;
403
- userID: string;
404
- reactionTimestamp: number;
405
- }
406
- | {
407
- type: "presence";
408
- statuses: number;
409
- timestamp: number;
410
- userID: string;
411
- }
412
- | {
413
- type: "message_unsend";
414
- threadID: string;
415
- senderID: string;
416
- messageID: string;
417
- deletionTimestamp: number;
418
- }
419
- | {
420
- type: "message_reply";
421
- attachments: IFCAU_Attachment[];
422
- args: string[];
423
- body: string;
424
- isGroup: boolean;
425
- mentions: { [id: string]: string };
426
- messageID: string;
427
- senderID: string;
428
- threadID: string;
429
- isUnread: boolean;
430
- participantIDs: string[];
431
- messageReply: {
432
- attachments: IFCAU_Attachment[];
433
- body: string;
434
- isGroup: boolean;
435
- mentions: { [id: string]: string };
436
- messageID: string;
437
- senderID: string;
438
- threadID: string;
439
- isUnread: boolean;
440
- };
441
- };
442
-
443
- // ============================================================================
444
- // Attachment Types
445
- // ============================================================================
446
-
447
- export type IFCAU_Attachment =
448
- | {
449
- type: "sticker";
450
- ID: string;
451
- url: string;
452
- packID: string;
453
- spriteUrl: string;
454
- spriteUrl2x: string;
455
- width: number;
456
- height: number;
457
- caption: string;
458
- description: string;
459
- frameCount: number;
460
- frameRate: number;
461
- framesPerRow: number;
462
- framesPerCol: number;
463
- }
464
- | {
465
- type: "file";
466
- ID: string;
467
- filename: string;
468
- url: string;
469
- isMalicious: boolean;
470
- contentType: string;
471
- }
472
- | {
473
- type: "photo";
474
- ID: string;
475
- filename: string;
476
- thumbnailUrl: string;
477
- previewUrl: string;
478
- previewWidth: number;
479
- previewHeight: number;
480
- largePreviewUrl: string;
481
- largePreviewWidth: number;
482
- largePreviewHeight: number;
483
- url: string;
484
- width: number;
485
- height: number;
486
- }
487
- | {
488
- type: "animated_image";
489
- ID: string;
490
- filename: string;
491
- previewUrl: string;
492
- previewWidth: number;
493
- previewHeight: number;
494
- url: string;
495
- width: number;
496
- height: number;
497
- }
498
- | {
499
- type: "video";
500
- ID: string;
501
- filename: string;
502
- previewUrl: string;
503
- previewWidth: number;
504
- previewHeight: number;
505
- url: string;
506
- width: number;
507
- height: number;
508
- duration: number;
509
- videoType: string;
510
- }
511
- | {
512
- type: "audio";
513
- ID: string;
514
- filename: string;
515
- audioType: string;
516
- duration: number;
517
- url: string;
518
- isVoiceMail: boolean;
519
- }
520
- | {
521
- type: "location";
522
- ID: string;
523
- latitude: number;
524
- longitude: number;
525
- image: string;
526
- width: number;
527
- height: number;
528
- url: string;
529
- address: string;
530
- }
531
- | {
532
- type: "share";
533
- ID: string;
534
- url: string;
535
- title: string;
536
- description: string;
537
- source: string;
538
- image: string;
539
- width: number;
540
- height: number;
541
- playable: boolean;
542
- duration: number;
543
- playableUrl: string;
544
- subattachments: any;
545
- properties: any;
546
- };
547
-
548
- // ============================================================================
549
- // User Types
550
- // ============================================================================
551
-
552
- export type IFCAU_User = {
553
- name: string;
554
- firstName?: string;
555
- vanity?: string;
556
- thumbSrc: string;
557
- profileUrl: string | null;
558
- gender?: number;
559
- type: string;
560
- isFriend?: boolean;
561
- isBirthday: boolean;
562
- searchToken: any;
563
- alternateName?: string;
564
- };
565
-
566
- export type IFCAU_UserIDResponse = {
567
- userID: string;
568
- photoUrl: string;
569
- indexRank: number;
570
- name: string;
571
- isVerified: boolean;
572
- profileUrl: string;
573
- category: string;
574
- score: number;
575
- type: string;
576
- }[];
577
-
578
- export type IFCAU_Friend = {
579
- alternativeName: string;
580
- firstName: string;
581
- gender: string;
582
- userID: string;
583
- isFriend: boolean;
584
- fullName: string;
585
- profilePicture: string;
586
- type: string;
587
- profileUrl: string;
588
- vanity: string;
589
- isBirthday: boolean;
590
- };
591
-
592
- // ============================================================================
593
- // Thread Types
594
- // ============================================================================
595
-
596
- export type IFCAU_Thread = {
597
- threadID: string;
598
- participantIDs: string[];
599
- threadName: string;
600
- userInfo: (IFCAU_User & { id: string })[];
601
- nicknames: { [id: string]: string } | null;
602
- unreadCount: number;
603
- messageCount: number;
604
- imageSrc: string;
605
- timestamp: number;
606
- muteUntil: number | null;
607
- isGroup: boolean;
608
- isSubscribed: boolean;
609
- folder: 'INBOX' | 'ARCHIVE' | string;
610
- isArchived: boolean;
611
- cannotReplyReason: string | null;
612
- lastReadTimestamp: number;
613
- emoji: string | null;
614
- color: string | null;
615
- adminIDs: string[];
616
- approvalMode: boolean;
617
- approvalQueue: { inviterID: string; requesterID: string; timestamp: string }[];
618
- };
619
-
620
- export type IFCAU_ThreadList = {
621
- threadID: string;
622
- name: string;
623
- unreadCount: number;
624
- messageCount: number;
625
- imageSrc: string;
626
- emoji: string | null;
627
- color: string | null;
628
- nicknames: { userid: string; nickname: string }[];
629
- muteUntil: number | null;
630
- participants: IFCAU_ThreadList_Participants[];
631
- adminIDs: string[];
632
- folder: "INBOX" | "ARCHIVED" | "PENNDING" | "OTHER" | string;
633
- isGroup: boolean;
634
- customizationEnabled: boolean;
635
- participantAddMode: string;
636
- reactionMuteMode: string;
637
- isArchived: boolean;
638
- isSubscribed: boolean;
639
- timestamp: number;
640
- snippet: string;
641
- snippetAttachments: string;
642
- snippetSender: string;
643
- lastMessageTimestamp: number;
644
- listReadTimestamp: number | null;
645
- cannotReplyReason: string | null;
646
- approvalMode: string;
647
- }[];
648
-
649
- export type IFCAU_ThreadList_Participants =
650
- | {
651
- accountType: "User";
652
- userID: string;
653
- name: string;
654
- shortName: string;
655
- gender: string;
656
- url: string;
657
- profilePicture: string;
658
- username: string | null;
659
- isViewerFriend: boolean;
660
- isMessengerUser: boolean;
661
- isVerified: boolean;
662
- isMessageBlockedByViewer: boolean;
663
- isViewerCoworker: boolean;
664
- }
665
- | {
666
- accountType: "Page";
667
- userID: string;
668
- name: string;
669
- url: string;
670
- profilePicture: string;
671
- username: string | null;
672
- acceptMessengerUserFeedback: boolean;
673
- isMessengerUser: boolean;
674
- isVerified: boolean;
675
- isMessengerPlatformBot: boolean;
676
- isMessageBlockedByViewer: boolean;
677
- }
678
- | {
679
- accountType: "ReducedMessagingActor";
680
- userID: string;
681
- name: string;
682
- url: string;
683
- profilePicture: string;
684
- username: string | null;
685
- acceptMessengerUserFeedback: boolean;
686
- isMessageBlockedByViewer: boolean;
687
- }
688
- | {
689
- accountType: "UnavailableMessagingActor";
690
- userID: string;
691
- name: string;
692
- url: null;
693
- profilePicture: string;
694
- username: null;
695
- acceptMessengerUserFeedback: boolean;
696
- isMessageBlockedByViewer: boolean;
697
- }
698
- | {
699
- accountType: string;
700
- userID: string;
701
- name: string;
702
- };
703
-
704
- // ============================================================================
705
- // Middleware Types
706
- // ============================================================================
707
-
708
- export type IFCAU_Middleware = (event: IFCAU_ListenMessage, next: (err?: Error | false | null) => void) => void | Promise<void> | false | null;
709
-
710
- // ============================================================================
711
- // Scheduler Types
712
- // ============================================================================
713
-
714
- export type IFCAU_ScheduledMessage = {
715
- id: string;
716
- message: string | MessageObject;
717
- threadID: string | string[];
718
- timestamp: number;
719
- createdAt: number;
720
- options: {
721
- replyMessageID?: string;
722
- isGroup?: boolean;
723
- callback?: (err?: Error) => void;
724
- };
725
- timeUntilSend: number;
726
- };
727
-
728
- // ============================================================================
729
- // Options Type
730
- // ============================================================================
731
-
732
- export type IFCAU_Options = {
733
- pauseLog: boolean;
734
- logLevel: "silly" | "verbose" | "info" | "http" | "warn" | "error" | "silent";
735
- selfListen: boolean;
736
- listenEvents: boolean;
737
- pageID: string;
738
- updatePresence: boolean;
739
- forceLogin: boolean;
740
- userAgent: string;
741
- autoMarkDelivery: boolean;
742
- autoMarkRead: boolean;
743
- proxy: string;
744
- online: boolean;
745
- };
746
- }