gifted-baileys 1.5.0 → 1.5.5

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 (222) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1429 -684
  3. package/package.json +11 -26
  4. package/src/Defaults/baileys-version.json +3 -0
  5. package/{lib → src}/Defaults/index.js +16 -8
  6. package/src/Defaults/index.ts +131 -0
  7. package/src/Defaults/phonenumber-mcc.json +223 -0
  8. package/src/Signal/libsignal.js +180 -0
  9. package/src/Signal/libsignal.ts +141 -0
  10. package/src/Socket/Client/abstract-socket-client.ts +19 -0
  11. package/src/Socket/Client/index.ts +3 -0
  12. package/src/Socket/Client/mobile-socket-client.js +78 -0
  13. package/src/Socket/Client/mobile-socket-client.ts +66 -0
  14. package/src/Socket/Client/web-socket-client.js +75 -0
  15. package/src/Socket/Client/web-socket-client.ts +57 -0
  16. package/{lib → src}/Socket/business.js +33 -27
  17. package/src/Socket/business.ts +281 -0
  18. package/{lib → src}/Socket/chats.js +197 -178
  19. package/src/Socket/chats.ts +1030 -0
  20. package/{lib → src}/Socket/groups.js +69 -79
  21. package/src/Socket/groups.ts +356 -0
  22. package/{lib → src}/Socket/index.js +1 -4
  23. package/src/Socket/index.ts +13 -0
  24. package/{lib → src}/Socket/messages-recv.js +160 -108
  25. package/src/Socket/messages-recv.ts +985 -0
  26. package/{lib → src}/Socket/messages-send.js +183 -100
  27. package/src/Socket/messages-send.ts +871 -0
  28. package/src/Socket/newsletter.js +227 -0
  29. package/src/Socket/newsletter.ts +282 -0
  30. package/{lib → src}/Socket/registration.js +55 -63
  31. package/src/Socket/registration.ts +250 -0
  32. package/{lib → src}/Socket/socket.js +107 -66
  33. package/src/Socket/socket.ts +777 -0
  34. package/src/Store/index.ts +3 -0
  35. package/{lib → src}/Store/make-cache-manager-store.js +34 -25
  36. package/src/Store/make-cache-manager-store.ts +100 -0
  37. package/{lib → src}/Store/make-in-memory-store.js +51 -61
  38. package/src/Store/make-in-memory-store.ts +475 -0
  39. package/src/Store/make-ordered-dictionary.ts +86 -0
  40. package/{lib → src}/Store/object-repository.js +1 -1
  41. package/src/Store/object-repository.ts +32 -0
  42. package/src/Tests/test.app-state-sync.js +204 -0
  43. package/src/Tests/test.app-state-sync.ts +207 -0
  44. package/src/Tests/test.event-buffer.js +270 -0
  45. package/src/Tests/test.event-buffer.ts +319 -0
  46. package/src/Tests/test.key-store.js +76 -0
  47. package/src/Tests/test.key-store.ts +92 -0
  48. package/src/Tests/test.libsignal.js +141 -0
  49. package/src/Tests/test.libsignal.ts +186 -0
  50. package/src/Tests/test.media-download.js +93 -0
  51. package/src/Tests/test.media-download.ts +76 -0
  52. package/src/Tests/test.messages.js +33 -0
  53. package/src/Tests/test.messages.ts +37 -0
  54. package/src/Tests/utils.js +34 -0
  55. package/src/Tests/utils.ts +36 -0
  56. package/src/Types/Auth.ts +113 -0
  57. package/src/Types/Call.ts +15 -0
  58. package/src/Types/Chat.ts +106 -0
  59. package/{lib/Types/Contact.d.ts → src/Types/Contact.ts} +9 -8
  60. package/src/Types/Events.ts +93 -0
  61. package/src/Types/GroupMetadata.ts +53 -0
  62. package/{lib → src}/Types/Label.js +1 -1
  63. package/src/Types/Label.ts +36 -0
  64. package/{lib → src}/Types/LabelAssociation.js +1 -1
  65. package/{lib/Types/LabelAssociation.d.ts → src/Types/LabelAssociation.ts} +22 -16
  66. package/src/Types/Message.ts +288 -0
  67. package/src/Types/Newsletter.js +32 -0
  68. package/src/Types/Newsletter.ts +98 -0
  69. package/src/Types/Product.ts +85 -0
  70. package/src/Types/Signal.ts +68 -0
  71. package/{lib/Types/Socket.d.ts → src/Types/Socket.ts} +68 -56
  72. package/src/Types/State.ts +29 -0
  73. package/{lib → src}/Types/index.js +2 -1
  74. package/src/Types/index.ts +59 -0
  75. package/{lib → src}/Utils/auth-utils.js +95 -76
  76. package/src/Utils/auth-utils.ts +222 -0
  77. package/src/Utils/baileys-event-stream.js +92 -0
  78. package/src/Utils/baileys-event-stream.ts +66 -0
  79. package/{lib → src}/Utils/business.js +45 -17
  80. package/src/Utils/business.ts +275 -0
  81. package/{lib → src}/Utils/chat-utils.js +74 -46
  82. package/src/Utils/chat-utils.ts +860 -0
  83. package/{lib → src}/Utils/crypto.js +31 -21
  84. package/src/Utils/crypto.ts +131 -0
  85. package/src/Utils/decode-wa-message.js +211 -0
  86. package/src/Utils/decode-wa-message.ts +228 -0
  87. package/{lib → src}/Utils/event-buffer.js +13 -4
  88. package/src/Utils/event-buffer.ts +613 -0
  89. package/{lib → src}/Utils/generics.js +98 -45
  90. package/src/Utils/generics.ts +434 -0
  91. package/{lib → src}/Utils/history.js +39 -10
  92. package/src/Utils/history.ts +112 -0
  93. package/src/Utils/index.ts +17 -0
  94. package/{lib → src}/Utils/link-preview.js +54 -17
  95. package/src/Utils/link-preview.ts +122 -0
  96. package/src/Utils/logger.ts +3 -0
  97. package/src/Utils/lt-hash.ts +61 -0
  98. package/{lib → src}/Utils/make-mutex.js +13 -4
  99. package/src/Utils/make-mutex.ts +44 -0
  100. package/{lib → src}/Utils/messages-media.js +296 -192
  101. package/src/Utils/messages-media.ts +847 -0
  102. package/{lib → src}/Utils/messages.js +124 -113
  103. package/src/Utils/messages.ts +956 -0
  104. package/{lib → src}/Utils/noise-handler.js +16 -3
  105. package/src/Utils/noise-handler.ts +197 -0
  106. package/{lib → src}/Utils/process-message.js +33 -29
  107. package/src/Utils/process-message.ts +414 -0
  108. package/{lib → src}/Utils/signal.js +23 -14
  109. package/src/Utils/signal.ts +177 -0
  110. package/{lib → src}/Utils/use-multi-file-auth-state.js +28 -19
  111. package/src/Utils/use-multi-file-auth-state.ts +90 -0
  112. package/{lib → src}/Utils/validate-connection.js +25 -42
  113. package/src/Utils/validate-connection.ts +238 -0
  114. package/src/WABinary/constants.ts +42 -0
  115. package/{lib → src}/WABinary/decode.js +17 -7
  116. package/src/WABinary/decode.ts +265 -0
  117. package/{lib → src}/WABinary/encode.js +17 -7
  118. package/src/WABinary/encode.ts +236 -0
  119. package/{lib → src}/WABinary/generic-utils.js +2 -2
  120. package/src/WABinary/generic-utils.ts +121 -0
  121. package/src/WABinary/index.ts +5 -0
  122. package/{lib → src}/WABinary/jid-utils.js +4 -1
  123. package/src/WABinary/jid-utils.ts +68 -0
  124. package/src/WABinary/types.ts +17 -0
  125. package/src/WAM/BinaryInfo.js +13 -0
  126. package/src/WAM/BinaryInfo.ts +12 -0
  127. package/src/WAM/constants.js +15350 -0
  128. package/src/WAM/constants.ts +15382 -0
  129. package/src/WAM/encode.js +155 -0
  130. package/src/WAM/encode.ts +174 -0
  131. package/src/WAM/index.js +19 -0
  132. package/src/WAM/index.ts +3 -0
  133. package/src/gifted +1 -0
  134. package/{lib → src}/index.js +1 -0
  135. package/src/index.ts +13 -0
  136. package/lib/Defaults/baileys-version.json +0 -3
  137. package/lib/Defaults/index.d.ts +0 -284
  138. package/lib/Defaults/phonenumber-mcc.json +0 -223
  139. package/lib/Signal/libsignal.d.ts +0 -3
  140. package/lib/Signal/libsignal.js +0 -152
  141. package/lib/Socket/Client/abstract-socket-client.d.ts +0 -17
  142. package/lib/Socket/Client/index.d.ts +0 -3
  143. package/lib/Socket/Client/mobile-socket-client.d.ts +0 -13
  144. package/lib/Socket/Client/mobile-socket-client.js +0 -65
  145. package/lib/Socket/Client/web-socket-client.d.ts +0 -12
  146. package/lib/Socket/Client/web-socket-client.js +0 -62
  147. package/lib/Socket/business.d.ts +0 -135
  148. package/lib/Socket/chats.d.ts +0 -79
  149. package/lib/Socket/groups.d.ts +0 -113
  150. package/lib/Socket/index.d.ts +0 -137
  151. package/lib/Socket/messages-recv.d.ts +0 -124
  152. package/lib/Socket/messages-send.d.ts +0 -119
  153. package/lib/Socket/registration.d.ts +0 -232
  154. package/lib/Socket/socket.d.ts +0 -42
  155. package/lib/Store/index.d.ts +0 -3
  156. package/lib/Store/make-cache-manager-store.d.ts +0 -13
  157. package/lib/Store/make-in-memory-store.d.ts +0 -117
  158. package/lib/Store/make-ordered-dictionary.d.ts +0 -13
  159. package/lib/Store/object-repository.d.ts +0 -10
  160. package/lib/Types/Auth.d.ts +0 -108
  161. package/lib/Types/Call.d.ts +0 -13
  162. package/lib/Types/Chat.d.ts +0 -102
  163. package/lib/Types/Events.d.ts +0 -157
  164. package/lib/Types/GroupMetadata.d.ts +0 -52
  165. package/lib/Types/Label.d.ts +0 -35
  166. package/lib/Types/Message.d.ts +0 -261
  167. package/lib/Types/Product.d.ts +0 -78
  168. package/lib/Types/Signal.d.ts +0 -57
  169. package/lib/Types/State.d.ts +0 -27
  170. package/lib/Types/index.d.ts +0 -56
  171. package/lib/Utils/auth-utils.d.ts +0 -18
  172. package/lib/Utils/baileys-event-stream.d.ts +0 -16
  173. package/lib/Utils/baileys-event-stream.js +0 -63
  174. package/lib/Utils/business.d.ts +0 -22
  175. package/lib/Utils/chat-utils.d.ts +0 -71
  176. package/lib/Utils/crypto.d.ts +0 -41
  177. package/lib/Utils/decode-wa-message.d.ts +0 -19
  178. package/lib/Utils/decode-wa-message.js +0 -174
  179. package/lib/Utils/event-buffer.d.ts +0 -35
  180. package/lib/Utils/generics.d.ts +0 -94
  181. package/lib/Utils/history.d.ts +0 -15
  182. package/lib/Utils/index.d.ts +0 -17
  183. package/lib/Utils/link-preview.d.ts +0 -21
  184. package/lib/Utils/logger.d.ts +0 -4
  185. package/lib/Utils/lt-hash.d.ts +0 -12
  186. package/lib/Utils/make-mutex.d.ts +0 -7
  187. package/lib/Utils/messages-media.d.ts +0 -107
  188. package/lib/Utils/messages.d.ts +0 -76
  189. package/lib/Utils/noise-handler.d.ts +0 -20
  190. package/lib/Utils/process-message.d.ts +0 -41
  191. package/lib/Utils/signal.d.ts +0 -32
  192. package/lib/Utils/use-multi-file-auth-state.d.ts +0 -12
  193. package/lib/Utils/validate-connection.d.ts +0 -11
  194. package/lib/WABinary/constants.d.ts +0 -27
  195. package/lib/WABinary/decode.d.ts +0 -7
  196. package/lib/WABinary/encode.d.ts +0 -3
  197. package/lib/WABinary/generic-utils.d.ts +0 -15
  198. package/lib/WABinary/index.d.ts +0 -5
  199. package/lib/WABinary/jid-utils.d.ts +0 -29
  200. package/lib/WABinary/types.d.ts +0 -18
  201. package/lib/index.d.ts +0 -10
  202. /package/{lib → src}/Socket/Client/abstract-socket-client.js +0 -0
  203. /package/{lib → src}/Socket/Client/index.js +0 -0
  204. /package/{lib → src}/Store/index.js +0 -0
  205. /package/{lib → src}/Store/make-ordered-dictionary.js +0 -0
  206. /package/{lib → src}/Types/Auth.js +0 -0
  207. /package/{lib → src}/Types/Call.js +0 -0
  208. /package/{lib → src}/Types/Chat.js +0 -0
  209. /package/{lib → src}/Types/Contact.js +0 -0
  210. /package/{lib → src}/Types/Events.js +0 -0
  211. /package/{lib → src}/Types/GroupMetadata.js +0 -0
  212. /package/{lib → src}/Types/Message.js +0 -0
  213. /package/{lib → src}/Types/Product.js +0 -0
  214. /package/{lib → src}/Types/Signal.js +0 -0
  215. /package/{lib → src}/Types/Socket.js +0 -0
  216. /package/{lib → src}/Types/State.js +0 -0
  217. /package/{lib → src}/Utils/index.js +0 -0
  218. /package/{lib → src}/Utils/logger.js +0 -0
  219. /package/{lib → src}/Utils/lt-hash.js +0 -0
  220. /package/{lib → src}/WABinary/constants.js +0 -0
  221. /package/{lib → src}/WABinary/index.js +0 -0
  222. /package/{lib → src}/WABinary/types.js +0 -0
@@ -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,174 @@
1
+ import { BinaryInfo } from './BinaryInfo'
2
+ import { FLAG_BYTE, FLAG_EVENT, FLAG_EXTENDED, FLAG_FIELD, FLAG_GLOBAL, WEB_EVENTS, WEB_GLOBALS } from './constants'
3
+
4
+ const getHeaderBitLength = (key: number) => (key < 256 ? 2 : 3)
5
+ type Value = number | null | string
6
+
7
+
8
+ export const encodeWAM = (binaryInfo: BinaryInfo) => {
9
+ binaryInfo.buffer = []
10
+
11
+ encodeWAMHeader(binaryInfo)
12
+ encodeEvents(binaryInfo)
13
+
14
+ console.log(binaryInfo.buffer)
15
+ const totalSize = binaryInfo.buffer
16
+ .map((a) => a.length)
17
+ .reduce((a, b) => a + b)
18
+ const buffer = Buffer.alloc(totalSize)
19
+ let offset = 0
20
+ binaryInfo.buffer.forEach((buffer_) => {
21
+ buffer_.copy(buffer, offset)
22
+ offset += buffer_.length
23
+ })
24
+
25
+ return buffer
26
+ }
27
+
28
+ function encodeWAMHeader(binaryInfo: BinaryInfo) {
29
+ const headerBuffer = Buffer.alloc(8) // starting buffer
30
+ headerBuffer.write('WAM', 0, 'utf8')
31
+ headerBuffer.writeUInt8(binaryInfo.protocolVersion, 3)
32
+ headerBuffer.writeUInt8(1, 4) //random flag
33
+ headerBuffer.writeUInt16BE(binaryInfo.sequence, 5)
34
+ headerBuffer.writeUInt8(0, 7) // regular channel
35
+
36
+ binaryInfo.buffer.push(headerBuffer)
37
+ }
38
+
39
+ function encodeGlobalAttributes(binaryInfo: BinaryInfo, globals: {[key: string]: Value}) {
40
+ for(const [key, _value] of Object.entries(globals)) {
41
+ const id = WEB_GLOBALS.find(a => a?.name === key)!.id
42
+ let value = _value
43
+ if(typeof value === 'boolean') {
44
+ value = value ? 1 : 0
45
+ }
46
+
47
+ binaryInfo.buffer.push(serializeData(id, value, FLAG_GLOBAL))
48
+ }
49
+ }
50
+
51
+ function encodeEvents(binaryInfo: BinaryInfo) {
52
+ for(const [
53
+ name,
54
+ { props, globals },
55
+ ] of binaryInfo.events.map((a) => Object.entries(a)[0])) {
56
+ encodeGlobalAttributes(binaryInfo, globals)
57
+ const event = WEB_EVENTS.find((a) => a.name === name)!
58
+
59
+ const props_ = Object.entries(props)
60
+
61
+ let extended = false
62
+
63
+ for(const [, value] of props_) {
64
+ extended ||= value !== null
65
+ }
66
+
67
+ const eventFlag = extended ? FLAG_EVENT : FLAG_EVENT | FLAG_EXTENDED
68
+ binaryInfo.buffer.push(serializeData(event.id, -event.weight, eventFlag))
69
+
70
+ for(let i = 0; i < props_.length; i++) {
71
+ const [key, _value] = props_[i]
72
+ const id = (event.props)[key][0]
73
+ extended = i < (props_.length - 1)
74
+ let value = _value
75
+ if(typeof value === 'boolean') {
76
+ value = value ? 1 : 0
77
+ }
78
+
79
+ const fieldFlag = extended ? FLAG_EVENT : FLAG_FIELD | FLAG_EXTENDED
80
+ binaryInfo.buffer.push(serializeData(id, value as Value, fieldFlag))
81
+ }
82
+ }
83
+ }
84
+
85
+
86
+ function serializeData(key: number, value: Value, flag: number): Buffer {
87
+ const bufferLength = getHeaderBitLength(key)
88
+ let buffer: Buffer
89
+ let offset = 0
90
+ if(value === null) {
91
+ if(flag === FLAG_GLOBAL) {
92
+ buffer = Buffer.alloc(bufferLength)
93
+ offset = serializeHeader(buffer, offset, key, flag)
94
+ return buffer
95
+ }
96
+ } else if(typeof value === 'number' && Number.isInteger(value)) {
97
+ // is number
98
+ if(value === 0 || value === 1) {
99
+ buffer = Buffer.alloc(bufferLength)
100
+ offset = serializeHeader(buffer, offset, key, flag | ((value + 1) << 4))
101
+ return buffer
102
+ } else if(-128 <= value && value < 128) {
103
+ buffer = Buffer.alloc(bufferLength + 1)
104
+ offset = serializeHeader(buffer, offset, key, flag | (3 << 4))
105
+ buffer.writeInt8(value, offset)
106
+ return buffer
107
+ } else if(-32768 <= value && value < 32768) {
108
+ buffer = Buffer.alloc(bufferLength + 2)
109
+ offset = serializeHeader(buffer, offset, key, flag | (4 << 4))
110
+ buffer.writeInt16LE(value, offset)
111
+ return buffer
112
+ } else if(-2147483648 <= value && value < 2147483648) {
113
+ buffer = Buffer.alloc(bufferLength + 4)
114
+ offset = serializeHeader(buffer, offset, key, flag | (5 << 4))
115
+ buffer.writeInt32LE(value, offset)
116
+ return buffer
117
+ } else {
118
+ buffer = Buffer.alloc(bufferLength + 8)
119
+ offset = serializeHeader(buffer, offset, key, flag | (7 << 4))
120
+ buffer.writeDoubleLE(value, offset)
121
+ return buffer
122
+ }
123
+ } else if(typeof value === 'number') {
124
+ // is float
125
+ buffer = Buffer.alloc(bufferLength + 8)
126
+ offset = serializeHeader(buffer, offset, key, flag | (7 << 4))
127
+ buffer.writeDoubleLE(value, offset)
128
+ return buffer
129
+ } else if(typeof value === 'string') {
130
+ // is string
131
+ const utf8Bytes = Buffer.byteLength(value, 'utf8')
132
+ if(utf8Bytes < 256) {
133
+ buffer = Buffer.alloc(bufferLength + 1 + utf8Bytes)
134
+ offset = serializeHeader(buffer, offset, key, flag | (8 << 4))
135
+ buffer.writeUint8(utf8Bytes, offset++)
136
+ } else if(utf8Bytes < 65536) {
137
+ buffer = Buffer.alloc(bufferLength + 2 + utf8Bytes)
138
+ offset = serializeHeader(buffer, offset, key, flag | (9 << 4))
139
+ buffer.writeUInt16LE(utf8Bytes, offset)
140
+ offset += 2
141
+ } else {
142
+ buffer = Buffer.alloc(bufferLength + 4 + utf8Bytes)
143
+ offset = serializeHeader(buffer, offset, key, flag | (10 << 4))
144
+ buffer.writeUInt32LE(utf8Bytes, offset)
145
+ offset += 4
146
+ }
147
+
148
+ buffer.write(value, offset, 'utf8')
149
+ return buffer
150
+ }
151
+
152
+ throw 'missing'
153
+ }
154
+
155
+ function serializeHeader(
156
+ buffer: Buffer,
157
+ offset: number,
158
+ key: number,
159
+ flag: number
160
+ ) {
161
+ if(key < 256) {
162
+ buffer.writeUInt8(flag, offset)
163
+ offset += 1
164
+ buffer.writeUInt8(key, offset)
165
+ offset += 1
166
+ } else {
167
+ buffer.writeUInt8(flag | FLAG_BYTE, offset)
168
+ offset += 1
169
+ buffer.writeUInt16LE(key, offset)
170
+ offset += 2
171
+ }
172
+
173
+ return offset
174
+ }
@@ -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);
@@ -0,0 +1,3 @@
1
+ export * from './constants'
2
+ export * from './encode'
3
+ export * from './BinaryInfo'
package/src/gifted ADDED
@@ -0,0 +1 @@
1
+
@@ -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/src/index.ts ADDED
@@ -0,0 +1,13 @@
1
+ import makeWASocket from './Socket'
2
+
3
+ export * from '../WAProto'
4
+ export * from './Utils'
5
+ export * from './Types'
6
+ export * from './Store'
7
+ export * from './Defaults'
8
+ export * from './WABinary'
9
+ export * from './WAM'
10
+
11
+ export type WASocket = ReturnType<typeof makeWASocket>
12
+ export { makeWASocket }
13
+ export default makeWASocket
@@ -1,3 +0,0 @@
1
- {
2
- "version": [2, 2403, 2]
3
- }
@@ -1,284 +0,0 @@
1
- /// <reference types="node" />
2
- import { proto } from '../../WAProto';
3
- import type { MediaType, SocketConfig } from '../Types';
4
- export declare const UNAUTHORIZED_CODES: number[];
5
- export declare const PHONENUMBER_MCC: {
6
- "93": number;
7
- "355": number;
8
- "213": number;
9
- "1-684": number;
10
- "376": number;
11
- "244": number;
12
- "1-264": number;
13
- "1-268": number;
14
- "54": number;
15
- "374": number;
16
- "297": number;
17
- "61": number;
18
- "43": number;
19
- "994": number;
20
- "1-242": number;
21
- "973": number;
22
- "880": number;
23
- "1-246": number;
24
- "375": number;
25
- "32": number;
26
- "501": number;
27
- "229": number;
28
- "1-441": number;
29
- "975": number;
30
- "591": number;
31
- "387": number;
32
- "267": number;
33
- "55": number;
34
- "1-284": number;
35
- "673": number;
36
- "359": number;
37
- "226": number;
38
- "257": number;
39
- "855": number;
40
- "237": number;
41
- "238": number;
42
- "1-345": number;
43
- "236": number;
44
- "235": number;
45
- "56": number;
46
- "86": number;
47
- "57": number;
48
- "269": number;
49
- "682": number;
50
- "506": number;
51
- "385": number;
52
- "53": number;
53
- "357": number;
54
- "420": number;
55
- "243": number;
56
- "45": number;
57
- "253": number;
58
- "1-767": number;
59
- "1-809": number;
60
- "1-849": number;
61
- "1-829": number;
62
- "593": number;
63
- "20": number;
64
- "503": number;
65
- "240": number;
66
- "291": number;
67
- "372": number;
68
- "251": number;
69
- "500": number;
70
- "298": number;
71
- "679": number;
72
- "358": number;
73
- "33": number;
74
- "689": number;
75
- "241": number;
76
- "220": number;
77
- "995": number;
78
- "49": number;
79
- "233": number;
80
- "350": number;
81
- "30": number;
82
- "299": number;
83
- "1-473": number;
84
- "1-671": number;
85
- "502": number;
86
- "224": number;
87
- "592": number;
88
- "509": number;
89
- "504": number;
90
- "852": number;
91
- "36": number;
92
- "354": number;
93
- "91": number;
94
- "62": number;
95
- "98": number;
96
- "964": number;
97
- "353": number;
98
- "972": number;
99
- "39": number;
100
- "225": number;
101
- "1-876": number;
102
- "81": number;
103
- "962": number;
104
- "254": number;
105
- "686": number;
106
- "383": number;
107
- "965": number;
108
- "371": number;
109
- "961": number;
110
- "266": number;
111
- "231": number;
112
- "218": number;
113
- "423": number;
114
- "370": number;
115
- "352": number;
116
- "389": number;
117
- "261": number;
118
- "265": number;
119
- "60": number;
120
- "960": number;
121
- "223": number;
122
- "356": number;
123
- "692": number;
124
- "222": number;
125
- "230": number;
126
- "52": number;
127
- "691": number;
128
- "373": number;
129
- "377": number;
130
- "976": number;
131
- "382": number;
132
- "1-664": number;
133
- "212": number;
134
- "258": number;
135
- "95": number;
136
- "264": number;
137
- "674": number;
138
- "977": number;
139
- "31": number;
140
- "687": number;
141
- "64": number; /** from: https://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url */
142
- "505": number;
143
- "227": number;
144
- "234": number;
145
- "683": number;
146
- "1-670": number;
147
- "47": number;
148
- "968": number;
149
- "92": number;
150
- "680": number;
151
- "970": number;
152
- "507": number;
153
- "675": number;
154
- "595": number;
155
- "51": number;
156
- "63": number;
157
- "48": number;
158
- "351": number;
159
- "1-787, 1-939": number;
160
- "974": number;
161
- "242": number;
162
- "40": number;
163
- "7": number;
164
- "250": number;
165
- "290": number;
166
- "1-869": number;
167
- "1-758": number;
168
- "508": number;
169
- "1-784": number;
170
- "685": number;
171
- "378": number;
172
- "239": number;
173
- "966": number;
174
- "221": number;
175
- "381": number;
176
- "248": number;
177
- "232": number;
178
- "65": number;
179
- "386": number;
180
- "677": number;
181
- "27": number;
182
- "211": number;
183
- "34": number;
184
- "94": number;
185
- "249": number;
186
- "597": number;
187
- "268": number;
188
- "46": number;
189
- "41": number;
190
- "963": number;
191
- "886": number;
192
- "992": number;
193
- "255": number;
194
- "66": number;
195
- "228": number;
196
- "690": number;
197
- "676": number;
198
- "1-868": number;
199
- "216": number;
200
- "90": number;
201
- "993": number;
202
- "1-649": number;
203
- "688": number;
204
- "1-340": number;
205
- "256": number;
206
- "380": number;
207
- "971": number;
208
- "44": number;
209
- "1": number;
210
- "598": number;
211
- "998": number;
212
- "678": number;
213
- "379": number;
214
- "58": number;
215
- "681": number;
216
- "967": number;
217
- "260": number;
218
- "263": number;
219
- "670": number;
220
- "245": number;
221
- "856": number;
222
- "599": number;
223
- "850": number;
224
- "262": number;
225
- "82": number;
226
- "84": number;
227
- };
228
- export declare const DEFAULT_ORIGIN = "https://web.whatsapp.com";
229
- export declare const MOBILE_ENDPOINT = "g.whatsapp.net";
230
- export declare const MOBILE_PORT = 443;
231
- export declare const DEF_CALLBACK_PREFIX = "CB:";
232
- export declare const DEF_TAG_PREFIX = "TAG:";
233
- export declare const PHONE_CONNECTION_CB = "CB:Pong";
234
- export declare const WA_DEFAULT_EPHEMERAL: number;
235
- export declare const MOBILE_TOKEN: Buffer;
236
- export declare const MOBILE_REGISTRATION_ENDPOINT = "https://v.whatsapp.net/v2";
237
- export declare const MOBILE_USERAGENT: string;
238
- export declare const REGISTRATION_PUBLIC_KEY: Buffer;
239
- export declare const NOISE_MODE = "Noise_XX_25519_AESGCM_SHA256\0\0\0\0";
240
- export declare const DICT_VERSION = 2;
241
- export declare const KEY_BUNDLE_TYPE: Buffer;
242
- export declare const NOISE_WA_HEADER: Buffer;
243
- export declare const PROTOCOL_VERSION: number[];
244
- export declare const MOBILE_NOISE_HEADER: Buffer;
245
- /** from: https://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url */
246
- export declare const URL_REGEX: RegExp;
247
- export declare const URL_EXCLUDE_REGEX: RegExp;
248
- export declare const WA_CERT_DETAILS: {
249
- SERIAL: number;
250
- };
251
- export declare const PROCESSABLE_HISTORY_TYPES: proto.Message.HistorySyncNotification.HistorySyncType[];
252
- export declare const DEFAULT_CONNECTION_CONFIG: SocketConfig;
253
- export declare const MEDIA_PATH_MAP: {
254
- [T in MediaType]?: string;
255
- };
256
- export declare const MEDIA_HKDF_KEY_MAPPING: {
257
- audio: string;
258
- document: string;
259
- gif: string;
260
- image: string;
261
- ppic: string;
262
- product: string;
263
- ptt: string;
264
- sticker: string;
265
- video: string;
266
- 'thumbnail-document': string;
267
- 'thumbnail-image': string;
268
- 'thumbnail-video': string;
269
- 'thumbnail-link': string;
270
- 'md-msg-hist': string;
271
- 'md-app-state': string;
272
- 'product-catalog-image': string;
273
- 'payment-bg-image': string;
274
- ptv: string;
275
- };
276
- export declare const MEDIA_KEYS: ("ppic" | "product" | "image" | "video" | "sticker" | "audio" | "gif" | "ptt" | "thumbnail-document" | "thumbnail-image" | "thumbnail-link" | "thumbnail-video" | "md-app-state" | "md-msg-hist" | "document" | "product-catalog-image" | "payment-bg-image" | "ptv")[];
277
- export declare const MIN_PREKEY_COUNT = 5;
278
- export declare const INITIAL_PREKEY_COUNT = 30;
279
- export declare const DEFAULT_CACHE_TTLS: {
280
- SIGNAL_STORE: number;
281
- MSG_RETRY: number;
282
- CALL_OFFER: number;
283
- USER_DEVICES: number;
284
- };