@d0v3riz/baileys 6.7.12 → 6.7.17
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.
- package/LICENSE +1 -1
- package/README.md +35 -1267
- package/WAProto/index.d.ts +16106 -2739
- package/WAProto/index.js +128593 -73944
- package/engine-requirements.js +10 -0
- package/lib/Defaults/baileys-version.json +3 -3
- package/lib/Defaults/index.d.ts +51 -53
- package/lib/Defaults/index.js +105 -106
- package/lib/Signal/libsignal.d.ts +3 -3
- package/lib/Signal/libsignal.js +161 -152
- package/lib/Socket/Client/index.d.ts +2 -2
- package/lib/Socket/Client/index.js +18 -18
- package/lib/Socket/Client/types.d.ts +15 -17
- package/lib/Socket/Client/types.js +13 -13
- package/lib/Socket/Client/websocket.d.ts +12 -12
- package/lib/Socket/Client/websocket.js +62 -62
- package/lib/Socket/business.d.ts +146 -148
- package/lib/Socket/business.js +260 -260
- package/lib/Socket/chats.d.ts +85 -84
- package/lib/Socket/chats.js +880 -846
- package/lib/Socket/groups.d.ts +124 -123
- package/lib/Socket/groups.js +314 -314
- package/lib/Socket/index.d.ts +146 -148
- package/lib/Socket/index.js +10 -10
- package/lib/Socket/messages-recv.d.ts +135 -135
- package/lib/Socket/messages-recv.js +920 -913
- package/lib/Socket/messages-send.d.ts +130 -129
- package/lib/Socket/messages-send.js +683 -673
- package/lib/Socket/socket.d.ts +42 -45
- package/lib/Socket/socket.js +622 -622
- package/lib/Socket/usync.d.ts +36 -38
- package/lib/Socket/usync.js +70 -70
- package/lib/Types/Auth.d.ts +103 -105
- package/lib/Types/Auth.js +2 -2
- package/lib/Types/Call.d.ts +13 -13
- package/lib/Types/Call.js +2 -2
- package/lib/Types/Chat.d.ts +112 -107
- package/lib/Types/Chat.js +4 -4
- package/lib/Types/Contact.d.ts +19 -19
- package/lib/Types/Contact.js +2 -2
- package/lib/Types/Events.d.ts +172 -172
- package/lib/Types/Events.js +2 -2
- package/lib/Types/GroupMetadata.d.ts +56 -56
- package/lib/Types/GroupMetadata.js +2 -2
- package/lib/Types/Label.d.ts +46 -46
- package/lib/Types/Label.js +27 -27
- package/lib/Types/LabelAssociation.d.ts +29 -29
- package/lib/Types/LabelAssociation.js +9 -9
- package/lib/Types/Message.d.ts +269 -273
- package/lib/Types/Message.js +7 -9
- package/lib/Types/Product.d.ts +78 -78
- package/lib/Types/Product.js +2 -2
- package/lib/Types/Signal.d.ts +57 -57
- package/lib/Types/Signal.js +2 -2
- package/lib/Types/Socket.d.ts +121 -118
- package/lib/Types/Socket.js +2 -2
- package/lib/Types/State.d.ts +27 -27
- package/lib/Types/State.js +2 -2
- package/lib/Types/USync.d.ts +25 -25
- package/lib/Types/USync.js +2 -2
- package/lib/Types/index.d.ts +63 -63
- package/lib/Types/index.js +41 -41
- package/lib/Utils/auth-utils.d.ts +18 -18
- package/lib/Utils/auth-utils.js +200 -200
- package/lib/Utils/baileys-event-stream.d.ts +16 -16
- package/lib/Utils/baileys-event-stream.js +63 -63
- package/lib/Utils/business.d.ts +22 -22
- package/lib/Utils/business.js +234 -234
- package/lib/Utils/chat-utils.d.ts +70 -72
- package/lib/Utils/chat-utils.js +745 -745
- package/lib/Utils/crypto.d.ts +40 -42
- package/lib/Utils/crypto.js +193 -153
- package/lib/Utils/decode-wa-message.d.ts +36 -36
- package/lib/Utils/decode-wa-message.js +205 -205
- package/lib/Utils/event-buffer.d.ts +35 -35
- package/lib/Utils/event-buffer.js +520 -520
- package/lib/Utils/generics.d.ts +90 -94
- package/lib/Utils/generics.js +398 -421
- package/lib/Utils/history.d.ts +19 -19
- package/lib/Utils/history.js +94 -94
- package/lib/Utils/index.d.ts +17 -17
- package/lib/Utils/index.js +33 -33
- package/lib/Utils/link-preview.d.ts +21 -21
- package/lib/Utils/link-preview.js +126 -116
- package/lib/Utils/logger.d.ts +11 -4
- package/lib/Utils/logger.js +7 -7
- package/lib/Utils/lt-hash.d.ts +12 -12
- package/lib/Utils/lt-hash.js +51 -51
- package/lib/Utils/make-mutex.d.ts +7 -7
- package/lib/Utils/make-mutex.js +44 -44
- package/lib/Utils/messages-media.d.ts +104 -108
- package/lib/Utils/messages-media.js +677 -667
- package/lib/Utils/messages.d.ts +75 -78
- package/lib/Utils/messages.js +765 -762
- package/lib/Utils/noise-handler.d.ts +19 -21
- package/lib/Utils/noise-handler.js +150 -150
- package/lib/Utils/process-message.d.ts +41 -42
- package/lib/Utils/process-message.js +382 -371
- package/lib/Utils/signal.d.ts +33 -33
- package/lib/Utils/signal.js +153 -153
- package/lib/Utils/use-multi-file-auth-state.d.ts +12 -12
- package/lib/Utils/use-multi-file-auth-state.js +125 -94
- package/lib/Utils/validate-connection.d.ts +10 -10
- package/lib/Utils/validate-connection.js +175 -175
- package/lib/WABinary/constants.d.ts +27 -27
- package/lib/WABinary/constants.js +40 -40
- package/lib/WABinary/decode.d.ts +6 -8
- package/lib/WABinary/decode.js +264 -254
- package/lib/WABinary/encode.d.ts +2 -4
- package/lib/WABinary/encode.js +252 -234
- package/lib/WABinary/generic-utils.d.ts +14 -16
- package/lib/WABinary/generic-utils.js +110 -110
- package/lib/WABinary/index.d.ts +5 -5
- package/lib/WABinary/index.js +21 -21
- package/lib/WABinary/jid-utils.d.ts +33 -31
- package/lib/WABinary/jid-utils.js +66 -62
- package/lib/WABinary/types.d.ts +18 -18
- package/lib/WABinary/types.js +2 -2
- package/lib/WAM/BinaryInfo.d.ts +8 -18
- package/lib/WAM/BinaryInfo.js +13 -13
- package/lib/WAM/constants.d.ts +39 -39
- package/lib/WAM/constants.js +15350 -15350
- package/lib/WAM/encode.d.ts +2 -4
- package/lib/WAM/encode.js +155 -155
- package/lib/WAM/index.d.ts +3 -3
- package/lib/WAM/index.js +19 -19
- package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +9 -9
- package/lib/WAUSync/Protocols/USyncContactProtocol.js +32 -32
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +22 -22
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +57 -57
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +12 -12
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +30 -30
- package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +12 -12
- package/lib/WAUSync/Protocols/USyncStatusProtocol.js +42 -42
- package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +25 -0
- package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +53 -0
- package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +8 -0
- package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +24 -0
- package/lib/WAUSync/Protocols/index.d.ts +4 -4
- package/lib/WAUSync/Protocols/index.js +20 -20
- package/lib/WAUSync/USyncQuery.d.ts +28 -26
- package/lib/WAUSync/USyncQuery.js +89 -79
- package/lib/WAUSync/USyncUser.d.ts +12 -10
- package/lib/WAUSync/USyncUser.js +26 -22
- package/lib/WAUSync/index.d.ts +3 -3
- package/lib/WAUSync/index.js +19 -19
- package/lib/index.d.ts +11 -12
- package/lib/index.js +30 -31
- package/package.json +27 -35
- package/WAProto/GenerateStatics.sh +0 -4
- package/WAProto/WAProto.proto +0 -3344
- package/lib/Store/index.d.ts +0 -3
- package/lib/Store/index.js +0 -10
- package/lib/Store/make-cache-manager-store.d.ts +0 -14
- package/lib/Store/make-cache-manager-store.js +0 -83
- package/lib/Store/make-in-memory-store.d.ts +0 -118
- package/lib/Store/make-in-memory-store.js +0 -420
- package/lib/Store/make-ordered-dictionary.d.ts +0 -13
- package/lib/Store/make-ordered-dictionary.js +0 -81
- package/lib/Store/object-repository.d.ts +0 -10
- package/lib/Store/object-repository.js +0 -27
package/lib/WAM/encode.d.ts
CHANGED
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
+
}
|
package/lib/WAM/index.d.ts
CHANGED
|
@@ -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);
|
|
@@ -1,9 +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
|
+
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,32 +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;
|
|
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;
|
|
@@ -1,22 +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
|
+
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,57 +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;
|
|
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;
|
|
@@ -1,12 +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
|
+
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
|
+
}
|