@neelegirl/baileys 1.5.5 → 1.5.7

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 (203) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +183 -10
  3. package/WAProto/WAProto.proto +5007 -0
  4. package/WAProto/index.d.ts +57712 -0
  5. package/WAProto/index.js +178969 -0
  6. package/lib/Defaults/baileys-version.json +3 -0
  7. package/lib/Defaults/index.d.ts +68 -0
  8. package/lib/Defaults/index.js +137 -0
  9. package/lib/Defaults/phonenumber-mcc.json +223 -0
  10. package/lib/Signal/WASignalGroup/GroupProtocol.js +1909 -0
  11. package/lib/Signal/WASignalGroup/ciphertext_message.js +16 -0
  12. package/lib/Signal/WASignalGroup/generate-proto.sh +1 -0
  13. package/lib/Signal/WASignalGroup/group.proto +42 -0
  14. package/lib/Signal/WASignalGroup/group_cipher.js +120 -0
  15. package/lib/Signal/WASignalGroup/group_session_builder.js +46 -0
  16. package/lib/Signal/WASignalGroup/index.js +6 -0
  17. package/lib/Signal/WASignalGroup/keyhelper.js +21 -0
  18. package/lib/Signal/WASignalGroup/protobufs.js +3 -0
  19. package/lib/Signal/WASignalGroup/queue_job.js +69 -0
  20. package/lib/Signal/WASignalGroup/readme.md +6 -0
  21. package/lib/Signal/WASignalGroup/sender_chain_key.js +50 -0
  22. package/lib/Signal/WASignalGroup/sender_key_distribution_message.js +78 -0
  23. package/lib/Signal/WASignalGroup/sender_key_message.js +92 -0
  24. package/lib/Signal/WASignalGroup/sender_key_name.js +70 -0
  25. package/lib/Signal/WASignalGroup/sender_key_record.js +56 -0
  26. package/lib/Signal/WASignalGroup/sender_key_state.js +129 -0
  27. package/lib/Signal/WASignalGroup/sender_message_key.js +39 -0
  28. package/lib/Signal/libsignal.d.ts +4 -0
  29. package/lib/Signal/libsignal.js +162 -0
  30. package/lib/Socket/Client/abstract-socket-client.d.ts +15 -0
  31. package/lib/Socket/Client/abstract-socket-client.js +13 -0
  32. package/lib/Socket/Client/index.d.ts +2 -0
  33. package/lib/Socket/Client/index.js +22 -0
  34. package/lib/Socket/Client/mobile-socket-client.d.ts +12 -0
  35. package/lib/Socket/Client/mobile-socket-client.js +65 -0
  36. package/lib/Socket/Client/types.d.ts +16 -0
  37. package/lib/Socket/Client/types.js +18 -0
  38. package/lib/Socket/Client/websocket.d.ts +13 -0
  39. package/lib/Socket/Client/websocket.js +62 -0
  40. package/lib/Socket/business.d.ts +187 -0
  41. package/lib/Socket/business.js +268 -0
  42. package/lib/Socket/chats.d.ts +98 -0
  43. package/lib/Socket/chats.js +1113 -0
  44. package/lib/Socket/communities.d.ts +223 -0
  45. package/lib/Socket/communities.js +433 -0
  46. package/lib/Socket/groups.d.ts +131 -0
  47. package/lib/Socket/groups.js +352 -0
  48. package/lib/Socket/index.d.ts +191 -0
  49. package/lib/Socket/index.js +23 -0
  50. package/lib/Socket/messages-recv.d.ts +177 -0
  51. package/lib/Socket/messages-recv.js +1764 -0
  52. package/lib/Socket/messages-send.d.ts +168 -0
  53. package/lib/Socket/messages-send.js +1303 -0
  54. package/lib/Socket/mex.d.ts +2 -0
  55. package/lib/Socket/mex.js +47 -0
  56. package/lib/Socket/newsletter.d.ts +147 -0
  57. package/lib/Socket/newsletter.js +286 -0
  58. package/lib/Socket/registration.d.ts +266 -0
  59. package/lib/Socket/registration.js +166 -0
  60. package/lib/Socket/socket.d.ts +45 -0
  61. package/lib/Socket/socket.js +766 -0
  62. package/lib/Socket/usync.d.ts +37 -0
  63. package/lib/Socket/usync.js +83 -0
  64. package/lib/Store/index.d.ts +4 -0
  65. package/lib/Store/index.js +24 -0
  66. package/lib/Store/make-cache-manager-store.d.ts +14 -0
  67. package/lib/Store/make-cache-manager-store.js +90 -0
  68. package/lib/Store/make-in-memory-store.d.ts +123 -0
  69. package/lib/Store/make-in-memory-store.js +429 -0
  70. package/lib/Store/make-ordered-dictionary.d.ts +12 -0
  71. package/lib/Store/make-ordered-dictionary.js +86 -0
  72. package/lib/Store/object-repository.d.ts +10 -0
  73. package/lib/Store/object-repository.js +31 -0
  74. package/lib/Types/Auth.d.ts +120 -0
  75. package/lib/Types/Auth.js +3 -0
  76. package/lib/Types/Call.d.ts +14 -0
  77. package/lib/Types/Call.js +3 -0
  78. package/lib/Types/Chat.d.ts +138 -0
  79. package/lib/Types/Chat.js +9 -0
  80. package/lib/Types/Contact.d.ts +20 -0
  81. package/lib/Types/Contact.js +3 -0
  82. package/lib/Types/Events.d.ts +229 -0
  83. package/lib/Types/Events.js +3 -0
  84. package/lib/Types/GroupMetadata.d.ts +66 -0
  85. package/lib/Types/GroupMetadata.js +3 -0
  86. package/lib/Types/Label.d.ts +48 -0
  87. package/lib/Types/Label.js +31 -0
  88. package/lib/Types/LabelAssociation.d.ts +35 -0
  89. package/lib/Types/LabelAssociation.js +13 -0
  90. package/lib/Types/Message.d.ts +473 -0
  91. package/lib/Types/Message.js +13 -0
  92. package/lib/Types/MexUpdates.d.ts +9 -0
  93. package/lib/Types/MexUpdates.js +18 -0
  94. package/lib/Types/Newsletter.d.ts +109 -0
  95. package/lib/Types/Newsletter.js +40 -0
  96. package/lib/Types/Product.d.ts +92 -0
  97. package/lib/Types/Product.js +3 -0
  98. package/lib/Types/Signal.d.ts +68 -0
  99. package/lib/Types/Signal.js +3 -0
  100. package/lib/Types/Socket.d.ts +122 -0
  101. package/lib/Types/Socket.js +3 -0
  102. package/lib/Types/State.d.ts +41 -0
  103. package/lib/Types/State.js +14 -0
  104. package/lib/Types/USync.d.ts +26 -0
  105. package/lib/Types/USync.js +3 -0
  106. package/lib/Types/index.d.ts +79 -0
  107. package/lib/Types/index.js +48 -0
  108. package/lib/Utils/auth-utils.d.ts +21 -0
  109. package/lib/Utils/auth-utils.js +205 -0
  110. package/lib/Utils/baileys-event-stream.d.ts +18 -0
  111. package/lib/Utils/baileys-event-stream.js +70 -0
  112. package/lib/Utils/business.d.ts +29 -0
  113. package/lib/Utils/business.js +255 -0
  114. package/lib/Utils/chat-utils.d.ts +82 -0
  115. package/lib/Utils/chat-utils.js +781 -0
  116. package/lib/Utils/check-npm-version.d.ts +15 -0
  117. package/lib/Utils/check-npm-version.js +52 -0
  118. package/lib/Utils/crypto.d.ts +56 -0
  119. package/lib/Utils/crypto.js +179 -0
  120. package/lib/Utils/decode-wa-message.d.ts +41 -0
  121. package/lib/Utils/decode-wa-message.js +253 -0
  122. package/lib/Utils/event-buffer.d.ts +39 -0
  123. package/lib/Utils/event-buffer.js +565 -0
  124. package/lib/Utils/generics.d.ts +129 -0
  125. package/lib/Utils/generics.js +618 -0
  126. package/lib/Utils/history.d.ts +23 -0
  127. package/lib/Utils/history.js +110 -0
  128. package/lib/Utils/index.d.ts +19 -0
  129. package/lib/Utils/index.js +41 -0
  130. package/lib/Utils/link-preview.d.ts +23 -0
  131. package/lib/Utils/link-preview.js +120 -0
  132. package/lib/Utils/logger.d.ts +13 -0
  133. package/lib/Utils/logger.js +7 -0
  134. package/lib/Utils/lt-hash.d.ts +14 -0
  135. package/lib/Utils/lt-hash.js +58 -0
  136. package/lib/Utils/make-mutex.d.ts +9 -0
  137. package/lib/Utils/make-mutex.js +49 -0
  138. package/lib/Utils/message-retry-manager.d.ts +82 -0
  139. package/lib/Utils/message-retry-manager.js +177 -0
  140. package/lib/Utils/messages-media.d.ts +129 -0
  141. package/lib/Utils/messages-media.js +806 -0
  142. package/lib/Utils/messages.d.ts +103 -0
  143. package/lib/Utils/messages.js +1579 -0
  144. package/lib/Utils/noise-handler.d.ts +20 -0
  145. package/lib/Utils/noise-handler.js +155 -0
  146. package/lib/Utils/process-message.d.ts +49 -0
  147. package/lib/Utils/process-message.js +428 -0
  148. package/lib/Utils/signal.d.ts +42 -0
  149. package/lib/Utils/signal.js +166 -0
  150. package/lib/Utils/use-mongo-file-auth-state.d.ts +6 -0
  151. package/lib/Utils/use-mongo-file-auth-state.js +84 -0
  152. package/lib/Utils/use-multi-file-auth-state.d.ts +18 -0
  153. package/lib/Utils/use-multi-file-auth-state.js +238 -0
  154. package/lib/Utils/use-single-file-auth-state.d.ts +13 -0
  155. package/lib/Utils/use-single-file-auth-state.js +80 -0
  156. package/lib/Utils/validate-connection.d.ts +13 -0
  157. package/lib/Utils/validate-connection.js +187 -0
  158. package/lib/WABinary/constants.d.ts +30 -0
  159. package/lib/WABinary/constants.js +1316 -0
  160. package/lib/WABinary/decode.d.ts +9 -0
  161. package/lib/WABinary/decode.js +288 -0
  162. package/lib/WABinary/encode.d.ts +3 -0
  163. package/lib/WABinary/encode.js +265 -0
  164. package/lib/WABinary/generic-utils.d.ts +28 -0
  165. package/lib/WABinary/generic-utils.js +142 -0
  166. package/lib/WABinary/index.d.ts +5 -0
  167. package/lib/WABinary/index.js +25 -0
  168. package/lib/WABinary/jid-utils.d.ts +53 -0
  169. package/lib/WABinary/jid-utils.js +92 -0
  170. package/lib/WABinary/types.d.ts +22 -0
  171. package/lib/WABinary/types.js +3 -0
  172. package/lib/WAM/BinaryInfo.d.ts +16 -0
  173. package/lib/WAM/BinaryInfo.js +17 -0
  174. package/lib/WAM/constants.d.ts +47 -0
  175. package/lib/WAM/constants.js +15371 -0
  176. package/lib/WAM/encode.d.ts +3 -0
  177. package/lib/WAM/encode.js +165 -0
  178. package/lib/WAM/index.d.ts +3 -0
  179. package/lib/WAM/index.js +23 -0
  180. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.d.ts +28 -0
  181. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +69 -0
  182. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +10 -0
  183. package/lib/WAUSync/Protocols/USyncContactProtocol.js +36 -0
  184. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +26 -0
  185. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +62 -0
  186. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +14 -0
  187. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +35 -0
  188. package/lib/WAUSync/Protocols/USyncLIDProtocol.d.ts +9 -0
  189. package/lib/WAUSync/Protocols/USyncLIDProtocol.js +30 -0
  190. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +14 -0
  191. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +46 -0
  192. package/lib/WAUSync/Protocols/index.d.ts +6 -0
  193. package/lib/WAUSync/Protocols/index.js +26 -0
  194. package/lib/WAUSync/USyncQuery.d.ts +31 -0
  195. package/lib/WAUSync/USyncQuery.js +92 -0
  196. package/lib/WAUSync/USyncUser.d.ts +12 -0
  197. package/lib/WAUSync/USyncUser.js +30 -0
  198. package/lib/WAUSync/index.d.ts +3 -0
  199. package/lib/WAUSync/index.js +23 -0
  200. package/lib/index.d.ts +13 -0
  201. package/lib/index.js +33 -0
  202. package/package.json +88 -10
  203. package/index.js +0 -38
@@ -0,0 +1,3 @@
1
+ import { BinaryInfo } from './BinaryInfo'
2
+
3
+ export declare const encodeWAM: (binaryInfo: BinaryInfo) => Buffer
@@ -0,0 +1,165 @@
1
+ "use strict"
2
+
3
+ Object.defineProperty(exports, "__esModule", { value: true })
4
+
5
+ const constants_1 = require("./constants")
6
+ const getHeaderBitLength = (key) => (key < 256 ? 2 : 3)
7
+
8
+ const encodeWAM = (binaryInfo) => {
9
+ binaryInfo.buffer = []
10
+ encodeWAMHeader(binaryInfo)
11
+ encodeEvents(binaryInfo)
12
+ console.log(binaryInfo.buffer)
13
+ const totalSize = binaryInfo.buffer
14
+ .map((a) => a.length)
15
+ .reduce((a, b) => a + b)
16
+ const buffer = Buffer.alloc(totalSize)
17
+ let offset = 0
18
+ for (const buffer_ of binaryInfo.buffer) {
19
+ buffer_.copy(buffer, offset)
20
+ offset += buffer_.length
21
+ }
22
+ return buffer
23
+ }
24
+
25
+ function encodeWAMHeader(binaryInfo) {
26
+ const headerBuffer = Buffer.alloc(8) // starting buffer
27
+ headerBuffer.write('WAM', 0, 'utf8')
28
+ headerBuffer.writeUInt8(binaryInfo.protocolVersion, 3)
29
+ headerBuffer.writeUInt8(1, 4) //random flag
30
+ headerBuffer.writeUInt16BE(binaryInfo.sequence, 5)
31
+ headerBuffer.writeUInt8(0, 7) // regular channel
32
+ binaryInfo.buffer.push(headerBuffer)
33
+ }
34
+
35
+ function encodeGlobalAttributes(binaryInfo, globals) {
36
+ for (const [key, _value] of Object.entries(globals)) {
37
+ const id = constants_1.WEB_GLOBALS.find(a => a?.name === key)?.id
38
+ let value = _value
39
+ if (typeof value === 'boolean') {
40
+ value = value ? 1 : 0
41
+ }
42
+ binaryInfo.buffer.push(serializeData(id, value, constants_1.FLAG_GLOBAL))
43
+ }
44
+ }
45
+
46
+ function encodeEvents(binaryInfo) {
47
+ for (const [name, { props, globals },] of binaryInfo.events.map((a) => Object.entries(a)[0])) {
48
+ encodeGlobalAttributes(binaryInfo, globals)
49
+ const event = constants_1.WEB_EVENTS.find((a) => a.name === name)
50
+ const props_ = Object.entries(props)
51
+ let extended = false
52
+ for (const [, value] of props_) {
53
+ extended || (extended = value !== null)
54
+ }
55
+ const eventFlag = extended ? constants_1.FLAG_EVENT : constants_1.FLAG_EVENT | constants_1.FLAG_EXTENDED
56
+ binaryInfo.buffer.push(serializeData(event.id, -event.weight, eventFlag))
57
+ for (let i = 0; i < props_.length; i++) {
58
+ const [key, _value] = props_[i]
59
+ const id = (event.props)[key][0]
60
+ extended = i < (props_.length - 1)
61
+ let value = _value
62
+ if (typeof value === 'boolean') {
63
+ value = value ? 1 : 0
64
+ }
65
+ const fieldFlag = extended ? constants_1.FLAG_EVENT : constants_1.FLAG_FIELD | constants_1.FLAG_EXTENDED
66
+ binaryInfo.buffer.push(serializeData(id, value, fieldFlag))
67
+ }
68
+ }
69
+ }
70
+
71
+ function serializeData(key, value, flag) {
72
+ const bufferLength = getHeaderBitLength(key)
73
+ let buffer
74
+ let offset = 0
75
+ if (value === null) {
76
+ if (flag === constants_1.FLAG_GLOBAL) {
77
+ buffer = Buffer.alloc(bufferLength)
78
+ offset = serializeHeader(buffer, offset, key, flag)
79
+ return buffer
80
+ }
81
+ }
82
+ else if (typeof value === 'number' && Number.isInteger(value)) {
83
+ // is number
84
+ if (value === 0 || value === 1) {
85
+ buffer = Buffer.alloc(bufferLength)
86
+ offset = serializeHeader(buffer, offset, key, flag | ((value + 1) << 4))
87
+ return buffer
88
+ }
89
+ else if (-128 <= value && value < 128) {
90
+ buffer = Buffer.alloc(bufferLength + 1)
91
+ offset = serializeHeader(buffer, offset, key, flag | (3 << 4))
92
+ buffer.writeInt8(value, offset)
93
+ return buffer
94
+ }
95
+ else if (-32768 <= value && value < 32768) {
96
+ buffer = Buffer.alloc(bufferLength + 2)
97
+ offset = serializeHeader(buffer, offset, key, flag | (4 << 4))
98
+ buffer.writeInt16LE(value, offset)
99
+ return buffer
100
+ }
101
+ else if (-2147483648 <= value && value < 2147483648) {
102
+ buffer = Buffer.alloc(bufferLength + 4)
103
+ offset = serializeHeader(buffer, offset, key, flag | (5 << 4))
104
+ buffer.writeInt32LE(value, offset)
105
+ return buffer
106
+ }
107
+ else {
108
+ buffer = Buffer.alloc(bufferLength + 8)
109
+ offset = serializeHeader(buffer, offset, key, flag | (7 << 4))
110
+ buffer.writeDoubleLE(value, offset)
111
+ return buffer
112
+ }
113
+ }
114
+ else if (typeof value === 'number') {
115
+ // is float
116
+ buffer = Buffer.alloc(bufferLength + 8)
117
+ offset = serializeHeader(buffer, offset, key, flag | (7 << 4))
118
+ buffer.writeDoubleLE(value, offset)
119
+ return buffer
120
+ }
121
+ else if (typeof value === 'string') {
122
+ // is string
123
+ const utf8Bytes = Buffer.byteLength(value, 'utf8')
124
+ if (utf8Bytes < 256) {
125
+ buffer = Buffer.alloc(bufferLength + 1 + utf8Bytes)
126
+ offset = serializeHeader(buffer, offset, key, flag | (8 << 4))
127
+ buffer.writeUint8(utf8Bytes, offset++)
128
+ }
129
+ else if (utf8Bytes < 65536) {
130
+ buffer = Buffer.alloc(bufferLength + 2 + utf8Bytes)
131
+ offset = serializeHeader(buffer, offset, key, flag | (9 << 4))
132
+ buffer.writeUInt16LE(utf8Bytes, offset)
133
+ offset += 2
134
+ }
135
+ else {
136
+ buffer = Buffer.alloc(bufferLength + 4 + utf8Bytes)
137
+ offset = serializeHeader(buffer, offset, key, flag | (10 << 4))
138
+ buffer.writeUInt32LE(utf8Bytes, offset)
139
+ offset += 4
140
+ }
141
+ buffer.write(value, offset, 'utf8')
142
+ return buffer
143
+ }
144
+ throw 'missing'
145
+ }
146
+
147
+ function serializeHeader(buffer, offset, key, flag) {
148
+ if (key < 256) {
149
+ buffer.writeUInt8(flag, offset)
150
+ offset += 1
151
+ buffer.writeUInt8(key, offset)
152
+ offset += 1
153
+ }
154
+ else {
155
+ buffer.writeUInt8(flag | constants_1.FLAG_BYTE, offset)
156
+ offset += 1
157
+ buffer.writeUInt16LE(key, offset)
158
+ offset += 2
159
+ }
160
+ return offset
161
+ }
162
+
163
+ module.exports = {
164
+ encodeWAM
165
+ }
@@ -0,0 +1,3 @@
1
+ export * from './constants'
2
+ export * from './encode'
3
+ export * from './BinaryInfo'
@@ -0,0 +1,23 @@
1
+ "use strict"
2
+
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k
5
+ var desc = Object.getOwnPropertyDescriptor(m, k)
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k] } }
8
+ }
9
+ Object.defineProperty(o, k2, desc)
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k
12
+ o[k2] = m[k]
13
+ }))
14
+
15
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p)
17
+ }
18
+
19
+ Object.defineProperty(exports, "__esModule", { value: true })
20
+
21
+ __exportStar(require("./constants"), exports)
22
+ __exportStar(require("./encode"), exports)
23
+ __exportStar(require("./BinaryInfo"), exports)
@@ -0,0 +1,28 @@
1
+ import { USyncQueryProtocol } from '../../Types/USync'
2
+ import { BinaryNode } from '../../WABinary'
3
+ import { USyncUser } from '../USyncUser'
4
+
5
+ export type BotProfileCommand = {
6
+ name: string
7
+ description: string
8
+ }
9
+
10
+ export type BotProfileInfo = {
11
+ jid: string
12
+ name: string
13
+ attributes: string
14
+ description: string
15
+ category: string
16
+ isDefault: boolean
17
+ prompts: string[]
18
+ personaId: string
19
+ commands: BotProfileCommand[]
20
+ commandsDescription: string
21
+ }
22
+
23
+ export declare class USyncBotProfileProtocol implements USyncQueryProtocol {
24
+ name: string
25
+ getQueryElement(): BinaryNode
26
+ getUserElement(user: USyncUser): BinaryNode
27
+ parser(node: BinaryNode): BotProfileInfo | undefined
28
+ }
@@ -0,0 +1,69 @@
1
+ "use strict"
2
+
3
+ Object.defineProperty(exports, "__esModule", { value: true })
4
+
5
+ const WABinary_1 = require("../../WABinary")
6
+
7
+ class USyncBotProfileProtocol {
8
+ constructor() {
9
+ this.name = 'bot'
10
+ }
11
+ getQueryElement() {
12
+ return {
13
+ tag: 'bot',
14
+ attrs: {},
15
+ content: [{ tag: 'profile', attrs: { v: '1' } }]
16
+ }
17
+ }
18
+ getUserElement(user) {
19
+ return {
20
+ tag: 'bot',
21
+ attrs: {},
22
+ content: [{ tag: 'profile', attrs: { 'persona_id': user.personaId } }]
23
+ }
24
+ }
25
+ parser(node) {
26
+ const botNode = WABinary_1.getBinaryNodeChild(node, 'bot')
27
+ const profile = WABinary_1.getBinaryNodeChild(botNode, 'profile')
28
+
29
+ const commandsNode = WABinary_1.getBinaryNodeChild(profile, 'commands')
30
+ const promptsNode = WABinary_1.getBinaryNodeChild(profile, 'prompts')
31
+
32
+ const commands = []
33
+ const prompts = []
34
+
35
+ if (commandsNode) {
36
+ for (const command of WABinary_1.getBinaryNodeChildren(commandsNode, 'command')) {
37
+ commands.push({
38
+ name: WABinary_1.getBinaryNodeChildString(command, 'name') || '',
39
+ description: WABinary_1.getBinaryNodeChildString(command, 'description') || ''
40
+ })
41
+ }
42
+ }
43
+
44
+ if (promptsNode) {
45
+ for (const prompt of WABinary_1.getBinaryNodeChildren(promptsNode, 'prompt')) {
46
+ prompts.push(
47
+ `${WABinary_1.getBinaryNodeChildString(prompt, 'emoji') || ''} ${WABinary_1.getBinaryNodeChildString(prompt, 'text') || ''}`
48
+ )
49
+ }
50
+ }
51
+
52
+ return {
53
+ isDefault: !!WABinary_1.getBinaryNodeChild(profile, 'default'),
54
+ jid: node.attrs.jid,
55
+ name: WABinary_1.getBinaryNodeChildString(profile, 'name') || '',
56
+ attributes: WABinary_1.getBinaryNodeChildString(profile, 'attributes') || '',
57
+ description: WABinary_1.getBinaryNodeChildString(profile, 'description') || '',
58
+ category: WABinary_1.getBinaryNodeChildString(profile, 'category') || '',
59
+ personaId: profile.attrs['persona_id'] || '',
60
+ commandsDescription: WABinary_1.getBinaryNodeChildString(commandsNode, 'description') || '',
61
+ commands,
62
+ prompts
63
+ }
64
+ }
65
+ }
66
+
67
+ module.exports = {
68
+ USyncBotProfileProtocol
69
+ }
@@ -0,0 +1,10 @@
1
+ import { USyncQueryProtocol } from '../../Types/USync'
2
+ import { BinaryNode } from '../../WABinary'
3
+ import { USyncUser } from '../USyncUser'
4
+
5
+ export declare class USyncContactProtocol implements USyncQueryProtocol {
6
+ name: string
7
+ getQueryElement(): BinaryNode
8
+ getUserElement(user: USyncUser): BinaryNode
9
+ parser(node: BinaryNode): boolean
10
+ }
@@ -0,0 +1,36 @@
1
+ "use strict"
2
+
3
+ Object.defineProperty(exports, "__esModule", { value: true })
4
+
5
+ const WABinary_1 = require("../../WABinary")
6
+
7
+ class USyncContactProtocol {
8
+ constructor() {
9
+ this.name = 'contact'
10
+ }
11
+ getQueryElement() {
12
+ return {
13
+ tag: 'contact',
14
+ attrs: {},
15
+ }
16
+ }
17
+ getUserElement(user) {
18
+ //TODO: Implement type / username fields (not yet supported)
19
+ return {
20
+ tag: 'contact',
21
+ attrs: {},
22
+ content: user.phone,
23
+ }
24
+ }
25
+ parser(node) {
26
+ if (node.tag === 'contact') {
27
+ WABinary_1.assertNodeErrorFree(node)
28
+ return node?.attrs?.type === 'in'
29
+ }
30
+ return false
31
+ }
32
+ }
33
+
34
+ module.exports = {
35
+ USyncContactProtocol
36
+ }
@@ -0,0 +1,26 @@
1
+ import { USyncQueryProtocol } from '../../Types/USync'
2
+ import { BinaryNode } from '../../WABinary'
3
+
4
+ export type KeyIndexData = {
5
+ timestamp: number
6
+ signedKeyIndex?: Uint8Array
7
+ expectedTimestamp?: number
8
+ }
9
+
10
+ export type DeviceListData = {
11
+ id: number
12
+ keyIndex?: number
13
+ isHosted?: boolean
14
+ }
15
+
16
+ export type ParsedDeviceInfo = {
17
+ deviceList?: DeviceListData[]
18
+ keyIndex?: KeyIndexData
19
+ }
20
+
21
+ export declare class USyncDeviceProtocol implements USyncQueryProtocol {
22
+ name: string
23
+ getQueryElement(): BinaryNode
24
+ getUserElement(): BinaryNode | null
25
+ parser(node: BinaryNode): ParsedDeviceInfo
26
+ }
@@ -0,0 +1,62 @@
1
+ "use strict"
2
+
3
+ Object.defineProperty(exports, "__esModule", { value: true })
4
+
5
+ const WABinary_1 = require("../../WABinary")
6
+
7
+ class USyncDeviceProtocol {
8
+ constructor() {
9
+ this.name = 'devices'
10
+ }
11
+ getQueryElement() {
12
+ return {
13
+ tag: 'devices',
14
+ attrs: {
15
+ version: '2',
16
+ },
17
+ }
18
+ }
19
+ getUserElement( /* user: USyncUser */) {
20
+ //TODO: Implement device phashing, ts and expectedTs
21
+ //TODO: if all are not present, return null <- current behavior
22
+ //TODO: otherwise return a node w tag 'devices' w those as attrs
23
+ return null
24
+ }
25
+ parser(node) {
26
+ const deviceList = []
27
+ let keyIndex = undefined
28
+ if (node.tag === 'devices') {
29
+ WABinary_1.assertNodeErrorFree(node)
30
+ const deviceListNode = WABinary_1.getBinaryNodeChild(node, 'device-list')
31
+ const keyIndexNode = WABinary_1.getBinaryNodeChild(node, 'key-index-list')
32
+ if (Array.isArray(deviceListNode?.content)) {
33
+ for (const { tag, attrs } of deviceListNode.content) {
34
+ const id = +attrs.id
35
+ const keyIndex = +attrs['key-index']
36
+ if (tag === 'device') {
37
+ deviceList.push({
38
+ id,
39
+ keyIndex,
40
+ isHosted: !!(attrs['is_hosted'] && attrs['is_hosted'] === 'true')
41
+ })
42
+ }
43
+ }
44
+ }
45
+ if (keyIndexNode?.tag === 'key-index-list') {
46
+ keyIndex = {
47
+ timestamp: +keyIndexNode.attrs['ts'],
48
+ signedKeyIndex: keyIndexNode?.content,
49
+ expectedTimestamp: keyIndexNode.attrs['expected_ts'] ? +keyIndexNode.attrs['expected_ts'] : undefined
50
+ }
51
+ }
52
+ }
53
+ return {
54
+ deviceList,
55
+ keyIndex
56
+ }
57
+ }
58
+ }
59
+
60
+ module.exports = {
61
+ USyncDeviceProtocol
62
+ }
@@ -0,0 +1,14 @@
1
+ import { USyncQueryProtocol } from '../../Types/USync'
2
+ import { BinaryNode } from '../../WABinary'
3
+
4
+ export type DisappearingModeData = {
5
+ duration: number
6
+ setAt?: Date
7
+ }
8
+
9
+ export declare class USyncDisappearingModeProtocol implements USyncQueryProtocol {
10
+ name: string
11
+ getQueryElement(): BinaryNode
12
+ getUserElement(): null
13
+ parser(node: BinaryNode): DisappearingModeData | undefined
14
+ }
@@ -0,0 +1,35 @@
1
+ "use strict"
2
+
3
+ Object.defineProperty(exports, "__esModule", { value: true })
4
+
5
+ const WABinary_1 = require("../../WABinary")
6
+
7
+ class USyncDisappearingModeProtocol {
8
+ constructor() {
9
+ this.name = 'disappearing_mode'
10
+ }
11
+ getQueryElement() {
12
+ return {
13
+ tag: 'disappearing_mode',
14
+ attrs: {},
15
+ }
16
+ }
17
+ getUserElement() {
18
+ return null
19
+ }
20
+ parser(node) {
21
+ if (node.tag === 'disappearing_mode') {
22
+ WABinary_1.assertNodeErrorFree(node)
23
+ const duration = +node?.attrs?.duration
24
+ const setAt = new Date(+(node?.attrs?.t || 0) * 1000)
25
+ return {
26
+ duration,
27
+ setAt,
28
+ }
29
+ }
30
+ }
31
+ }
32
+
33
+ module.exports = {
34
+ USyncDisappearingModeProtocol
35
+ }
@@ -0,0 +1,9 @@
1
+ import { USyncQueryProtocol } from '../../Types/USync'
2
+ import { BinaryNode } from '../../WABinary'
3
+
4
+ export declare class USyncLIDProtocol implements USyncQueryProtocol {
5
+ name: string
6
+ getQueryElement(): BinaryNode
7
+ getUserElement(): null
8
+ parser(node: BinaryNode): string | null
9
+ }
@@ -0,0 +1,30 @@
1
+ "use strict"
2
+
3
+ Object.defineProperty(exports, "__esModule", { value: true })
4
+
5
+ const WABinary_1 = require("../../WABinary")
6
+
7
+ class USyncLIDProtocol {
8
+ constructor() {
9
+ this.name = 'lid'
10
+ }
11
+ getQueryElement() {
12
+ return {
13
+ tag: 'lid',
14
+ attrs: {}
15
+ }
16
+ }
17
+ getUserElement() {
18
+ return null
19
+ }
20
+ parser(node) {
21
+ if (node.tag === 'lid') {
22
+ return node.attrs.val
23
+ }
24
+ return null
25
+ }
26
+ }
27
+
28
+ module.exports = {
29
+ USyncLIDProtocol
30
+ }
@@ -0,0 +1,14 @@
1
+ import { USyncQueryProtocol } from '../../Types/USync'
2
+ import { BinaryNode } from '../../WABinary'
3
+
4
+ export type StatusData = {
5
+ status?: string | null
6
+ setAt?: Date
7
+ }
8
+
9
+ export declare class USyncStatusProtocol implements USyncQueryProtocol {
10
+ name: string
11
+ getQueryElement(): BinaryNode
12
+ getUserElement(): null
13
+ parser(node: BinaryNode): StatusData | undefined
14
+ }
@@ -0,0 +1,46 @@
1
+ "use strict"
2
+
3
+ Object.defineProperty(exports, "__esModule", { value: true })
4
+
5
+ const WABinary_1 = require("../../WABinary")
6
+
7
+ class USyncStatusProtocol {
8
+ constructor() {
9
+ this.name = 'status'
10
+ }
11
+ getQueryElement() {
12
+ return {
13
+ tag: 'status',
14
+ attrs: {},
15
+ }
16
+ }
17
+ getUserElement() {
18
+ return null
19
+ }
20
+ parser(node) {
21
+ if (node.tag === 'status') {
22
+ WABinary_1.assertNodeErrorFree(node)
23
+ let status = node?.content?.toString() || null
24
+ const setAt = new Date(+(node?.attrs?.t || 0) * 1000)
25
+ if (!status) {
26
+ if (+node.attrs?.code === 401) {
27
+ status = ''
28
+ }
29
+ else {
30
+ status = null
31
+ }
32
+ }
33
+ else if (typeof status === 'string' && status.length === 0) {
34
+ status = null
35
+ }
36
+ return {
37
+ status,
38
+ setAt,
39
+ }
40
+ }
41
+ }
42
+ }
43
+
44
+ module.exports = {
45
+ USyncStatusProtocol
46
+ }
@@ -0,0 +1,6 @@
1
+ export * from './USyncBotProfileProtocol'
2
+ export * from './USyncContactProtocol'
3
+ export * from './USyncDeviceProtocol'
4
+ export * from './USyncLIDProtocol'
5
+ export * from './USyncStatusProtocol'
6
+ export * from './USyncDisappearingModeProtocol'
@@ -0,0 +1,26 @@
1
+ "use strict"
2
+
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k
5
+ var desc = Object.getOwnPropertyDescriptor(m, k)
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k] } }
8
+ }
9
+ Object.defineProperty(o, k2, desc)
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k
12
+ o[k2] = m[k]
13
+ }))
14
+
15
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p)
17
+ }
18
+
19
+ Object.defineProperty(exports, "__esModule", { value: true })
20
+
21
+ __exportStar(require("./USyncBotProfileProtocol"), exports)
22
+ __exportStar(require("./USyncContactProtocol"), exports)
23
+ __exportStar(require("./USyncDeviceProtocol"), exports)
24
+ __exportStar(require("./USyncLIDProtocol"), exports)
25
+ __exportStar(require("./USyncStatusProtocol"), exports)
26
+ __exportStar(require("./USyncDisappearingModeProtocol"), exports)
@@ -0,0 +1,31 @@
1
+ import { USyncQueryProtocol } from '../Types/USync'
2
+ import { BinaryNode } from '../WABinary'
3
+ import { USyncUser } from './USyncUser'
4
+
5
+ export type USyncQueryResultList = {
6
+ [protocol: string]: unknown
7
+ id: string
8
+ }
9
+
10
+ export type USyncQueryResult = {
11
+ list: USyncQueryResultList[]
12
+ sideList: USyncQueryResultList[]
13
+ }
14
+
15
+ export declare class USyncQuery {
16
+ protocols: USyncQueryProtocol[]
17
+ users: USyncUser[]
18
+ context: string
19
+ mode: string
20
+ constructor()
21
+ withMode(mode: string): this
22
+ withContext(context: string): this
23
+ withUser(user: USyncUser): this
24
+ parseUSyncQueryResult(result: BinaryNode): USyncQueryResult | undefined
25
+ withLIDProtocol(): this
26
+ withDeviceProtocol(): this
27
+ withContactProtocol(): this
28
+ withStatusProtocol(): this
29
+ withBotProfileProtocol(): this
30
+ withDisappearingModeProtocol(): this
31
+ }