@skyzopedia/baileys-mod 5.0.8 → 6.0.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 (212) hide show
  1. package/WAProto/index.js +133384 -57814
  2. package/engine-requirements.js +10 -0
  3. package/lib/Defaults/baileys-version.json +3 -0
  4. package/lib/Defaults/index.d.ts +53 -0
  5. package/lib/Defaults/index.js +141 -117
  6. package/lib/Defaults/phonenumber-mcc.json +223 -0
  7. package/lib/Signal/Group/ciphertext-message.d.ts +9 -0
  8. package/lib/Signal/Group/ciphertext-message.js +14 -12
  9. package/lib/Signal/Group/group-session-builder.d.ts +14 -0
  10. package/lib/Signal/Group/group-session-builder.js +42 -10
  11. package/lib/Signal/Group/group_cipher.d.ts +17 -0
  12. package/lib/Signal/Group/group_cipher.js +87 -75
  13. package/lib/Signal/Group/index.d.ts +11 -0
  14. package/lib/Signal/Group/index.js +57 -13
  15. package/lib/Signal/Group/keyhelper.d.ts +10 -0
  16. package/lib/Signal/Group/keyhelper.js +52 -17
  17. package/lib/Signal/Group/queue-job.d.ts +1 -0
  18. package/lib/Signal/Group/queue-job.js +57 -0
  19. package/lib/Signal/Group/sender-chain-key.d.ts +13 -0
  20. package/lib/Signal/Group/sender-chain-key.js +33 -27
  21. package/lib/Signal/Group/sender-key-distribution-message.d.ts +16 -0
  22. package/lib/Signal/Group/sender-key-distribution-message.js +63 -62
  23. package/lib/Signal/Group/sender-key-message.d.ts +18 -0
  24. package/lib/Signal/Group/sender-key-message.js +66 -65
  25. package/lib/Signal/Group/sender-key-name.d.ts +17 -0
  26. package/lib/Signal/Group/sender-key-name.js +44 -45
  27. package/lib/Signal/Group/sender-key-record.d.ts +30 -0
  28. package/lib/Signal/Group/sender-key-record.js +49 -39
  29. package/lib/Signal/Group/sender-key-state.d.ts +38 -0
  30. package/lib/Signal/Group/sender-key-state.js +93 -80
  31. package/lib/Signal/Group/sender-message-key.d.ts +11 -0
  32. package/lib/Signal/Group/sender-message-key.js +28 -27
  33. package/lib/Signal/libsignal.d.ts +3 -0
  34. package/lib/Signal/libsignal.js +163 -313
  35. package/lib/Socket/Client/abstract-socket-client.d.ts +17 -0
  36. package/lib/Socket/Client/abstract-socket-client.js +13 -0
  37. package/lib/Socket/Client/index.d.ts +3 -0
  38. package/lib/Socket/Client/index.js +19 -4
  39. package/lib/Socket/Client/mobile-socket-client.d.ts +13 -0
  40. package/lib/Socket/Client/mobile-socket-client.js +65 -0
  41. package/lib/Socket/Client/web-socket-client.d.ts +12 -0
  42. package/lib/Socket/Client/web-socket-client.js +62 -0
  43. package/lib/Socket/business.d.ts +171 -0
  44. package/lib/Socket/business.js +242 -359
  45. package/lib/Socket/chats.d.ts +267 -0
  46. package/lib/Socket/chats.js +935 -846
  47. package/lib/Socket/dugong.d.ts +254 -0
  48. package/lib/Socket/dugong.js +484 -0
  49. package/lib/Socket/groups.d.ts +115 -0
  50. package/lib/Socket/groups.js +309 -304
  51. package/lib/Socket/index.d.ts +173 -0
  52. package/lib/Socket/index.js +10 -15
  53. package/lib/Socket/messages-recv.d.ts +161 -0
  54. package/lib/Socket/messages-recv.js +1054 -1107
  55. package/lib/Socket/messages-send.d.ts +149 -0
  56. package/lib/Socket/messages-send.js +447 -706
  57. package/lib/Socket/newsletter.d.ts +134 -0
  58. package/lib/Socket/newsletter.js +314 -199
  59. package/lib/Socket/registration.d.ts +267 -0
  60. package/lib/Socket/registration.js +166 -0
  61. package/lib/Socket/socket.d.ts +43 -0
  62. package/lib/Socket/socket.js +650 -777
  63. package/lib/Socket/usync.d.ts +36 -0
  64. package/lib/Socket/usync.js +70 -0
  65. package/lib/Store/index.d.ts +3 -0
  66. package/lib/Store/index.js +10 -6
  67. package/lib/Store/make-cache-manager-store.d.ts +13 -0
  68. package/lib/Store/make-cache-manager-store.js +81 -73
  69. package/lib/Store/make-in-memory-store.d.ts +118 -0
  70. package/lib/Store/make-in-memory-store.js +423 -286
  71. package/lib/Store/make-ordered-dictionary.d.ts +13 -0
  72. package/lib/Store/make-ordered-dictionary.js +79 -77
  73. package/lib/Store/object-repository.d.ts +10 -0
  74. package/lib/Store/object-repository.js +26 -24
  75. package/lib/Types/Auth.d.ts +110 -0
  76. package/lib/Types/Auth.js +2 -3
  77. package/lib/Types/Call.d.ts +13 -0
  78. package/lib/Types/Call.js +2 -3
  79. package/lib/Types/Chat.d.ts +102 -0
  80. package/lib/Types/Chat.js +4 -9
  81. package/lib/Types/Contact.d.ts +19 -0
  82. package/lib/Types/Contact.js +2 -3
  83. package/lib/Types/Events.d.ts +157 -0
  84. package/lib/Types/Events.js +2 -3
  85. package/lib/Types/GroupMetadata.d.ts +55 -0
  86. package/lib/Types/GroupMetadata.js +2 -3
  87. package/lib/Types/Label.d.ts +35 -0
  88. package/lib/Types/Label.js +26 -24
  89. package/lib/Types/LabelAssociation.d.ts +29 -0
  90. package/lib/Types/LabelAssociation.js +8 -6
  91. package/lib/Types/Message.d.ts +273 -0
  92. package/lib/Types/Message.js +9 -12
  93. package/lib/Types/Newsletter.d.ts +103 -0
  94. package/lib/Types/Newsletter.js +38 -33
  95. package/lib/Types/Product.d.ts +78 -0
  96. package/lib/Types/Product.js +2 -3
  97. package/lib/Types/Signal.d.ts +57 -0
  98. package/lib/Types/Signal.js +2 -3
  99. package/lib/Types/Socket.d.ts +111 -0
  100. package/lib/Types/Socket.js +2 -4
  101. package/lib/Types/State.d.ts +27 -0
  102. package/lib/Types/State.js +2 -11
  103. package/lib/Types/USync.d.ts +25 -0
  104. package/lib/Types/USync.js +2 -3
  105. package/lib/Types/index.d.ts +57 -0
  106. package/lib/Types/index.js +41 -27
  107. package/lib/Utils/auth-utils.d.ts +18 -0
  108. package/lib/Utils/auth-utils.js +198 -211
  109. package/lib/Utils/baileys-event-stream.d.ts +16 -0
  110. package/lib/Utils/baileys-event-stream.js +61 -42
  111. package/lib/Utils/business.d.ts +22 -0
  112. package/lib/Utils/business.js +214 -213
  113. package/lib/Utils/chat-utils.d.ts +71 -0
  114. package/lib/Utils/chat-utils.js +687 -710
  115. package/lib/Utils/crypto.d.ts +41 -0
  116. package/lib/Utils/crypto.js +133 -112
  117. package/lib/Utils/decode-wa-message.d.ts +19 -0
  118. package/lib/Utils/decode-wa-message.js +183 -252
  119. package/lib/Utils/event-buffer.d.ts +35 -0
  120. package/lib/Utils/event-buffer.js +496 -510
  121. package/lib/Utils/generics.d.ts +92 -0
  122. package/lib/Utils/generics.js +392 -319
  123. package/lib/Utils/generics.js.bak +433 -0
  124. package/lib/Utils/history.d.ts +15 -0
  125. package/lib/Utils/history.js +92 -83
  126. package/lib/Utils/index.d.ts +17 -0
  127. package/lib/Utils/index.js +33 -21
  128. package/lib/Utils/link-preview.d.ts +21 -0
  129. package/lib/Utils/link-preview.js +83 -71
  130. package/lib/Utils/logger.d.ts +4 -0
  131. package/lib/Utils/logger.js +7 -5
  132. package/lib/Utils/lt-hash.d.ts +12 -0
  133. package/lib/Utils/lt-hash.js +46 -40
  134. package/lib/Utils/make-mutex.d.ts +7 -0
  135. package/lib/Utils/make-mutex.js +41 -34
  136. package/lib/Utils/messages-media.d.ts +116 -0
  137. package/lib/Utils/messages-media.js +768 -550
  138. package/lib/Utils/messages.d.ts +77 -0
  139. package/lib/Utils/messages.js +263 -362
  140. package/lib/Utils/noise-handler.d.ts +21 -0
  141. package/lib/Utils/noise-handler.js +149 -138
  142. package/lib/Utils/process-message.d.ts +41 -0
  143. package/lib/Utils/process-message.js +303 -323
  144. package/lib/Utils/signal.d.ts +32 -0
  145. package/lib/Utils/signal.js +141 -149
  146. package/lib/Utils/use-multi-file-auth-state.d.ts +13 -0
  147. package/lib/Utils/use-multi-file-auth-state.js +103 -95
  148. package/lib/Utils/validate-connection.d.ts +11 -0
  149. package/lib/Utils/validate-connection.js +214 -183
  150. package/lib/Utils/validate-connection.js.bak +237 -0
  151. package/lib/WABinary/constants.d.ts +30 -0
  152. package/lib/WABinary/constants.js +35 -1298
  153. package/lib/WABinary/decode.d.ts +7 -0
  154. package/lib/WABinary/decode.js +249 -237
  155. package/lib/WABinary/encode.d.ts +3 -0
  156. package/lib/WABinary/encode.js +260 -213
  157. package/lib/WABinary/generic-utils.d.ts +17 -0
  158. package/lib/WABinary/generic-utils.js +65 -56
  159. package/lib/WABinary/index.d.ts +5 -0
  160. package/lib/WABinary/index.js +21 -7
  161. package/lib/WABinary/jid-utils.d.ts +31 -0
  162. package/lib/WABinary/jid-utils.js +58 -89
  163. package/lib/WABinary/types.d.ts +18 -0
  164. package/lib/WABinary/types.js +2 -3
  165. package/lib/WAM/BinaryInfo.d.ts +17 -0
  166. package/lib/WAM/BinaryInfo.js +12 -10
  167. package/lib/WAM/constants.d.ts +38 -0
  168. package/lib/WAM/constants.js +15348 -22851
  169. package/lib/WAM/encode.d.ts +3 -0
  170. package/lib/WAM/encode.js +136 -135
  171. package/lib/WAM/index.d.ts +3 -0
  172. package/lib/WAM/index.js +19 -5
  173. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +9 -0
  174. package/lib/WAUSync/Protocols/USyncContactProtocol.js +30 -28
  175. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +22 -0
  176. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +53 -49
  177. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +12 -0
  178. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +28 -27
  179. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +12 -0
  180. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +39 -36
  181. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +25 -0
  182. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +50 -50
  183. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +8 -0
  184. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +20 -26
  185. package/lib/WAUSync/Protocols/index.d.ts +4 -0
  186. package/lib/WAUSync/Protocols/index.js +20 -6
  187. package/lib/WAUSync/USyncQuery.d.ts +28 -0
  188. package/lib/WAUSync/USyncQuery.js +85 -86
  189. package/lib/WAUSync/USyncUser.d.ts +12 -0
  190. package/lib/WAUSync/USyncUser.js +25 -23
  191. package/lib/WAUSync/index.d.ts +3 -0
  192. package/lib/WAUSync/index.js +19 -5
  193. package/lib/index.d.ts +12 -0
  194. package/lib/index.js +36 -24
  195. package/package.json +106 -98
  196. package/LICENSE +0 -21
  197. package/WAProto/WAProto.proto +0 -5311
  198. package/lib/KeyDB/BinarySearch.js +0 -20
  199. package/lib/KeyDB/KeyedDB.js +0 -167
  200. package/lib/KeyDB/index.js +0 -4
  201. package/lib/Signal/lid-mapping.js +0 -155
  202. package/lib/Socket/Client/types.js +0 -13
  203. package/lib/Socket/Client/websocket.js +0 -52
  204. package/lib/Socket/Client/websocket.js.bak +0 -53
  205. package/lib/Socket/communities.js +0 -413
  206. package/lib/Socket/mex.js +0 -45
  207. package/lib/Types/Bussines.js +0 -3
  208. package/lib/Types/Newsletter.js.bak +0 -33
  209. package/lib/Utils/browser-utils.js +0 -25
  210. package/lib/Utils/message-retry-manager.js +0 -113
  211. package/lib/Utils/messages.js.bak +0 -907
  212. package/lib/Utils/pre-key-manager.js +0 -85
@@ -0,0 +1,3 @@
1
+ /// <reference types="node" />
2
+ import { BinaryInfo } from './BinaryInfo';
3
+ export declare const encodeWAM: (binaryInfo: BinaryInfo) => Buffer;
package/lib/WAM/encode.js CHANGED
@@ -1,154 +1,155 @@
1
- //=======================================================//
2
- import { FLAG_BYTE, FLAG_EVENT, FLAG_EXTENDED, FLAG_FIELD, FLAG_GLOBAL, WEB_EVENTS, WEB_GLOBALS } from "./constants.js";
3
- import { BinaryInfo } from "./BinaryInfo.js";
4
- //=======================================================//
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encodeWAM = void 0;
4
+ const constants_1 = require("./constants");
5
5
  const getHeaderBitLength = (key) => (key < 256 ? 2 : 3);
6
- export const encodeWAM = (binaryInfo) => {
7
- binaryInfo.buffer = [];
8
- encodeWAMHeader(binaryInfo);
9
- encodeEvents(binaryInfo);
10
- const totalSize = binaryInfo.buffer.map(a => a.length).reduce((a, b) => a + b);
11
- const buffer = Buffer.alloc(totalSize);
12
- let offset = 0;
13
- for (const buffer_ of binaryInfo.buffer) {
14
- buffer_.copy(buffer, offset);
15
- offset += buffer_.length;
16
- }
17
- return buffer;
6
+ const encodeWAM = (binaryInfo) => {
7
+ binaryInfo.buffer = [];
8
+ encodeWAMHeader(binaryInfo);
9
+ encodeEvents(binaryInfo);
10
+ console.log(binaryInfo.buffer);
11
+ const totalSize = binaryInfo.buffer
12
+ .map((a) => a.length)
13
+ .reduce((a, b) => a + b);
14
+ const buffer = Buffer.alloc(totalSize);
15
+ let offset = 0;
16
+ binaryInfo.buffer.forEach((buffer_) => {
17
+ buffer_.copy(buffer, offset);
18
+ offset += buffer_.length;
19
+ });
20
+ return buffer;
18
21
  };
19
- //=======================================================//
22
+ exports.encodeWAM = encodeWAM;
20
23
  function encodeWAMHeader(binaryInfo) {
21
- const headerBuffer = Buffer.alloc(8);
22
- headerBuffer.write("WAM", 0, "utf8");
23
- headerBuffer.writeUInt8(binaryInfo.protocolVersion, 3);
24
- headerBuffer.writeUInt8(1, 4);
25
- headerBuffer.writeUInt16BE(binaryInfo.sequence, 5);
26
- headerBuffer.writeUInt8(0, 7);
27
- binaryInfo.buffer.push(headerBuffer);
24
+ const headerBuffer = Buffer.alloc(8); // starting buffer
25
+ headerBuffer.write('WAM', 0, 'utf8');
26
+ headerBuffer.writeUInt8(binaryInfo.protocolVersion, 3);
27
+ headerBuffer.writeUInt8(1, 4); //random flag
28
+ headerBuffer.writeUInt16BE(binaryInfo.sequence, 5);
29
+ headerBuffer.writeUInt8(0, 7); // regular channel
30
+ binaryInfo.buffer.push(headerBuffer);
28
31
  }
29
- //=======================================================//
30
32
  function encodeGlobalAttributes(binaryInfo, globals) {
31
- for (const [key, _value] of Object.entries(globals)) {
32
- const id = WEB_GLOBALS.find(a => a?.name === key).id;
33
- let value = _value;
34
- if (typeof value === "boolean") {
35
- value = value ? 1 : 0;
33
+ 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;
35
+ let value = _value;
36
+ if (typeof value === 'boolean') {
37
+ value = value ? 1 : 0;
38
+ }
39
+ binaryInfo.buffer.push(serializeData(id, value, constants_1.FLAG_GLOBAL));
36
40
  }
37
- binaryInfo.buffer.push(serializeData(id, value, FLAG_GLOBAL));
38
- }
39
41
  }
40
- //=======================================================//
41
42
  function encodeEvents(binaryInfo) {
42
- for (const [name, { props, globals }] of binaryInfo.events.map(a => Object.entries(a)[0])) {
43
- encodeGlobalAttributes(binaryInfo, globals);
44
- const event = WEB_EVENTS.find(a => a.name === name);
45
- const props_ = Object.entries(props);
46
- let extended = false;
47
- for (const [, value] of props_) {
48
- extended || (extended = value !== null);
49
- }
50
- const eventFlag = extended ? FLAG_EVENT : FLAG_EVENT | FLAG_EXTENDED;
51
- binaryInfo.buffer.push(serializeData(event.id, -event.weight, eventFlag));
52
- for (let i = 0; i < props_.length; i++) {
53
- const [key, _value] = props_[i];
54
- const id = event.props[key]?.[0];
55
- extended = i < props_.length - 1;
56
- let value = _value;
57
- if (typeof value === "boolean") {
58
- value = value ? 1 : 0;
59
- }
60
- const fieldFlag = extended ? FLAG_EVENT : FLAG_FIELD | FLAG_EXTENDED;
61
- binaryInfo.buffer.push(serializeData(id, value, fieldFlag));
43
+ for (const [name, { props, globals },] of binaryInfo.events.map((a) => Object.entries(a)[0])) {
44
+ encodeGlobalAttributes(binaryInfo, globals);
45
+ const event = constants_1.WEB_EVENTS.find((a) => a.name === name);
46
+ const props_ = Object.entries(props);
47
+ let extended = false;
48
+ for (const [, value] of props_) {
49
+ extended || (extended = value !== null);
50
+ }
51
+ const eventFlag = extended ? constants_1.FLAG_EVENT : constants_1.FLAG_EVENT | constants_1.FLAG_EXTENDED;
52
+ binaryInfo.buffer.push(serializeData(event.id, -event.weight, eventFlag));
53
+ for (let i = 0; i < props_.length; i++) {
54
+ const [key, _value] = props_[i];
55
+ const id = (event.props)[key][0];
56
+ extended = i < (props_.length - 1);
57
+ let value = _value;
58
+ if (typeof value === 'boolean') {
59
+ value = value ? 1 : 0;
60
+ }
61
+ const fieldFlag = extended ? constants_1.FLAG_EVENT : constants_1.FLAG_FIELD | constants_1.FLAG_EXTENDED;
62
+ binaryInfo.buffer.push(serializeData(id, value, fieldFlag));
63
+ }
62
64
  }
63
- }
64
65
  }
65
- //=======================================================//
66
66
  function serializeData(key, value, flag) {
67
- const bufferLength = getHeaderBitLength(key);
68
- let buffer;
69
- let offset = 0;
70
- if (value === null) {
71
- if (flag === FLAG_GLOBAL) {
72
- buffer = Buffer.alloc(bufferLength);
73
- offset = serializeHeader(buffer, offset, key, flag);
74
- return buffer;
75
- }
76
- }
77
- else if (typeof value === "number" && Number.isInteger(value)) {
78
- if (value === 0 || value === 1) {
79
- buffer = Buffer.alloc(bufferLength);
80
- offset = serializeHeader(buffer, offset, key, flag | ((value + 1) << 4));
81
- return buffer;
67
+ const bufferLength = getHeaderBitLength(key);
68
+ let buffer;
69
+ let offset = 0;
70
+ if (value === null) {
71
+ if (flag === constants_1.FLAG_GLOBAL) {
72
+ buffer = Buffer.alloc(bufferLength);
73
+ offset = serializeHeader(buffer, offset, key, flag);
74
+ return buffer;
75
+ }
82
76
  }
83
- else if (-128 <= value && value < 128) {
84
- buffer = Buffer.alloc(bufferLength + 1);
85
- offset = serializeHeader(buffer, offset, key, flag | (3 << 4));
86
- buffer.writeInt8(value, offset);
87
- return buffer;
77
+ else if (typeof value === 'number' && Number.isInteger(value)) {
78
+ // is number
79
+ if (value === 0 || value === 1) {
80
+ buffer = Buffer.alloc(bufferLength);
81
+ offset = serializeHeader(buffer, offset, key, flag | ((value + 1) << 4));
82
+ return buffer;
83
+ }
84
+ else if (-128 <= value && value < 128) {
85
+ buffer = Buffer.alloc(bufferLength + 1);
86
+ offset = serializeHeader(buffer, offset, key, flag | (3 << 4));
87
+ buffer.writeInt8(value, offset);
88
+ return buffer;
89
+ }
90
+ else if (-32768 <= value && value < 32768) {
91
+ buffer = Buffer.alloc(bufferLength + 2);
92
+ offset = serializeHeader(buffer, offset, key, flag | (4 << 4));
93
+ buffer.writeInt16LE(value, offset);
94
+ return buffer;
95
+ }
96
+ else if (-2147483648 <= value && value < 2147483648) {
97
+ buffer = Buffer.alloc(bufferLength + 4);
98
+ offset = serializeHeader(buffer, offset, key, flag | (5 << 4));
99
+ buffer.writeInt32LE(value, offset);
100
+ return buffer;
101
+ }
102
+ else {
103
+ buffer = Buffer.alloc(bufferLength + 8);
104
+ offset = serializeHeader(buffer, offset, key, flag | (7 << 4));
105
+ buffer.writeDoubleLE(value, offset);
106
+ return buffer;
107
+ }
88
108
  }
89
- else if (-32768 <= value && value < 32768) {
90
- buffer = Buffer.alloc(bufferLength + 2);
91
- offset = serializeHeader(buffer, offset, key, flag | (4 << 4));
92
- buffer.writeInt16LE(value, offset);
93
- return buffer;
94
- }
95
- else if (-2147483648 <= value && value < 2147483648) {
96
- buffer = Buffer.alloc(bufferLength + 4);
97
- offset = serializeHeader(buffer, offset, key, flag | (5 << 4));
98
- buffer.writeInt32LE(value, offset);
99
- return buffer;
100
- }
101
- else {
102
- buffer = Buffer.alloc(bufferLength + 8);
103
- offset = serializeHeader(buffer, offset, key, flag | (7 << 4));
104
- buffer.writeDoubleLE(value, offset);
105
- return buffer;
109
+ else if (typeof value === 'number') {
110
+ // is float
111
+ buffer = Buffer.alloc(bufferLength + 8);
112
+ offset = serializeHeader(buffer, offset, key, flag | (7 << 4));
113
+ buffer.writeDoubleLE(value, offset);
114
+ return buffer;
106
115
  }
107
- }
108
- else if (typeof value === "number") {
109
- buffer = Buffer.alloc(bufferLength + 8);
110
- offset = serializeHeader(buffer, offset, key, flag | (7 << 4));
111
- buffer.writeDoubleLE(value, offset);
112
- return buffer;
113
- }
114
- else if (typeof value === "string") {
115
- const utf8Bytes = Buffer.byteLength(value, "utf8");
116
- if (utf8Bytes < 256) {
117
- buffer = Buffer.alloc(bufferLength + 1 + utf8Bytes);
118
- offset = serializeHeader(buffer, offset, key, flag | (8 << 4));
119
- buffer.writeUint8(utf8Bytes, offset++);
116
+ else if (typeof value === 'string') {
117
+ // is string
118
+ const utf8Bytes = Buffer.byteLength(value, 'utf8');
119
+ if (utf8Bytes < 256) {
120
+ buffer = Buffer.alloc(bufferLength + 1 + utf8Bytes);
121
+ offset = serializeHeader(buffer, offset, key, flag | (8 << 4));
122
+ buffer.writeUint8(utf8Bytes, offset++);
123
+ }
124
+ else if (utf8Bytes < 65536) {
125
+ buffer = Buffer.alloc(bufferLength + 2 + utf8Bytes);
126
+ offset = serializeHeader(buffer, offset, key, flag | (9 << 4));
127
+ buffer.writeUInt16LE(utf8Bytes, offset);
128
+ offset += 2;
129
+ }
130
+ else {
131
+ buffer = Buffer.alloc(bufferLength + 4 + utf8Bytes);
132
+ offset = serializeHeader(buffer, offset, key, flag | (10 << 4));
133
+ buffer.writeUInt32LE(utf8Bytes, offset);
134
+ offset += 4;
135
+ }
136
+ buffer.write(value, offset, 'utf8');
137
+ return buffer;
120
138
  }
121
- else if (utf8Bytes < 65536) {
122
- buffer = Buffer.alloc(bufferLength + 2 + utf8Bytes);
123
- offset = serializeHeader(buffer, offset, key, flag | (9 << 4));
124
- buffer.writeUInt16LE(utf8Bytes, offset);
125
- offset += 2;
139
+ throw 'missing';
140
+ }
141
+ function serializeHeader(buffer, offset, key, flag) {
142
+ if (key < 256) {
143
+ buffer.writeUInt8(flag, offset);
144
+ offset += 1;
145
+ buffer.writeUInt8(key, offset);
146
+ offset += 1;
126
147
  }
127
148
  else {
128
- buffer = Buffer.alloc(bufferLength + 4 + utf8Bytes);
129
- offset = serializeHeader(buffer, offset, key, flag | (10 << 4));
130
- buffer.writeUInt32LE(utf8Bytes, offset);
131
- offset += 4;
149
+ buffer.writeUInt8(flag | constants_1.FLAG_BYTE, offset);
150
+ offset += 1;
151
+ buffer.writeUInt16LE(key, offset);
152
+ offset += 2;
132
153
  }
133
- buffer.write(value, offset, "utf8");
134
- return buffer;
135
- }
136
- throw "missing";
137
- }
138
- //=======================================================//
139
- function serializeHeader(buffer, offset, key, flag) {
140
- if (key < 256) {
141
- buffer.writeUInt8(flag, offset);
142
- offset += 1;
143
- buffer.writeUInt8(key, offset);
144
- offset += 1;
145
- }
146
- else {
147
- buffer.writeUInt8(flag | FLAG_BYTE, offset);
148
- offset += 1;
149
- buffer.writeUInt16LE(key, offset);
150
- offset += 2;
151
- }
152
- return offset;
154
+ return offset;
153
155
  }
154
- //=======================================================//
@@ -0,0 +1,3 @@
1
+ export * from './constants';
2
+ export * from './encode';
3
+ export * from './BinaryInfo';
package/lib/WAM/index.js CHANGED
@@ -1,5 +1,19 @@
1
- //=======================================================//
2
- export * from "./BinaryInfo.js";
3
- export * from "./constants.js";
4
- export * from "./encode.js";
5
- //=======================================================//
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);
@@ -0,0 +1,9 @@
1
+ import { USyncQueryProtocol } from '../../Types/USync';
2
+ import { BinaryNode } from '../../WABinary';
3
+ import { USyncUser } from '../USyncUser';
4
+ export declare class USyncContactProtocol implements USyncQueryProtocol {
5
+ name: string;
6
+ getQueryElement(): BinaryNode;
7
+ getUserElement(user: USyncUser): BinaryNode;
8
+ parser(node: BinaryNode): boolean;
9
+ }
@@ -1,30 +1,32 @@
1
- //=======================================================//
2
- import { assertNodeErrorFree } from "../../WABinary/index.js";
3
- import { USyncUser } from "../USyncUser.js";
4
- //=======================================================//
5
- export class USyncContactProtocol {
6
- constructor() {
7
- this.name = "contact";
8
- }
9
- getQueryElement() {
10
- return {
11
- tag: "contact",
12
- attrs: {}
13
- };
14
- }
15
- getUserElement(user) {
16
- return {
17
- tag: "contact",
18
- attrs: {},
19
- content: user.phone
20
- };
21
- }
22
- parser(node) {
23
- if (node.tag === "contact") {
24
- assertNodeErrorFree(node);
25
- return node?.attrs?.type === "in";
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.USyncContactProtocol = void 0;
4
+ const WABinary_1 = require("../../WABinary");
5
+ class USyncContactProtocol {
6
+ constructor() {
7
+ this.name = 'contact';
8
+ }
9
+ getQueryElement() {
10
+ return {
11
+ tag: 'contact',
12
+ attrs: {},
13
+ };
14
+ }
15
+ getUserElement(user) {
16
+ //TODO: Implement type / username fields (not yet supported)
17
+ return {
18
+ tag: 'contact',
19
+ attrs: {},
20
+ content: user.phone,
21
+ };
22
+ }
23
+ parser(node) {
24
+ var _a;
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';
28
+ }
29
+ return false;
26
30
  }
27
- return false;
28
- }
29
31
  }
30
- //=======================================================//
32
+ exports.USyncContactProtocol = USyncContactProtocol;
@@ -0,0 +1,22 @@
1
+ import { USyncQueryProtocol } from '../../Types/USync';
2
+ import { BinaryNode } from '../../WABinary';
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
+ }
@@ -1,53 +1,57 @@
1
- //=======================================================//
2
- import { assertNodeErrorFree, getBinaryNodeChild } from "../../WABinary/index.js";
3
- //=======================================================//
4
- export class USyncDeviceProtocol {
5
- constructor() {
6
- this.name = "devices";
7
- }
8
- getQueryElement() {
9
- return {
10
- tag: "devices",
11
- attrs: {
12
- version: "2"
13
- }
14
- };
15
- }
16
- getUserElement() {
17
- return null;
18
- }
19
- parser(node) {
20
- const deviceList = [];
21
- let keyIndex = undefined;
22
- if (node.tag === "devices") {
23
- assertNodeErrorFree(node);
24
- const deviceListNode = getBinaryNodeChild(node, "device-list");
25
- const keyIndexNode = getBinaryNodeChild(node, "key-index-list");
26
- if (Array.isArray(deviceListNode?.content)) {
27
- for (const { tag, attrs } of deviceListNode.content) {
28
- const id = +attrs.id;
29
- const keyIndex = +attrs["key-index"];
30
- if (tag === "device") {
31
- deviceList.push({
32
- id,
33
- keyIndex,
34
- isHosted: !!(attrs["is_hosted"] && attrs["is_hosted"] === "true")
35
- });
36
- }
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.USyncDeviceProtocol = void 0;
4
+ const WABinary_1 = require("../../WABinary");
5
+ class USyncDeviceProtocol {
6
+ constructor() {
7
+ this.name = 'devices';
8
+ }
9
+ getQueryElement() {
10
+ return {
11
+ tag: 'devices',
12
+ attrs: {
13
+ version: '2',
14
+ },
15
+ };
16
+ }
17
+ getUserElement( /* user: USyncUser */) {
18
+ //TODO: Implement device phashing, ts and expectedTs
19
+ //TODO: if all are not present, return null <- current behavior
20
+ //TODO: otherwise return a node w tag 'devices' w those as attrs
21
+ return null;
22
+ }
23
+ parser(node) {
24
+ const deviceList = [];
25
+ let keyIndex = undefined;
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)) {
31
+ for (const { tag, attrs } of deviceListNode.content) {
32
+ const id = +attrs.id;
33
+ const keyIndex = +attrs['key-index'];
34
+ if (tag === 'device') {
35
+ deviceList.push({
36
+ id,
37
+ keyIndex,
38
+ isHosted: !!(attrs['is_hosted'] && attrs['is_hosted'] === 'true')
39
+ });
40
+ }
41
+ }
42
+ }
43
+ if ((keyIndexNode === null || keyIndexNode === void 0 ? void 0 : keyIndexNode.tag) === 'key-index-list') {
44
+ keyIndex = {
45
+ timestamp: +keyIndexNode.attrs['ts'],
46
+ signedKeyIndex: keyIndexNode === null || keyIndexNode === void 0 ? void 0 : keyIndexNode.content,
47
+ expectedTimestamp: keyIndexNode.attrs['expected_ts'] ? +keyIndexNode.attrs['expected_ts'] : undefined
48
+ };
49
+ }
37
50
  }
38
- }
39
- if (keyIndexNode?.tag === "key-index-list") {
40
- keyIndex = {
41
- timestamp: +keyIndexNode.attrs["ts"],
42
- signedKeyIndex: keyIndexNode?.content,
43
- expectedTimestamp: keyIndexNode.attrs["expected_ts"] ? +keyIndexNode.attrs["expected_ts"] : undefined
51
+ return {
52
+ deviceList,
53
+ keyIndex
44
54
  };
45
- }
46
55
  }
47
- return {
48
- deviceList,
49
- keyIndex
50
- };
51
- }
52
56
  }
53
- //=======================================================//
57
+ exports.USyncDeviceProtocol = USyncDeviceProtocol;
@@ -0,0 +1,12 @@
1
+ import { USyncQueryProtocol } from '../../Types/USync';
2
+ import { BinaryNode } from '../../WABinary';
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
+ }
@@ -1,29 +1,30 @@
1
- //=======================================================//
2
- import { assertNodeErrorFree } from "../../WABinary/index.js";
3
- //=======================================================//
4
- export class USyncDisappearingModeProtocol {
5
- constructor() {
6
- this.name = "disappearing_mode";
7
- }
8
- getQueryElement() {
9
- return {
10
- tag: "disappearing_mode",
11
- attrs: {}
12
- };
13
- }
14
- getUserElement() {
15
- return null;
16
- }
17
- parser(node) {
18
- if (node.tag === "disappearing_mode") {
19
- assertNodeErrorFree(node);
20
- const duration = +node?.attrs.duration;
21
- const setAt = new Date(+(node?.attrs.t || 0) * 1000);
22
- return {
23
- duration,
24
- setAt
25
- };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.USyncDisappearingModeProtocol = void 0;
4
+ const WABinary_1 = require("../../WABinary");
5
+ class USyncDisappearingModeProtocol {
6
+ constructor() {
7
+ this.name = 'disappearing_mode';
8
+ }
9
+ getQueryElement() {
10
+ return {
11
+ tag: 'disappearing_mode',
12
+ attrs: {},
13
+ };
14
+ }
15
+ getUserElement() {
16
+ return null;
17
+ }
18
+ 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);
23
+ return {
24
+ duration,
25
+ setAt,
26
+ };
27
+ }
26
28
  }
27
- }
28
29
  }
29
- //=======================================================//
30
+ exports.USyncDisappearingModeProtocol = USyncDisappearingModeProtocol;
@@ -0,0 +1,12 @@
1
+ import { USyncQueryProtocol } from '../../Types/USync';
2
+ import { BinaryNode } from '../../WABinary';
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
+ }