jagproject 26.3.23 → 26.3.26

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 (209) hide show
  1. package/WAProto/GenerateStatics.sh +3 -4
  2. package/WAProto/WAProto.proto +1215 -511
  3. package/WAProto/fix-imports.js +73 -0
  4. package/WAProto/index.d.ts +14017 -0
  5. package/WAProto/index.js +64857 -145167
  6. package/engine-requirements.js +4 -7
  7. package/lib/Defaults/index.d.ts +74 -0
  8. package/lib/Defaults/index.js +49 -35
  9. package/lib/Defaults/phonenumber-mcc.json +223 -0
  10. package/lib/Defaults/wileys-version.json +2 -2
  11. package/lib/Signal/Group/ciphertext-message.d.ts +10 -0
  12. package/lib/Signal/Group/group-session-builder.d.ts +15 -0
  13. package/lib/Signal/Group/group-session-builder.js +5 -3
  14. package/lib/Signal/Group/group_cipher.d.ts +17 -0
  15. package/lib/Signal/Group/group_cipher.js +35 -46
  16. package/lib/Signal/Group/index.d.ts +12 -0
  17. package/lib/Signal/Group/index.js +21 -21
  18. package/lib/Signal/Group/keyhelper.d.ts +11 -0
  19. package/lib/Signal/Group/keyhelper.js +2 -2
  20. package/lib/Signal/Group/sender-chain-key.d.ts +14 -0
  21. package/lib/Signal/Group/sender-chain-key.js +5 -10
  22. package/lib/Signal/Group/sender-key-distribution-message.d.ts +17 -0
  23. package/lib/Signal/Group/sender-key-distribution-message.js +7 -7
  24. package/lib/Signal/Group/sender-key-message.d.ts +19 -0
  25. package/lib/Signal/Group/sender-key-message.js +8 -8
  26. package/lib/Signal/Group/sender-key-name.d.ts +18 -0
  27. package/lib/Signal/Group/sender-key-record.d.ts +31 -0
  28. package/lib/Signal/Group/sender-key-record.js +7 -16
  29. package/lib/Signal/Group/sender-key-state.d.ts +39 -0
  30. package/lib/Signal/Group/sender-key-state.js +25 -37
  31. package/lib/Signal/Group/sender-message-key.d.ts +12 -0
  32. package/lib/Signal/Group/sender-message-key.js +2 -2
  33. package/lib/Signal/libsignal.d.ts +5 -0
  34. package/lib/Signal/libsignal.js +358 -54
  35. package/lib/Signal/lid-mapping.d.ts +19 -0
  36. package/lib/Signal/lid-mapping.js +274 -0
  37. package/lib/Socket/Client/index.d.ts +3 -0
  38. package/lib/Socket/Client/index.js +2 -2
  39. package/lib/Socket/Client/types.d.ts +16 -0
  40. package/lib/Socket/Client/types.js +1 -0
  41. package/lib/Socket/Client/websocket.d.ts +13 -0
  42. package/lib/Socket/Client/websocket.js +18 -30
  43. package/lib/Socket/business.d.ts +202 -0
  44. package/lib/Socket/business.js +160 -38
  45. package/lib/Socket/chats.d.ts +111 -0
  46. package/lib/Socket/chats.js +497 -314
  47. package/lib/Socket/communities.d.ts +258 -0
  48. package/lib/Socket/communities.js +438 -0
  49. package/lib/Socket/community.js +333 -0
  50. package/lib/Socket/groups.d.ts +150 -0
  51. package/lib/Socket/groups.js +229 -91
  52. package/lib/Socket/index.d.ts +245 -0
  53. package/lib/Socket/index.js +9 -6
  54. package/lib/Socket/messages-recv.d.ts +187 -0
  55. package/lib/Socket/messages-recv.js +1105 -501
  56. package/lib/Socket/messages-send.d.ts +183 -0
  57. package/lib/Socket/messages-send.js +1181 -501
  58. package/lib/Socket/mex.d.ts +3 -0
  59. package/lib/Socket/mex.js +45 -0
  60. package/lib/Socket/newsletter.d.ts +160 -0
  61. package/lib/Socket/newsletter.js +227 -200
  62. package/lib/Socket/socket.d.ts +55 -0
  63. package/lib/Socket/socket.js +507 -206
  64. package/lib/Socket/usync.js +6 -6
  65. package/lib/Store/index.js +17 -5
  66. package/lib/Store/make-cache-manager-store.js +83 -0
  67. package/lib/Store/make-in-memory-store.js +48 -89
  68. package/lib/Store/make-ordered-dictionary.js +1 -1
  69. package/lib/Types/Auth.d.ts +116 -0
  70. package/lib/Types/Bussines.d.ts +25 -0
  71. package/lib/Types/Bussines.js +2 -0
  72. package/lib/Types/Call.d.ts +15 -0
  73. package/lib/Types/Chat.d.ts +123 -0
  74. package/lib/Types/Chat.js +7 -1
  75. package/lib/Types/Contact.d.ts +24 -0
  76. package/lib/Types/Events.d.ts +237 -0
  77. package/lib/Types/Events.js +1 -0
  78. package/lib/Types/GroupMetadata.d.ts +67 -0
  79. package/lib/Types/Label.d.ts +47 -0
  80. package/lib/Types/Label.js +1 -3
  81. package/lib/Types/LabelAssociation.d.ts +30 -0
  82. package/lib/Types/LabelAssociation.js +1 -3
  83. package/lib/Types/Message.d.ts +305 -0
  84. package/lib/Types/Message.js +9 -5
  85. package/lib/Types/MexUpdates.js +11 -0
  86. package/lib/Types/Newsletter.d.ts +135 -0
  87. package/lib/Types/Newsletter.js +36 -11
  88. package/lib/Types/Product.d.ts +79 -0
  89. package/lib/Types/Signal.d.ts +76 -0
  90. package/lib/Types/Signal.js +1 -0
  91. package/lib/Types/Socket.d.ts +133 -0
  92. package/lib/Types/Socket.js +1 -0
  93. package/lib/Types/State.d.ts +39 -0
  94. package/lib/Types/State.js +12 -0
  95. package/lib/Types/USync.d.ts +26 -0
  96. package/lib/Types/USync.js +1 -0
  97. package/lib/Types/index.d.ts +65 -0
  98. package/lib/Types/index.js +14 -14
  99. package/lib/Utils/audioToBuffer.js +31 -0
  100. package/lib/Utils/auth-utils.d.ts +19 -0
  101. package/lib/Utils/auth-utils.js +222 -123
  102. package/lib/Utils/baileys-event-stream.js +60 -0
  103. package/lib/Utils/bridge-runtime.d.ts +1 -0
  104. package/lib/Utils/bridge-runtime.js +14 -0
  105. package/lib/Utils/browser-utils.d.ts +4 -0
  106. package/lib/Utils/browser-utils.js +38 -29
  107. package/lib/Utils/business.d.ts +23 -0
  108. package/lib/Utils/business.js +54 -48
  109. package/lib/Utils/chat-utils.d.ts +70 -0
  110. package/lib/Utils/chat-utils.js +284 -189
  111. package/lib/Utils/crypto.d.ts +37 -0
  112. package/lib/Utils/crypto.js +16 -41
  113. package/lib/Utils/decode-wa-message.d.ts +48 -0
  114. package/lib/Utils/decode-wa-message.js +128 -48
  115. package/lib/Utils/event-buffer.d.ts +34 -0
  116. package/lib/Utils/event-buffer.js +124 -62
  117. package/lib/Utils/generics.d.ts +91 -0
  118. package/lib/Utils/generics.js +154 -138
  119. package/lib/Utils/history.d.ts +22 -0
  120. package/lib/Utils/history.js +77 -34
  121. package/lib/Utils/identity-change-handler.d.ts +37 -0
  122. package/lib/Utils/identity-change-handler.js +54 -0
  123. package/lib/Utils/index.d.ts +22 -0
  124. package/lib/Utils/index.js +32 -19
  125. package/lib/Utils/link-preview.d.ts +21 -0
  126. package/lib/Utils/link-preview.js +12 -17
  127. package/lib/Utils/logger.d.ts +13 -0
  128. package/lib/Utils/lt-hash.d.ts +8 -0
  129. package/lib/Utils/lt-hash.js +2 -43
  130. package/lib/Utils/make-mutex.d.ts +9 -0
  131. package/lib/Utils/make-mutex.js +21 -27
  132. package/lib/Utils/message-retry-manager.d.ts +110 -0
  133. package/lib/Utils/message-retry-manager.js +143 -45
  134. package/lib/Utils/messages-media.d.ts +130 -0
  135. package/lib/Utils/messages-media.js +429 -502
  136. package/lib/Utils/messages-newsletter.d.ts +84 -0
  137. package/lib/Utils/messages-newsletter.js +295 -0
  138. package/lib/Utils/messages.d.ts +92 -0
  139. package/lib/Utils/messages.js +1025 -674
  140. package/lib/Utils/noise-handler.d.ts +20 -0
  141. package/lib/Utils/noise-handler.js +145 -91
  142. package/lib/Utils/pre-key-manager.d.ts +28 -0
  143. package/lib/Utils/pre-key-manager.js +112 -0
  144. package/lib/Utils/process-message.d.ts +60 -0
  145. package/lib/Utils/process-message.js +316 -184
  146. package/lib/Utils/reporting-utils.d.ts +11 -0
  147. package/lib/Utils/reporting-utils.js +262 -0
  148. package/lib/Utils/resolve-jid.d.ts +43 -0
  149. package/lib/Utils/resolve-jid.js +95 -0
  150. package/lib/Utils/rust-bridge-shim.d.ts +22 -0
  151. package/lib/Utils/rust-bridge-shim.js +70 -0
  152. package/lib/Utils/serial-task-queue.js +29 -0
  153. package/lib/Utils/signal.d.ts +34 -0
  154. package/lib/Utils/signal.js +56 -39
  155. package/lib/Utils/streamToBuffer.js +17 -0
  156. package/lib/Utils/sync-action-utils.d.ts +19 -0
  157. package/lib/Utils/sync-action-utils.js +52 -0
  158. package/lib/Utils/tc-token-utils.d.ts +12 -0
  159. package/lib/Utils/tc-token-utils.js +20 -0
  160. package/lib/Utils/use-mongo-file-auth-state.js +71 -0
  161. package/lib/Utils/use-multi-file-auth-state.d.ts +13 -0
  162. package/lib/Utils/use-multi-file-auth-state.js +11 -12
  163. package/lib/Utils/use-single-file-auth-state.js +73 -0
  164. package/lib/Utils/validate-connection.d.ts +11 -0
  165. package/lib/Utils/validate-connection.js +59 -82
  166. package/lib/Utils/wileys-event-stream.js +1 -61
  167. package/lib/WABinary/constants.d.ts +28 -0
  168. package/lib/WABinary/decode.d.ts +7 -0
  169. package/lib/WABinary/decode.js +39 -4
  170. package/lib/WABinary/encode.d.ts +3 -0
  171. package/lib/WABinary/encode.js +17 -11
  172. package/lib/WABinary/generic-utils.d.ts +15 -0
  173. package/lib/WABinary/generic-utils.js +46 -18
  174. package/lib/WABinary/index.d.ts +6 -0
  175. package/lib/WABinary/index.js +9 -5
  176. package/lib/WABinary/jid-utils.d.ts +48 -0
  177. package/lib/WABinary/jid-utils.js +67 -37
  178. package/lib/WABinary/types.d.ts +19 -0
  179. package/lib/WABinary/types.js +34 -0
  180. package/lib/WAM/BinaryInfo.d.ts +9 -0
  181. package/lib/WAM/constants.d.ts +40 -0
  182. package/lib/WAM/constants.js +19183 -11678
  183. package/lib/WAM/encode.d.ts +3 -0
  184. package/lib/WAM/encode.js +15 -17
  185. package/lib/WAM/index.d.ts +4 -0
  186. package/lib/WAM/index.js +3 -3
  187. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +10 -0
  188. package/lib/WAUSync/Protocols/USyncContactProtocol.js +6 -6
  189. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +23 -0
  190. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +9 -9
  191. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +13 -0
  192. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +6 -6
  193. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +13 -0
  194. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +7 -8
  195. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +26 -0
  196. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +18 -17
  197. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +10 -0
  198. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +11 -3
  199. package/lib/WAUSync/Protocols/index.d.ts +5 -0
  200. package/lib/WAUSync/Protocols/index.js +6 -4
  201. package/lib/WAUSync/USyncQuery.d.ts +29 -0
  202. package/lib/WAUSync/USyncQuery.js +38 -30
  203. package/lib/WAUSync/USyncUser.d.ts +13 -0
  204. package/lib/WAUSync/index.d.ts +4 -0
  205. package/lib/WAUSync/index.js +3 -3
  206. package/lib/index.d.ts +12 -0
  207. package/lib/index.js +3 -5
  208. package/package.json +7 -4
  209. package/LICENSE +0 -21
@@ -0,0 +1,3 @@
1
+ import { BinaryInfo } from './BinaryInfo.js';
2
+ export declare const encodeWAM: (binaryInfo: BinaryInfo) => Buffer<ArrayBuffer>;
3
+ //# sourceMappingURL=encode.d.ts.map
package/lib/WAM/encode.js CHANGED
@@ -1,22 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.encodeWAM = void 0;
4
- const constants_1 = require("./constants");
4
+ const BinaryInfo_js_1 = require("./BinaryInfo.js");
5
+ const constants_js_1 = require("./constants.js");
5
6
  const getHeaderBitLength = (key) => (key < 256 ? 2 : 3);
6
7
  const encodeWAM = (binaryInfo) => {
7
8
  binaryInfo.buffer = [];
8
9
  encodeWAMHeader(binaryInfo);
9
10
  encodeEvents(binaryInfo);
10
- console.log(binaryInfo.buffer);
11
- const totalSize = binaryInfo.buffer
12
- .map((a) => a.length)
13
- .reduce((a, b) => a + b);
11
+ const totalSize = binaryInfo.buffer.map(a => a.length).reduce((a, b) => a + b);
14
12
  const buffer = Buffer.alloc(totalSize);
15
13
  let offset = 0;
16
- binaryInfo.buffer.forEach((buffer_) => {
14
+ for (const buffer_ of binaryInfo.buffer) {
17
15
  buffer_.copy(buffer, offset);
18
16
  offset += buffer_.length;
19
- });
17
+ }
20
18
  return buffer;
21
19
  };
22
20
  exports.encodeWAM = encodeWAM;
@@ -31,34 +29,34 @@ function encodeWAMHeader(binaryInfo) {
31
29
  }
32
30
  function encodeGlobalAttributes(binaryInfo, globals) {
33
31
  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;
32
+ const id = constants_js_1.WEB_GLOBALS.find(a => a?.name === key).id;
35
33
  let value = _value;
36
34
  if (typeof value === 'boolean') {
37
35
  value = value ? 1 : 0;
38
36
  }
39
- binaryInfo.buffer.push(serializeData(id, value, constants_1.FLAG_GLOBAL));
37
+ binaryInfo.buffer.push(serializeData(id, value, constants_js_1.FLAG_GLOBAL));
40
38
  }
41
39
  }
42
40
  function encodeEvents(binaryInfo) {
43
- for (const [name, { props, globals },] of binaryInfo.events.map((a) => Object.entries(a)[0])) {
41
+ for (const [name, { props, globals }] of binaryInfo.events.map(a => Object.entries(a)[0])) {
44
42
  encodeGlobalAttributes(binaryInfo, globals);
45
- const event = constants_1.WEB_EVENTS.find((a) => a.name === name);
43
+ const event = constants_js_1.WEB_EVENTS.find(a => a.name === name);
46
44
  const props_ = Object.entries(props);
47
45
  let extended = false;
48
46
  for (const [, value] of props_) {
49
47
  extended || (extended = value !== null);
50
48
  }
51
- const eventFlag = extended ? constants_1.FLAG_EVENT : constants_1.FLAG_EVENT | constants_1.FLAG_EXTENDED;
49
+ const eventFlag = extended ? constants_js_1.FLAG_EVENT : constants_js_1.FLAG_EVENT | constants_js_1.FLAG_EXTENDED;
52
50
  binaryInfo.buffer.push(serializeData(event.id, -event.weight, eventFlag));
53
51
  for (let i = 0; i < props_.length; i++) {
54
52
  const [key, _value] = props_[i];
55
- const id = (event.props)[key][0];
56
- extended = i < (props_.length - 1);
53
+ const id = event.props[key]?.[0];
54
+ extended = i < props_.length - 1;
57
55
  let value = _value;
58
56
  if (typeof value === 'boolean') {
59
57
  value = value ? 1 : 0;
60
58
  }
61
- const fieldFlag = extended ? constants_1.FLAG_EVENT : constants_1.FLAG_FIELD | constants_1.FLAG_EXTENDED;
59
+ const fieldFlag = extended ? constants_js_1.FLAG_EVENT : constants_js_1.FLAG_FIELD | constants_js_1.FLAG_EXTENDED;
62
60
  binaryInfo.buffer.push(serializeData(id, value, fieldFlag));
63
61
  }
64
62
  }
@@ -68,7 +66,7 @@ function serializeData(key, value, flag) {
68
66
  let buffer;
69
67
  let offset = 0;
70
68
  if (value === null) {
71
- if (flag === constants_1.FLAG_GLOBAL) {
69
+ if (flag === constants_js_1.FLAG_GLOBAL) {
72
70
  buffer = Buffer.alloc(bufferLength);
73
71
  offset = serializeHeader(buffer, offset, key, flag);
74
72
  return buffer;
@@ -146,7 +144,7 @@ function serializeHeader(buffer, offset, key, flag) {
146
144
  offset += 1;
147
145
  }
148
146
  else {
149
- buffer.writeUInt8(flag | constants_1.FLAG_BYTE, offset);
147
+ buffer.writeUInt8(flag | constants_js_1.FLAG_BYTE, offset);
150
148
  offset += 1;
151
149
  buffer.writeUInt16LE(key, offset);
152
150
  offset += 2;
@@ -0,0 +1,4 @@
1
+ export * from './constants.js';
2
+ export * from './encode.js';
3
+ export * from './BinaryInfo.js';
4
+ //# sourceMappingURL=index.d.ts.map
package/lib/WAM/index.js CHANGED
@@ -14,6 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./constants"), exports);
18
- __exportStar(require("./encode"), exports);
19
- __exportStar(require("./BinaryInfo"), exports);
17
+ __exportStar(require("./constants.js"), exports);
18
+ __exportStar(require("./encode.js"), exports);
19
+ __exportStar(require("./BinaryInfo.js"), exports);
@@ -0,0 +1,10 @@
1
+ import type { USyncQueryProtocol } from '../../Types/USync.js';
2
+ import { type BinaryNode } from '../../WABinary/index.js';
3
+ import { USyncUser } from '../USyncUser.js';
4
+ export declare class USyncContactProtocol implements USyncQueryProtocol {
5
+ name: string;
6
+ getQueryElement(): BinaryNode;
7
+ getUserElement(user: USyncUser): BinaryNode;
8
+ parser(node: BinaryNode): boolean;
9
+ }
10
+ //# sourceMappingURL=USyncContactProtocol.d.ts.map
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.USyncContactProtocol = void 0;
4
- const WABinary_1 = require("../../WABinary");
4
+ const index_js_1 = require("../../WABinary/index.js");
5
+ const USyncUser_js_1 = require("../USyncUser.js");
5
6
  class USyncContactProtocol {
6
7
  constructor() {
7
8
  this.name = 'contact';
@@ -9,7 +10,7 @@ class USyncContactProtocol {
9
10
  getQueryElement() {
10
11
  return {
11
12
  tag: 'contact',
12
- attrs: {},
13
+ attrs: {}
13
14
  };
14
15
  }
15
16
  getUserElement(user) {
@@ -17,14 +18,13 @@ class USyncContactProtocol {
17
18
  return {
18
19
  tag: 'contact',
19
20
  attrs: {},
20
- content: user.phone,
21
+ content: user.phone
21
22
  };
22
23
  }
23
24
  parser(node) {
24
- var _a;
25
25
  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';
26
+ (0, index_js_1.assertNodeErrorFree)(node);
27
+ return node?.attrs?.type === 'in';
28
28
  }
29
29
  return false;
30
30
  }
@@ -0,0 +1,23 @@
1
+ import type { USyncQueryProtocol } from '../../Types/USync.js';
2
+ import { type BinaryNode } from '../../WABinary/index.js';
3
+ export type KeyIndexData = {
4
+ timestamp: number;
5
+ signedKeyIndex?: Uint8Array;
6
+ expectedTimestamp?: number;
7
+ };
8
+ export type DeviceListData = {
9
+ id: number;
10
+ keyIndex?: number;
11
+ isHosted?: boolean;
12
+ };
13
+ export type ParsedDeviceInfo = {
14
+ deviceList?: DeviceListData[];
15
+ keyIndex?: KeyIndexData;
16
+ };
17
+ export declare class USyncDeviceProtocol implements USyncQueryProtocol {
18
+ name: string;
19
+ getQueryElement(): BinaryNode;
20
+ getUserElement(): BinaryNode | null;
21
+ parser(node: BinaryNode): ParsedDeviceInfo;
22
+ }
23
+ //# sourceMappingURL=USyncDeviceProtocol.d.ts.map
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.USyncDeviceProtocol = void 0;
4
- const WABinary_1 = require("../../WABinary");
4
+ const index_js_1 = require("../../WABinary/index.js");
5
5
  class USyncDeviceProtocol {
6
6
  constructor() {
7
7
  this.name = 'devices';
@@ -10,8 +10,8 @@ class USyncDeviceProtocol {
10
10
  return {
11
11
  tag: 'devices',
12
12
  attrs: {
13
- version: '2',
14
- },
13
+ version: '2'
14
+ }
15
15
  };
16
16
  }
17
17
  getUserElement( /* user: USyncUser */) {
@@ -24,10 +24,10 @@ class USyncDeviceProtocol {
24
24
  const deviceList = [];
25
25
  let keyIndex = undefined;
26
26
  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)) {
27
+ (0, index_js_1.assertNodeErrorFree)(node);
28
+ const deviceListNode = (0, index_js_1.getBinaryNodeChild)(node, 'device-list');
29
+ const keyIndexNode = (0, index_js_1.getBinaryNodeChild)(node, 'key-index-list');
30
+ if (Array.isArray(deviceListNode?.content)) {
31
31
  for (const { tag, attrs } of deviceListNode.content) {
32
32
  const id = +attrs.id;
33
33
  const keyIndex = +attrs['key-index'];
@@ -40,10 +40,10 @@ class USyncDeviceProtocol {
40
40
  }
41
41
  }
42
42
  }
43
- if ((keyIndexNode === null || keyIndexNode === void 0 ? void 0 : keyIndexNode.tag) === 'key-index-list') {
43
+ if (keyIndexNode?.tag === 'key-index-list') {
44
44
  keyIndex = {
45
45
  timestamp: +keyIndexNode.attrs['ts'],
46
- signedKeyIndex: keyIndexNode === null || keyIndexNode === void 0 ? void 0 : keyIndexNode.content,
46
+ signedKeyIndex: keyIndexNode?.content,
47
47
  expectedTimestamp: keyIndexNode.attrs['expected_ts'] ? +keyIndexNode.attrs['expected_ts'] : undefined
48
48
  };
49
49
  }
@@ -0,0 +1,13 @@
1
+ import type { USyncQueryProtocol } from '../../Types/USync.js';
2
+ import { type BinaryNode } from '../../WABinary/index.js';
3
+ export type DisappearingModeData = {
4
+ duration: number;
5
+ setAt?: Date;
6
+ };
7
+ export declare class USyncDisappearingModeProtocol implements USyncQueryProtocol {
8
+ name: string;
9
+ getQueryElement(): BinaryNode;
10
+ getUserElement(): null;
11
+ parser(node: BinaryNode): DisappearingModeData | undefined;
12
+ }
13
+ //# sourceMappingURL=USyncDisappearingModeProtocol.d.ts.map
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.USyncDisappearingModeProtocol = void 0;
4
- const WABinary_1 = require("../../WABinary");
4
+ const index_js_1 = require("../../WABinary/index.js");
5
5
  class USyncDisappearingModeProtocol {
6
6
  constructor() {
7
7
  this.name = 'disappearing_mode';
@@ -9,7 +9,7 @@ class USyncDisappearingModeProtocol {
9
9
  getQueryElement() {
10
10
  return {
11
11
  tag: 'disappearing_mode',
12
- attrs: {},
12
+ attrs: {}
13
13
  };
14
14
  }
15
15
  getUserElement() {
@@ -17,12 +17,12 @@ class USyncDisappearingModeProtocol {
17
17
  }
18
18
  parser(node) {
19
19
  if (node.tag === 'disappearing_mode') {
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);
20
+ (0, index_js_1.assertNodeErrorFree)(node);
21
+ const duration = +node?.attrs.duration;
22
+ const setAt = new Date(+(node?.attrs.t || 0) * 1000);
23
23
  return {
24
24
  duration,
25
- setAt,
25
+ setAt
26
26
  };
27
27
  }
28
28
  }
@@ -0,0 +1,13 @@
1
+ import type { USyncQueryProtocol } from '../../Types/USync.js';
2
+ import { type BinaryNode } from '../../WABinary/index.js';
3
+ export type StatusData = {
4
+ status?: string | null;
5
+ setAt?: Date;
6
+ };
7
+ export declare class USyncStatusProtocol implements USyncQueryProtocol {
8
+ name: string;
9
+ getQueryElement(): BinaryNode;
10
+ getUserElement(): null;
11
+ parser(node: BinaryNode): StatusData | undefined;
12
+ }
13
+ //# sourceMappingURL=USyncStatusProtocol.d.ts.map
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.USyncStatusProtocol = void 0;
4
- const WABinary_1 = require("../../WABinary");
4
+ const index_js_1 = require("../../WABinary/index.js");
5
5
  class USyncStatusProtocol {
6
6
  constructor() {
7
7
  this.name = 'status';
@@ -9,20 +9,19 @@ class USyncStatusProtocol {
9
9
  getQueryElement() {
10
10
  return {
11
11
  tag: 'status',
12
- attrs: {},
12
+ attrs: {}
13
13
  };
14
14
  }
15
15
  getUserElement() {
16
16
  return null;
17
17
  }
18
18
  parser(node) {
19
- var _a, _b, _c;
20
19
  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);
20
+ (0, index_js_1.assertNodeErrorFree)(node);
21
+ let status = node?.content?.toString() ?? null;
22
+ const setAt = new Date(+(node?.attrs.t || 0) * 1000);
24
23
  if (!status) {
25
- if (+((_c = node.attrs) === null || _c === void 0 ? void 0 : _c.code) === 401) {
24
+ if (node.attrs?.code && +node.attrs.code === 401) {
26
25
  status = '';
27
26
  }
28
27
  else {
@@ -34,7 +33,7 @@ class USyncStatusProtocol {
34
33
  }
35
34
  return {
36
35
  status,
37
- setAt,
36
+ setAt
38
37
  };
39
38
  }
40
39
  }
@@ -0,0 +1,26 @@
1
+ import type { USyncQueryProtocol } from '../../Types/USync.js';
2
+ import { type BinaryNode } from '../../WABinary/index.js';
3
+ import { USyncUser } from '../USyncUser.js';
4
+ export type BotProfileCommand = {
5
+ name: string;
6
+ description: string;
7
+ };
8
+ export type BotProfileInfo = {
9
+ jid: string;
10
+ name: string;
11
+ attributes: string;
12
+ description: string;
13
+ category: string;
14
+ isDefault: boolean;
15
+ prompts: string[];
16
+ personaId: string;
17
+ commands: BotProfileCommand[];
18
+ commandsDescription: string;
19
+ };
20
+ export declare class USyncBotProfileProtocol implements USyncQueryProtocol {
21
+ name: string;
22
+ getQueryElement(): BinaryNode;
23
+ getUserElement(user: USyncUser): BinaryNode;
24
+ parser(node: BinaryNode): BotProfileInfo;
25
+ }
26
+ //# sourceMappingURL=UsyncBotProfileProtocol.d.ts.map
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.USyncBotProfileProtocol = void 0;
4
- const WABinary_1 = require("../../WABinary");
4
+ const index_js_1 = require("../../WABinary/index.js");
5
+ const USyncUser_js_1 = require("../USyncUser.js");
5
6
  class USyncBotProfileProtocol {
6
7
  constructor() {
7
8
  this.name = 'bot';
@@ -17,34 +18,34 @@ class USyncBotProfileProtocol {
17
18
  return {
18
19
  tag: 'bot',
19
20
  attrs: {},
20
- content: [{ tag: 'profile', attrs: { 'persona_id': user.personaId } }]
21
+ content: [{ tag: 'profile', attrs: { persona_id: user.personaId } }]
21
22
  };
22
23
  }
23
24
  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');
25
+ const botNode = (0, index_js_1.getBinaryNodeChild)(node, 'bot');
26
+ const profile = (0, index_js_1.getBinaryNodeChild)(botNode, 'profile');
27
+ const commandsNode = (0, index_js_1.getBinaryNodeChild)(profile, 'commands');
28
+ const promptsNode = (0, index_js_1.getBinaryNodeChild)(profile, 'prompts');
28
29
  const commands = [];
29
30
  const prompts = [];
30
- for (const command of (0, WABinary_1.getBinaryNodeChildren)(commandsNode, 'command')) {
31
+ for (const command of (0, index_js_1.getBinaryNodeChildren)(commandsNode, 'command')) {
31
32
  commands.push({
32
- name: (0, WABinary_1.getBinaryNodeChildString)(command, 'name'),
33
- description: (0, WABinary_1.getBinaryNodeChildString)(command, 'description')
33
+ name: (0, index_js_1.getBinaryNodeChildString)(command, 'name'),
34
+ description: (0, index_js_1.getBinaryNodeChildString)(command, 'description')
34
35
  });
35
36
  }
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')}`);
37
+ for (const prompt of (0, index_js_1.getBinaryNodeChildren)(promptsNode, 'prompt')) {
38
+ prompts.push(`${(0, index_js_1.getBinaryNodeChildString)(prompt, 'emoji')} ${(0, index_js_1.getBinaryNodeChildString)(prompt, 'text')}`);
38
39
  }
39
40
  return {
40
- isDefault: !!(0, WABinary_1.getBinaryNodeChild)(profile, 'default'),
41
+ isDefault: !!(0, index_js_1.getBinaryNodeChild)(profile, 'default'),
41
42
  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'),
43
+ name: (0, index_js_1.getBinaryNodeChildString)(profile, 'name'),
44
+ attributes: (0, index_js_1.getBinaryNodeChildString)(profile, 'attributes'),
45
+ description: (0, index_js_1.getBinaryNodeChildString)(profile, 'description'),
46
+ category: (0, index_js_1.getBinaryNodeChildString)(profile, 'category'),
46
47
  personaId: profile.attrs['persona_id'],
47
- commandsDescription: (0, WABinary_1.getBinaryNodeChildString)(commandsNode, 'description'),
48
+ commandsDescription: (0, index_js_1.getBinaryNodeChildString)(commandsNode, 'description'),
48
49
  commands,
49
50
  prompts
50
51
  };
@@ -0,0 +1,10 @@
1
+ import type { USyncQueryProtocol } from '../../Types/USync.js';
2
+ import type { BinaryNode } from '../../WABinary/index.js';
3
+ import type { USyncUser } from '../USyncUser.js';
4
+ export declare class USyncLIDProtocol implements USyncQueryProtocol {
5
+ name: string;
6
+ getQueryElement(): BinaryNode;
7
+ getUserElement(user: USyncUser): BinaryNode | null;
8
+ parser(node: BinaryNode): string | null;
9
+ }
10
+ //# sourceMappingURL=UsyncLIDProtocol.d.ts.map
@@ -8,11 +8,19 @@ class USyncLIDProtocol {
8
8
  getQueryElement() {
9
9
  return {
10
10
  tag: 'lid',
11
- attrs: {},
11
+ attrs: {}
12
12
  };
13
13
  }
14
- getUserElement() {
15
- return null;
14
+ getUserElement(user) {
15
+ if (user.lid) {
16
+ return {
17
+ tag: 'lid',
18
+ attrs: { jid: user.lid }
19
+ };
20
+ }
21
+ else {
22
+ return null;
23
+ }
16
24
  }
17
25
  parser(node) {
18
26
  if (node.tag === 'lid') {
@@ -0,0 +1,5 @@
1
+ export * from './USyncDeviceProtocol.js';
2
+ export * from './USyncContactProtocol.js';
3
+ export * from './USyncStatusProtocol.js';
4
+ export * from './USyncDisappearingModeProtocol.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -14,7 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
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);
17
+ __exportStar(require("./USyncDeviceProtocol.js"), exports);
18
+ __exportStar(require("./USyncContactProtocol.js"), exports);
19
+ __exportStar(require("./USyncStatusProtocol.js"), exports);
20
+ __exportStar(require("./USyncDisappearingModeProtocol.js"), exports);
21
+ __exportStar(require("./UsyncBotProfileProtocol.js"), exports);
22
+ __exportStar(require("./UsyncLIDProtocol.js"), exports);
@@ -0,0 +1,29 @@
1
+ import type { USyncQueryProtocol } from '../Types/USync.js';
2
+ import { type BinaryNode } from '../WABinary/index.js';
3
+ import { USyncUser } from './USyncUser.js';
4
+ export type USyncQueryResultList = {
5
+ [protocol: string]: unknown;
6
+ id: string;
7
+ };
8
+ export type USyncQueryResult = {
9
+ list: USyncQueryResultList[];
10
+ sideList: USyncQueryResultList[];
11
+ };
12
+ export declare class USyncQuery {
13
+ protocols: USyncQueryProtocol[];
14
+ users: USyncUser[];
15
+ context: string;
16
+ mode: string;
17
+ constructor();
18
+ withMode(mode: string): this;
19
+ withContext(context: string): this;
20
+ withUser(user: USyncUser): this;
21
+ parseUSyncQueryResult(result: BinaryNode | undefined): USyncQueryResult | undefined;
22
+ withDeviceProtocol(): this;
23
+ withContactProtocol(): this;
24
+ withStatusProtocol(): this;
25
+ withDisappearingModeProtocol(): this;
26
+ withBotProfileProtocol(): this;
27
+ withLIDProtocol(): this;
28
+ }
29
+ //# sourceMappingURL=USyncQuery.d.ts.map
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
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");
4
+ const index_js_1 = require("../WABinary/index.js");
5
+ const UsyncBotProfileProtocol_js_1 = require("./Protocols/UsyncBotProfileProtocol.js");
6
+ const UsyncLIDProtocol_js_1 = require("./Protocols/UsyncLIDProtocol.js");
7
+ const index_js_2 = require("./Protocols/index.js");
8
+ const USyncUser_js_1 = require("./USyncUser.js");
8
9
  class USyncQuery {
9
10
  constructor() {
10
11
  this.protocols = [];
@@ -25,64 +26,71 @@ class USyncQuery {
25
26
  return this;
26
27
  }
27
28
  parseUSyncQueryResult(result) {
28
- if (result.attrs.type !== 'result') {
29
+ if (!result || result.attrs.type !== 'result') {
29
30
  return;
30
31
  }
31
- const protocolMap = Object.fromEntries(this.protocols.map((protocol) => {
32
+ const protocolMap = Object.fromEntries(this.protocols.map(protocol => {
32
33
  return [protocol.name, protocol.parser];
33
34
  }));
34
35
  const queryResult = {
35
36
  // TODO: implement errors etc.
36
37
  list: [],
37
- sideList: [],
38
+ sideList: []
38
39
  };
39
- const usyncNode = (0, WABinary_1.getBinaryNodeChild)(result, 'usync');
40
+ const usyncNode = (0, index_js_1.getBinaryNodeChild)(result, 'usync');
40
41
  //TODO: implement error backoff, refresh etc.
41
42
  //TODO: see if there are any errors in the result node
42
43
  //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
- });
44
+ const listNode = usyncNode ? (0, index_js_1.getBinaryNodeChild)(usyncNode, 'list') : undefined;
45
+ if (listNode?.content && Array.isArray(listNode.content)) {
46
+ queryResult.list = listNode.content.reduce((acc, node) => {
47
+ const id = node?.attrs.jid;
48
+ if (id) {
49
+ const data = Array.isArray(node?.content)
50
+ ? Object.fromEntries(node.content
51
+ .map(content => {
52
+ const protocol = content.tag;
53
+ const parser = protocolMap[protocol];
54
+ if (parser) {
55
+ return [protocol, parser(content)];
56
+ }
57
+ else {
58
+ return [protocol, null];
59
+ }
60
+ })
61
+ .filter(([, b]) => b !== null))
62
+ : {};
63
+ acc.push({ ...data, id });
64
+ }
65
+ return acc;
66
+ }, []);
59
67
  }
60
68
  //TODO: implement side list
61
69
  //const sideListNode = getBinaryNodeChild(usyncNode, 'side_list')
62
70
  return queryResult;
63
71
  }
64
72
  withDeviceProtocol() {
65
- this.protocols.push(new Protocols_1.USyncDeviceProtocol());
73
+ this.protocols.push(new index_js_2.USyncDeviceProtocol());
66
74
  return this;
67
75
  }
68
76
  withContactProtocol() {
69
- this.protocols.push(new Protocols_1.USyncContactProtocol());
77
+ this.protocols.push(new index_js_2.USyncContactProtocol());
70
78
  return this;
71
79
  }
72
80
  withStatusProtocol() {
73
- this.protocols.push(new Protocols_1.USyncStatusProtocol());
81
+ this.protocols.push(new index_js_2.USyncStatusProtocol());
74
82
  return this;
75
83
  }
76
84
  withDisappearingModeProtocol() {
77
- this.protocols.push(new Protocols_1.USyncDisappearingModeProtocol());
85
+ this.protocols.push(new index_js_2.USyncDisappearingModeProtocol());
78
86
  return this;
79
87
  }
80
88
  withBotProfileProtocol() {
81
- this.protocols.push(new UsyncBotProfileProtocol_1.USyncBotProfileProtocol());
89
+ this.protocols.push(new UsyncBotProfileProtocol_js_1.USyncBotProfileProtocol());
82
90
  return this;
83
91
  }
84
92
  withLIDProtocol() {
85
- this.protocols.push(new UsyncLIDProtocol_1.USyncLIDProtocol());
93
+ this.protocols.push(new UsyncLIDProtocol_js_1.USyncLIDProtocol());
86
94
  return this;
87
95
  }
88
96
  }
@@ -0,0 +1,13 @@
1
+ export declare class USyncUser {
2
+ id?: string;
3
+ lid?: string;
4
+ phone?: string;
5
+ type?: string;
6
+ personaId?: string;
7
+ withId(id: string): this;
8
+ withLid(lid: string): this;
9
+ withPhone(phone: string): this;
10
+ withType(type: string): this;
11
+ withPersonaId(personaId: string): this;
12
+ }
13
+ //# sourceMappingURL=USyncUser.d.ts.map