@d0v3riz/baileys 6.7.9 → 6.7.16

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 (162) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +38 -883
  3. package/WAProto/index.d.ts +16106 -2739
  4. package/WAProto/index.js +128593 -73944
  5. package/engine-requirements.js +10 -0
  6. package/lib/Defaults/baileys-version.json +3 -3
  7. package/lib/Defaults/index.d.ts +51 -53
  8. package/lib/Defaults/index.js +105 -105
  9. package/lib/Signal/libsignal.d.ts +3 -3
  10. package/lib/Signal/libsignal.js +161 -152
  11. package/lib/Socket/Client/index.d.ts +2 -2
  12. package/lib/Socket/Client/index.js +18 -18
  13. package/lib/Socket/Client/types.d.ts +15 -17
  14. package/lib/Socket/Client/types.js +13 -13
  15. package/lib/Socket/Client/websocket.d.ts +12 -12
  16. package/lib/Socket/Client/websocket.js +62 -62
  17. package/lib/Socket/business.d.ts +146 -149
  18. package/lib/Socket/business.js +260 -260
  19. package/lib/Socket/chats.d.ts +85 -84
  20. package/lib/Socket/chats.js +880 -880
  21. package/lib/Socket/groups.d.ts +124 -124
  22. package/lib/Socket/groups.js +314 -314
  23. package/lib/Socket/index.d.ts +146 -149
  24. package/lib/Socket/index.js +10 -10
  25. package/lib/Socket/messages-recv.d.ts +135 -136
  26. package/lib/Socket/messages-recv.js +920 -864
  27. package/lib/Socket/messages-send.d.ts +130 -129
  28. package/lib/Socket/messages-send.js +683 -692
  29. package/lib/Socket/socket.d.ts +42 -45
  30. package/lib/Socket/socket.js +622 -614
  31. package/lib/Socket/usync.d.ts +36 -0
  32. package/lib/Socket/usync.js +70 -0
  33. package/lib/Types/Auth.d.ts +103 -105
  34. package/lib/Types/Auth.js +2 -2
  35. package/lib/Types/Call.d.ts +13 -13
  36. package/lib/Types/Call.js +2 -2
  37. package/lib/Types/Chat.d.ts +112 -107
  38. package/lib/Types/Chat.js +4 -4
  39. package/lib/Types/Contact.d.ts +19 -19
  40. package/lib/Types/Contact.js +2 -2
  41. package/lib/Types/Events.d.ts +172 -172
  42. package/lib/Types/Events.js +2 -2
  43. package/lib/Types/GroupMetadata.d.ts +56 -56
  44. package/lib/Types/GroupMetadata.js +2 -2
  45. package/lib/Types/Label.d.ts +46 -46
  46. package/lib/Types/Label.js +27 -27
  47. package/lib/Types/LabelAssociation.d.ts +29 -29
  48. package/lib/Types/LabelAssociation.js +9 -9
  49. package/lib/Types/Message.d.ts +269 -273
  50. package/lib/Types/Message.js +7 -9
  51. package/lib/Types/Product.d.ts +78 -78
  52. package/lib/Types/Product.js +2 -2
  53. package/lib/Types/Signal.d.ts +57 -57
  54. package/lib/Types/Signal.js +2 -2
  55. package/lib/Types/Socket.d.ts +121 -116
  56. package/lib/Types/Socket.js +2 -2
  57. package/lib/Types/State.d.ts +27 -27
  58. package/lib/Types/State.js +2 -2
  59. package/lib/Types/USync.d.ts +25 -0
  60. package/lib/Types/USync.js +2 -0
  61. package/lib/Types/index.d.ts +63 -63
  62. package/lib/Types/index.js +41 -41
  63. package/lib/Utils/auth-utils.d.ts +18 -18
  64. package/lib/Utils/auth-utils.js +200 -200
  65. package/lib/Utils/baileys-event-stream.d.ts +16 -16
  66. package/lib/Utils/baileys-event-stream.js +63 -63
  67. package/lib/Utils/business.d.ts +22 -22
  68. package/lib/Utils/business.js +234 -234
  69. package/lib/Utils/chat-utils.d.ts +70 -72
  70. package/lib/Utils/chat-utils.js +745 -745
  71. package/lib/Utils/crypto.d.ts +40 -42
  72. package/lib/Utils/crypto.js +193 -153
  73. package/lib/Utils/decode-wa-message.d.ts +36 -20
  74. package/lib/Utils/decode-wa-message.js +205 -189
  75. package/lib/Utils/event-buffer.d.ts +35 -35
  76. package/lib/Utils/event-buffer.js +520 -520
  77. package/lib/Utils/generics.d.ts +90 -94
  78. package/lib/Utils/generics.js +398 -421
  79. package/lib/Utils/history.d.ts +19 -19
  80. package/lib/Utils/history.js +94 -94
  81. package/lib/Utils/index.d.ts +17 -17
  82. package/lib/Utils/index.js +33 -33
  83. package/lib/Utils/link-preview.d.ts +21 -21
  84. package/lib/Utils/link-preview.js +126 -116
  85. package/lib/Utils/logger.d.ts +11 -4
  86. package/lib/Utils/logger.js +7 -7
  87. package/lib/Utils/lt-hash.d.ts +12 -12
  88. package/lib/Utils/lt-hash.js +51 -51
  89. package/lib/Utils/make-mutex.d.ts +7 -7
  90. package/lib/Utils/make-mutex.js +44 -44
  91. package/lib/Utils/messages-media.d.ts +104 -108
  92. package/lib/Utils/messages-media.js +677 -667
  93. package/lib/Utils/messages.d.ts +75 -78
  94. package/lib/Utils/messages.js +765 -760
  95. package/lib/Utils/noise-handler.d.ts +19 -21
  96. package/lib/Utils/noise-handler.js +150 -150
  97. package/lib/Utils/process-message.d.ts +41 -42
  98. package/lib/Utils/process-message.js +382 -355
  99. package/lib/Utils/signal.d.ts +33 -32
  100. package/lib/Utils/signal.js +153 -163
  101. package/lib/Utils/use-multi-file-auth-state.d.ts +12 -12
  102. package/lib/Utils/use-multi-file-auth-state.js +125 -94
  103. package/lib/Utils/validate-connection.d.ts +10 -10
  104. package/lib/Utils/validate-connection.js +175 -171
  105. package/lib/WABinary/constants.d.ts +27 -27
  106. package/lib/WABinary/constants.js +40 -40
  107. package/lib/WABinary/decode.d.ts +6 -8
  108. package/lib/WABinary/decode.js +264 -254
  109. package/lib/WABinary/encode.d.ts +2 -4
  110. package/lib/WABinary/encode.js +252 -234
  111. package/lib/WABinary/generic-utils.d.ts +14 -16
  112. package/lib/WABinary/generic-utils.js +110 -110
  113. package/lib/WABinary/index.d.ts +5 -5
  114. package/lib/WABinary/index.js +21 -21
  115. package/lib/WABinary/jid-utils.d.ts +33 -31
  116. package/lib/WABinary/jid-utils.js +66 -62
  117. package/lib/WABinary/types.d.ts +18 -18
  118. package/lib/WABinary/types.js +2 -2
  119. package/lib/WAM/BinaryInfo.d.ts +8 -18
  120. package/lib/WAM/BinaryInfo.js +13 -13
  121. package/lib/WAM/constants.d.ts +39 -39
  122. package/lib/WAM/constants.js +15350 -15350
  123. package/lib/WAM/encode.d.ts +2 -4
  124. package/lib/WAM/encode.js +155 -155
  125. package/lib/WAM/index.d.ts +3 -3
  126. package/lib/WAM/index.js +19 -19
  127. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +9 -0
  128. package/lib/WAUSync/Protocols/USyncContactProtocol.js +32 -0
  129. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +22 -0
  130. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +57 -0
  131. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +12 -0
  132. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +30 -0
  133. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +12 -0
  134. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +42 -0
  135. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +25 -0
  136. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +53 -0
  137. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +8 -0
  138. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +24 -0
  139. package/lib/WAUSync/Protocols/index.d.ts +4 -0
  140. package/lib/WAUSync/Protocols/index.js +20 -0
  141. package/lib/WAUSync/USyncQuery.d.ts +28 -0
  142. package/lib/WAUSync/USyncQuery.js +89 -0
  143. package/lib/WAUSync/USyncUser.d.ts +12 -0
  144. package/lib/WAUSync/USyncUser.js +26 -0
  145. package/lib/WAUSync/index.d.ts +3 -0
  146. package/lib/WAUSync/index.js +19 -0
  147. package/lib/index.d.ts +11 -11
  148. package/lib/index.js +30 -30
  149. package/package.json +26 -34
  150. package/WAProto/GenerateStatics.sh +0 -4
  151. package/WAProto/WAProto.proto +0 -3344
  152. package/WASignalGroup/readme.md +0 -6
  153. package/lib/Store/index.d.ts +0 -3
  154. package/lib/Store/index.js +0 -10
  155. package/lib/Store/make-cache-manager-store.d.ts +0 -14
  156. package/lib/Store/make-cache-manager-store.js +0 -83
  157. package/lib/Store/make-in-memory-store.d.ts +0 -118
  158. package/lib/Store/make-in-memory-store.js +0 -420
  159. package/lib/Store/make-ordered-dictionary.d.ts +0 -13
  160. package/lib/Store/make-ordered-dictionary.js +0 -81
  161. package/lib/Store/object-repository.d.ts +0 -10
  162. package/lib/Store/object-repository.js +0 -27
@@ -1,4 +1,2 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- import { BinaryInfo } from './BinaryInfo';
4
- export declare const encodeWAM: (binaryInfo: BinaryInfo) => Buffer;
1
+ import { BinaryInfo } from './BinaryInfo';
2
+ export declare const encodeWAM: (binaryInfo: BinaryInfo) => Buffer<ArrayBuffer>;
package/lib/WAM/encode.js CHANGED
@@ -1,155 +1,155 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.encodeWAM = void 0;
4
- const constants_1 = require("./constants");
5
- const getHeaderBitLength = (key) => (key < 256 ? 2 : 3);
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
- for (const buffer_ of binaryInfo.buffer) {
17
- buffer_.copy(buffer, offset);
18
- offset += buffer_.length;
19
- }
20
- return buffer;
21
- };
22
- exports.encodeWAM = encodeWAM;
23
- function encodeWAMHeader(binaryInfo) {
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);
31
- }
32
- function encodeGlobalAttributes(binaryInfo, globals) {
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));
40
- }
41
- }
42
- function encodeEvents(binaryInfo) {
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
- }
64
- }
65
- }
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 === constants_1.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
- // 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
- }
108
- }
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;
115
- }
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;
138
- }
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;
147
- }
148
- else {
149
- buffer.writeUInt8(flag | constants_1.FLAG_BYTE, offset);
150
- offset += 1;
151
- buffer.writeUInt16LE(key, offset);
152
- offset += 2;
153
- }
154
- return offset;
155
- }
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encodeWAM = void 0;
4
+ const constants_1 = require("./constants");
5
+ const getHeaderBitLength = (key) => (key < 256 ? 2 : 3);
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
+ for (const buffer_ of binaryInfo.buffer) {
17
+ buffer_.copy(buffer, offset);
18
+ offset += buffer_.length;
19
+ }
20
+ return buffer;
21
+ };
22
+ exports.encodeWAM = encodeWAM;
23
+ function encodeWAMHeader(binaryInfo) {
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);
31
+ }
32
+ function encodeGlobalAttributes(binaryInfo, globals) {
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));
40
+ }
41
+ }
42
+ function encodeEvents(binaryInfo) {
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
+ }
64
+ }
65
+ }
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 === constants_1.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
+ // 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
+ }
108
+ }
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;
115
+ }
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;
138
+ }
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;
147
+ }
148
+ else {
149
+ buffer.writeUInt8(flag | constants_1.FLAG_BYTE, offset);
150
+ offset += 1;
151
+ buffer.writeUInt16LE(key, offset);
152
+ offset += 2;
153
+ }
154
+ return offset;
155
+ }
@@ -1,3 +1,3 @@
1
- export * from './constants';
2
- export * from './encode';
3
- export * from './BinaryInfo';
1
+ export * from './constants';
2
+ export * from './encode';
3
+ export * from './BinaryInfo';
package/lib/WAM/index.js CHANGED
@@ -1,19 +1,19 @@
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
+ "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
+ }
@@ -0,0 +1,32 @@
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;
30
+ }
31
+ }
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
+ }
@@ -0,0 +1,57 @@
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
+ }
50
+ }
51
+ return {
52
+ deviceList,
53
+ keyIndex
54
+ };
55
+ }
56
+ }
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
+ }
@@ -0,0 +1,30 @@
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
+ }
28
+ }
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
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.USyncStatusProtocol = void 0;
4
+ const WABinary_1 = require("../../WABinary");
5
+ class USyncStatusProtocol {
6
+ constructor() {
7
+ this.name = 'status';
8
+ }
9
+ getQueryElement() {
10
+ return {
11
+ tag: 'status',
12
+ attrs: {},
13
+ };
14
+ }
15
+ getUserElement() {
16
+ return null;
17
+ }
18
+ parser(node) {
19
+ var _a;
20
+ if (node.tag === 'status') {
21
+ (0, WABinary_1.assertNodeErrorFree)(node);
22
+ let status = node === null || node === void 0 ? void 0 : node.content.toString();
23
+ const setAt = new Date(+((node === null || node === void 0 ? void 0 : node.attrs.t) || 0) * 1000);
24
+ if (!status) {
25
+ if (+((_a = node.attrs) === null || _a === void 0 ? void 0 : _a.code) === 401) {
26
+ status = '';
27
+ }
28
+ else {
29
+ status = null;
30
+ }
31
+ }
32
+ else if (typeof status === 'string' && status.length === 0) {
33
+ status = null;
34
+ }
35
+ return {
36
+ status,
37
+ setAt,
38
+ };
39
+ }
40
+ }
41
+ }
42
+ exports.USyncStatusProtocol = USyncStatusProtocol;
@@ -0,0 +1,25 @@
1
+ import { USyncQueryProtocol } from '../../Types/USync';
2
+ import { BinaryNode } from '../../WABinary';
3
+ import { USyncUser } from '../USyncUser';
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
+ }