5d7840a66c
Aligns with Baileys upstream PR #2333 (jlucaso1). Surgical port of 4 micro-optimizations + 2 test files. No collision with InfiniteAPI's LID/PN, carousel, buttons, Bad MAC or app state sync resilience code. Changes: 1. WAProto longToString/longToNumber: use native BigInt instead of Long library division loops. ~4.6x faster per call (237ns -> 52ns). BigInt.toString() delegates to V8 native C++. Same change applied to fix-imports.js (template) and index.js (generated artifact) so future regenerations stay in sync. 2. downloadHistory: stream-pipe createInflate instead of buffering the full compressed payload then inflating. Cuts RSS peak ~50% on 50MB history payloads. 3. processHistoryMessage: drop the { ...chat } shallow copy before pushing to chats[]. The decoded protobuf object is not referenced after the push. 4. downloadEncryptedContent transform: skip Buffer.concat when remainingBytes is empty (the common case — chunks usually arrive AES-aligned). ~19x faster per chunk (78ms -> 4ms over 25k chunks). Tests: - bigint-validation.test.ts (NEW): 32 parameterized cases covering zero, MAX_SAFE_INTEGER boundary, max int64/uint64, negative values, tricky bit patterns and powers of 2; plus 200-iter fuzz comparing old Long vs new BigInt implementations for equivalence. - proto-tojson-long.test.ts: kept the existing fork-only test for string-in-Long-field graceful handling, appended 4 upstream tests covering Long->string fast path, large unsigned > MAX_SAFE_INTEGER, zero/small values and encode/decode roundtrip. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>