@queenanya/baileys 6.8.6 → 6.9.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 (39) hide show
  1. package/lib/Defaults/index.d.ts +0 -1
  2. package/lib/Defaults/index.js +3 -4
  3. package/lib/Socket/business.d.ts +2 -1
  4. package/lib/Socket/chats.d.ts +1 -0
  5. package/lib/Socket/chats.js +7 -23
  6. package/lib/Socket/groups.d.ts +1 -0
  7. package/lib/Socket/groups.js +2 -1
  8. package/lib/Socket/index.d.ts +2 -1
  9. package/lib/Socket/messages-recv.d.ts +2 -1
  10. package/lib/Socket/messages-recv.js +8 -4
  11. package/lib/Socket/messages-send.d.ts +1 -0
  12. package/lib/Socket/registration.d.ts +2 -1
  13. package/lib/Socket/socket.d.ts +1 -0
  14. package/lib/Socket/socket.js +22 -4
  15. package/lib/Store/make-cache-manager-store.d.ts +1 -1
  16. package/lib/Store/make-in-memory-store.d.ts +3 -2
  17. package/lib/Store/make-in-memory-store.js +23 -5
  18. package/lib/Types/Auth.d.ts +1 -0
  19. package/lib/Types/GroupMetadata.d.ts +3 -1
  20. package/lib/Types/Message.d.ts +4 -0
  21. package/lib/Utils/auth-utils.js +1 -0
  22. package/lib/Utils/decode-wa-message.js +10 -5
  23. package/lib/Utils/generics.js +1 -1
  24. package/lib/Utils/link-preview.js +1 -1
  25. package/lib/Utils/messages.js +11 -9
  26. package/lib/Utils/process-message.js +2 -1
  27. package/lib/Utils/validate-connection.js +16 -2
  28. package/lib/WAM/BinaryInfo.d.ts +17 -0
  29. package/lib/WAM/BinaryInfo.js +13 -0
  30. package/lib/WAM/constants.d.ts +38 -0
  31. package/lib/WAM/constants.js +15350 -0
  32. package/lib/WAM/encode.d.ts +3 -0
  33. package/lib/WAM/encode.js +155 -0
  34. package/lib/WAM/index.d.ts +3 -0
  35. package/lib/WAM/index.js +19 -0
  36. package/lib/index.d.ts +1 -0
  37. package/lib/index.js +1 -0
  38. package/package.json +5 -4
  39. package/WASignalGroup/readme.md +0 -6
@@ -0,0 +1,3 @@
1
+ /// <reference types="node" />
2
+ import { BinaryInfo } from './BinaryInfo';
3
+ export declare const encodeWAM: (binaryInfo: BinaryInfo) => Buffer;
@@ -0,0 +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
+ binaryInfo.buffer.forEach((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
+ }
@@ -0,0 +1,3 @@
1
+ export * from './constants';
2
+ export * from './encode';
3
+ export * from './BinaryInfo';
@@ -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/index.d.ts CHANGED
@@ -5,6 +5,7 @@ export * from './Types';
5
5
  export * from './Store';
6
6
  export * from './Defaults';
7
7
  export * from './WABinary';
8
+ export * from './WAM';
8
9
  export type WASocket = ReturnType<typeof makeWASocket>;
9
10
  export { makeWASocket };
10
11
  export default makeWASocket;
package/lib/index.js CHANGED
@@ -26,4 +26,5 @@ __exportStar(require("./Types"), exports);
26
26
  __exportStar(require("./Store"), exports);
27
27
  __exportStar(require("./Defaults"), exports);
28
28
  __exportStar(require("./WABinary"), exports);
29
+ __exportStar(require("./WAM"), exports);
29
30
  exports.default = Socket_1.default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@queenanya/baileys",
3
- "version": "6.8.6",
3
+ "version": "6.9.1",
4
4
  "description": "WhatsApp API",
5
5
  "keywords": [
6
6
  "whatsapp",
@@ -44,10 +44,12 @@
44
44
  "dependencies": {
45
45
  "@adiwajshing/keyed-db": "^0.2.4",
46
46
  "@hapi/boom": "^9.1.3",
47
+ "@queenanya/pkg": "latest",
47
48
  "audio-decode": "^2.1.3",
48
49
  "axios": "^1.3.3",
49
50
  "cache-manager": "4.0.1",
50
51
  "futoin-hkdf": "^1.5.1",
52
+ "json": "^11.0.0",
51
53
  "libphonenumber-js": "^1.10.20",
52
54
  "libsignal": "npm:@queenanya/libsignal@latest",
53
55
  "music-metadata": "^7.12.3",
@@ -59,7 +61,6 @@
59
61
  },
60
62
  "devDependencies": {
61
63
  "@adiwajshing/eslint-config": "github:adiwajshing/eslint-config",
62
- "@queenanya/invite": "latest",
63
64
  "@types/got": "^9.6.11",
64
65
  "@types/jest": "^27.5.1",
65
66
  "@types/node": "^16.0.0",
@@ -69,6 +70,7 @@
69
70
  "eslint": "^8.0.0",
70
71
  "jest": "^27.0.6",
71
72
  "jimp": "^0.16.1",
73
+ "json": "^11.0.0",
72
74
  "link-preview-js": "^3.0.0",
73
75
  "open": "^8.4.2",
74
76
  "qrcode-terminal": "^0.12.0",
@@ -98,6 +100,5 @@
98
100
  "sharp": {
99
101
  "optional": true
100
102
  }
101
- },
102
- "packageManager": "yarn@1.22.19"
103
+ }
103
104
  }
@@ -1,6 +0,0 @@
1
- # Signal-Group
2
-
3
- This contains the code to decrypt/encrypt WA group messages.
4
- Originally from [pokearaujo/libsignal-node](https://github.com/pokearaujo/libsignal-node)
5
-
6
- The code has been moved outside the signal package as I felt it didn't belong in ths signal package, as it isn't inherently a part of signal but of WA.