@badzz88/baileys 8.3.0 → 8.4.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 (213) hide show
  1. package/README.md +27 -27
  2. package/WAProto/GenerateStatics.sh +3 -0
  3. package/WAProto/WAProto.proto +6902 -0
  4. package/WAProto/fix-import.js +29 -0
  5. package/WAProto/fix-imports.js +85 -0
  6. package/WAProto/index.d.ts +79257 -0
  7. package/WAProto/index.js +204305 -131020
  8. package/engine-requirements.js +3 -4
  9. package/lib/Defaults/baileys-version.json +1 -1
  10. package/lib/Defaults/index.js +119 -136
  11. package/lib/Signal/Group/ciphertext-message.js +2 -5
  12. package/lib/Signal/Group/group-session-builder.js +7 -41
  13. package/lib/Signal/Group/group_cipher.js +37 -51
  14. package/lib/Signal/Group/index.js +12 -57
  15. package/lib/Signal/Group/keyhelper.js +7 -44
  16. package/lib/Signal/Group/sender-chain-key.js +7 -15
  17. package/lib/Signal/Group/sender-key-distribution-message.js +8 -11
  18. package/lib/Signal/Group/sender-key-message.js +9 -12
  19. package/lib/Signal/Group/sender-key-name.js +2 -5
  20. package/lib/Signal/Group/sender-key-record.js +9 -21
  21. package/lib/Signal/Group/sender-key-state.js +27 -42
  22. package/lib/Signal/Group/sender-message-key.js +4 -7
  23. package/lib/Signal/libsignal.js +347 -90
  24. package/lib/Signal/lid-mapping.js +277 -0
  25. package/lib/Socket/Client/index.js +3 -19
  26. package/lib/Socket/Client/types.js +11 -0
  27. package/lib/Socket/Client/websocket.js +54 -0
  28. package/lib/Socket/business.js +162 -43
  29. package/lib/Socket/chats.js +627 -404
  30. package/lib/Socket/communities.js +431 -0
  31. package/lib/Socket/community.js +392 -0
  32. package/lib/Socket/dugong.js +161 -8
  33. package/lib/Socket/groups.js +154 -160
  34. package/lib/Socket/index.js +11 -10
  35. package/lib/Socket/luxu.js +387 -0
  36. package/lib/Socket/messages-recv.js +1421 -615
  37. package/lib/Socket/messages-send.js +1150 -624
  38. package/lib/Socket/mex.js +42 -0
  39. package/lib/Socket/newsletter.js +139 -314
  40. package/lib/Socket/registration.js +2 -1
  41. package/lib/Socket/socket.js +544 -242
  42. package/lib/Store/index.js +10 -10
  43. package/lib/Store/keyed-db.js +108 -0
  44. package/lib/Store/make-cache-manager-store.js +43 -41
  45. package/lib/Store/make-in-memory-store.js +112 -341
  46. package/lib/Store/make-ordered-dictionary.js +14 -20
  47. package/lib/Store/object-repository.js +11 -6
  48. package/lib/Types/Auth.js +2 -2
  49. package/lib/Types/Bussines.js +2 -0
  50. package/lib/Types/Call.js +2 -2
  51. package/lib/Types/Chat.js +8 -4
  52. package/lib/Types/Contact.js +2 -2
  53. package/lib/Types/Events.js +2 -2
  54. package/lib/Types/GroupMetadata.js +2 -2
  55. package/lib/Types/Label.js +3 -5
  56. package/lib/Types/LabelAssociation.js +3 -5
  57. package/lib/Types/Message.js +11 -9
  58. package/lib/Types/Mex.js +37 -0
  59. package/lib/Types/Product.js +2 -2
  60. package/lib/Types/Signal.js +2 -2
  61. package/lib/Types/Socket.js +3 -2
  62. package/lib/Types/State.js +56 -2
  63. package/lib/Types/USync.js +2 -2
  64. package/lib/Types/index.js +15 -31
  65. package/lib/Utils/auth-utils.js +239 -143
  66. package/lib/Utils/browser-utils.js +48 -0
  67. package/lib/Utils/business.js +66 -69
  68. package/lib/Utils/chat-utils.js +396 -253
  69. package/lib/Utils/companion-reg-client-utils.js +35 -0
  70. package/lib/Utils/crypto.js +57 -90
  71. package/lib/Utils/decode-wa-message.js +236 -84
  72. package/lib/Utils/event-buffer.js +185 -77
  73. package/lib/Utils/generics.js +188 -283
  74. package/lib/Utils/history.js +93 -55
  75. package/lib/Utils/identity-change-handler.js +50 -0
  76. package/lib/Utils/index.js +23 -33
  77. package/lib/Utils/link-preview.js +16 -24
  78. package/lib/Utils/logger.js +3 -7
  79. package/lib/Utils/lt-hash.js +3 -46
  80. package/lib/Utils/make-mutex.js +24 -34
  81. package/lib/Utils/message-composer.js +273 -0
  82. package/lib/Utils/message-retry-manager.js +265 -0
  83. package/lib/Utils/messages-media.js +451 -482
  84. package/lib/Utils/messages.js +796 -359
  85. package/lib/Utils/noise-handler.js +145 -99
  86. package/lib/Utils/offline-node-processor.js +40 -0
  87. package/lib/Utils/pre-key-manager.js +106 -0
  88. package/lib/Utils/process-message.js +459 -150
  89. package/lib/Utils/reporting-utils.js +258 -0
  90. package/lib/Utils/signal.js +120 -72
  91. package/lib/Utils/stanza-ack.js +38 -0
  92. package/lib/Utils/sync-action-utils.js +49 -0
  93. package/lib/Utils/tc-token-utils.js +163 -0
  94. package/lib/Utils/use-multi-file-auth-state.js +29 -27
  95. package/lib/Utils/validate-connection.js +73 -99
  96. package/lib/WABinary/constants.js +1281 -20
  97. package/lib/WABinary/decode.js +52 -42
  98. package/lib/WABinary/encode.js +110 -155
  99. package/lib/WABinary/generic-utils.js +55 -49
  100. package/lib/WABinary/index.js +6 -21
  101. package/lib/WABinary/jid-utils.js +76 -40
  102. package/lib/WABinary/types.js +2 -2
  103. package/lib/WAM/BinaryInfo.js +2 -5
  104. package/lib/WAM/constants.js +19071 -11568
  105. package/lib/WAM/encode.js +17 -22
  106. package/lib/WAM/index.js +4 -19
  107. package/lib/WAUSync/Protocols/USyncContactProtocol.js +33 -13
  108. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +11 -14
  109. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +9 -12
  110. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +9 -13
  111. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +25 -0
  112. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +20 -22
  113. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +13 -8
  114. package/lib/WAUSync/Protocols/index.js +6 -20
  115. package/lib/WAUSync/USyncQuery.js +44 -35
  116. package/lib/WAUSync/USyncUser.js +10 -5
  117. package/lib/WAUSync/index.js +4 -19
  118. package/lib/index.js +39 -53
  119. package/package.json +134 -101
  120. package/lib/Defaults/index.d.ts +0 -53
  121. package/lib/Signal/Group/ciphertext-message.d.ts +0 -9
  122. package/lib/Signal/Group/group-session-builder.d.ts +0 -14
  123. package/lib/Signal/Group/group_cipher.d.ts +0 -17
  124. package/lib/Signal/Group/index.d.ts +0 -11
  125. package/lib/Signal/Group/keyhelper.d.ts +0 -10
  126. package/lib/Signal/Group/queue-job.d.ts +0 -1
  127. package/lib/Signal/Group/sender-chain-key.d.ts +0 -13
  128. package/lib/Signal/Group/sender-key-distribution-message.d.ts +0 -16
  129. package/lib/Signal/Group/sender-key-message.d.ts +0 -18
  130. package/lib/Signal/Group/sender-key-name.d.ts +0 -17
  131. package/lib/Signal/Group/sender-key-record.d.ts +0 -30
  132. package/lib/Signal/Group/sender-key-state.d.ts +0 -38
  133. package/lib/Signal/Group/sender-message-key.d.ts +0 -11
  134. package/lib/Signal/libsignal.d.ts +0 -3
  135. package/lib/Socket/Client/abstract-socket-client.d.ts +0 -17
  136. package/lib/Socket/Client/index.d.ts +0 -3
  137. package/lib/Socket/Client/mobile-socket-client.d.ts +0 -13
  138. package/lib/Socket/Client/web-socket-client.d.ts +0 -12
  139. package/lib/Socket/business.d.ts +0 -171
  140. package/lib/Socket/chats.d.ts +0 -267
  141. package/lib/Socket/dugong.d.ts +0 -254
  142. package/lib/Socket/groups.d.ts +0 -115
  143. package/lib/Socket/index.d.ts +0 -173
  144. package/lib/Socket/messages-recv.d.ts +0 -161
  145. package/lib/Socket/messages-send.d.ts +0 -149
  146. package/lib/Socket/newsletter.d.ts +0 -134
  147. package/lib/Socket/registration.d.ts +0 -267
  148. package/lib/Socket/socket.d.ts +0 -43
  149. package/lib/Socket/usync.d.ts +0 -36
  150. package/lib/Store/index.d.ts +0 -3
  151. package/lib/Store/make-cache-manager-store.d.ts +0 -13
  152. package/lib/Store/make-in-memory-store.d.ts +0 -118
  153. package/lib/Store/make-ordered-dictionary.d.ts +0 -13
  154. package/lib/Store/object-repository.d.ts +0 -10
  155. package/lib/Types/Auth.d.ts +0 -110
  156. package/lib/Types/Call.d.ts +0 -13
  157. package/lib/Types/Chat.d.ts +0 -102
  158. package/lib/Types/Contact.d.ts +0 -19
  159. package/lib/Types/Events.d.ts +0 -157
  160. package/lib/Types/GroupMetadata.d.ts +0 -55
  161. package/lib/Types/Label.d.ts +0 -35
  162. package/lib/Types/LabelAssociation.d.ts +0 -29
  163. package/lib/Types/Message.d.ts +0 -273
  164. package/lib/Types/Newsletter.d.ts +0 -103
  165. package/lib/Types/Product.d.ts +0 -78
  166. package/lib/Types/Signal.d.ts +0 -57
  167. package/lib/Types/Socket.d.ts +0 -111
  168. package/lib/Types/State.d.ts +0 -27
  169. package/lib/Types/USync.d.ts +0 -25
  170. package/lib/Types/index.d.ts +0 -57
  171. package/lib/Utils/auth-utils.d.ts +0 -18
  172. package/lib/Utils/baileys-event-stream.d.ts +0 -16
  173. package/lib/Utils/business.d.ts +0 -22
  174. package/lib/Utils/chat-utils.d.ts +0 -71
  175. package/lib/Utils/crypto.d.ts +0 -41
  176. package/lib/Utils/decode-wa-message.d.ts +0 -19
  177. package/lib/Utils/event-buffer.d.ts +0 -35
  178. package/lib/Utils/generics.d.ts +0 -92
  179. package/lib/Utils/history.d.ts +0 -15
  180. package/lib/Utils/index.d.ts +0 -17
  181. package/lib/Utils/link-preview.d.ts +0 -21
  182. package/lib/Utils/logger.d.ts +0 -4
  183. package/lib/Utils/lt-hash.d.ts +0 -12
  184. package/lib/Utils/make-mutex.d.ts +0 -7
  185. package/lib/Utils/messages-media.d.ts +0 -116
  186. package/lib/Utils/messages.d.ts +0 -77
  187. package/lib/Utils/noise-handler.d.ts +0 -21
  188. package/lib/Utils/process-message.d.ts +0 -41
  189. package/lib/Utils/signal.d.ts +0 -32
  190. package/lib/Utils/use-multi-file-auth-state.d.ts +0 -13
  191. package/lib/Utils/validate-connection.d.ts +0 -11
  192. package/lib/WABinary/constants.d.ts +0 -30
  193. package/lib/WABinary/decode.d.ts +0 -7
  194. package/lib/WABinary/encode.d.ts +0 -3
  195. package/lib/WABinary/generic-utils.d.ts +0 -17
  196. package/lib/WABinary/index.d.ts +0 -5
  197. package/lib/WABinary/jid-utils.d.ts +0 -31
  198. package/lib/WABinary/types.d.ts +0 -18
  199. package/lib/WAM/BinaryInfo.d.ts +0 -17
  200. package/lib/WAM/constants.d.ts +0 -38
  201. package/lib/WAM/encode.d.ts +0 -3
  202. package/lib/WAM/index.d.ts +0 -3
  203. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -9
  204. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -22
  205. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -12
  206. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -12
  207. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +0 -25
  208. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +0 -8
  209. package/lib/WAUSync/Protocols/index.d.ts +0 -4
  210. package/lib/WAUSync/USyncQuery.d.ts +0 -28
  211. package/lib/WAUSync/USyncUser.d.ts +0 -12
  212. package/lib/WAUSync/index.d.ts +0 -3
  213. package/lib/index.d.ts +0 -12
package/lib/WAM/encode.js CHANGED
@@ -1,25 +1,19 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.encodeWAM = void 0;
4
- const constants_1 = require("./constants");
1
+ import { BinaryInfo } from './BinaryInfo.js';
2
+ import { FLAG_BYTE, FLAG_EVENT, FLAG_EXTENDED, FLAG_FIELD, FLAG_GLOBAL, WEB_EVENTS, WEB_GLOBALS } from './constants.js';
5
3
  const getHeaderBitLength = (key) => (key < 256 ? 2 : 3);
6
- const encodeWAM = (binaryInfo) => {
4
+ export const encodeWAM = (binaryInfo) => {
7
5
  binaryInfo.buffer = [];
8
6
  encodeWAMHeader(binaryInfo);
9
7
  encodeEvents(binaryInfo);
10
- console.log(binaryInfo.buffer);
11
- const totalSize = binaryInfo.buffer
12
- .map((a) => a.length)
13
- .reduce((a, b) => a + b);
8
+ const totalSize = binaryInfo.buffer.map(a => a.length).reduce((a, b) => a + b);
14
9
  const buffer = Buffer.alloc(totalSize);
15
10
  let offset = 0;
16
- binaryInfo.buffer.forEach((buffer_) => {
11
+ for (const buffer_ of binaryInfo.buffer) {
17
12
  buffer_.copy(buffer, offset);
18
13
  offset += buffer_.length;
19
- });
14
+ }
20
15
  return buffer;
21
16
  };
22
- exports.encodeWAM = encodeWAM;
23
17
  function encodeWAMHeader(binaryInfo) {
24
18
  const headerBuffer = Buffer.alloc(8); // starting buffer
25
19
  headerBuffer.write('WAM', 0, 'utf8');
@@ -31,34 +25,34 @@ function encodeWAMHeader(binaryInfo) {
31
25
  }
32
26
  function encodeGlobalAttributes(binaryInfo, globals) {
33
27
  for (const [key, _value] of Object.entries(globals)) {
34
- const id = constants_1.WEB_GLOBALS.find(a => (a === null || a === void 0 ? void 0 : a.name) === key).id;
28
+ const id = WEB_GLOBALS.find(a => a?.name === key).id;
35
29
  let value = _value;
36
30
  if (typeof value === 'boolean') {
37
31
  value = value ? 1 : 0;
38
32
  }
39
- binaryInfo.buffer.push(serializeData(id, value, constants_1.FLAG_GLOBAL));
33
+ binaryInfo.buffer.push(serializeData(id, value, FLAG_GLOBAL));
40
34
  }
41
35
  }
42
36
  function encodeEvents(binaryInfo) {
43
- for (const [name, { props, globals },] of binaryInfo.events.map((a) => Object.entries(a)[0])) {
37
+ for (const [name, { props, globals }] of binaryInfo.events.map(a => Object.entries(a)[0])) {
44
38
  encodeGlobalAttributes(binaryInfo, globals);
45
- const event = constants_1.WEB_EVENTS.find((a) => a.name === name);
39
+ const event = WEB_EVENTS.find(a => a.name === name);
46
40
  const props_ = Object.entries(props);
47
41
  let extended = false;
48
42
  for (const [, value] of props_) {
49
43
  extended || (extended = value !== null);
50
44
  }
51
- const eventFlag = extended ? constants_1.FLAG_EVENT : constants_1.FLAG_EVENT | constants_1.FLAG_EXTENDED;
45
+ const eventFlag = extended ? FLAG_EVENT : FLAG_EVENT | FLAG_EXTENDED;
52
46
  binaryInfo.buffer.push(serializeData(event.id, -event.weight, eventFlag));
53
47
  for (let i = 0; i < props_.length; i++) {
54
48
  const [key, _value] = props_[i];
55
- const id = (event.props)[key][0];
56
- extended = i < (props_.length - 1);
49
+ const id = event.props[key]?.[0];
50
+ extended = i < props_.length - 1;
57
51
  let value = _value;
58
52
  if (typeof value === 'boolean') {
59
53
  value = value ? 1 : 0;
60
54
  }
61
- const fieldFlag = extended ? constants_1.FLAG_EVENT : constants_1.FLAG_FIELD | constants_1.FLAG_EXTENDED;
55
+ const fieldFlag = extended ? FLAG_EVENT : FLAG_FIELD | FLAG_EXTENDED;
62
56
  binaryInfo.buffer.push(serializeData(id, value, fieldFlag));
63
57
  }
64
58
  }
@@ -68,7 +62,7 @@ function serializeData(key, value, flag) {
68
62
  let buffer;
69
63
  let offset = 0;
70
64
  if (value === null) {
71
- if (flag === constants_1.FLAG_GLOBAL) {
65
+ if (flag === FLAG_GLOBAL) {
72
66
  buffer = Buffer.alloc(bufferLength);
73
67
  offset = serializeHeader(buffer, offset, key, flag);
74
68
  return buffer;
@@ -146,10 +140,11 @@ function serializeHeader(buffer, offset, key, flag) {
146
140
  offset += 1;
147
141
  }
148
142
  else {
149
- buffer.writeUInt8(flag | constants_1.FLAG_BYTE, offset);
143
+ buffer.writeUInt8(flag | FLAG_BYTE, offset);
150
144
  offset += 1;
151
145
  buffer.writeUInt16LE(key, offset);
152
146
  offset += 2;
153
147
  }
154
148
  return offset;
155
149
  }
150
+ //# sourceMappingURL=encode.js.map
package/lib/WAM/index.js CHANGED
@@ -1,19 +1,4 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./constants"), exports);
18
- __exportStar(require("./encode"), exports);
19
- __exportStar(require("./BinaryInfo"), exports);
1
+ export * from './constants.js';
2
+ export * from './encode.js';
3
+ export * from './BinaryInfo.js';
4
+ //# sourceMappingURL=index.js.map
@@ -1,32 +1,52 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.USyncContactProtocol = void 0;
4
- const WABinary_1 = require("../../WABinary");
5
- class USyncContactProtocol {
1
+ import { assertNodeErrorFree } from '../../WABinary/index.js';
2
+ import { USyncUser } from '../USyncUser.js';
3
+ export class USyncContactProtocol {
6
4
  constructor() {
7
5
  this.name = 'contact';
8
6
  }
9
7
  getQueryElement() {
10
8
  return {
11
9
  tag: 'contact',
12
- attrs: {},
10
+ attrs: {}
13
11
  };
14
12
  }
15
13
  getUserElement(user) {
16
- //TODO: Implement type / username fields (not yet supported)
14
+ if (user.phone) {
15
+ return {
16
+ tag: 'contact',
17
+ attrs: {},
18
+ content: user.phone
19
+ };
20
+ }
21
+ if (user.username) {
22
+ return {
23
+ tag: 'contact',
24
+ attrs: {
25
+ username: user.username,
26
+ ...(user.usernameKey ? { pin: user.usernameKey } : {}),
27
+ ...(user.lid ? { lid: user.lid } : {})
28
+ }
29
+ };
30
+ }
31
+ if (user.type) {
32
+ return {
33
+ tag: 'contact',
34
+ attrs: {
35
+ type: user.type
36
+ }
37
+ };
38
+ }
17
39
  return {
18
40
  tag: 'contact',
19
- attrs: {},
20
- content: user.phone,
41
+ attrs: {}
21
42
  };
22
43
  }
23
44
  parser(node) {
24
- var _a;
25
45
  if (node.tag === 'contact') {
26
- (0, WABinary_1.assertNodeErrorFree)(node);
27
- return ((_a = node === null || node === void 0 ? void 0 : node.attrs) === null || _a === void 0 ? void 0 : _a.type) === 'in';
46
+ assertNodeErrorFree(node);
47
+ return node?.attrs?.type === 'in';
28
48
  }
29
49
  return false;
30
50
  }
31
51
  }
32
- exports.USyncContactProtocol = USyncContactProtocol;
52
+ //# sourceMappingURL=USyncContactProtocol.js.map
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.USyncDeviceProtocol = void 0;
4
- const WABinary_1 = require("../../WABinary");
5
- class USyncDeviceProtocol {
1
+ import { assertNodeErrorFree, getBinaryNodeChild } from '../../WABinary/index.js';
2
+ export class USyncDeviceProtocol {
6
3
  constructor() {
7
4
  this.name = 'devices';
8
5
  }
@@ -10,8 +7,8 @@ class USyncDeviceProtocol {
10
7
  return {
11
8
  tag: 'devices',
12
9
  attrs: {
13
- version: '2',
14
- },
10
+ version: '2'
11
+ }
15
12
  };
16
13
  }
17
14
  getUserElement( /* user: USyncUser */) {
@@ -24,10 +21,10 @@ class USyncDeviceProtocol {
24
21
  const deviceList = [];
25
22
  let keyIndex = undefined;
26
23
  if (node.tag === 'devices') {
27
- (0, WABinary_1.assertNodeErrorFree)(node);
28
- const deviceListNode = (0, WABinary_1.getBinaryNodeChild)(node, 'device-list');
29
- const keyIndexNode = (0, WABinary_1.getBinaryNodeChild)(node, 'key-index-list');
30
- if (Array.isArray(deviceListNode === null || deviceListNode === void 0 ? void 0 : deviceListNode.content)) {
24
+ assertNodeErrorFree(node);
25
+ const deviceListNode = getBinaryNodeChild(node, 'device-list');
26
+ const keyIndexNode = getBinaryNodeChild(node, 'key-index-list');
27
+ if (Array.isArray(deviceListNode?.content)) {
31
28
  for (const { tag, attrs } of deviceListNode.content) {
32
29
  const id = +attrs.id;
33
30
  const keyIndex = +attrs['key-index'];
@@ -40,10 +37,10 @@ class USyncDeviceProtocol {
40
37
  }
41
38
  }
42
39
  }
43
- if ((keyIndexNode === null || keyIndexNode === void 0 ? void 0 : keyIndexNode.tag) === 'key-index-list') {
40
+ if (keyIndexNode?.tag === 'key-index-list') {
44
41
  keyIndex = {
45
42
  timestamp: +keyIndexNode.attrs['ts'],
46
- signedKeyIndex: keyIndexNode === null || keyIndexNode === void 0 ? void 0 : keyIndexNode.content,
43
+ signedKeyIndex: keyIndexNode?.content,
47
44
  expectedTimestamp: keyIndexNode.attrs['expected_ts'] ? +keyIndexNode.attrs['expected_ts'] : undefined
48
45
  };
49
46
  }
@@ -54,4 +51,4 @@ class USyncDeviceProtocol {
54
51
  };
55
52
  }
56
53
  }
57
- exports.USyncDeviceProtocol = USyncDeviceProtocol;
54
+ //# sourceMappingURL=USyncDeviceProtocol.js.map
@@ -1,30 +1,27 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.USyncDisappearingModeProtocol = void 0;
4
- const WABinary_1 = require("../../WABinary");
5
- class USyncDisappearingModeProtocol {
1
+ import { assertNodeErrorFree } from '../../WABinary/index.js';
2
+ export class USyncDisappearingModeProtocol {
6
3
  constructor() {
7
4
  this.name = 'disappearing_mode';
8
5
  }
9
6
  getQueryElement() {
10
7
  return {
11
8
  tag: 'disappearing_mode',
12
- attrs: {},
9
+ attrs: {}
13
10
  };
14
11
  }
15
12
  getUserElement() {
16
13
  return null;
17
14
  }
18
15
  parser(node) {
19
- if (node.tag === 'status') {
20
- (0, WABinary_1.assertNodeErrorFree)(node);
21
- const duration = +(node === null || node === void 0 ? void 0 : node.attrs.duration);
22
- const setAt = new Date(+((node === null || node === void 0 ? void 0 : node.attrs.t) || 0) * 1000);
16
+ if (node.tag === 'disappearing_mode') {
17
+ assertNodeErrorFree(node);
18
+ const duration = +node?.attrs.duration;
19
+ const setAt = new Date(+(node?.attrs.t || 0) * 1000);
23
20
  return {
24
21
  duration,
25
- setAt,
22
+ setAt
26
23
  };
27
24
  }
28
25
  }
29
26
  }
30
- exports.USyncDisappearingModeProtocol = USyncDisappearingModeProtocol;
27
+ //# sourceMappingURL=USyncDisappearingModeProtocol.js.map
@@ -1,28 +1,24 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.USyncStatusProtocol = void 0;
4
- const WABinary_1 = require("../../WABinary");
5
- class USyncStatusProtocol {
1
+ import { assertNodeErrorFree } from '../../WABinary/index.js';
2
+ export class USyncStatusProtocol {
6
3
  constructor() {
7
4
  this.name = 'status';
8
5
  }
9
6
  getQueryElement() {
10
7
  return {
11
8
  tag: 'status',
12
- attrs: {},
9
+ attrs: {}
13
10
  };
14
11
  }
15
12
  getUserElement() {
16
13
  return null;
17
14
  }
18
15
  parser(node) {
19
- var _a, _b, _c;
20
16
  if (node.tag === 'status') {
21
- (0, WABinary_1.assertNodeErrorFree)(node);
22
- let status = (_b = (_a = node === null || node === void 0 ? void 0 : node.content) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : null;
23
- const setAt = new Date(+((node === null || node === void 0 ? void 0 : node.attrs.t) || 0) * 1000);
17
+ assertNodeErrorFree(node);
18
+ let status = node?.content?.toString() ?? null;
19
+ const setAt = new Date(+(node?.attrs.t || 0) * 1000);
24
20
  if (!status) {
25
- if (+((_c = node.attrs) === null || _c === void 0 ? void 0 : _c.code) === 401) {
21
+ if (node.attrs?.code && +node.attrs.code === 401) {
26
22
  status = '';
27
23
  }
28
24
  else {
@@ -34,9 +30,9 @@ class USyncStatusProtocol {
34
30
  }
35
31
  return {
36
32
  status,
37
- setAt,
33
+ setAt
38
34
  };
39
35
  }
40
36
  }
41
37
  }
42
- exports.USyncStatusProtocol = USyncStatusProtocol;
38
+ //# sourceMappingURL=USyncStatusProtocol.js.map
@@ -0,0 +1,25 @@
1
+ import { assertNodeErrorFree } from '../../WABinary/index.js';
2
+ import { USyncUser } from '../USyncUser.js';
3
+ export class USyncUsernameProtocol {
4
+ constructor() {
5
+ this.name = 'username';
6
+ }
7
+ getQueryElement() {
8
+ return {
9
+ tag: 'username',
10
+ attrs: {}
11
+ };
12
+ }
13
+ getUserElement(user) {
14
+ void user;
15
+ return null;
16
+ }
17
+ parser(node) {
18
+ if (node.tag === 'username') {
19
+ assertNodeErrorFree(node);
20
+ return typeof node.content === 'string' ? node.content : null;
21
+ }
22
+ return null;
23
+ }
24
+ }
25
+ //# sourceMappingURL=USyncUsernameProtocol.js.map
@@ -1,8 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.USyncBotProfileProtocol = void 0;
4
- const WABinary_1 = require("../../WABinary");
5
- class USyncBotProfileProtocol {
1
+ import { getBinaryNodeChild, getBinaryNodeChildren, getBinaryNodeChildString } from '../../WABinary/index.js';
2
+ import { USyncUser } from '../USyncUser.js';
3
+ export class USyncBotProfileProtocol {
6
4
  constructor() {
7
5
  this.name = 'bot';
8
6
  }
@@ -17,37 +15,37 @@ class USyncBotProfileProtocol {
17
15
  return {
18
16
  tag: 'bot',
19
17
  attrs: {},
20
- content: [{ tag: 'profile', attrs: { 'persona_id': user.personaId } }]
18
+ content: [{ tag: 'profile', attrs: { persona_id: user.personaId } }]
21
19
  };
22
20
  }
23
21
  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');
22
+ const botNode = getBinaryNodeChild(node, 'bot');
23
+ const profile = getBinaryNodeChild(botNode, 'profile');
24
+ const commandsNode = getBinaryNodeChild(profile, 'commands');
25
+ const promptsNode = getBinaryNodeChild(profile, 'prompts');
28
26
  const commands = [];
29
27
  const prompts = [];
30
- for (const command of (0, WABinary_1.getBinaryNodeChildren)(commandsNode, 'command')) {
28
+ for (const command of getBinaryNodeChildren(commandsNode, 'command')) {
31
29
  commands.push({
32
- name: (0, WABinary_1.getBinaryNodeChildString)(command, 'name'),
33
- description: (0, WABinary_1.getBinaryNodeChildString)(command, 'description')
30
+ name: getBinaryNodeChildString(command, 'name'),
31
+ description: getBinaryNodeChildString(command, 'description')
34
32
  });
35
33
  }
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')}`);
34
+ for (const prompt of getBinaryNodeChildren(promptsNode, 'prompt')) {
35
+ prompts.push(`${getBinaryNodeChildString(prompt, 'emoji')} ${getBinaryNodeChildString(prompt, 'text')}`);
38
36
  }
39
37
  return {
40
- isDefault: !!(0, WABinary_1.getBinaryNodeChild)(profile, 'default'),
38
+ isDefault: !!getBinaryNodeChild(profile, 'default'),
41
39
  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'),
40
+ name: getBinaryNodeChildString(profile, 'name'),
41
+ attributes: getBinaryNodeChildString(profile, 'attributes'),
42
+ description: getBinaryNodeChildString(profile, 'description'),
43
+ category: getBinaryNodeChildString(profile, 'category'),
46
44
  personaId: profile.attrs['persona_id'],
47
- commandsDescription: (0, WABinary_1.getBinaryNodeChildString)(commandsNode, 'description'),
45
+ commandsDescription: getBinaryNodeChildString(commandsNode, 'description'),
48
46
  commands,
49
47
  prompts
50
48
  };
51
49
  }
52
50
  }
53
- exports.USyncBotProfileProtocol = USyncBotProfileProtocol;
51
+ //# sourceMappingURL=UsyncBotProfileProtocol.js.map
@@ -1,18 +1,23 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.USyncLIDProtocol = void 0;
4
- class USyncLIDProtocol {
1
+ export class USyncLIDProtocol {
5
2
  constructor() {
6
3
  this.name = 'lid';
7
4
  }
8
5
  getQueryElement() {
9
6
  return {
10
7
  tag: 'lid',
11
- attrs: {},
8
+ attrs: {}
12
9
  };
13
10
  }
14
- getUserElement() {
15
- return null;
11
+ getUserElement(user) {
12
+ if (user.lid) {
13
+ return {
14
+ tag: 'lid',
15
+ attrs: { jid: user.lid }
16
+ };
17
+ }
18
+ else {
19
+ return null;
20
+ }
16
21
  }
17
22
  parser(node) {
18
23
  if (node.tag === 'lid') {
@@ -21,4 +26,4 @@ class USyncLIDProtocol {
21
26
  return null;
22
27
  }
23
28
  }
24
- exports.USyncLIDProtocol = USyncLIDProtocol;
29
+ //# sourceMappingURL=UsyncLIDProtocol.js.map
@@ -1,20 +1,6 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./USyncDeviceProtocol"), exports);
18
- __exportStar(require("./USyncContactProtocol"), exports);
19
- __exportStar(require("./USyncStatusProtocol"), exports);
20
- __exportStar(require("./USyncDisappearingModeProtocol"), exports);
1
+ export * from './USyncDeviceProtocol.js';
2
+ export * from './USyncContactProtocol.js';
3
+ export * from './USyncStatusProtocol.js';
4
+ export * from './USyncDisappearingModeProtocol.js';
5
+ export * from './USyncUsernameProtocol.js';
6
+ //# sourceMappingURL=index.js.map
@@ -1,11 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.USyncQuery = void 0;
4
- const WABinary_1 = require("../WABinary");
5
- const UsyncBotProfileProtocol_1 = require("./Protocols/UsyncBotProfileProtocol");
6
- const UsyncLIDProtocol_1 = require("./Protocols/UsyncLIDProtocol");
7
- const Protocols_1 = require("./Protocols");
8
- class USyncQuery {
1
+ import { getBinaryNodeChild } from '../WABinary/index.js';
2
+ import { USyncBotProfileProtocol } from './Protocols/UsyncBotProfileProtocol.js';
3
+ import { USyncLIDProtocol } from './Protocols/UsyncLIDProtocol.js';
4
+ import { USyncContactProtocol, USyncDeviceProtocol, USyncDisappearingModeProtocol, USyncStatusProtocol, USyncUsernameProtocol } from './Protocols/index.js';
5
+ import { USyncUser } from './USyncUser.js';
6
+ export class USyncQuery {
9
7
  constructor() {
10
8
  this.protocols = [];
11
9
  this.users = [];
@@ -25,65 +23,76 @@ class USyncQuery {
25
23
  return this;
26
24
  }
27
25
  parseUSyncQueryResult(result) {
28
- if (result.attrs.type !== 'result') {
26
+ if (result?.attrs.type !== 'result') {
29
27
  return;
30
28
  }
31
- const protocolMap = Object.fromEntries(this.protocols.map((protocol) => {
29
+ const protocolMap = Object.fromEntries(this.protocols.map(protocol => {
32
30
  return [protocol.name, protocol.parser];
33
31
  }));
34
32
  const queryResult = {
35
33
  // TODO: implement errors etc.
36
34
  list: [],
37
- sideList: [],
35
+ sideList: []
38
36
  };
39
- const usyncNode = (0, WABinary_1.getBinaryNodeChild)(result, 'usync');
37
+ const usyncNode = getBinaryNodeChild(result, 'usync');
40
38
  //TODO: implement error backoff, refresh etc.
41
39
  //TODO: see if there are any errors in the result node
42
40
  //const resultNode = getBinaryNodeChild(usyncNode, 'result')
43
- const listNode = (0, WABinary_1.getBinaryNodeChild)(usyncNode, 'list');
44
- if (Array.isArray(listNode === null || listNode === void 0 ? void 0 : listNode.content) && typeof listNode !== 'undefined') {
45
- queryResult.list = listNode.content.map((node) => {
46
- const id = node === null || node === void 0 ? void 0 : node.attrs.jid;
47
- const data = Array.isArray(node === null || node === void 0 ? void 0 : node.content) ? Object.fromEntries(node.content.map((content) => {
48
- const protocol = content.tag;
49
- const parser = protocolMap[protocol];
50
- if (parser) {
51
- return [protocol, parser(content)];
52
- }
53
- else {
54
- return [protocol, null];
55
- }
56
- }).filter(([, b]) => b !== null)) : {};
57
- return { ...data, id };
58
- });
41
+ const listNode = usyncNode ? getBinaryNodeChild(usyncNode, 'list') : undefined;
42
+ if (listNode?.content && Array.isArray(listNode.content)) {
43
+ queryResult.list = listNode.content.reduce((acc, node) => {
44
+ const id = node?.attrs.jid;
45
+ if (id) {
46
+ const data = Array.isArray(node?.content)
47
+ ? Object.fromEntries(node.content
48
+ .map(content => {
49
+ const protocol = content.tag;
50
+ const parser = protocolMap[protocol];
51
+ if (parser) {
52
+ return [protocol, parser(content)];
53
+ }
54
+ else {
55
+ return [protocol, null];
56
+ }
57
+ })
58
+ .filter(([, b]) => b !== null))
59
+ : {};
60
+ acc.push({ ...data, id });
61
+ }
62
+ return acc;
63
+ }, []);
59
64
  }
60
65
  //TODO: implement side list
61
66
  //const sideListNode = getBinaryNodeChild(usyncNode, 'side_list')
62
67
  return queryResult;
63
68
  }
64
69
  withDeviceProtocol() {
65
- this.protocols.push(new Protocols_1.USyncDeviceProtocol());
70
+ this.protocols.push(new USyncDeviceProtocol());
66
71
  return this;
67
72
  }
68
73
  withContactProtocol() {
69
- this.protocols.push(new Protocols_1.USyncContactProtocol());
74
+ this.protocols.push(new USyncContactProtocol());
70
75
  return this;
71
76
  }
72
77
  withStatusProtocol() {
73
- this.protocols.push(new Protocols_1.USyncStatusProtocol());
78
+ this.protocols.push(new USyncStatusProtocol());
74
79
  return this;
75
80
  }
76
81
  withDisappearingModeProtocol() {
77
- this.protocols.push(new Protocols_1.USyncDisappearingModeProtocol());
82
+ this.protocols.push(new USyncDisappearingModeProtocol());
78
83
  return this;
79
84
  }
80
85
  withBotProfileProtocol() {
81
- this.protocols.push(new UsyncBotProfileProtocol_1.USyncBotProfileProtocol());
86
+ this.protocols.push(new USyncBotProfileProtocol());
82
87
  return this;
83
88
  }
84
89
  withLIDProtocol() {
85
- this.protocols.push(new UsyncLIDProtocol_1.USyncLIDProtocol());
90
+ this.protocols.push(new USyncLIDProtocol());
91
+ return this;
92
+ }
93
+ withUsernameProtocol() {
94
+ this.protocols.push(new USyncUsernameProtocol());
86
95
  return this;
87
96
  }
88
97
  }
89
- exports.USyncQuery = USyncQuery;
98
+ //# sourceMappingURL=USyncQuery.js.map
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.USyncUser = void 0;
4
- class USyncUser {
1
+ export class USyncUser {
5
2
  withId(id) {
6
3
  this.id = id;
7
4
  return this;
@@ -14,6 +11,14 @@ class USyncUser {
14
11
  this.phone = phone;
15
12
  return this;
16
13
  }
14
+ withUsername(username) {
15
+ this.username = username;
16
+ return this;
17
+ }
18
+ withUsernameKey(usernameKey) {
19
+ this.usernameKey = usernameKey;
20
+ return this;
21
+ }
17
22
  withType(type) {
18
23
  this.type = type;
19
24
  return this;
@@ -23,4 +28,4 @@ class USyncUser {
23
28
  return this;
24
29
  }
25
30
  }
26
- exports.USyncUser = USyncUser;
31
+ //# sourceMappingURL=USyncUser.js.map