@badzz88/baileys 8.4.9 → 8.5.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 (154) hide show
  1. package/README.md +1 -1
  2. package/WAProto/WAProto.proto +6 -347
  3. package/WAProto/fix-imports.js +85 -86
  4. package/WAProto/index.d.ts +25 -4913
  5. package/WAProto/index.js +93 -14069
  6. package/{src → lib}/Defaults/index.js +2 -13
  7. package/{src → lib}/Signal/Group/group_cipher.js +5 -5
  8. package/{src → lib}/Signal/Group/keyhelper.js +4 -4
  9. package/{src → lib}/Signal/Group/sender-chain-key.js +2 -2
  10. package/{src → lib}/Signal/Group/sender-key-distribution-message.js +1 -1
  11. package/{src → lib}/Signal/Group/sender-key-message.js +3 -3
  12. package/{src → lib}/Signal/Group/sender-key-record.js +1 -1
  13. package/{src → lib}/Signal/Group/sender-message-key.js +2 -2
  14. package/{src → lib}/Signal/libsignal.js +26 -6
  15. package/{src → lib}/Socket/chats.js +58 -616
  16. package/{src → lib}/Socket/communities.js +28 -59
  17. package/{src → lib}/Socket/graphql.js +103 -362
  18. package/{src → lib}/Socket/groups.js +29 -77
  19. package/{src → lib}/Socket/index.js +5 -3
  20. package/{src → lib}/Socket/interactive-handler.js +60 -117
  21. package/{src → lib}/Socket/interop.js +19 -36
  22. package/lib/Socket/luxu.js +387 -0
  23. package/{src → lib}/Socket/managed-account.js +27 -58
  24. package/{src → lib}/Socket/messages-recv.js +144 -715
  25. package/{src → lib}/Socket/messages-send.js +102 -412
  26. package/lib/Socket/mex.js +60 -0
  27. package/{src → lib}/Socket/newsletter.js +23 -266
  28. package/{src → lib}/Socket/privacy.js +38 -41
  29. package/{src → lib}/Socket/registration.js +106 -113
  30. package/{src → lib}/Socket/socket.js +101 -88
  31. package/{src → lib}/Socket/text-router.js +17 -1
  32. package/lib/Socket/username.js +243 -0
  33. package/lib/Store/keyed-db.js +108 -0
  34. package/{src → lib}/Store/make-in-memory-store.js +104 -6
  35. package/lib/Types/Mex.js +112 -0
  36. package/{src → lib}/Types/Newsletter.js +41 -72
  37. package/{src → lib}/Types/index.js +1 -0
  38. package/{src → lib}/Utils/chat-utils.js +9 -73
  39. package/lib/Utils/command-loader.d.ts +31 -0
  40. package/lib/Utils/command-loader.js +100 -0
  41. package/lib/Utils/companion-reg-client-utils.js +42 -0
  42. package/lib/Utils/crypto.js +155 -0
  43. package/lib/Utils/curve25519-js.js +275 -0
  44. package/{src → lib}/Utils/decode-wa-message.js +36 -284
  45. package/{src → lib}/Utils/event-buffer.js +27 -6
  46. package/{src → lib}/Utils/generics.js +37 -114
  47. package/{src → lib}/Utils/index.js +5 -1
  48. package/lib/Utils/lt-hash.js +39 -0
  49. package/{src → lib}/Utils/message-retry-manager.js +39 -0
  50. package/{src → lib}/Utils/messages-media.js +58 -105
  51. package/{src → lib}/Utils/messages.js +529 -115
  52. package/lib/Utils/meta-ai-msmsg.js +262 -0
  53. package/lib/Utils/native-bridge.js +82 -0
  54. package/{src → lib}/Utils/noise-handler.js +15 -13
  55. package/{src → lib}/Utils/process-message.js +55 -54
  56. package/{src → lib}/Utils/reporting-utils.js +2 -2
  57. package/lib/Utils/session-pool.d.ts +16 -0
  58. package/lib/Utils/session-pool.js +94 -0
  59. package/{src → lib}/Utils/signal.js +51 -19
  60. package/{src → lib}/Utils/stanza-ack.js +2 -36
  61. package/lib/Utils/sticker.d.ts +17 -0
  62. package/lib/Utils/sticker.js +145 -0
  63. package/{src → lib}/Utils/tc-token-utils.js +1 -1
  64. package/{src → lib}/Utils/validate-connection.js +11 -40
  65. package/lib/Utils/view-once-cache.d.ts +9 -0
  66. package/lib/Utils/view-once-cache.js +79 -0
  67. package/{src → lib}/WABinary/decode.js +4 -38
  68. package/lib/WABinary/encode.js +228 -0
  69. package/{src → lib}/WABinary/generic-utils.js +93 -1
  70. package/{src → lib}/WABinary/jid-utils.js +3 -16
  71. package/{src → lib}/WAM/encode.js +1 -1
  72. package/lib/WAUSync/Protocols/USyncBusinessProtocol.js +43 -0
  73. package/{src → lib}/WAUSync/Protocols/USyncContactProtocol.js +1 -7
  74. package/{src → lib}/WAUSync/Protocols/USyncDeviceProtocol.js +5 -13
  75. package/{src → lib}/WAUSync/Protocols/USyncDisappearingModeProtocol.js +4 -1
  76. package/{src → lib}/WAUSync/Protocols/USyncFeatureProtocol.js +2 -17
  77. package/{src → lib}/WAUSync/Protocols/USyncStatusProtocol.js +2 -7
  78. package/{src → lib}/WAUSync/Protocols/USyncUsernameProtocol.js +1 -2
  79. package/{src → lib}/WAUSync/Protocols/index.js +0 -1
  80. package/{src → lib}/WAUSync/USyncQuery.js +6 -77
  81. package/{src → lib}/WAUSync/USyncUser.js +8 -16
  82. package/{src → lib}/WAUSync/index.js +0 -1
  83. package/{src → lib}/antiban.js +266 -355
  84. package/{src → lib}/index.js +2 -2
  85. package/package.json +19 -16
  86. package/WAProto/fix-import.js +0 -38
  87. package/src/Socket/mex.js +0 -47
  88. package/src/Socket/username.js +0 -234
  89. package/src/Utils/crypto.js +0 -125
  90. package/src/Utils/lt-hash.js +0 -10
  91. package/src/Utils/message-inspect.js +0 -400
  92. package/src/Utils/meta-ai-msmsg.js +0 -133
  93. package/src/WABinary/encode.js +0 -58
  94. package/src/WAUSync/Protocols/USyncBusinessProtocol.js +0 -100
  95. package/src/WAUSync/USyncBackoff.js +0 -31
  96. /package/{src → lib}/Defaults/phonenumber-mcc.json +0 -0
  97. /package/{src → lib}/Signal/Group/ciphertext-message.js +0 -0
  98. /package/{src → lib}/Signal/Group/group-session-builder.js +0 -0
  99. /package/{src → lib}/Signal/Group/index.js +0 -0
  100. /package/{src → lib}/Signal/Group/sender-key-name.js +0 -0
  101. /package/{src → lib}/Signal/Group/sender-key-state.js +0 -0
  102. /package/{src → lib}/Signal/lid-mapping.js +0 -0
  103. /package/{src → lib}/Socket/Client/index.js +0 -0
  104. /package/{src → lib}/Socket/Client/types.js +0 -0
  105. /package/{src → lib}/Socket/Client/websocket.js +0 -0
  106. /package/{src → lib}/Socket/aigroups.js +0 -0
  107. /package/{src → lib}/Socket/business.js +0 -0
  108. /package/{src → lib}/Store/index.js +0 -0
  109. /package/{src → lib}/Store/make-cache-manager-store.js +0 -0
  110. /package/{src → lib}/Store/make-ordered-dictionary.js +0 -0
  111. /package/{src → lib}/Store/object-repository.js +0 -0
  112. /package/{src → lib}/Types/Auth.js +0 -0
  113. /package/{src → lib}/Types/Bussines.js +0 -0
  114. /package/{src → lib}/Types/Call.js +0 -0
  115. /package/{src → lib}/Types/Chat.js +0 -0
  116. /package/{src → lib}/Types/Contact.js +0 -0
  117. /package/{src → lib}/Types/Events.js +0 -0
  118. /package/{src → lib}/Types/GroupMetadata.js +0 -0
  119. /package/{src → lib}/Types/Label.js +0 -0
  120. /package/{src → lib}/Types/LabelAssociation.js +0 -0
  121. /package/{src → lib}/Types/Message.js +0 -0
  122. /package/{src → lib}/Types/Product.js +0 -0
  123. /package/{src → lib}/Types/Signal.js +0 -0
  124. /package/{src → lib}/Types/Socket.js +0 -0
  125. /package/{src → lib}/Types/State.js +0 -0
  126. /package/{src → lib}/Types/USync.js +0 -0
  127. /package/{src → lib}/Utils/auth-utils.js +0 -0
  128. /package/{src → lib}/Utils/browser-utils.js +0 -0
  129. /package/{src → lib}/Utils/business.js +0 -0
  130. /package/{src → lib}/Utils/consumer-application.js +0 -0
  131. /package/{src → lib}/Utils/group-history.js +0 -0
  132. /package/{src → lib}/Utils/history.js +0 -0
  133. /package/{src → lib}/Utils/identity-change-handler.js +0 -0
  134. /package/{src → lib}/Utils/jid-display-normalization.js +0 -0
  135. /package/{src → lib}/Utils/link-preview.js +0 -0
  136. /package/{src → lib}/Utils/logger.js +0 -0
  137. /package/{src → lib}/Utils/make-mutex.js +0 -0
  138. /package/{src → lib}/Utils/message-composer.js +0 -0
  139. /package/{src → lib}/Utils/offline-node-processor.js +0 -0
  140. /package/{src → lib}/Utils/pre-key-manager.js +0 -0
  141. /package/{src → lib}/Utils/sync-action-utils.js +0 -0
  142. /package/{src → lib}/Utils/use-multi-file-auth-state.js +0 -0
  143. /package/{src → lib}/Utils/voip-rekey.js +0 -0
  144. /package/{src → lib}/WABinary/constants.js +0 -0
  145. /package/{src → lib}/WABinary/index.js +0 -0
  146. /package/{src → lib}/WABinary/types.js +0 -0
  147. /package/{src → lib}/WAM/BinaryInfo.js +0 -0
  148. /package/{src → lib}/WAM/constants.js +0 -0
  149. /package/{src → lib}/WAM/index.js +0 -0
  150. /package/{src → lib}/WAUSync/Protocols/USyncBotProfileProtocol.js +0 -0
  151. /package/{src → lib}/WAUSync/Protocols/USyncLIDProtocol.js +0 -0
  152. /package/{src → lib}/WAUSync/Protocols/USyncPictureProtocol.js +0 -0
  153. /package/{src → lib}/WAUSync/Protocols/USyncSidelistProtocol.js +0 -0
  154. /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)