kage-baileys 3.0.6 → 3.2.3

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 (216) hide show
  1. package/Example/connection.cjs +4 -0
  2. package/README.MD +4726 -48
  3. package/WAProto/WAProto.proto +3395 -415
  4. package/WAProto/compat.cjs +12 -0
  5. package/WAProto/index.d.ts +47104 -19888
  6. package/WAProto/index.js +131979 -57361
  7. package/lib/Addon/http-error.js +43 -0
  8. package/lib/Addon/index.js +32 -0
  9. package/lib/Addon/keyed-db.js +250 -0
  10. package/lib/Addon/link-preview.js +82 -0
  11. package/lib/Defaults/baileys-version.json +3 -0
  12. package/lib/Defaults/connection.js +110 -0
  13. package/lib/Defaults/constants.js +156 -0
  14. package/lib/Defaults/history.js +46 -0
  15. package/lib/Defaults/index.js +230 -0
  16. package/lib/Defaults/media.js +104 -0
  17. package/lib/Defaults/phonenumber-mcc.json +223 -0
  18. package/lib/Defaults/prefix.js +44 -0
  19. package/lib/Extensions/business-advanced.js +382 -0
  20. package/lib/Extensions/business.js +159 -0
  21. package/lib/Extensions/chats-advanced.js +1106 -0
  22. package/lib/Extensions/chats.js +349 -0
  23. package/lib/Extensions/communities-advanced.js +430 -0
  24. package/lib/Extensions/community.js +94 -0
  25. package/lib/Extensions/groups-advanced.js +343 -0
  26. package/lib/Extensions/index.js +30 -0
  27. package/lib/Extensions/messages-recv-advanced.js +1690 -0
  28. package/lib/Extensions/messages-send-advanced.js +622 -0
  29. package/lib/Extensions/messages-send.js +1380 -0
  30. package/lib/Extensions/newsletter-advanced.js +228 -0
  31. package/lib/Extensions/newsletter.js +72 -0
  32. package/lib/Extensions/socket.js +389 -0
  33. package/lib/Modded/message_builder.js +2084 -4
  34. package/lib/Signal/Group/ciphertext-message.js +54 -0
  35. package/lib/Signal/Group/group-session-builder.js +124 -0
  36. package/lib/Signal/Group/group_cipher.js +216 -0
  37. package/lib/Signal/Group/index.js +124 -0
  38. package/lib/Signal/Group/keyhelper.js +108 -0
  39. package/lib/Signal/Group/sender-chain-key.js +83 -0
  40. package/lib/Signal/Group/sender-key-distribution-message.js +157 -0
  41. package/lib/Signal/Group/sender-key-message.js +166 -0
  42. package/lib/Signal/Group/sender-key-name.js +130 -0
  43. package/lib/Signal/Group/sender-key-record.js +113 -0
  44. package/lib/Signal/Group/sender-key-state.js +208 -0
  45. package/lib/Signal/Group/sender-message-key.js +82 -0
  46. package/lib/Signal/libsignal.js +935 -0
  47. package/lib/Signal/lid-mapping.js +545 -1
  48. package/lib/Socket/Client/index.js +60 -0
  49. package/lib/Socket/Client/types.js +51 -0
  50. package/lib/Socket/Client/websocket.js +152 -0
  51. package/lib/Socket/business.js +831 -0
  52. package/lib/Socket/chats.js +2535 -49
  53. package/lib/Socket/communities.js +450 -1
  54. package/lib/Socket/community.js +1022 -0
  55. package/lib/Socket/dugong.js +1 -1
  56. package/lib/Socket/groups.js +747 -0
  57. package/lib/Socket/index.js +60 -2
  58. package/lib/Socket/messages-recv.js +3450 -5
  59. package/lib/Socket/messages-send.js +3123 -0
  60. package/lib/Socket/mex.js +126 -1
  61. package/lib/Socket/newsletter.js +465 -0
  62. package/lib/Socket/socket.js +2217 -1
  63. package/lib/Store/index.js +79 -0
  64. package/lib/Store/make-cache-manager-store.js +186 -0
  65. package/lib/Store/make-in-memory-store.js +878 -0
  66. package/lib/Store/make-ordered-dictionary.js +187 -0
  67. package/lib/Store/object-repository.js +78 -0
  68. package/lib/Types/Auth.js +25 -0
  69. package/lib/Types/Bussines.js +25 -1
  70. package/lib/Types/Call.js +25 -0
  71. package/lib/Types/Chat.js +39 -0
  72. package/lib/Types/Contact.js +25 -0
  73. package/lib/Types/Events.js +25 -0
  74. package/lib/Types/GroupMetadata.js +25 -0
  75. package/lib/Types/Label.js +76 -0
  76. package/lib/Types/LabelAssociation.js +40 -0
  77. package/lib/Types/Message.js +57 -0
  78. package/lib/Types/Mex.js +56 -1
  79. package/lib/Types/MexUpdates.js +46 -0
  80. package/lib/Types/Newsletter.js +56 -0
  81. package/lib/Types/Product.js +25 -0
  82. package/lib/Types/RichType.js +23 -0
  83. package/lib/Types/Signal.js +25 -0
  84. package/lib/Types/Socket.js +25 -0
  85. package/lib/Types/State.js +92 -0
  86. package/lib/Types/USync.js +25 -0
  87. package/lib/Types/index.js +133 -0
  88. package/lib/Utils/auth-utils.js +703 -0
  89. package/lib/Utils/automation-tools.js +51 -16
  90. package/lib/Utils/baileys-event-stream.js +146 -0
  91. package/lib/Utils/browser-utils.js +95 -0
  92. package/lib/Utils/business.js +525 -0
  93. package/lib/Utils/chat-utils.js +1861 -0
  94. package/lib/Utils/companion-reg-client-utils.js +55 -1
  95. package/lib/Utils/crypto.js +355 -0
  96. package/lib/Utils/decode-wa-message.js +709 -0
  97. package/lib/Utils/event-buffer.js +1323 -8
  98. package/lib/Utils/generics.js +945 -1
  99. package/lib/Utils/history.js +266 -0
  100. package/lib/Utils/identity-change-handler.js +62 -1
  101. package/lib/Utils/index.js +114 -0
  102. package/lib/Utils/link-preview.js +179 -0
  103. package/lib/Utils/logger.js +42 -0
  104. package/lib/Utils/lt-hash.js +73 -0
  105. package/lib/Utils/make-mutex.js +104 -0
  106. package/lib/Utils/message-inspector.js +110 -0
  107. package/lib/Utils/message-retry-manager.js +507 -2
  108. package/lib/Utils/messages-media.js +1931 -1
  109. package/lib/Utils/messages.js +3748 -0
  110. package/lib/Utils/noise-handler.js +423 -0
  111. package/lib/Utils/offline-node-processor.js +53 -1
  112. package/lib/Utils/pre-key-manager.js +255 -1
  113. package/lib/Utils/process-message.js +1592 -0
  114. package/lib/Utils/reporting-utils.js +272 -1
  115. package/lib/Utils/rich-message-utils.js +377 -0
  116. package/lib/Utils/rich-messages.js +1 -1
  117. package/lib/Utils/signal.js +437 -0
  118. package/lib/Utils/stanza-ack.js +51 -1
  119. package/lib/Utils/status-refresh.js +37 -0
  120. package/lib/Utils/status-tools.js +4 -2
  121. package/lib/Utils/sync-action-utils.js +63 -1
  122. package/lib/Utils/tc-token-utils.js +185 -1
  123. package/lib/Utils/terminal-banner.js +31 -0
  124. package/lib/Utils/use-multi-file-auth-state.js +271 -0
  125. package/lib/Utils/use-single-file-auth-state.js +108 -0
  126. package/lib/Utils/use-sqlite-auth-state.js +142 -0
  127. package/lib/Utils/validate-connection.js +497 -1
  128. package/lib/Utils/view-once-compat.js +13 -5
  129. package/lib/VoIP/audio-feeder.js +150 -0
  130. package/lib/VoIP/index.js +289 -0
  131. package/lib/VoIP/relay-transport.js +608 -0
  132. package/lib/VoIP/signaling.js +583 -0
  133. package/lib/VoIP/types.js +30 -0
  134. package/lib/VoIP/wasm-engine.js +1261 -2
  135. package/lib/VoIP/worker-bootstrap.js +1090 -2
  136. package/lib/WABinary/constants.js +2805 -0
  137. package/lib/WABinary/decode.js +649 -2
  138. package/lib/WABinary/encode.js +564 -2
  139. package/lib/WABinary/generic-utils.js +401 -0
  140. package/lib/WABinary/index.js +82 -0
  141. package/lib/WABinary/jid-utils.js +290 -0
  142. package/lib/WABinary/types.js +25 -0
  143. package/lib/WAM/BinaryInfo.js +50 -0
  144. package/lib/WAM/constants.js +45747 -0
  145. package/lib/WAM/encode.js +393 -0
  146. package/lib/WAM/index.js +78 -0
  147. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +135 -0
  148. package/lib/WAUSync/Protocols/USyncContactProtocol.js +110 -0
  149. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +142 -0
  150. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +85 -0
  151. package/lib/WAUSync/Protocols/USyncLIDProtocol.js +69 -0
  152. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +107 -0
  153. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +38 -1
  154. package/lib/WAUSync/Protocols/index.js +83 -0
  155. package/lib/WAUSync/USyncQuery.js +241 -2
  156. package/lib/WAUSync/USyncUser.js +86 -0
  157. package/lib/WAUSync/index.js +78 -0
  158. package/lib/assets/wasm/loader.js +1875 -1
  159. package/lib/assets/wasm/worker-modules.js +11047 -1
  160. package/lib/index.d.ts +126 -0
  161. package/lib/index.js +53 -21
  162. package/lib/index.mjs +437 -0
  163. package/licenses/upstream-MIT.txt +22 -0
  164. package/maintenance/api-coverage.json +1642 -0
  165. package/maintenance/archivos-sha256.json +207 -0
  166. package/maintenance/consumer-validation.log +3 -0
  167. package/maintenance/dependency-audit.json +4 -4
  168. package/maintenance/extension-inventory.json +57 -0
  169. package/maintenance/protocol-update.json +1101 -0
  170. package/maintenance/protocol-wire-audit.json +4 -0
  171. package/maintenance/reference-socket-surface.json +209 -0
  172. package/maintenance/resumen-validacion.json +50 -0
  173. package/maintenance/validation.log +2725 -0
  174. package/maintenance/verification.json +566 -0
  175. package/package.json +107 -9
  176. package/scripts/check-imports.cjs +10 -0
  177. package/scripts/check-package.cjs +40 -0
  178. package/scripts/check-syntax.cjs +1 -1
  179. package/scripts/generate-protobuf.cjs +6 -1
  180. package/scripts/generate-public-types.cjs +9 -0
  181. package/scripts/kage-base64-fix.cjs +45 -0
  182. package/scripts/maintenance.cjs +10 -0
  183. package/test/advanced.test.cjs +24 -0
  184. package/test/base64-fix.test.cjs +49 -0
  185. package/test/maintenance.test.cjs +1 -1
  186. package/test/npm-publication.test.cjs +141 -0
  187. package/test/recepcion-reparada.test.cjs +98 -0
  188. package/test/resilience-binary.test.cjs +69 -0
  189. package/test/resilience-transport.test.cjs +34 -0
  190. package/test/types.test.ts +5 -0
  191. package/test/upgrade.test.cjs +104 -0
  192. package/tsconfig.json +20 -0
  193. package/WAProto/p.html +0 -1
  194. package/lib/KageExtra/Modded/message_builder.js +0 -2330
  195. package/lib/KageExtra/VoIP/audio-feeder.js +0 -136
  196. package/lib/KageExtra/VoIP/index.js +0 -282
  197. package/lib/KageExtra/VoIP/relay-transport.js +0 -559
  198. package/lib/KageExtra/VoIP/signaling.js +0 -603
  199. package/lib/KageExtra/VoIP/types.js +0 -17
  200. package/lib/KageExtra/VoIP/wasm-engine.js +0 -1214
  201. package/lib/KageExtra/VoIP/worker-bootstrap.js +0 -1042
  202. package/lib/KageExtra/assets/wasm/loader.js +0 -5
  203. package/lib/KageExtra/assets/wasm/whatsapp.wasm +0 -0
  204. package/lib/KageExtra/assets/wasm/worker-modules.js +0 -273
  205. package/lib/KageExtra/index.js +0 -3
  206. package/lib/KageExtra/package.json +0 -1
  207. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +0 -53
  208. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +0 -24
  209. package/maintenance/revision-full-check.txt +0 -1097
  210. package/maintenance/revision-library-tests.tap +0 -1088
  211. package/maintenance/revision-protobuf.txt +0 -5
  212. package/maintenance/revision-syntax.txt +0 -5
  213. package/maintenance/schema-coverage.json +0 -23
  214. package/maintenance/schema-merge.json +0 -30
  215. package/maintenance/validation-node20.txt +0 -191
  216. package/maintenance/validation-node22.txt +0 -237
package/lib/WAM/encode.js CHANGED
@@ -153,3 +153,396 @@ function serializeHeader(buffer, offset, key, flag) {
153
153
  }
154
154
  return offset;
155
155
  }
156
+
157
+ // Kage: compatibilidad de API.
158
+ const __kageModule90 = (() => {
159
+ const module = { exports: {} }; const exports = module.exports;
160
+ "use strict"
161
+
162
+ Object.defineProperty(exports, "__esModule", { value: true })
163
+
164
+ const {
165
+ FLAG_BYTE,
166
+ FLAG_EVENT,
167
+ FLAG_EXTENDED,
168
+ FLAG_FIELD,
169
+ FLAG_GLOBAL,
170
+ WEB_EVENTS,
171
+ WEB_GLOBALS
172
+ } = require("./constants")
173
+ const getHeaderBitLength = (key) => (key < 256 ? 2 : 3)
174
+
175
+ const encodeWAM = (binaryInfo) => {
176
+ binaryInfo.buffer = []
177
+ encodeWAMHeader(binaryInfo)
178
+ encodeEvents(binaryInfo)
179
+
180
+ const totalSize = binaryInfo.buffer.map(a => a.length).reduce((a, b) => a + b)
181
+ const buffer = Buffer.alloc(totalSize)
182
+
183
+ let offset = 0
184
+
185
+ for (const buffer_ of binaryInfo.buffer) {
186
+ buffer_.copy(buffer, offset)
187
+ offset += buffer_.length
188
+ }
189
+
190
+ return buffer
191
+ }
192
+
193
+ function encodeWAMHeader(binaryInfo) {
194
+ const headerBuffer = Buffer.alloc(8) // starting buffer
195
+
196
+ headerBuffer.write('WAM', 0, 'utf8')
197
+ headerBuffer.writeUInt8(binaryInfo.protocolVersion, 3)
198
+ headerBuffer.writeUInt8(1, 4) //random flag
199
+ headerBuffer.writeUInt16BE(binaryInfo.sequence, 5)
200
+ headerBuffer.writeUInt8(0, 7) // regular channel
201
+ binaryInfo.buffer.push(headerBuffer)
202
+ }
203
+
204
+ function encodeGlobalAttributes(binaryInfo, globals) {
205
+ for (const [key, _value] of Object.entries(globals)) {
206
+ const id = WEB_GLOBALS.find(a => a?.name === key).id
207
+
208
+ let value = _value
209
+
210
+ if (typeof value === 'boolean') {
211
+ value = value ? 1 : 0
212
+ }
213
+
214
+ binaryInfo.buffer.push(serializeData(id, value, FLAG_GLOBAL))
215
+ }
216
+ }
217
+
218
+ function encodeEvents(binaryInfo) {
219
+ for (const [name, { props, globals }] of binaryInfo.events.map(a => Object.entries(a)[0])) {
220
+ encodeGlobalAttributes(binaryInfo, globals)
221
+
222
+ const event = WEB_EVENTS.find(a => a.name === name)
223
+ const props_ = Object.entries(props)
224
+
225
+ let extended = false
226
+
227
+ for (const [, value] of props_) {
228
+ extended || (extended = value !== null)
229
+ }
230
+
231
+ const eventFlag = extended ? FLAG_EVENT : FLAG_EVENT | FLAG_EXTENDED
232
+
233
+ binaryInfo.buffer.push(serializeData(event.id, -event.weight, eventFlag))
234
+
235
+ for (let i = 0; i < props_.length; i++) {
236
+ const [key, _value] = props_[i]
237
+ const id = event.props[key]?.[0]
238
+
239
+ extended = i < props_.length - 1
240
+
241
+ let value = _value
242
+
243
+ if (typeof value === 'boolean') {
244
+ value = value ? 1 : 0
245
+ }
246
+
247
+ const fieldFlag = extended ? FLAG_EVENT : FLAG_FIELD | FLAG_EXTENDED
248
+
249
+ binaryInfo.buffer.push(serializeData(id, value, fieldFlag))
250
+ }
251
+ }
252
+ }
253
+
254
+ function serializeData(key, value, flag) {
255
+ const bufferLength = getHeaderBitLength(key)
256
+
257
+ let buffer
258
+ let offset = 0
259
+
260
+ if (value === null) {
261
+ if (flag === FLAG_GLOBAL) {
262
+ buffer = Buffer.alloc(bufferLength)
263
+ offset = serializeHeader(buffer, offset, key, flag)
264
+
265
+ return buffer
266
+ }
267
+ }
268
+
269
+ else if (typeof value === 'number' && Number.isInteger(value)) {
270
+ // is number
271
+ if (value === 0 || value === 1) {
272
+ buffer = Buffer.alloc(bufferLength)
273
+ offset = serializeHeader(buffer, offset, key, flag | ((value + 1) << 4))
274
+
275
+ return buffer
276
+ }
277
+
278
+ else if (-128 <= value && value < 128) {
279
+ buffer = Buffer.alloc(bufferLength + 1)
280
+ offset = serializeHeader(buffer, offset, key, flag | (3 << 4))
281
+
282
+ buffer.writeInt8(value, offset)
283
+
284
+ return buffer
285
+ }
286
+
287
+ else if (-32768 <= value && value < 32768) {
288
+ buffer = Buffer.alloc(bufferLength + 2)
289
+ offset = serializeHeader(buffer, offset, key, flag | (4 << 4))
290
+
291
+ buffer.writeInt16LE(value, offset)
292
+
293
+ return buffer
294
+ }
295
+
296
+ else if (-2147483648 <= value && value < 2147483648) {
297
+ buffer = Buffer.alloc(bufferLength + 4)
298
+ offset = serializeHeader(buffer, offset, key, flag | (5 << 4))
299
+
300
+ buffer.writeInt32LE(value, offset)
301
+
302
+ return buffer
303
+ }
304
+
305
+ else {
306
+ buffer = Buffer.alloc(bufferLength + 8)
307
+ offset = serializeHeader(buffer, offset, key, flag | (7 << 4))
308
+
309
+ buffer.writeDoubleLE(value, offset)
310
+
311
+ return buffer
312
+ }
313
+ }
314
+
315
+ else if (typeof value === 'number') {
316
+ // is float
317
+ buffer = Buffer.alloc(bufferLength + 8)
318
+ offset = serializeHeader(buffer, offset, key, flag | (7 << 4))
319
+
320
+ buffer.writeDoubleLE(value, offset)
321
+
322
+ return buffer
323
+ }
324
+
325
+ else if (typeof value === 'string') {
326
+ // is string
327
+ const utf8Bytes = Buffer.byteLength(value, 'utf8')
328
+
329
+ if (utf8Bytes < 256) {
330
+ buffer = Buffer.alloc(bufferLength + 1 + utf8Bytes)
331
+ offset = serializeHeader(buffer, offset, key, flag | (8 << 4))
332
+
333
+ buffer.writeUint8(utf8Bytes, offset++)
334
+ }
335
+
336
+ else if (utf8Bytes < 65536) {
337
+ buffer = Buffer.alloc(bufferLength + 2 + utf8Bytes)
338
+ offset = serializeHeader(buffer, offset, key, flag | (9 << 4))
339
+
340
+ buffer.writeUInt16LE(utf8Bytes, offset)
341
+ offset += 2
342
+ }
343
+
344
+ else {
345
+ buffer = Buffer.alloc(bufferLength + 4 + utf8Bytes)
346
+ offset = serializeHeader(buffer, offset, key, flag | (10 << 4))
347
+
348
+ buffer.writeUInt32LE(utf8Bytes, offset)
349
+ offset += 4
350
+ }
351
+
352
+ buffer.write(value, offset, 'utf8')
353
+
354
+ return buffer
355
+ }
356
+
357
+ throw 'missing'
358
+ }
359
+
360
+ function serializeHeader(buffer, offset, key, flag) {
361
+ if (key < 256) {
362
+ buffer.writeUInt8(flag, offset)
363
+ offset += 1
364
+ buffer.writeUInt8(key, offset)
365
+ offset += 1
366
+ }
367
+
368
+ else {
369
+ buffer.writeUInt8(flag | FLAG_BYTE, offset)
370
+ offset += 1
371
+ buffer.writeUInt16LE(key, offset)
372
+ offset += 2
373
+ }
374
+
375
+ return offset
376
+ }
377
+
378
+ module.exports = {
379
+ encodeWAM
380
+ }
381
+ return module.exports;
382
+ })();
383
+ for (const key of Object.keys(__kageModule90)) {
384
+ if (key !== '__esModule' && !Object.prototype.hasOwnProperty.call(exports,key)) Object.defineProperty(exports,key,{enumerable:true,configurable:true,get:()=>__kageModule90[key]});
385
+ }
386
+
387
+ // Kage: funciones avanzadas.
388
+ const __kageModule199 = (() => {
389
+ const module = { exports: {} }; const exports = module.exports;
390
+ "use strict";
391
+ Object.defineProperty(exports, "__esModule", { value: true });
392
+ exports.encodeWAM = void 0;
393
+ const constants_js_1 = require("./constants.js");
394
+ const getHeaderBitLength = (key) => (key < 256 ? 2 : 3);
395
+ const encodeWAM = (binaryInfo) => {
396
+ binaryInfo.buffer = [];
397
+ encodeWAMHeader(binaryInfo);
398
+ encodeEvents(binaryInfo);
399
+ const totalSize = binaryInfo.buffer.map(a => a.length).reduce((a, b) => a + b);
400
+ const buffer = Buffer.alloc(totalSize);
401
+ let offset = 0;
402
+ for (const buffer_ of binaryInfo.buffer) {
403
+ buffer_.copy(buffer, offset);
404
+ offset += buffer_.length;
405
+ }
406
+ return buffer;
407
+ };
408
+ exports.encodeWAM = encodeWAM;
409
+ function encodeWAMHeader(binaryInfo) {
410
+ const headerBuffer = Buffer.alloc(8); // starting buffer
411
+ headerBuffer.write('WAM', 0, 'utf8');
412
+ headerBuffer.writeUInt8(binaryInfo.protocolVersion, 3);
413
+ headerBuffer.writeUInt8(1, 4); //random flag
414
+ headerBuffer.writeUInt16BE(binaryInfo.sequence, 5);
415
+ headerBuffer.writeUInt8(0, 7); // regular channel
416
+ binaryInfo.buffer.push(headerBuffer);
417
+ }
418
+ function encodeGlobalAttributes(binaryInfo, globals) {
419
+ for (const [key, _value] of Object.entries(globals)) {
420
+ const id = constants_js_1.WEB_GLOBALS.find(a => a?.name === key).id;
421
+ let value = _value;
422
+ if (typeof value === 'boolean') {
423
+ value = value ? 1 : 0;
424
+ }
425
+ binaryInfo.buffer.push(serializeData(id, value, constants_js_1.FLAG_GLOBAL));
426
+ }
427
+ }
428
+ function encodeEvents(binaryInfo) {
429
+ for (const [name, { props, globals }] of binaryInfo.events.map(a => Object.entries(a)[0])) {
430
+ encodeGlobalAttributes(binaryInfo, globals);
431
+ const event = constants_js_1.WEB_EVENTS.find(a => a.name === name);
432
+ const props_ = Object.entries(props);
433
+ let extended = false;
434
+ for (const [, value] of props_) {
435
+ extended || (extended = value !== null);
436
+ }
437
+ const eventFlag = extended ? constants_js_1.FLAG_EVENT : constants_js_1.FLAG_EVENT | constants_js_1.FLAG_EXTENDED;
438
+ binaryInfo.buffer.push(serializeData(event.id, -event.weight, eventFlag));
439
+ for (let i = 0; i < props_.length; i++) {
440
+ const [key, _value] = props_[i];
441
+ const id = event.props[key]?.[0];
442
+ extended = i < props_.length - 1;
443
+ let value = _value;
444
+ if (typeof value === 'boolean') {
445
+ value = value ? 1 : 0;
446
+ }
447
+ const fieldFlag = extended ? constants_js_1.FLAG_EVENT : constants_js_1.FLAG_FIELD | constants_js_1.FLAG_EXTENDED;
448
+ binaryInfo.buffer.push(serializeData(id, value, fieldFlag));
449
+ }
450
+ }
451
+ }
452
+ function serializeData(key, value, flag) {
453
+ const bufferLength = getHeaderBitLength(key);
454
+ let buffer;
455
+ let offset = 0;
456
+ if (value === null) {
457
+ if (flag === constants_js_1.FLAG_GLOBAL) {
458
+ buffer = Buffer.alloc(bufferLength);
459
+ offset = serializeHeader(buffer, offset, key, flag);
460
+ return buffer;
461
+ }
462
+ }
463
+ else if (typeof value === 'number' && Number.isInteger(value)) {
464
+ // is number
465
+ if (value === 0 || value === 1) {
466
+ buffer = Buffer.alloc(bufferLength);
467
+ offset = serializeHeader(buffer, offset, key, flag | ((value + 1) << 4));
468
+ return buffer;
469
+ }
470
+ else if (-128 <= value && value < 128) {
471
+ buffer = Buffer.alloc(bufferLength + 1);
472
+ offset = serializeHeader(buffer, offset, key, flag | (3 << 4));
473
+ buffer.writeInt8(value, offset);
474
+ return buffer;
475
+ }
476
+ else if (-32768 <= value && value < 32768) {
477
+ buffer = Buffer.alloc(bufferLength + 2);
478
+ offset = serializeHeader(buffer, offset, key, flag | (4 << 4));
479
+ buffer.writeInt16LE(value, offset);
480
+ return buffer;
481
+ }
482
+ else if (-2147483648 <= value && value < 2147483648) {
483
+ buffer = Buffer.alloc(bufferLength + 4);
484
+ offset = serializeHeader(buffer, offset, key, flag | (5 << 4));
485
+ buffer.writeInt32LE(value, offset);
486
+ return buffer;
487
+ }
488
+ else {
489
+ buffer = Buffer.alloc(bufferLength + 8);
490
+ offset = serializeHeader(buffer, offset, key, flag | (7 << 4));
491
+ buffer.writeDoubleLE(value, offset);
492
+ return buffer;
493
+ }
494
+ }
495
+ else if (typeof value === 'number') {
496
+ // is float
497
+ buffer = Buffer.alloc(bufferLength + 8);
498
+ offset = serializeHeader(buffer, offset, key, flag | (7 << 4));
499
+ buffer.writeDoubleLE(value, offset);
500
+ return buffer;
501
+ }
502
+ else if (typeof value === 'string') {
503
+ // is string
504
+ const utf8Bytes = Buffer.byteLength(value, 'utf8');
505
+ if (utf8Bytes < 256) {
506
+ buffer = Buffer.alloc(bufferLength + 1 + utf8Bytes);
507
+ offset = serializeHeader(buffer, offset, key, flag | (8 << 4));
508
+ buffer.writeUint8(utf8Bytes, offset++);
509
+ }
510
+ else if (utf8Bytes < 65536) {
511
+ buffer = Buffer.alloc(bufferLength + 2 + utf8Bytes);
512
+ offset = serializeHeader(buffer, offset, key, flag | (9 << 4));
513
+ buffer.writeUInt16LE(utf8Bytes, offset);
514
+ offset += 2;
515
+ }
516
+ else {
517
+ buffer = Buffer.alloc(bufferLength + 4 + utf8Bytes);
518
+ offset = serializeHeader(buffer, offset, key, flag | (10 << 4));
519
+ buffer.writeUInt32LE(utf8Bytes, offset);
520
+ offset += 4;
521
+ }
522
+ buffer.write(value, offset, 'utf8');
523
+ return buffer;
524
+ }
525
+ throw 'missing';
526
+ }
527
+ function serializeHeader(buffer, offset, key, flag) {
528
+ if (key < 256) {
529
+ buffer.writeUInt8(flag, offset);
530
+ offset += 1;
531
+ buffer.writeUInt8(key, offset);
532
+ offset += 1;
533
+ }
534
+ else {
535
+ buffer.writeUInt8(flag | constants_js_1.FLAG_BYTE, offset);
536
+ offset += 1;
537
+ buffer.writeUInt16LE(key, offset);
538
+ offset += 2;
539
+ }
540
+ return offset;
541
+ }
542
+
543
+ return module.exports;
544
+ })();
545
+ for (const key of Object.keys(__kageModule199)) {
546
+ if (key !== '__esModule' && !Object.prototype.hasOwnProperty.call(exports,key)) Object.defineProperty(exports,key,{enumerable:true,configurable:true,get:()=>__kageModule199[key]});
547
+ }
548
+ Object.defineProperty(exports, Symbol.for('kage.advanced'), {value:__kageModule199, configurable:true});
package/lib/WAM/index.js CHANGED
@@ -17,3 +17,81 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./constants"), exports);
18
18
  __exportStar(require("./encode"), exports);
19
19
  __exportStar(require("./BinaryInfo"), exports);
20
+
21
+ // Kage: compatibilidad de API.
22
+ const __kageModule91 = (() => {
23
+ const module = { exports: {} }; const exports = module.exports;
24
+ "use strict"
25
+
26
+ const __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
27
+ if (k2 === undefined) k2 = k
28
+
29
+ let desc = Object.getOwnPropertyDescriptor(m, k)
30
+
31
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
32
+ desc = {
33
+ enumerable: true,
34
+ get: function() {
35
+ return m[k]
36
+ }
37
+ }
38
+ }
39
+
40
+ Object.defineProperty(o, k2, desc)
41
+
42
+ }) : (function(o, m, k, k2) {
43
+ if (k2 === undefined) k2 = k
44
+ o[k2] = m[k]
45
+ }
46
+ ))
47
+
48
+ const __exportStar = (this && this.__exportStar) || function(m, exports) {
49
+ for (var p in m) {
50
+ if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) {
51
+ __createBinding(exports, m, p)
52
+ }
53
+ }
54
+ }
55
+
56
+ Object.defineProperty(exports, "__esModule", {
57
+ value: true
58
+ })
59
+
60
+ __exportStar(require("./constants"), exports)
61
+ __exportStar(require("./encode"), exports)
62
+ __exportStar(require("./BinaryInfo"), exports)
63
+ return module.exports;
64
+ })();
65
+ for (const key of Object.keys(__kageModule91)) {
66
+ if (key !== '__esModule' && !Object.prototype.hasOwnProperty.call(exports,key)) Object.defineProperty(exports,key,{enumerable:true,configurable:true,get:()=>__kageModule91[key]});
67
+ }
68
+
69
+ // Kage: funciones avanzadas.
70
+ const __kageModule200 = (() => {
71
+ const module = { exports: {} }; const exports = module.exports;
72
+ "use strict";
73
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
74
+ if (k2 === undefined) k2 = k;
75
+ var desc = Object.getOwnPropertyDescriptor(m, k);
76
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
77
+ desc = { enumerable: true, get: function() { return m[k]; } };
78
+ }
79
+ Object.defineProperty(o, k2, desc);
80
+ }) : (function(o, m, k, k2) {
81
+ if (k2 === undefined) k2 = k;
82
+ o[k2] = m[k];
83
+ }));
84
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
85
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
86
+ };
87
+ Object.defineProperty(exports, "__esModule", { value: true });
88
+ __exportStar(require("./constants.js"), exports);
89
+ __exportStar(require("./encode.js"), exports);
90
+ __exportStar(require("./BinaryInfo.js"), exports);
91
+
92
+ return module.exports;
93
+ })();
94
+ for (const key of Object.keys(__kageModule200)) {
95
+ if (key !== '__esModule' && !Object.prototype.hasOwnProperty.call(exports,key)) Object.defineProperty(exports,key,{enumerable:true,configurable:true,get:()=>__kageModule200[key]});
96
+ }
97
+ Object.defineProperty(exports, Symbol.for('kage.advanced'), {value:__kageModule200, configurable:true});
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.USyncBotProfileProtocol = void 0;
4
+ const WABinary_1 = require("../../WABinary");
5
+ class USyncBotProfileProtocol {
6
+ constructor() {
7
+ this.name = 'bot';
8
+ }
9
+ getQueryElement() {
10
+ return {
11
+ tag: 'bot',
12
+ attrs: {},
13
+ content: [{ tag: 'profile', attrs: { v: '1' } }]
14
+ };
15
+ }
16
+ getUserElement(user) {
17
+ return {
18
+ tag: 'bot',
19
+ attrs: {},
20
+ content: [{ tag: 'profile', attrs: { 'persona_id': user.personaId } }]
21
+ };
22
+ }
23
+ parser(node) {
24
+ const botNode = (0, WABinary_1.getBinaryNodeChild)(node, 'bot');
25
+ const profile = (0, WABinary_1.getBinaryNodeChild)(botNode, 'profile');
26
+ const commandsNode = (0, WABinary_1.getBinaryNodeChild)(profile, 'commands');
27
+ const promptsNode = (0, WABinary_1.getBinaryNodeChild)(profile, 'prompts');
28
+ const commands = [];
29
+ const prompts = [];
30
+ for (const command of (0, WABinary_1.getBinaryNodeChildren)(commandsNode, 'command')) {
31
+ commands.push({
32
+ name: (0, WABinary_1.getBinaryNodeChildString)(command, 'name'),
33
+ description: (0, WABinary_1.getBinaryNodeChildString)(command, 'description')
34
+ });
35
+ }
36
+ for (const prompt of (0, WABinary_1.getBinaryNodeChildren)(promptsNode, 'prompt')) {
37
+ prompts.push(`${(0, WABinary_1.getBinaryNodeChildString)(prompt, 'emoji')} ${(0, WABinary_1.getBinaryNodeChildString)(prompt, 'text')}`);
38
+ }
39
+ return {
40
+ isDefault: !!(0, WABinary_1.getBinaryNodeChild)(profile, 'default'),
41
+ jid: node.attrs.jid,
42
+ name: (0, WABinary_1.getBinaryNodeChildString)(profile, 'name'),
43
+ attributes: (0, WABinary_1.getBinaryNodeChildString)(profile, 'attributes'),
44
+ description: (0, WABinary_1.getBinaryNodeChildString)(profile, 'description'),
45
+ category: (0, WABinary_1.getBinaryNodeChildString)(profile, 'category'),
46
+ personaId: profile.attrs['persona_id'],
47
+ commandsDescription: (0, WABinary_1.getBinaryNodeChildString)(commandsNode, 'description'),
48
+ commands,
49
+ prompts
50
+ };
51
+ }
52
+ }
53
+ exports.USyncBotProfileProtocol = USyncBotProfileProtocol;
54
+
55
+ // Kage: compatibilidad de API.
56
+ const __kageModule92 = (() => {
57
+ const module = { exports: {} }; const exports = module.exports;
58
+ "use strict"
59
+
60
+ Object.defineProperty(exports, "__esModule", { value: true })
61
+
62
+ const {
63
+ getBinaryNodeChild,
64
+ getBinaryNodeChildren,
65
+ getBinaryNodeChildString
66
+ } = require("../../WABinary")
67
+
68
+ class USyncBotProfileProtocol {
69
+ constructor() {
70
+ this.name = 'bot'
71
+ }
72
+ getQueryElement() {
73
+ return {
74
+ tag: 'bot',
75
+ attrs: {},
76
+ content: [{ tag: 'profile', attrs: { v: '1' } }]
77
+ }
78
+ }
79
+ getUserElement(user) {
80
+ return {
81
+ tag: 'bot',
82
+ attrs: {},
83
+ content: [{ tag: 'profile', attrs: { 'persona_id': user.personaId } }]
84
+ }
85
+ }
86
+ parser(node) {
87
+ const botNode = getBinaryNodeChild(node, 'bot')
88
+ const profile = getBinaryNodeChild(botNode, 'profile')
89
+
90
+ const commandsNode = getBinaryNodeChild(profile, 'commands')
91
+ const promptsNode = getBinaryNodeChild(profile, 'prompts')
92
+
93
+ const commands = []
94
+ const prompts = []
95
+
96
+ if (commandsNode) {
97
+ for (const command of getBinaryNodeChildren(commandsNode, 'command')) {
98
+ commands.push({
99
+ name: getBinaryNodeChildString(command, 'name') || '',
100
+ description: getBinaryNodeChildString(command, 'description') || ''
101
+ })
102
+ }
103
+ }
104
+
105
+ if (promptsNode) {
106
+ for (const prompt of getBinaryNodeChildren(promptsNode, 'prompt')) {
107
+ prompts.push(
108
+ `${getBinaryNodeChildString(prompt, 'emoji') || ''} ${getBinaryNodeChildString(prompt, 'text') || ''}`
109
+ )
110
+ }
111
+ }
112
+
113
+ return {
114
+ isDefault: !!getBinaryNodeChild(profile, 'default'),
115
+ jid: node.attrs.jid,
116
+ name: getBinaryNodeChildString(profile, 'name') || '',
117
+ attributes: getBinaryNodeChildString(profile, 'attributes') || '',
118
+ description: getBinaryNodeChildString(profile, 'description') || '',
119
+ category: getBinaryNodeChildString(profile, 'category') || '',
120
+ personaId: profile.attrs['persona_id'] || '',
121
+ commandsDescription: getBinaryNodeChildString(commandsNode, 'description') || '',
122
+ commands,
123
+ prompts
124
+ }
125
+ }
126
+ }
127
+
128
+ module.exports = {
129
+ USyncBotProfileProtocol
130
+ }
131
+ return module.exports;
132
+ })();
133
+ for (const key of Object.keys(__kageModule92)) {
134
+ if (key !== '__esModule' && !Object.prototype.hasOwnProperty.call(exports,key)) Object.defineProperty(exports,key,{enumerable:true,configurable:true,get:()=>__kageModule92[key]});
135
+ }