@badzz88/baileys 8.4.9 → 8.5.0

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 (153) hide show
  1. package/WAProto/WAProto.proto +6 -347
  2. package/WAProto/fix-imports.js +85 -86
  3. package/WAProto/index.d.ts +25 -4913
  4. package/WAProto/index.js +93 -14069
  5. package/{src → lib}/Defaults/index.js +2 -13
  6. package/{src → lib}/Signal/Group/group_cipher.js +5 -5
  7. package/{src → lib}/Signal/Group/keyhelper.js +4 -4
  8. package/{src → lib}/Signal/Group/sender-chain-key.js +2 -2
  9. package/{src → lib}/Signal/Group/sender-key-distribution-message.js +1 -1
  10. package/{src → lib}/Signal/Group/sender-key-message.js +3 -3
  11. package/{src → lib}/Signal/Group/sender-key-record.js +1 -1
  12. package/{src → lib}/Signal/Group/sender-message-key.js +2 -2
  13. package/{src → lib}/Signal/libsignal.js +26 -6
  14. package/{src → lib}/Socket/chats.js +58 -616
  15. package/{src → lib}/Socket/communities.js +28 -59
  16. package/{src → lib}/Socket/graphql.js +103 -362
  17. package/{src → lib}/Socket/groups.js +29 -77
  18. package/{src → lib}/Socket/index.js +5 -3
  19. package/{src → lib}/Socket/interactive-handler.js +60 -117
  20. package/{src → lib}/Socket/interop.js +19 -36
  21. package/lib/Socket/luxu.js +387 -0
  22. package/{src → lib}/Socket/managed-account.js +27 -58
  23. package/{src → lib}/Socket/messages-recv.js +143 -715
  24. package/{src → lib}/Socket/messages-send.js +102 -412
  25. package/lib/Socket/mex.js +60 -0
  26. package/{src → lib}/Socket/newsletter.js +23 -266
  27. package/{src → lib}/Socket/privacy.js +38 -41
  28. package/{src → lib}/Socket/registration.js +106 -113
  29. package/{src → lib}/Socket/socket.js +101 -88
  30. package/{src → lib}/Socket/text-router.js +17 -1
  31. package/lib/Socket/username.js +243 -0
  32. package/lib/Store/keyed-db.js +108 -0
  33. package/{src → lib}/Store/make-in-memory-store.js +104 -6
  34. package/lib/Types/Mex.js +112 -0
  35. package/{src → lib}/Types/Newsletter.js +41 -72
  36. package/{src → lib}/Types/index.js +1 -0
  37. package/{src → lib}/Utils/chat-utils.js +9 -73
  38. package/lib/Utils/command-loader.d.ts +31 -0
  39. package/lib/Utils/command-loader.js +100 -0
  40. package/lib/Utils/companion-reg-client-utils.js +42 -0
  41. package/lib/Utils/crypto.js +155 -0
  42. package/lib/Utils/curve25519-js.js +275 -0
  43. package/{src → lib}/Utils/decode-wa-message.js +36 -284
  44. package/{src → lib}/Utils/event-buffer.js +27 -6
  45. package/{src → lib}/Utils/generics.js +37 -114
  46. package/{src → lib}/Utils/index.js +5 -1
  47. package/lib/Utils/lt-hash.js +39 -0
  48. package/{src → lib}/Utils/message-retry-manager.js +39 -0
  49. package/{src → lib}/Utils/messages-media.js +58 -105
  50. package/{src → lib}/Utils/messages.js +529 -115
  51. package/lib/Utils/meta-ai-msmsg.js +262 -0
  52. package/lib/Utils/native-bridge.js +82 -0
  53. package/{src → lib}/Utils/noise-handler.js +15 -13
  54. package/{src → lib}/Utils/process-message.js +55 -54
  55. package/{src → lib}/Utils/reporting-utils.js +2 -2
  56. package/lib/Utils/session-pool.d.ts +16 -0
  57. package/lib/Utils/session-pool.js +94 -0
  58. package/{src → lib}/Utils/signal.js +51 -19
  59. package/{src → lib}/Utils/stanza-ack.js +2 -36
  60. package/lib/Utils/sticker.d.ts +17 -0
  61. package/lib/Utils/sticker.js +145 -0
  62. package/{src → lib}/Utils/tc-token-utils.js +1 -1
  63. package/{src → lib}/Utils/validate-connection.js +11 -40
  64. package/lib/Utils/view-once-cache.d.ts +9 -0
  65. package/lib/Utils/view-once-cache.js +79 -0
  66. package/{src → lib}/WABinary/decode.js +4 -38
  67. package/lib/WABinary/encode.js +228 -0
  68. package/{src → lib}/WABinary/generic-utils.js +93 -1
  69. package/{src → lib}/WABinary/jid-utils.js +3 -16
  70. package/{src → lib}/WAM/encode.js +1 -1
  71. package/lib/WAUSync/Protocols/USyncBusinessProtocol.js +43 -0
  72. package/{src → lib}/WAUSync/Protocols/USyncContactProtocol.js +1 -7
  73. package/{src → lib}/WAUSync/Protocols/USyncDeviceProtocol.js +5 -13
  74. package/{src → lib}/WAUSync/Protocols/USyncDisappearingModeProtocol.js +4 -1
  75. package/{src → lib}/WAUSync/Protocols/USyncFeatureProtocol.js +2 -17
  76. package/{src → lib}/WAUSync/Protocols/USyncStatusProtocol.js +2 -7
  77. package/{src → lib}/WAUSync/Protocols/USyncUsernameProtocol.js +1 -2
  78. package/{src → lib}/WAUSync/Protocols/index.js +0 -1
  79. package/{src → lib}/WAUSync/USyncQuery.js +6 -77
  80. package/{src → lib}/WAUSync/USyncUser.js +8 -16
  81. package/{src → lib}/WAUSync/index.js +0 -1
  82. package/{src → lib}/antiban.js +266 -355
  83. package/{src → lib}/index.js +2 -2
  84. package/package.json +18 -15
  85. package/WAProto/fix-import.js +0 -38
  86. package/src/Socket/mex.js +0 -47
  87. package/src/Socket/username.js +0 -234
  88. package/src/Utils/crypto.js +0 -125
  89. package/src/Utils/lt-hash.js +0 -10
  90. package/src/Utils/message-inspect.js +0 -400
  91. package/src/Utils/meta-ai-msmsg.js +0 -133
  92. package/src/WABinary/encode.js +0 -58
  93. package/src/WAUSync/Protocols/USyncBusinessProtocol.js +0 -100
  94. package/src/WAUSync/USyncBackoff.js +0 -31
  95. /package/{src → lib}/Defaults/phonenumber-mcc.json +0 -0
  96. /package/{src → lib}/Signal/Group/ciphertext-message.js +0 -0
  97. /package/{src → lib}/Signal/Group/group-session-builder.js +0 -0
  98. /package/{src → lib}/Signal/Group/index.js +0 -0
  99. /package/{src → lib}/Signal/Group/sender-key-name.js +0 -0
  100. /package/{src → lib}/Signal/Group/sender-key-state.js +0 -0
  101. /package/{src → lib}/Signal/lid-mapping.js +0 -0
  102. /package/{src → lib}/Socket/Client/index.js +0 -0
  103. /package/{src → lib}/Socket/Client/types.js +0 -0
  104. /package/{src → lib}/Socket/Client/websocket.js +0 -0
  105. /package/{src → lib}/Socket/aigroups.js +0 -0
  106. /package/{src → lib}/Socket/business.js +0 -0
  107. /package/{src → lib}/Store/index.js +0 -0
  108. /package/{src → lib}/Store/make-cache-manager-store.js +0 -0
  109. /package/{src → lib}/Store/make-ordered-dictionary.js +0 -0
  110. /package/{src → lib}/Store/object-repository.js +0 -0
  111. /package/{src → lib}/Types/Auth.js +0 -0
  112. /package/{src → lib}/Types/Bussines.js +0 -0
  113. /package/{src → lib}/Types/Call.js +0 -0
  114. /package/{src → lib}/Types/Chat.js +0 -0
  115. /package/{src → lib}/Types/Contact.js +0 -0
  116. /package/{src → lib}/Types/Events.js +0 -0
  117. /package/{src → lib}/Types/GroupMetadata.js +0 -0
  118. /package/{src → lib}/Types/Label.js +0 -0
  119. /package/{src → lib}/Types/LabelAssociation.js +0 -0
  120. /package/{src → lib}/Types/Message.js +0 -0
  121. /package/{src → lib}/Types/Product.js +0 -0
  122. /package/{src → lib}/Types/Signal.js +0 -0
  123. /package/{src → lib}/Types/Socket.js +0 -0
  124. /package/{src → lib}/Types/State.js +0 -0
  125. /package/{src → lib}/Types/USync.js +0 -0
  126. /package/{src → lib}/Utils/auth-utils.js +0 -0
  127. /package/{src → lib}/Utils/browser-utils.js +0 -0
  128. /package/{src → lib}/Utils/business.js +0 -0
  129. /package/{src → lib}/Utils/consumer-application.js +0 -0
  130. /package/{src → lib}/Utils/group-history.js +0 -0
  131. /package/{src → lib}/Utils/history.js +0 -0
  132. /package/{src → lib}/Utils/identity-change-handler.js +0 -0
  133. /package/{src → lib}/Utils/jid-display-normalization.js +0 -0
  134. /package/{src → lib}/Utils/link-preview.js +0 -0
  135. /package/{src → lib}/Utils/logger.js +0 -0
  136. /package/{src → lib}/Utils/make-mutex.js +0 -0
  137. /package/{src → lib}/Utils/message-composer.js +0 -0
  138. /package/{src → lib}/Utils/offline-node-processor.js +0 -0
  139. /package/{src → lib}/Utils/pre-key-manager.js +0 -0
  140. /package/{src → lib}/Utils/sync-action-utils.js +0 -0
  141. /package/{src → lib}/Utils/use-multi-file-auth-state.js +0 -0
  142. /package/{src → lib}/Utils/voip-rekey.js +0 -0
  143. /package/{src → lib}/WABinary/constants.js +0 -0
  144. /package/{src → lib}/WABinary/index.js +0 -0
  145. /package/{src → lib}/WABinary/types.js +0 -0
  146. /package/{src → lib}/WAM/BinaryInfo.js +0 -0
  147. /package/{src → lib}/WAM/constants.js +0 -0
  148. /package/{src → lib}/WAM/index.js +0 -0
  149. /package/{src → lib}/WAUSync/Protocols/USyncBotProfileProtocol.js +0 -0
  150. /package/{src → lib}/WAUSync/Protocols/USyncLIDProtocol.js +0 -0
  151. /package/{src → lib}/WAUSync/Protocols/USyncPictureProtocol.js +0 -0
  152. /package/{src → lib}/WAUSync/Protocols/USyncSidelistProtocol.js +0 -0
  153. /package/{src → lib}/WAUSync/Protocols/USyncTextStatusProtocol.js +0 -0
@@ -5,10 +5,10 @@ const WABinary_1 = require('../WABinary')
5
5
  const USyncBotProfileProtocol_1 = require('./Protocols/USyncBotProfileProtocol')
6
6
  const USyncLIDProtocol_1 = require('./Protocols/USyncLIDProtocol')
7
7
  const USyncBusinessProtocol_1 = require('./Protocols/USyncBusinessProtocol')
8
- const USyncFeatureProtocol_1 = require('./Protocols/USyncFeatureProtocol')
9
8
  const USyncPictureProtocol_1 = require('./Protocols/USyncPictureProtocol')
10
9
  const USyncTextStatusProtocol_1 = require('./Protocols/USyncTextStatusProtocol')
11
10
  const USyncSidelistProtocol_1 = require('./Protocols/USyncSidelistProtocol')
11
+ const USyncFeatureProtocol_1 = require('./Protocols/USyncFeatureProtocol')
12
12
  const Protocols_1 = require('./Protocols')
13
13
  class USyncQuery {
14
14
  constructor() {
@@ -39,85 +39,26 @@ class USyncQuery {
39
39
  })
40
40
  )
41
41
  const queryResult = {
42
- errors: {},
43
- refresh: {},
42
+ // TODO: implement errors etc.
44
43
  list: [],
45
44
  sideList: []
46
45
  }
47
46
  const usyncNode = (0, WABinary_1.getBinaryNodeChild)(result, 'usync')
48
- // Each protocol's result child can carry either an <error code text backoff/>
49
- // (caller should back off future queries for that protocol) or a refresh="n"
50
- // attr (caller may cache the response for n seconds). Ported from WAWebUsync's
51
- // usyncParser.
52
- const resultNode = usyncNode ? (0, WABinary_1.getBinaryNodeChild)(usyncNode, 'result') : undefined
53
- if (resultNode) {
54
- for (const protocol of this.protocols) {
55
- const protocolNode = (0, WABinary_1.getBinaryNodeChild)(resultNode, protocol.name)
56
- if (!protocolNode) continue
57
- const errorNode = (0, WABinary_1.getBinaryNodeChild)(protocolNode, 'error')
58
- if (errorNode) {
59
- queryResult.errors[protocol.name] = {
60
- errorCode: errorNode.attrs.code ? +errorNode.attrs.code : undefined,
61
- errorText: errorNode.attrs.text,
62
- errorBackoff: errorNode.attrs.backoff ? +errorNode.attrs.backoff : undefined
63
- }
64
- } else if (protocolNode.attrs.refresh !== undefined) {
65
- queryResult.refresh[protocol.name] = +protocolNode.attrs.refresh
66
- }
67
- }
68
- }
47
+ //TODO: implement error backoff, refresh etc.
48
+ //TODO: see if there are any errors in the result node
49
+ //const resultNode = getBinaryNodeChild(usyncNode, 'result')
69
50
  const parseUserNodes = nodes => {
70
51
  return nodes.reduce((acc, node) => {
71
52
  const id = node?.attrs.jid
72
53
  if (id) {
73
- // G. Blocked-by tracking: a user-level error attribute signals the contact
74
- // has blocked us (WA uses 401/403/405 on the <user> node in this case).
75
- const userErrorCode = node?.attrs?.error ? parseInt(node.attrs.error, 10) : 0
76
- const isBlockedByAttr = userErrorCode === 401 || userErrorCode === 403 || userErrorCode === 405
77
-
78
54
  const data = Array.isArray(node?.content)
79
55
  ? Object.fromEntries(
80
56
  node.content
81
57
  .map(content => {
82
58
  const protocol = content.tag
83
-
84
- // B. Privacy Token: extract per-contact privacy_token and
85
- // privacy_mode_ts from <privacy> child elements in usync responses.
86
- if (protocol === 'privacy') {
87
- const tokenNode = (0, WABinary_1.getBinaryNodeChild)(content, 'token')
88
- const modeTsNode = (0, WABinary_1.getBinaryNodeChild)(content, 'mode_ts')
89
- // Also accept inline attrs format
90
- const tokenVal = tokenNode?.content || content.attrs?.token
91
- const modeTsVal =
92
- modeTsNode?.content?.toString?.() || modeTsNode?.attrs?.value || content.attrs?.mode_ts || null
93
- if (tokenVal) {
94
- return [
95
- 'privacy',
96
- {
97
- token:
98
- Buffer.isBuffer(tokenVal) || tokenVal instanceof Uint8Array
99
- ? Buffer.from(tokenVal)
100
- : tokenVal,
101
- modeTs: modeTsVal
102
- }
103
- ]
104
- }
105
- return ['privacy', null]
106
- }
107
-
108
59
  const parser = protocolMap[protocol]
109
60
  if (parser) {
110
- try {
111
- return [protocol, parser(content)]
112
- } catch (err) {
113
- // G. Blocked-by: sub-node parser errors with blocked codes
114
- // should surface as isBlockedByContact rather than crashing.
115
- const errCode = err?.data ?? err?.output?.payload?.data
116
- if (errCode === 401 || errCode === 403 || errCode === 405) {
117
- return ['isBlockedByContact', true]
118
- }
119
- throw err
120
- }
61
+ return [protocol, parser(content)]
121
62
  } else {
122
63
  return [protocol, null]
123
64
  }
@@ -125,18 +66,6 @@ class USyncQuery {
125
66
  .filter(([, b]) => b !== null)
126
67
  )
127
68
  : {}
128
-
129
- // Merge user-attr blocked flag with any parser-detected blocked flag.
130
- if (isBlockedByAttr) {
131
- data.isBlockedByContact = true
132
- }
133
-
134
- // Remap snake_case protocol keys to camelCase contact fields.
135
- if ('disappearing_mode' in data) {
136
- data.disappearingMode = data.disappearing_mode
137
- delete data.disappearing_mode
138
- }
139
-
140
69
  acc.push({ ...data, id })
141
70
  }
142
71
  return acc
@@ -30,29 +30,21 @@ class USyncUser {
30
30
  this.personaId = personaId
31
31
  return this
32
32
  }
33
- withTcToken(tcToken) {
34
- this.tcToken = tcToken
33
+ withPictureId(pictureId) {
34
+ this.pictureId = pictureId
35
35
  return this
36
36
  }
37
- withPnJid(pnJid) {
38
- this.pnJid = pnJid
37
+ withVerifiedNameSerial(serial) {
38
+ this.verifiedNameSerial = serial
39
39
  return this
40
40
  }
41
- withDeviceHash(deviceHash) {
42
- this.deviceHash = deviceHash
41
+ withBusinessProfileTag(tag) {
42
+ this.businessProfileTag = tag
43
43
  return this
44
44
  }
45
- withTs(ts) {
46
- this.ts = ts
45
+ withSidelistDelete(del = true) {
46
+ this.sidelistDelete = del
47
47
  return this
48
48
  }
49
- withExpectedTs(expectedTs) {
50
- this.expectedTs = expectedTs
51
- return this
52
- }
53
- /** Ported from WAWebUsyncUser's validate() — a usync user needs at least one addressable field. */
54
- validate() {
55
- return !!(this.id || this.phone || this.username || this.pnJid)
56
- }
57
49
  }
58
50
  exports.USyncUser = USyncUser
@@ -29,4 +29,3 @@ Object.defineProperty(exports, '__esModule', { value: true })
29
29
  __exportStar(require('./Protocols/index'), exports)
30
30
  __exportStar(require('./USyncQuery'), exports)
31
31
  __exportStar(require('./USyncUser'), exports)
32
- __exportStar(require('./USyncBackoff'), exports)