hridoy-ultimate 9.0.0 → 9.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/CHANGELOG.md +346 -69
  2. package/{docs/UPSTREAM_API_DOCS.md → DOCS.md} +3 -3
  3. package/README.md +536 -161
  4. package/func/checkUpdate.js +1 -0
  5. package/index.d.ts +13 -74
  6. package/index.js +0 -6
  7. package/module/config.js +2 -5
  8. package/module/login.js +1 -2
  9. package/module/loginHelper.js +9 -41
  10. package/module/options.js +6 -6
  11. package/package.json +44 -39
  12. package/src/api/action/logout.js +0 -19
  13. package/src/api/messaging/sendMessage.js +1 -1
  14. package/src/api/messaging/sessionGuard.js +8 -0
  15. package/src/api/messaging/setMessageReaction.js +2 -7
  16. package/src/api/socket/core/connectMqtt.js +72 -99
  17. package/src/api/socket/core/emitAuth.js +17 -9
  18. package/src/api/socket/e2ee/index.js +15 -33
  19. package/src/api/socket/e2ee/native/NOTICE.md +2 -2
  20. package/src/api/socket/e2ee/native/lib/index.mjs +1 -2
  21. package/src/api/socket/e2ee/native/nativeMediaBridge.js +4 -4
  22. package/src/api/socket/listenE2EE.js +1 -3
  23. package/src/api/socket/listenMqtt.js +60 -67
  24. package/src/utils/antiSuspension.js +3 -3
  25. package/src/utils/fingerprint.js +35 -16
  26. package/src/utils/headers.js +1 -1
  27. package/src/utils/versionCheck.js +47 -0
  28. package/LICENSE +0 -23
  29. package/MERGE_REPORT.md +0 -54
  30. package/THIRD_PARTY_NOTICES.md +0 -36
  31. package/docs/TEST_RESULTS.md +0 -68
  32. package/scripts/run-tests.js +0 -19
  33. package/scripts/syntax-check.js +0 -22
  34. package/src/api/socket/core/lifecycle.js +0 -117
  35. package/src/api/socket/e2ee/proto/proto-writer.ts +0 -76
  36. package/src/utils/typingIndicator.js +0 -202
  37. package/test/helpers/stub-modules.js +0 -122
  38. package/test/integration/logout.test.js +0 -69
  39. package/test/integration/mqtt-lifecycle.test.js +0 -195
  40. package/test/integration/package.test.js +0 -116
  41. package/test/integration/typing-wiring.test.js +0 -71
  42. package/test/unit/fingerprint.test.js +0 -19
  43. package/test/unit/humanizer.test.js +0 -32
  44. package/test/unit/lifecycle.test.js +0 -92
  45. package/test/unit/parsers.test.js +0 -43
  46. package/test/unit/typing.test.js +0 -136
package/CHANGELOG.md CHANGED
@@ -1,71 +1,348 @@
1
1
  # Changelog
2
2
 
3
- ## 9.0.0 - hridoy-ultimate (merge of 83 analysed builds)
4
-
5
- Base: hridoy-ultimate 8.0.5 (`fca.zip`), plus fixes taken from the `@eryxenx/fca` 1.0.0-1.1.9,
6
- `fca-eryxenx` 1.x-39.x lines (see `MERGE_REPORT.md` for the per-fix source versions).
7
-
8
- ### Added
9
- - **Typing indicator, default ON** (`src/utils/typingIndicator.js`): shows typing when a
10
- command-like message arrives, clears it when the reply is sent or after 8 s; zero added
11
- latency; MQTT and E2EE threads. Options `typingIndicator: false | {...}`,
12
- `api.getTypingIndicator()`, `api.setTypingIndicator()`, `api.withTyping()`.
13
- - `messagix.so` / `messagix.dll` bundled in `src/api/socket/e2ee/native/build/` (SHA-256 pinned
14
- in a test and in `THIRD_PARTY_NOTICES.md`). Enabling needs only `FCA_E2EE_NATIVE=1`; the
15
- engine stays opt-in because it kicks the vendored engine's socket (same E2EE device).
16
- - `MERGE_REPORT.md`, `THIRD_PARTY_NOTICES.md` (both were listed in `files` but missing).
17
- - 10 typing tests, fingerprint test, pinned-binary package test.
18
-
19
- ### Fixed
20
- - `setMessageReaction` no longer falls back to the bogus thread id `"0"`; it rejects with a
21
- clear error when the thread cannot be resolved.
22
- - Chrome fingerprint pool refreshed to 149.0.7827.102 / 151.0.7922.75 (was Chrome 131-135).
23
- The User-Agent is now the reduced `Chrome/<major>.0.0.0` form real Chrome sends; the full
24
- build stays in `Sec-CH-UA-Full-Version-List` (client hints derived from the same fingerprint).
25
- - `index.d.ts`: `sendTypingIndicator` had the wrong signature; 23 previously undeclared API methods
26
- and the `humanize` / `typingIndicator` options are now declared.
27
- - Logout / stopListening clear typing timers.
28
-
29
- ## 8.0.5 - hridoy-ultimate (first release under this name)
30
-
31
- Built by merging the eryxenx-fca 1.0.0 - 1.1.9 lineage. Base tree: 1.1.9, with
32
- `module/loginHelper.js` from 1.1.8 (1.1.9 regressed it).
33
-
34
- ### Security
35
- - Removed the hard-coded third-party credential-login host; `apiServer` is now empty by
36
- default and credential login refuses to run without one explicitly configured.
37
- - Removed unverifiable prebuilt native binaries (messagix .so/.dll). Native E2EE engine is
38
- opt-in (`FCA_E2EE_NATIVE=1` + `FCA_E2EE_NATIVE_LIB`).
39
- - `autoUpdate` default is now `false` (it was an inert stub upstream).
40
-
41
- ### Fixed
42
- - Pending reconnect / getSeqID retry timers could revive the listener after `stopListening()`
43
- (reproduced on 1.1.9: 30 `getSeqID` calls after stop). Timers are now tracked and
44
- gated by a `_stopped` flag.
45
- - Reconnect used a fixed 2 s delay forever. Now bounded exponential backoff with jitter,
46
- attempt budget (default 10) and a `stop_listen` event when exhausted.
47
- - Calling listen twice left two live MQTT clients; the old client is now replaced.
48
- - Events from stale/replaced clients are ignored.
49
- - Late socket `error` after cleanup could throw (EventEmitter with no error handler).
50
- - Sync queue is published after SUBACKs instead of immediately after subscribe.
51
- - `logout()` now stops MQTT, disconnects E2EE and clears all timers.
52
- - `emitAuth` now clears heartbeat / session-keeper / dtsg timers.
53
- - Session keeper no longer re-arms after stop; heartbeat no longer fights a pending backoff.
54
- - Undeclared dependencies (`request`, `tough-cookie`, `form-data`, `undici`) are declared.
55
- - `index.d.ts` declared the wrong module name and had an `IFCAU_Api` typo.
56
- - Silent `.catch(() => {})` on E2EE disconnect now logs.
57
-
58
- ### Changed (defaults)
59
- - Humanizer (reply delay + command cooldown) is opt-in: `humanize: true`.
60
- - Native E2EE engine is opt-in (reverts 1.0.8 default-on).
61
- - `t_ms` wait 5 s -> 8 s, MQTT connect timeout 5 s -> 12 s (configurable).
62
- - Node >= 18 required.
63
-
64
- ### Added
65
- - `api.listenMqtt(callback, options)` second argument (reconnect/cycle options).
66
- - Test suite (36 tests), `scripts/run-tests.js`, `scripts/syntax-check.js`.
67
- - Docs: README, MERGE_REPORT, THIRD_PARTY_NOTICES, upstream API docs in `docs/`.
68
-
69
- ### Removed
70
- - `cheerio`, `totp-generator`, `@noble/curves`, `@noble/hashes` (unused in source).
71
- - Bogus `versionCheck` update notice (it compared against an unrelated npm package).
3
+ All notable changes to this project are documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html) where applicable.
6
+
7
+ ---
8
+
9
+ ## [9.0.2] - 2026-10-22
10
+
11
+ ### Session stability
12
+
13
+ - Browser fingerprint (Chrome build) is now saved to `data/session/fca-fingerprint.json` and reused after restarts. Before, every restart picked a new random UA = "new browser" each time.
14
+ - Login no longer swaps the User-Agent to a hardcoded Chrome/125 in the middle of a session; it warns instead.
15
+ - Default `Accept-Language` is `en-US,en;q=0.9` (was `vi`), configurable with the new `acceptLanguage` option; HTTP and MQTT use the same value.
16
+ - Fewer requests: session keeper every ~6h (was ~90 min), lower send caps (warmup 20/h, 120/h, 800/day).
17
+ - `sessionGuard` also saves the cookie jar when the process exits.
18
+
19
+ ---
20
+
21
+ ## [9.0.1] - 2026-10-17
22
+
23
+ ### Rebrand
24
+
25
+ - Package name: `hridoy-ultimate`
26
+ - Owner: HR ID OY (https://github.com/hridoyhossen48360)
27
+ - Version: 9.0.1
28
+ - Branding/text only — no source files were removed or functionally changed
29
+
30
+ ---
31
+
32
+ ## [4.0.0] - 2026-06-10
33
+
34
+ ### Major — NEXCA Engine Integration
35
+
36
+ - **MQTT**: nexca v1.4.11 এর `listenMqtt.js` দিয়ে replace — better stability, autoReconnect, jitter
37
+ - **E2EE**: Signal Protocol encrypted conversations support (`api.connectE2EE()`, `api.listenE2EE()`, `api.e2ee.*`)
38
+ - **sessionGuard**: appstate auto-save every 3min, corruption guard, auto-backup (`api.sessionGuard()`)
39
+ - **sendBroadcast**: rate-limited multi-thread broadcast (`api.sendBroadcast(msg, threadIDs, opts)`)
40
+ - **sendMessage**: nexca version (MQTT-first + HTTP fallback, better attachment handling)
41
+ - **OldMessage**: nexca HTTP-only send, `sendMessageDM` shorthand
42
+ - All hridoy-ultimate API files preserved (GoatBot compatible signatures)
43
+ - Copyright: hridoy-ultimate by HR ID OY
44
+
45
+ ---
46
+
47
+ ## [3.1.0] - 2026-06-09
48
+
49
+ ### Fixed (MQTT stability — account safety)
50
+
51
+ - **`connectMqtt.js`: `isActiveClient()` guard added** — stale/previous MQTT client এর events আর process হবে না। Multiple reconnect race condition বন্ধ।
52
+ - **`connectMqtt.js`: Subscribe → wait SUBACK → then publish** — আগে `topics.forEach(subscribe)` করে immediately publish হতো। Facebook এটাকে invalid sequence ধরে "Connection refused: No subscription existed" দিয়ে socket বন্ধ করত। এখন callback-based subscribe দিয়ে SUBACK পাওয়ার পরেই publish।
53
+ - **`connectMqtt.js`: `connectTimeout` 5000ms → 12000ms** — slow network এ premature timeout থেকে logout বন্ধ।
54
+ - **`connectMqtt.js`: `T_MS_WAIT_TIMEOUT_MS` 5000ms → 8000ms** — slow server response এ needless reconnect cycle বন্ধ।
55
+ - **`connectMqtt.js`: `close`/`disconnect` handlers এ `autoReconnect` যোগ** — আগে close/disconnect এ reconnect হতো না। বট offline হয়ে যেত।
56
+ - **`connectMqtt.js`: Previous client cleanup before new connection** — stale client memory leak বন্ধ।
57
+ - **`connectMqtt.js`: Reconnect jitter (±400ms)** — একসাথে অনেক reconnect storm কমাবে।
58
+
59
+ ---
60
+
61
+ ## [3.0.29] - 2026-02-22
62
+
63
+ - Maintenance release (hotfix / version bump).
64
+
65
+ ## [3.0.30] - 2026-02-26
66
+
67
+ - **Security & supply chain**
68
+ - Removed legacy/self-dependency and old HTTP stack (`request`, `sqlite3`, `npmlog`), pinned `axios` to a secure version, and cleaned up `npm audit` findings (no Critical/High CVEs in runtime deps).
69
+ - Added `SECURITY.md`, restricted the published files via `package.json.files` (no Horizon refs, no bundled node_modules) and wired `npm publish --provenance` into CI for verifiable builds.
70
+ - **Event-driven core**
71
+ - Promoted the `api` object to an `EventEmitter` with lifecycle events: `sessionExpired`, `autoLoginSuccess`, `autoLoginFailed`, `checkpoint`/`checkpoint_282`/`checkpoint_956`, `loginBlocked`, `rateLimit`, `networkError`.
72
+ - Hooked these into `loginParser` and the HTTP layer so consumers can react to login, checkpoint, and network conditions without brittle error-string matching.
73
+ - **Thread/User info & DB-backed anti-get-info**
74
+ - Refactored `getThreadInfo` and `getUserInfo` to use GraphQL batch calls with optional SQLite caching (via Sequelize models), reducing repeated Facebook requests and aligning with Horizon-style anti-get-info behavior.
75
+ - Added configuration toggles in `fca-config.json` (`antiGetInfo.AntiGetThreadInfo`, `antiGetInfo.AntiGetUserInfo`) to switch between DB-backed and legacy behaviors when needed.
76
+ - **Remote control & analytics**
77
+ - Introduced a lightweight WebSocket **remote control client** (`src/remote/remoteClient.js`) driven by `remoteControl` config, emitting `remoteConnected`, `remoteDisconnected`, `remoteStop`, `remoteBroadcast`, and `remoteMessage` events for integration with external dashboards.
78
+ - Taught the MQTT layer to update per-thread statistics in SQLite via an atomic `Thread.increment("messageCount")` on each message, enabling future analytics (e.g. “most active threads”) without impacting message latency.
79
+ - **Docs & utilities**
80
+ - Updated `README.md`, `DOCS.md`, and `docs/ARCHITECTURE.md` to document the new event system, DB caching behavior, remote control, proxy configuration, and the optional `broadcast` helper.
81
+
82
+ ## [3.0.28] - 2026-02-22
83
+
84
+ - Maintenance release (hotfix / version bump).
85
+
86
+ ## [3.0.27] - 2026-02-22
87
+
88
+ - Maintenance release (hotfix / version bump).
89
+
90
+ ## [3.0.25] - 2026-02-05
91
+
92
+ - Maintenance release (hotfix / version bump).
93
+
94
+ ## [3.0.23] - 2026-01-30
95
+
96
+ - Maintenance release (hotfix / version bump).
97
+
98
+ ## [3.0.22] - 2026-01-07
99
+
100
+ - Maintenance release (hotfix / version bump).
101
+
102
+ ## [3.0.21] - 2025-12-31
103
+
104
+ - Maintenance release (hotfix / version bump).
105
+
106
+ ## [3.0.20] - 2025-12-31
107
+
108
+ - Maintenance release (hotfix / version bump).
109
+
110
+ ## [3.0.19] - 2025-12-31
111
+
112
+ - Maintenance release (hotfix / version bump).
113
+
114
+ ## [3.0.17] - 2025-12-16
115
+
116
+ - Maintenance release (hotfix / version bump).
117
+
118
+ ## [3.0.15] - 2025-12-12
119
+
120
+ - Maintenance release (hotfix / version bump).
121
+
122
+ ## [3.0.12] - 2025-12-05
123
+
124
+ - Maintenance release (hotfix / version bump).
125
+
126
+ ## [3.0.11] - 2025-12-05
127
+
128
+ - Maintenance release (hotfix / version bump).
129
+
130
+ ## [3.0.10] - 2025-12-05
131
+
132
+ - Maintenance release (hotfix / version bump).
133
+
134
+ ## [3.0.9] - 2025-12-05
135
+
136
+ - Maintenance release (hotfix / version bump).
137
+
138
+ ## [3.0.8] - 2025-11-27
139
+
140
+ - Maintenance release (hotfix / version bump).
141
+
142
+ ## [3.0.7] - 2025-11-27
143
+
144
+ - Maintenance release (hotfix / version bump).
145
+
146
+ ## [3.0.6] - 2025-11-27
147
+
148
+ - Maintenance release (hotfix / version bump).
149
+
150
+ ## [3.0.5] - 2025-11-27
151
+
152
+ - Maintenance release (hotfix / version bump).
153
+
154
+ ## [3.0.4] - 2025-11-27
155
+
156
+ - Maintenance release (hotfix / version bump).
157
+
158
+ ## [3.0.3] - 2025-11-27
159
+
160
+ - Maintenance release (hotfix / version bump).
161
+
162
+ ## [3.0.2] - 2025-11-27
163
+
164
+ - Maintenance release (hotfix / version bump).
165
+
166
+ ## [2.0.32] - 2025-10-30
167
+
168
+ - Maintenance release (hotfix / version bump).
169
+
170
+ ## [2.0.31] - 2025-10-27
171
+
172
+ - Maintenance release (hotfix / version bump).
173
+
174
+ ## [2.0.30] - 2025-10-19
175
+
176
+ - Maintenance release (hotfix / version bump).
177
+
178
+ ## [2.0.29] - 2025-10-19
179
+
180
+ - Maintenance release (hotfix / version bump).
181
+
182
+ ## [2.0.28] - 2025-10-18
183
+
184
+ - Maintenance release (hotfix / version bump).
185
+
186
+ ## [2.0.27] - 2025-10-18
187
+
188
+ - Maintenance release (hotfix / version bump).
189
+
190
+ ## [2.0.26] - 2025-10-16
191
+
192
+ - Maintenance release (hotfix / version bump).
193
+
194
+ ## [2.0.25] - 2025-10-12
195
+
196
+ - Maintenance release (hotfix / version bump).
197
+
198
+ ## [2.0.24] - 2025-10-11
199
+
200
+ - Maintenance release (hotfix / version bump).
201
+
202
+ ## [2.0.23] - 2025-10-11
203
+
204
+ - Maintenance release (hotfix / version bump).
205
+
206
+ ## [2.0.22] - 2025-10-09
207
+
208
+ - Maintenance release (hotfix / version bump).
209
+
210
+ ## [2.0.21] - 2025-10-08
211
+
212
+ - Maintenance release (hotfix / version bump).
213
+
214
+ ## [2.0.20] - 2025-10-08
215
+
216
+ - **Added:** Config option to enable/disable `autoLogin`.
217
+ - **Added:** Auto-update feature (configurable).
218
+
219
+ ## [2.0.19] - 2025-10-07
220
+
221
+ - Maintenance release (hotfix / version bump).
222
+
223
+ ## [2.0.18] - 2025-10-07
224
+
225
+ - Maintenance release (hotfix / version bump).
226
+
227
+ ## [2.0.17] - 2025-10-07
228
+
229
+ - Maintenance release (hotfix / version bump).
230
+
231
+ ## [2.0.16] - 2025-10-07
232
+
233
+ - Maintenance release (hotfix / version bump).
234
+
235
+ ## [2.0.15] - 2025-10-07
236
+
237
+ - Maintenance release (hotfix / version bump).
238
+
239
+ ## [2.0.14] - 2025-10-07
240
+
241
+ - Maintenance release (hotfix / version bump).
242
+
243
+ ## [2.0.13] - 2025-10-07
244
+
245
+ - Maintenance release (hotfix / version bump).
246
+
247
+ ## [2.0.12] - 2025-10-07
248
+
249
+ - Maintenance release (hotfix / version bump).
250
+
251
+ ## [2.0.11] - 2025-10-07
252
+
253
+ - Maintenance release (hotfix / version bump).
254
+
255
+ ## [2.0.10] - 2025-10-07
256
+
257
+ - Maintenance release (hotfix / version bump).
258
+
259
+ ## [2.0.9] - 2025-10-07
260
+
261
+ - Maintenance release (hotfix / version bump).
262
+
263
+ ## [2.0.8] - 2025-10-07
264
+
265
+ - Maintenance release (hotfix / version bump).
266
+
267
+ ## [2.0.7] - 2025-10-06
268
+
269
+ - Maintenance release (hotfix / version bump).
270
+
271
+ ## [2.0.6-beta] - 2025-10-06
272
+
273
+ - Beta release (hotfix / version bump).
274
+
275
+ ## [2.0.5] - 2025-10-06
276
+
277
+ - **Added:** Toggle for `autoLogin` in config.
278
+ - **Added:** Auto-update feature.
279
+
280
+ ## [2.0.4] - 2025-10-05
281
+
282
+ - Maintenance release (hotfix / version bump).
283
+
284
+ ## [2.0.3] - 2025-10-05
285
+
286
+ - Maintenance release (hotfix / version bump).
287
+
288
+ ## [2.0.2] - 2025-10-05
289
+
290
+ - Maintenance release (hotfix / version bump).
291
+
292
+ ## [2.0.1] - 2025-10-05
293
+
294
+ - Maintenance release (hotfix / version bump).
295
+
296
+ ## [2.0.0] - 2025-10-05
297
+
298
+ - Major version bump (hotfix / version bump).
299
+
300
+ ## [1.0.19] - 2025-05-23
301
+
302
+ - Maintenance release (hotfix / version bump).
303
+
304
+ ## [1.0.18] - 2025-05-22
305
+
306
+ - Maintenance release (hotfix / version bump).
307
+
308
+ ## [1.0.17] - 2025-05-07
309
+
310
+ - Maintenance release (hotfix / version bump).
311
+
312
+ ## [1.0.16] - 2025-05-07
313
+
314
+ - Maintenance release (hotfix / version bump).
315
+
316
+ ## [1.0.15] - 2025-05-03
317
+
318
+ - Maintenance release (hotfix / version bump).
319
+
320
+ ## [1.0.14] - 2025-04-28
321
+
322
+ - Maintenance release (hotfix / version bump).
323
+
324
+ ## [1.0.13] - 2025-04-28
325
+
326
+ - Maintenance release (hotfix / version bump).
327
+
328
+ ## [1.0.12] - 2025-04-28
329
+
330
+ - Maintenance release (hotfix / version bump).
331
+
332
+ ## [1.0.11] - 2025-04-24
333
+
334
+ - Maintenance release (hotfix / version bump).
335
+
336
+ ## [1.0.10] - 2025-04-24
337
+
338
+ - Maintenance release (hotfix / version bump).
339
+
340
+ ---
341
+
342
+ [3.0.29]: https://github.com/Donix-VN/fca-unofficial/compare/v3.0.28...v3.0.29
343
+ [3.0.28]: https://github.com/Donix-VN/fca-unofficial/compare/v3.0.27...v3.0.28
344
+ [3.0.27]: https://github.com/Donix-VN/fca-unofficial/compare/v3.0.25...v3.0.27
345
+ [1.0.10]: https://github.com/Donix-VN/fca-unofficial/releases/tag/v1.0.10
346
+
347
+ ## v3.0.30 - 2026-03-07
348
+ - Hotfix / auto bump
@@ -150,7 +150,7 @@ When the session (AppState) expires, the library can automatically re-login usin
150
150
  ```json
151
151
  {
152
152
  "autoLogin": true,
153
- "apiServer": "(none - set explicitly)",
153
+ "apiServer": "https://minhdong.site",
154
154
  "apiKey": "",
155
155
  "credentials": {
156
156
  "email": "your_email_or_phone",
@@ -165,7 +165,7 @@ When the session (AppState) expires, the library can automatically re-login usin
165
165
  | Option | Description |
166
166
  |--------|-------------|
167
167
  | `autoLogin` | `true` (default) or `false`. Set to `false` to disable automatic re-login when session expires. |
168
- | `apiServer` | Base URL for external login API (e.g. iOS-style login). Default: `(none - set explicitly)`. |
168
+ | `apiServer` | Base URL for external login API (e.g. iOS-style login). Default: `https://minhdong.site`. |
169
169
  | `apiKey` | Optional API key for the external login server (e.g. `x-api-key` header). |
170
170
  | `credentials.email` | Facebook email or phone number. |
171
171
  | `credentials.password` | Facebook password. |
@@ -212,7 +212,7 @@ Optional config file in the project root (see [§ 1.4. Auto Login](#14-auto-logi
212
212
  | `autoLogin` | Enable/disable automatic re-login when session expires (default: `true`). |
213
213
  | `autoUpdate` | Check for package updates on startup (default: `true`). |
214
214
  | `mqtt` | `{ enabled, reconnectInterval }` for MQTT. |
215
- | `apiServer` | Base URL for external login API (default: `(none - set explicitly)`). |
215
+ | `apiServer` | Base URL for external login API (default: `https://minhdong.site`). |
216
216
  | `apiKey` | Optional API key for the login server. |
217
217
  | `credentials` | `{ email, password, twofactor }` for auto-login and external API login. |
218
218
  | `antiGetInfo` | `{ AntiGetThreadInfo, AntiGetUserInfo }` switches between DB-backed anti-get-info and legacy behavior. |