Files
InfiniteAPI/proto-extract
Claude 4f919baefb fix: proto-extract auto-convert required to optional for proto3 compatibility
This commit implements a permanent fix for the proto extraction process to handle
WhatsApp's recent changes where they mark certain fields as "required" in their
JavaScript metadata.

Changes:
1. proto-extract/index.js:
   - Added automatic conversion of 'required' to 'optional' after proto generation
   - Proto3 spec doesn't support 'required' keyword (only proto2 does)
   - All fields in proto3 are implicitly optional by default

2. WAProto/WAProto.proto:
   - Updated to WhatsApp version 2.3000.1033472679 (latest)
   - All 27 'required' fields converted to 'optional'
   - Now compiles successfully with protoc

3. WAProto/index.d.ts & index.js:
   - Regenerated with correct proto3 syntax
   - index.d.ts now has 14,572 lines (was 2 lines when broken)
   - Full TypeScript definitions restored

Impact:
-  Build now succeeds (was failing with proto3 required error)
-  Tests: 582/583 passing (99.8%)
-  Lint: 0 errors, 239 warnings
-  Future proto updates will auto-fix 'required' fields

Technical details:
WhatsApp Web still uses proto3 but now marks certain fields as "required" in their
JS metadata. The extractor was copying these flags directly, causing invalid proto3
syntax. This fix ensures all 'required' keywords are converted to 'optional' after
extraction, maintaining proto3 compliance.

https://claude.ai/code/session_015R3U3kiprQiNTTNNt31Sg6
2026-02-14 04:43:42 +00:00
..
2025-05-21 12:17:57 -03:00

Proto Extract

Derived initially from whatseow's proto extract, this version generates a predictable diff friendly protobuf. It also does not rely on a hardcoded set of modules to look for but finds all proto modules on its own and extracts the proto from there.

Thanks to wppconnect-team for the script update to make it work with the latest version of whatsapp.

Usage

  1. Install dependencies with yarn (or npm install)
  2. yarn start
  3. The script will update ../WAProto/WAProto.proto (except if something is broken)