keith-baileys 1.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/WAProto/GenerateStatics.sh +2 -0
  4. package/WAProto/WAProto.proto +4633 -0
  5. package/WAProto/index.js +165029 -0
  6. package/WAProto/keith +1 -0
  7. package/engine-requirements.js +10 -0
  8. package/lib/Defaults/Keith +1 -0
  9. package/lib/Defaults/baileys-version.json +3 -0
  10. package/lib/Defaults/index.js +105 -0
  11. package/lib/Signal/Group/Keith +1 -0
  12. package/lib/Signal/Group/ciphertext-message.js +15 -0
  13. package/lib/Signal/Group/group-session-builder.js +64 -0
  14. package/lib/Signal/Group/group_cipher.js +96 -0
  15. package/lib/Signal/Group/index.js +57 -0
  16. package/lib/Signal/Group/keyhelper.js +55 -0
  17. package/lib/Signal/Group/queue-job.js +57 -0
  18. package/lib/Signal/Group/sender-chain-key.js +34 -0
  19. package/lib/Signal/Group/sender-key-distribution-message.js +66 -0
  20. package/lib/Signal/Group/sender-key-message.js +69 -0
  21. package/lib/Signal/Group/sender-key-name.js +51 -0
  22. package/lib/Signal/Group/sender-key-record.js +53 -0
  23. package/lib/Signal/Group/sender-key-state.js +99 -0
  24. package/lib/Signal/Group/sender-message-key.js +29 -0
  25. package/lib/Signal/Keith +1 -0
  26. package/lib/Signal/libsignal.js +174 -0
  27. package/lib/Socket/Client/Keith +1 -0
  28. package/lib/Socket/Client/index.js +18 -0
  29. package/lib/Socket/Client/types.js +13 -0
  30. package/lib/Socket/Client/websocket.js +62 -0
  31. package/lib/Socket/Keith +1 -0
  32. package/lib/Socket/business.js +260 -0
  33. package/lib/Socket/chats.js +880 -0
  34. package/lib/Socket/groups.js +340 -0
  35. package/lib/Socket/groupstatus.js +237 -0
  36. package/lib/Socket/index.js +10 -0
  37. package/lib/Socket/messages-recv.js +1077 -0
  38. package/lib/Socket/messages-send.js +988 -0
  39. package/lib/Socket/mex.js +46 -0
  40. package/lib/Socket/newsletter.js +233 -0
  41. package/lib/Socket/socket.js +617 -0
  42. package/lib/Socket/usync.js +65 -0
  43. package/lib/Types/Auth.js +2 -0
  44. package/lib/Types/Call.js +2 -0
  45. package/lib/Types/Chat.js +10 -0
  46. package/lib/Types/Contact.js +2 -0
  47. package/lib/Types/Events.js +2 -0
  48. package/lib/Types/GroupMetadata.js +2 -0
  49. package/lib/Types/Keith +1 -0
  50. package/lib/Types/Label.js +27 -0
  51. package/lib/Types/LabelAssociation.js +9 -0
  52. package/lib/Types/Message.js +7 -0
  53. package/lib/Types/Newsletter.js +33 -0
  54. package/lib/Types/Product.js +2 -0
  55. package/lib/Types/Signal.js +2 -0
  56. package/lib/Types/Socket.js +2 -0
  57. package/lib/Types/State.js +2 -0
  58. package/lib/Types/USync.js +2 -0
  59. package/lib/Types/index.js +42 -0
  60. package/lib/Utils/Keith +1 -0
  61. package/lib/Utils/auth-utils.js +199 -0
  62. package/lib/Utils/baileys-event-stream.js +63 -0
  63. package/lib/Utils/business.js +240 -0
  64. package/lib/Utils/chat-utils.js +741 -0
  65. package/lib/Utils/crypto.js +187 -0
  66. package/lib/Utils/decode-wa-message.js +283 -0
  67. package/lib/Utils/event-buffer.js +516 -0
  68. package/lib/Utils/generics.js +400 -0
  69. package/lib/Utils/history.js +100 -0
  70. package/lib/Utils/index.js +34 -0
  71. package/lib/Utils/lid-mapping.js +88 -0
  72. package/lib/Utils/link-preview.js +122 -0
  73. package/lib/Utils/logger.js +7 -0
  74. package/lib/Utils/lt-hash.js +51 -0
  75. package/lib/Utils/make-mutex.js +44 -0
  76. package/lib/Utils/messages-media.js +706 -0
  77. package/lib/Utils/messages.js +797 -0
  78. package/lib/Utils/noise-handler.js +150 -0
  79. package/lib/Utils/process-message.js +381 -0
  80. package/lib/Utils/signal.js +155 -0
  81. package/lib/Utils/use-multi-file-auth-state.js +124 -0
  82. package/lib/Utils/validate-connection.js +170 -0
  83. package/lib/WABinary/Keith +1 -0
  84. package/lib/WABinary/constants.js +1303 -0
  85. package/lib/WABinary/decode.js +266 -0
  86. package/lib/WABinary/encode.js +252 -0
  87. package/lib/WABinary/generic-utils.js +110 -0
  88. package/lib/WABinary/index.js +21 -0
  89. package/lib/WABinary/jid-utils.js +66 -0
  90. package/lib/WABinary/types.js +2 -0
  91. package/lib/WAM/BinaryInfo.js +13 -0
  92. package/lib/WAM/constants.js +15243 -0
  93. package/lib/WAM/encode.js +153 -0
  94. package/lib/WAM/index.js +19 -0
  95. package/lib/WAM/keith +1 -0
  96. package/lib/WAUSync/Keith +1 -0
  97. package/lib/WAUSync/Protocols/Keith +1 -0
  98. package/lib/WAUSync/Protocols/USyncContactProtocol.js +32 -0
  99. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +57 -0
  100. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +30 -0
  101. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +42 -0
  102. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +53 -0
  103. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +24 -0
  104. package/lib/WAUSync/Protocols/index.js +20 -0
  105. package/lib/WAUSync/USyncQuery.js +93 -0
  106. package/lib/WAUSync/USyncUser.js +26 -0
  107. package/lib/WAUSync/index.js +19 -0
  108. package/lib/index.js +30 -0
  109. package/package.json +32 -0
@@ -0,0 +1,153 @@
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.map(a => a.length).reduce((a, b) => a + b);
12
+ const buffer = Buffer.alloc(totalSize);
13
+ let offset = 0;
14
+ for (const buffer_ of binaryInfo.buffer) {
15
+ buffer_.copy(buffer, offset);
16
+ offset += buffer_.length;
17
+ }
18
+ return buffer;
19
+ };
20
+ exports.encodeWAM = encodeWAM;
21
+ function encodeWAMHeader(binaryInfo) {
22
+ const headerBuffer = Buffer.alloc(8); // starting buffer
23
+ headerBuffer.write('WAM', 0, 'utf8');
24
+ headerBuffer.writeUInt8(binaryInfo.protocolVersion, 3);
25
+ headerBuffer.writeUInt8(1, 4); //random flag
26
+ headerBuffer.writeUInt16BE(binaryInfo.sequence, 5);
27
+ headerBuffer.writeUInt8(0, 7); // regular channel
28
+ binaryInfo.buffer.push(headerBuffer);
29
+ }
30
+ function encodeGlobalAttributes(binaryInfo, globals) {
31
+ for (const [key, _value] of Object.entries(globals)) {
32
+ const id = constants_1.WEB_GLOBALS.find(a => (a === null || a === void 0 ? void 0 : a.name) === key).id;
33
+ let value = _value;
34
+ if (typeof value === 'boolean') {
35
+ value = value ? 1 : 0;
36
+ }
37
+ binaryInfo.buffer.push(serializeData(id, value, constants_1.FLAG_GLOBAL));
38
+ }
39
+ }
40
+ function encodeEvents(binaryInfo) {
41
+ for (const [name, { props, globals }] of binaryInfo.events.map(a => Object.entries(a)[0])) {
42
+ encodeGlobalAttributes(binaryInfo, globals);
43
+ const event = constants_1.WEB_EVENTS.find(a => a.name === name);
44
+ const props_ = Object.entries(props);
45
+ let extended = false;
46
+ for (const [, value] of props_) {
47
+ extended || (extended = value !== null);
48
+ }
49
+ const eventFlag = extended ? constants_1.FLAG_EVENT : constants_1.FLAG_EVENT | constants_1.FLAG_EXTENDED;
50
+ binaryInfo.buffer.push(serializeData(event.id, -event.weight, eventFlag));
51
+ for (let i = 0; i < props_.length; i++) {
52
+ const [key, _value] = props_[i];
53
+ const id = event.props[key][0];
54
+ extended = i < props_.length - 1;
55
+ let value = _value;
56
+ if (typeof value === 'boolean') {
57
+ value = value ? 1 : 0;
58
+ }
59
+ const fieldFlag = extended ? constants_1.FLAG_EVENT : constants_1.FLAG_FIELD | constants_1.FLAG_EXTENDED;
60
+ binaryInfo.buffer.push(serializeData(id, value, fieldFlag));
61
+ }
62
+ }
63
+ }
64
+ function serializeData(key, value, flag) {
65
+ const bufferLength = getHeaderBitLength(key);
66
+ let buffer;
67
+ let offset = 0;
68
+ if (value === null) {
69
+ if (flag === constants_1.FLAG_GLOBAL) {
70
+ buffer = Buffer.alloc(bufferLength);
71
+ offset = serializeHeader(buffer, offset, key, flag);
72
+ return buffer;
73
+ }
74
+ }
75
+ else if (typeof value === 'number' && Number.isInteger(value)) {
76
+ // is number
77
+ if (value === 0 || value === 1) {
78
+ buffer = Buffer.alloc(bufferLength);
79
+ offset = serializeHeader(buffer, offset, key, flag | ((value + 1) << 4));
80
+ return buffer;
81
+ }
82
+ else if (-128 <= value && value < 128) {
83
+ buffer = Buffer.alloc(bufferLength + 1);
84
+ offset = serializeHeader(buffer, offset, key, flag | (3 << 4));
85
+ buffer.writeInt8(value, offset);
86
+ return buffer;
87
+ }
88
+ else if (-32768 <= value && value < 32768) {
89
+ buffer = Buffer.alloc(bufferLength + 2);
90
+ offset = serializeHeader(buffer, offset, key, flag | (4 << 4));
91
+ buffer.writeInt16LE(value, offset);
92
+ return buffer;
93
+ }
94
+ else if (-2147483648 <= value && value < 2147483648) {
95
+ buffer = Buffer.alloc(bufferLength + 4);
96
+ offset = serializeHeader(buffer, offset, key, flag | (5 << 4));
97
+ buffer.writeInt32LE(value, offset);
98
+ return buffer;
99
+ }
100
+ else {
101
+ buffer = Buffer.alloc(bufferLength + 8);
102
+ offset = serializeHeader(buffer, offset, key, flag | (7 << 4));
103
+ buffer.writeDoubleLE(value, offset);
104
+ return buffer;
105
+ }
106
+ }
107
+ else if (typeof value === 'number') {
108
+ // is float
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
+ // is string
116
+ const utf8Bytes = Buffer.byteLength(value, 'utf8');
117
+ if (utf8Bytes < 256) {
118
+ buffer = Buffer.alloc(bufferLength + 1 + utf8Bytes);
119
+ offset = serializeHeader(buffer, offset, key, flag | (8 << 4));
120
+ buffer.writeUint8(utf8Bytes, offset++);
121
+ }
122
+ else if (utf8Bytes < 65536) {
123
+ buffer = Buffer.alloc(bufferLength + 2 + utf8Bytes);
124
+ offset = serializeHeader(buffer, offset, key, flag | (9 << 4));
125
+ buffer.writeUInt16LE(utf8Bytes, offset);
126
+ offset += 2;
127
+ }
128
+ else {
129
+ buffer = Buffer.alloc(bufferLength + 4 + utf8Bytes);
130
+ offset = serializeHeader(buffer, offset, key, flag | (10 << 4));
131
+ buffer.writeUInt32LE(utf8Bytes, offset);
132
+ offset += 4;
133
+ }
134
+ buffer.write(value, offset, 'utf8');
135
+ return buffer;
136
+ }
137
+ throw 'missing';
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 | constants_1.FLAG_BYTE, offset);
148
+ offset += 1;
149
+ buffer.writeUInt16LE(key, offset);
150
+ offset += 2;
151
+ }
152
+ return offset;
153
+ }
@@ -0,0 +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);
package/lib/WAM/keith ADDED
@@ -0,0 +1 @@
1
+
@@ -0,0 +1 @@
1
+
@@ -0,0 +1 @@
1
+
@@ -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,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,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,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, _b, _c;
20
+ if (node.tag === 'status') {
21
+ (0, WABinary_1.assertNodeErrorFree)(node);
22
+ let status = (_b = (_a = node === null || node === void 0 ? void 0 : node.content) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : null;
23
+ const setAt = new Date(+((node === null || node === void 0 ? void 0 : node.attrs.t) || 0) * 1000);
24
+ if (!status) {
25
+ if (+((_c = node.attrs) === null || _c === void 0 ? void 0 : _c.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,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.USyncBotProfileProtocol = void 0;
4
+ const WABinary_1 = require("../../WABinary");
5
+ class USyncBotProfileProtocol {
6
+ constructor() {
7
+ this.name = 'bot';
8
+ }
9
+ getQueryElement() {
10
+ return {
11
+ tag: 'bot',
12
+ attrs: {},
13
+ content: [{ tag: 'profile', attrs: { v: '1' } }]
14
+ };
15
+ }
16
+ getUserElement(user) {
17
+ return {
18
+ tag: 'bot',
19
+ attrs: {},
20
+ content: [{ tag: 'profile', attrs: { persona_id: user.personaId } }]
21
+ };
22
+ }
23
+ parser(node) {
24
+ const botNode = (0, WABinary_1.getBinaryNodeChild)(node, 'bot');
25
+ const profile = (0, WABinary_1.getBinaryNodeChild)(botNode, 'profile');
26
+ const commandsNode = (0, WABinary_1.getBinaryNodeChild)(profile, 'commands');
27
+ const promptsNode = (0, WABinary_1.getBinaryNodeChild)(profile, 'prompts');
28
+ const commands = [];
29
+ const prompts = [];
30
+ for (const command of (0, WABinary_1.getBinaryNodeChildren)(commandsNode, 'command')) {
31
+ commands.push({
32
+ name: (0, WABinary_1.getBinaryNodeChildString)(command, 'name'),
33
+ description: (0, WABinary_1.getBinaryNodeChildString)(command, 'description')
34
+ });
35
+ }
36
+ for (const prompt of (0, WABinary_1.getBinaryNodeChildren)(promptsNode, 'prompt')) {
37
+ prompts.push(`${(0, WABinary_1.getBinaryNodeChildString)(prompt, 'emoji')} ${(0, WABinary_1.getBinaryNodeChildString)(prompt, 'text')}`);
38
+ }
39
+ return {
40
+ isDefault: !!(0, WABinary_1.getBinaryNodeChild)(profile, 'default'),
41
+ jid: node.attrs.jid,
42
+ name: (0, WABinary_1.getBinaryNodeChildString)(profile, 'name'),
43
+ attributes: (0, WABinary_1.getBinaryNodeChildString)(profile, 'attributes'),
44
+ description: (0, WABinary_1.getBinaryNodeChildString)(profile, 'description'),
45
+ category: (0, WABinary_1.getBinaryNodeChildString)(profile, 'category'),
46
+ personaId: profile.attrs['persona_id'],
47
+ commandsDescription: (0, WABinary_1.getBinaryNodeChildString)(commandsNode, 'description'),
48
+ commands,
49
+ prompts
50
+ };
51
+ }
52
+ }
53
+ exports.USyncBotProfileProtocol = USyncBotProfileProtocol;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.USyncLIDProtocol = void 0;
4
+ class USyncLIDProtocol {
5
+ constructor() {
6
+ this.name = 'lid';
7
+ }
8
+ getQueryElement() {
9
+ return {
10
+ tag: 'lid',
11
+ attrs: {}
12
+ };
13
+ }
14
+ getUserElement() {
15
+ return null;
16
+ }
17
+ parser(node) {
18
+ if (node.tag === 'lid') {
19
+ return node.attrs.val;
20
+ }
21
+ return null;
22
+ }
23
+ }
24
+ exports.USyncLIDProtocol = USyncLIDProtocol;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./USyncDeviceProtocol"), exports);
18
+ __exportStar(require("./USyncContactProtocol"), exports);
19
+ __exportStar(require("./USyncStatusProtocol"), exports);
20
+ __exportStar(require("./USyncDisappearingModeProtocol"), exports);
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.USyncQuery = void 0;
4
+ const WABinary_1 = require("../WABinary");
5
+ const UsyncBotProfileProtocol_1 = require("./Protocols/UsyncBotProfileProtocol");
6
+ const UsyncLIDProtocol_1 = require("./Protocols/UsyncLIDProtocol");
7
+ const Protocols_1 = require("./Protocols");
8
+ class USyncQuery {
9
+ constructor() {
10
+ this.protocols = [];
11
+ this.users = [];
12
+ this.context = 'interactive';
13
+ this.mode = 'query';
14
+ }
15
+ withMode(mode) {
16
+ this.mode = mode;
17
+ return this;
18
+ }
19
+ withContext(context) {
20
+ this.context = context;
21
+ return this;
22
+ }
23
+ withUser(user) {
24
+ this.users.push(user);
25
+ return this;
26
+ }
27
+ parseUSyncQueryResult(result) {
28
+ if (result.attrs.type !== 'result') {
29
+ return;
30
+ }
31
+ const protocolMap = Object.fromEntries(this.protocols.map(protocol => {
32
+ return [protocol.name, protocol.parser];
33
+ }));
34
+ const queryResult = {
35
+ // TODO: implement errors etc.
36
+ list: [],
37
+ sideList: []
38
+ };
39
+ const usyncNode = (0, WABinary_1.getBinaryNodeChild)(result, 'usync');
40
+ //TODO: implement error backoff, refresh etc.
41
+ //TODO: see if there are any errors in the result node
42
+ //const resultNode = getBinaryNodeChild(usyncNode, 'result')
43
+ const listNode = (0, WABinary_1.getBinaryNodeChild)(usyncNode, 'list');
44
+ if (Array.isArray(listNode === null || listNode === void 0 ? void 0 : listNode.content) && typeof listNode !== 'undefined') {
45
+ queryResult.list = listNode.content.map(node => {
46
+ const id = node === null || node === void 0 ? void 0 : node.attrs.jid;
47
+ const data = Array.isArray(node === null || node === void 0 ? void 0 : node.content)
48
+ ? Object.fromEntries(node.content
49
+ .map(content => {
50
+ const protocol = content.tag;
51
+ const parser = protocolMap[protocol];
52
+ if (parser) {
53
+ return [protocol, parser(content)];
54
+ }
55
+ else {
56
+ return [protocol, null];
57
+ }
58
+ })
59
+ .filter(([, b]) => b !== null))
60
+ : {};
61
+ return { ...data, id };
62
+ });
63
+ }
64
+ //TODO: implement side list
65
+ //const sideListNode = getBinaryNodeChild(usyncNode, 'side_list')
66
+ return queryResult;
67
+ }
68
+ withDeviceProtocol() {
69
+ this.protocols.push(new Protocols_1.USyncDeviceProtocol());
70
+ return this;
71
+ }
72
+ withContactProtocol() {
73
+ this.protocols.push(new Protocols_1.USyncContactProtocol());
74
+ return this;
75
+ }
76
+ withStatusProtocol() {
77
+ this.protocols.push(new Protocols_1.USyncStatusProtocol());
78
+ return this;
79
+ }
80
+ withDisappearingModeProtocol() {
81
+ this.protocols.push(new Protocols_1.USyncDisappearingModeProtocol());
82
+ return this;
83
+ }
84
+ withBotProfileProtocol() {
85
+ this.protocols.push(new UsyncBotProfileProtocol_1.USyncBotProfileProtocol());
86
+ return this;
87
+ }
88
+ withLIDProtocol() {
89
+ this.protocols.push(new UsyncLIDProtocol_1.USyncLIDProtocol());
90
+ return this;
91
+ }
92
+ }
93
+ exports.USyncQuery = USyncQuery;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.USyncUser = void 0;
4
+ class USyncUser {
5
+ withId(id) {
6
+ this.id = id;
7
+ return this;
8
+ }
9
+ withLid(lid) {
10
+ this.lid = lid;
11
+ return this;
12
+ }
13
+ withPhone(phone) {
14
+ this.phone = phone;
15
+ return this;
16
+ }
17
+ withType(type) {
18
+ this.type = type;
19
+ return this;
20
+ }
21
+ withPersonaId(personaId) {
22
+ this.personaId = personaId;
23
+ return this;
24
+ }
25
+ }
26
+ exports.USyncUser = USyncUser;
@@ -0,0 +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("./Protocols"), exports);
18
+ __exportStar(require("./USyncQuery"), exports);
19
+ __exportStar(require("./USyncUser"), exports);
package/lib/index.js ADDED
@@ -0,0 +1,30 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.makeWASocket = void 0;
21
+ const Socket_1 = __importDefault(require("./Socket"));
22
+ exports.makeWASocket = Socket_1.default;
23
+ __exportStar(require("../WAProto"), exports);
24
+ __exportStar(require("./Utils"), exports);
25
+ __exportStar(require("./Types"), exports);
26
+ __exportStar(require("./Defaults"), exports);
27
+ __exportStar(require("./WABinary"), exports);
28
+ __exportStar(require("./WAM"), exports);
29
+ __exportStar(require("./WAUSync"), exports);
30
+ exports.default = Socket_1.default;
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "keith-baileys",
3
+ "version": "1.0.26",
4
+ "description": "A lightweight, full-featured WhatsApp Web API library for Node.js",
5
+ "main": "lib/index.js",
6
+ "types": "lib/index.d.ts",
7
+ "homepage": "",
8
+ "author": "keithkeizzah",
9
+ "license": "MIT",
10
+ "keywords": [
11
+ "whatsapp",
12
+ "whatsapp-api",
13
+ "whatsapp-web",
14
+ "baileys",
15
+ "whatsapp-bot",
16
+ "messaging",
17
+ "chat"
18
+ ],
19
+ "dependencies": {
20
+ "@cacheable/node-cache": "^1.4.0",
21
+ "@hapi/boom": "^9.1.3",
22
+ "async-mutex": "^0.5.0",
23
+ "axios": "^1.6.0",
24
+ "libsignal": "github:WhiskeySockets/libsignal-node",
25
+ "lodash": "^4.17.21",
26
+ "music-metadata": "^7.12.3",
27
+ "node-fetch": "^2.6.1",
28
+ "pino": "^9.6",
29
+ "protobufjs": "^7.2.4",
30
+ "ws": "^8.13.0"
31
+ }
32
+ }