@skyzopedia/baileys-mod 5.0.7 → 6.0.0

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 (210) hide show
  1. package/WAProto/index.js +133384 -57814
  2. package/engine-requirements.js +10 -0
  3. package/lib/Defaults/baileys-version.json +3 -0
  4. package/lib/Defaults/index.d.ts +53 -0
  5. package/lib/Defaults/index.js +141 -117
  6. package/lib/Defaults/phonenumber-mcc.json +223 -0
  7. package/lib/Signal/Group/ciphertext-message.d.ts +9 -0
  8. package/lib/Signal/Group/ciphertext-message.js +14 -12
  9. package/lib/Signal/Group/group-session-builder.d.ts +14 -0
  10. package/lib/Signal/Group/group-session-builder.js +42 -10
  11. package/lib/Signal/Group/group_cipher.d.ts +17 -0
  12. package/lib/Signal/Group/group_cipher.js +87 -75
  13. package/lib/Signal/Group/index.d.ts +11 -0
  14. package/lib/Signal/Group/index.js +57 -13
  15. package/lib/Signal/Group/keyhelper.d.ts +10 -0
  16. package/lib/Signal/Group/keyhelper.js +52 -17
  17. package/lib/Signal/Group/queue-job.d.ts +1 -0
  18. package/lib/Signal/Group/queue-job.js +57 -0
  19. package/lib/Signal/Group/sender-chain-key.d.ts +13 -0
  20. package/lib/Signal/Group/sender-chain-key.js +33 -27
  21. package/lib/Signal/Group/sender-key-distribution-message.d.ts +16 -0
  22. package/lib/Signal/Group/sender-key-distribution-message.js +63 -62
  23. package/lib/Signal/Group/sender-key-message.d.ts +18 -0
  24. package/lib/Signal/Group/sender-key-message.js +66 -65
  25. package/lib/Signal/Group/sender-key-name.d.ts +17 -0
  26. package/lib/Signal/Group/sender-key-name.js +44 -45
  27. package/lib/Signal/Group/sender-key-record.d.ts +30 -0
  28. package/lib/Signal/Group/sender-key-record.js +49 -39
  29. package/lib/Signal/Group/sender-key-state.d.ts +38 -0
  30. package/lib/Signal/Group/sender-key-state.js +93 -80
  31. package/lib/Signal/Group/sender-message-key.d.ts +11 -0
  32. package/lib/Signal/Group/sender-message-key.js +28 -27
  33. package/lib/Signal/libsignal.d.ts +3 -0
  34. package/lib/Signal/libsignal.js +163 -313
  35. package/lib/Socket/Client/abstract-socket-client.d.ts +17 -0
  36. package/lib/Socket/Client/abstract-socket-client.js +13 -0
  37. package/lib/Socket/Client/index.d.ts +3 -0
  38. package/lib/Socket/Client/index.js +19 -4
  39. package/lib/Socket/Client/mobile-socket-client.d.ts +13 -0
  40. package/lib/Socket/Client/mobile-socket-client.js +65 -0
  41. package/lib/Socket/Client/web-socket-client.d.ts +12 -0
  42. package/lib/Socket/Client/web-socket-client.js +62 -0
  43. package/lib/Socket/business.d.ts +171 -0
  44. package/lib/Socket/business.js +242 -359
  45. package/lib/Socket/chats.d.ts +267 -0
  46. package/lib/Socket/chats.js +935 -846
  47. package/lib/Socket/dugong.d.ts +254 -0
  48. package/lib/Socket/dugong.js +484 -0
  49. package/lib/Socket/groups.d.ts +115 -0
  50. package/lib/Socket/groups.js +309 -304
  51. package/lib/Socket/index.d.ts +173 -0
  52. package/lib/Socket/index.js +10 -15
  53. package/lib/Socket/messages-recv.d.ts +161 -0
  54. package/lib/Socket/messages-recv.js +1054 -1107
  55. package/lib/Socket/messages-send.d.ts +149 -0
  56. package/lib/Socket/messages-send.js +447 -706
  57. package/lib/Socket/newsletter.d.ts +134 -0
  58. package/lib/Socket/newsletter.js +314 -199
  59. package/lib/Socket/registration.d.ts +267 -0
  60. package/lib/Socket/registration.js +166 -0
  61. package/lib/Socket/socket.d.ts +43 -0
  62. package/lib/Socket/socket.js +650 -777
  63. package/lib/Socket/usync.d.ts +36 -0
  64. package/lib/Socket/usync.js +70 -0
  65. package/lib/Store/index.d.ts +3 -0
  66. package/lib/Store/index.js +10 -6
  67. package/lib/Store/make-cache-manager-store.d.ts +13 -0
  68. package/lib/Store/make-cache-manager-store.js +81 -73
  69. package/lib/Store/make-in-memory-store.d.ts +118 -0
  70. package/lib/Store/make-in-memory-store.js +423 -286
  71. package/lib/Store/make-ordered-dictionary.d.ts +13 -0
  72. package/lib/Store/make-ordered-dictionary.js +79 -77
  73. package/lib/Store/object-repository.d.ts +10 -0
  74. package/lib/Store/object-repository.js +26 -24
  75. package/lib/Types/Auth.d.ts +110 -0
  76. package/lib/Types/Auth.js +2 -3
  77. package/lib/Types/Call.d.ts +13 -0
  78. package/lib/Types/Call.js +2 -3
  79. package/lib/Types/Chat.d.ts +102 -0
  80. package/lib/Types/Chat.js +4 -9
  81. package/lib/Types/Contact.d.ts +19 -0
  82. package/lib/Types/Contact.js +2 -3
  83. package/lib/Types/Events.d.ts +157 -0
  84. package/lib/Types/Events.js +2 -3
  85. package/lib/Types/GroupMetadata.d.ts +55 -0
  86. package/lib/Types/GroupMetadata.js +2 -3
  87. package/lib/Types/Label.d.ts +35 -0
  88. package/lib/Types/Label.js +26 -24
  89. package/lib/Types/LabelAssociation.d.ts +29 -0
  90. package/lib/Types/LabelAssociation.js +8 -6
  91. package/lib/Types/Message.d.ts +273 -0
  92. package/lib/Types/Message.js +9 -12
  93. package/lib/Types/Newsletter.d.ts +103 -0
  94. package/lib/Types/Newsletter.js +38 -33
  95. package/lib/Types/Product.d.ts +78 -0
  96. package/lib/Types/Product.js +2 -3
  97. package/lib/Types/Signal.d.ts +57 -0
  98. package/lib/Types/Signal.js +2 -3
  99. package/lib/Types/Socket.d.ts +111 -0
  100. package/lib/Types/Socket.js +2 -4
  101. package/lib/Types/State.d.ts +27 -0
  102. package/lib/Types/State.js +2 -11
  103. package/lib/Types/USync.d.ts +25 -0
  104. package/lib/Types/USync.js +2 -3
  105. package/lib/Types/index.d.ts +57 -0
  106. package/lib/Types/index.js +41 -27
  107. package/lib/Utils/auth-utils.d.ts +18 -0
  108. package/lib/Utils/auth-utils.js +198 -211
  109. package/lib/Utils/baileys-event-stream.d.ts +16 -0
  110. package/lib/Utils/baileys-event-stream.js +61 -42
  111. package/lib/Utils/business.d.ts +22 -0
  112. package/lib/Utils/business.js +214 -213
  113. package/lib/Utils/chat-utils.d.ts +71 -0
  114. package/lib/Utils/chat-utils.js +687 -710
  115. package/lib/Utils/crypto.d.ts +41 -0
  116. package/lib/Utils/crypto.js +133 -112
  117. package/lib/Utils/decode-wa-message.d.ts +19 -0
  118. package/lib/Utils/decode-wa-message.js +183 -252
  119. package/lib/Utils/event-buffer.d.ts +35 -0
  120. package/lib/Utils/event-buffer.js +496 -510
  121. package/lib/Utils/generics.d.ts +92 -0
  122. package/lib/Utils/generics.js +387 -319
  123. package/lib/Utils/history.d.ts +15 -0
  124. package/lib/Utils/history.js +92 -83
  125. package/lib/Utils/index.d.ts +17 -0
  126. package/lib/Utils/index.js +33 -21
  127. package/lib/Utils/link-preview.d.ts +21 -0
  128. package/lib/Utils/link-preview.js +83 -71
  129. package/lib/Utils/logger.d.ts +4 -0
  130. package/lib/Utils/logger.js +7 -5
  131. package/lib/Utils/lt-hash.d.ts +12 -0
  132. package/lib/Utils/lt-hash.js +46 -40
  133. package/lib/Utils/make-mutex.d.ts +7 -0
  134. package/lib/Utils/make-mutex.js +41 -34
  135. package/lib/Utils/messages-media.d.ts +116 -0
  136. package/lib/Utils/messages-media.js +768 -550
  137. package/lib/Utils/messages.d.ts +77 -0
  138. package/lib/Utils/messages.js +263 -362
  139. package/lib/Utils/noise-handler.d.ts +21 -0
  140. package/lib/Utils/noise-handler.js +149 -138
  141. package/lib/Utils/process-message.d.ts +41 -0
  142. package/lib/Utils/process-message.js +303 -323
  143. package/lib/Utils/signal.d.ts +32 -0
  144. package/lib/Utils/signal.js +141 -149
  145. package/lib/Utils/use-multi-file-auth-state.d.ts +13 -0
  146. package/lib/Utils/use-multi-file-auth-state.js +103 -95
  147. package/lib/Utils/validate-connection.d.ts +11 -0
  148. package/lib/Utils/validate-connection.js +220 -183
  149. package/lib/WABinary/constants.d.ts +30 -0
  150. package/lib/WABinary/constants.js +35 -1298
  151. package/lib/WABinary/decode.d.ts +7 -0
  152. package/lib/WABinary/decode.js +249 -237
  153. package/lib/WABinary/encode.d.ts +3 -0
  154. package/lib/WABinary/encode.js +260 -213
  155. package/lib/WABinary/generic-utils.d.ts +17 -0
  156. package/lib/WABinary/generic-utils.js +65 -56
  157. package/lib/WABinary/index.d.ts +5 -0
  158. package/lib/WABinary/index.js +21 -7
  159. package/lib/WABinary/jid-utils.d.ts +31 -0
  160. package/lib/WABinary/jid-utils.js +58 -89
  161. package/lib/WABinary/types.d.ts +18 -0
  162. package/lib/WABinary/types.js +2 -3
  163. package/lib/WAM/BinaryInfo.d.ts +17 -0
  164. package/lib/WAM/BinaryInfo.js +12 -10
  165. package/lib/WAM/constants.d.ts +38 -0
  166. package/lib/WAM/constants.js +15348 -22851
  167. package/lib/WAM/encode.d.ts +3 -0
  168. package/lib/WAM/encode.js +136 -135
  169. package/lib/WAM/index.d.ts +3 -0
  170. package/lib/WAM/index.js +19 -5
  171. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +9 -0
  172. package/lib/WAUSync/Protocols/USyncContactProtocol.js +30 -28
  173. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +22 -0
  174. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +53 -49
  175. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +12 -0
  176. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +28 -27
  177. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +12 -0
  178. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +39 -36
  179. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +25 -0
  180. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +50 -50
  181. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +8 -0
  182. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +20 -26
  183. package/lib/WAUSync/Protocols/index.d.ts +4 -0
  184. package/lib/WAUSync/Protocols/index.js +20 -6
  185. package/lib/WAUSync/USyncQuery.d.ts +28 -0
  186. package/lib/WAUSync/USyncQuery.js +85 -86
  187. package/lib/WAUSync/USyncUser.d.ts +12 -0
  188. package/lib/WAUSync/USyncUser.js +25 -23
  189. package/lib/WAUSync/index.d.ts +3 -0
  190. package/lib/WAUSync/index.js +19 -5
  191. package/lib/index.d.ts +12 -0
  192. package/lib/index.js +36 -24
  193. package/package.json +106 -98
  194. package/LICENSE +0 -21
  195. package/WAProto/WAProto.proto +0 -5311
  196. package/lib/KeyDB/BinarySearch.js +0 -20
  197. package/lib/KeyDB/KeyedDB.js +0 -167
  198. package/lib/KeyDB/index.js +0 -4
  199. package/lib/Signal/lid-mapping.js +0 -155
  200. package/lib/Socket/Client/types.js +0 -13
  201. package/lib/Socket/Client/websocket.js +0 -52
  202. package/lib/Socket/Client/websocket.js.bak +0 -53
  203. package/lib/Socket/communities.js +0 -413
  204. package/lib/Socket/mex.js +0 -45
  205. package/lib/Types/Bussines.js +0 -3
  206. package/lib/Types/Newsletter.js.bak +0 -33
  207. package/lib/Utils/browser-utils.js +0 -25
  208. package/lib/Utils/message-retry-manager.js +0 -113
  209. package/lib/Utils/messages.js.bak +0 -907
  210. package/lib/Utils/pre-key-manager.js +0 -85
@@ -1,233 +1,234 @@
1
- //=======================================================//
2
- import { getBinaryNodeChild, getBinaryNodeChildren, getBinaryNodeChildString } from "../WABinary/index.js";
3
- import { getStream, getUrlFromDirectPath } from "./messages-media.js";
4
- import { createWriteStream, promises as fs } from "fs";
5
- import { generateMessageIDV2 } from "./generics.js";
6
- import { createHash } from "crypto";
7
- import { Boom } from "@hapi/boom";
8
- import { tmpdir } from "os";
9
- import { join } from "path";
10
- //=======================================================//
11
- export const parseCatalogNode = (node) => {
12
- const catalogNode = getBinaryNodeChild(node, "product_catalog");
13
- const products = getBinaryNodeChildren(catalogNode, "product").map(parseProductNode);
14
- const paging = getBinaryNodeChild(catalogNode, "paging");
15
- return {
16
- products,
17
- nextPageCursor: paging ? getBinaryNodeChildString(paging, "after") : undefined
18
- };
19
- };
20
- //=======================================================//
21
- export const parseCollectionsNode = (node) => {
22
- const collectionsNode = getBinaryNodeChild(node, "collections");
23
- const collections = getBinaryNodeChildren(collectionsNode, "collection").map(collectionNode => {
24
- const id = getBinaryNodeChildString(collectionNode, "id");
25
- const name = getBinaryNodeChildString(collectionNode, "name");
26
- const products = getBinaryNodeChildren(collectionNode, "product").map(parseProductNode);
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.uploadingNecessaryImages = exports.uploadingNecessaryImagesOfProduct = exports.parseProductNode = exports.toProductNode = exports.parseOrderDetailsNode = exports.parseCollectionsNode = exports.parseCatalogNode = void 0;
4
+ const boom_1 = require("@hapi/boom");
5
+ const crypto_1 = require("crypto");
6
+ const WABinary_1 = require("../WABinary");
7
+ const messages_media_1 = require("./messages-media");
8
+ const parseCatalogNode = (node) => {
9
+ const catalogNode = (0, WABinary_1.getBinaryNodeChild)(node, 'product_catalog');
10
+ const products = (0, WABinary_1.getBinaryNodeChildren)(catalogNode, 'product').map(exports.parseProductNode);
11
+ const paging = (0, WABinary_1.getBinaryNodeChild)(catalogNode, 'paging');
27
12
  return {
28
- id,
29
- name,
30
- products,
31
- status: parseStatusInfo(collectionNode)
13
+ products,
14
+ nextPageCursor: paging
15
+ ? (0, WABinary_1.getBinaryNodeChildString)(paging, 'after')
16
+ : undefined
32
17
  };
33
- });
34
- return {
35
- collections
36
- };
37
18
  };
38
- //=======================================================//
39
- export const parseOrderDetailsNode = (node) => {
40
- const orderNode = getBinaryNodeChild(node, "order");
41
- const products = getBinaryNodeChildren(orderNode, "product").map(productNode => {
42
- const imageNode = getBinaryNodeChild(productNode, "image");
19
+ exports.parseCatalogNode = parseCatalogNode;
20
+ const parseCollectionsNode = (node) => {
21
+ const collectionsNode = (0, WABinary_1.getBinaryNodeChild)(node, 'collections');
22
+ const collections = (0, WABinary_1.getBinaryNodeChildren)(collectionsNode, 'collection').map(collectionNode => {
23
+ const id = (0, WABinary_1.getBinaryNodeChildString)(collectionNode, 'id');
24
+ const name = (0, WABinary_1.getBinaryNodeChildString)(collectionNode, 'name');
25
+ const products = (0, WABinary_1.getBinaryNodeChildren)(collectionNode, 'product').map(exports.parseProductNode);
26
+ return {
27
+ id,
28
+ name,
29
+ products,
30
+ status: parseStatusInfo(collectionNode)
31
+ };
32
+ });
43
33
  return {
44
- id: getBinaryNodeChildString(productNode, "id"),
45
- name: getBinaryNodeChildString(productNode, "name"),
46
- imageUrl: getBinaryNodeChildString(imageNode, "url"),
47
- price: +getBinaryNodeChildString(productNode, "price"),
48
- currency: getBinaryNodeChildString(productNode, "currency"),
49
- quantity: +getBinaryNodeChildString(productNode, "quantity")
34
+ collections
50
35
  };
51
- });
52
- const priceNode = getBinaryNodeChild(orderNode, "price");
53
- const orderDetails = {
54
- price: {
55
- total: +getBinaryNodeChildString(priceNode, "total"),
56
- currency: getBinaryNodeChildString(priceNode, "currency")
57
- },
58
- products
59
- };
60
- return orderDetails;
61
36
  };
62
- //=======================================================//
63
- export const toProductNode = (productId, product) => {
64
- const attrs = {};
65
- const content = [];
66
- if (typeof productId !== "undefined") {
67
- content.push({
68
- tag: "id",
69
- attrs: {},
70
- content: Buffer.from(productId)
71
- });
72
- }
73
- if (typeof product.name !== "undefined") {
74
- content.push({
75
- tag: "name",
76
- attrs: {},
77
- content: Buffer.from(product.name)
78
- });
79
- }
80
- if (typeof product.description !== "undefined") {
81
- content.push({
82
- tag: "description",
83
- attrs: {},
84
- content: Buffer.from(product.description)
85
- });
86
- }
87
- if (typeof product.retailerId !== "undefined") {
88
- content.push({
89
- tag: "retailer_id",
90
- attrs: {},
91
- content: Buffer.from(product.retailerId)
92
- });
93
- }
94
- if (product.images.length) {
95
- content.push({
96
- tag: "media",
97
- attrs: {},
98
- content: product.images.map(img => {
99
- if (!("url" in img)) {
100
- throw new Boom("Expected img for product to already be uploaded", { statusCode: 400 });
101
- }
37
+ exports.parseCollectionsNode = parseCollectionsNode;
38
+ const parseOrderDetailsNode = (node) => {
39
+ const orderNode = (0, WABinary_1.getBinaryNodeChild)(node, 'order');
40
+ const products = (0, WABinary_1.getBinaryNodeChildren)(orderNode, 'product').map(productNode => {
41
+ const imageNode = (0, WABinary_1.getBinaryNodeChild)(productNode, 'image');
102
42
  return {
103
- tag: "image",
104
- attrs: {},
105
- content: [
106
- {
107
- tag: "url",
108
- attrs: {},
109
- content: Buffer.from(img.url.toString())
110
- }
111
- ]
43
+ id: (0, WABinary_1.getBinaryNodeChildString)(productNode, 'id'),
44
+ name: (0, WABinary_1.getBinaryNodeChildString)(productNode, 'name'),
45
+ imageUrl: (0, WABinary_1.getBinaryNodeChildString)(imageNode, 'url'),
46
+ price: +(0, WABinary_1.getBinaryNodeChildString)(productNode, 'price'),
47
+ currency: (0, WABinary_1.getBinaryNodeChildString)(productNode, 'currency'),
48
+ quantity: +(0, WABinary_1.getBinaryNodeChildString)(productNode, 'quantity')
112
49
  };
113
- })
114
- });
115
- }
116
- if (typeof product.price !== "undefined") {
117
- content.push({
118
- tag: "price",
119
- attrs: {},
120
- content: Buffer.from(product.price.toString())
121
50
  });
122
- }
123
- if (typeof product.currency !== "undefined") {
124
- content.push({
125
- tag: "currency",
126
- attrs: {},
127
- content: Buffer.from(product.currency)
128
- });
129
- }
130
- if ("originCountryCode" in product) {
131
- if (typeof product.originCountryCode === "undefined") {
132
- attrs["compliance_category"] = "COUNTRY_ORIGIN_EXEMPT";
51
+ const priceNode = (0, WABinary_1.getBinaryNodeChild)(orderNode, 'price');
52
+ const orderDetails = {
53
+ price: {
54
+ total: +(0, WABinary_1.getBinaryNodeChildString)(priceNode, 'total'),
55
+ currency: (0, WABinary_1.getBinaryNodeChildString)(priceNode, 'currency'),
56
+ },
57
+ products
58
+ };
59
+ return orderDetails;
60
+ };
61
+ exports.parseOrderDetailsNode = parseOrderDetailsNode;
62
+ const toProductNode = (productId, product) => {
63
+ const attrs = {};
64
+ const content = [];
65
+ if (typeof productId !== 'undefined') {
66
+ content.push({
67
+ tag: 'id',
68
+ attrs: {},
69
+ content: Buffer.from(productId)
70
+ });
71
+ }
72
+ if (typeof product.name !== 'undefined') {
73
+ content.push({
74
+ tag: 'name',
75
+ attrs: {},
76
+ content: Buffer.from(product.name)
77
+ });
78
+ }
79
+ if (typeof product.description !== 'undefined') {
80
+ content.push({
81
+ tag: 'description',
82
+ attrs: {},
83
+ content: Buffer.from(product.description)
84
+ });
85
+ }
86
+ if (typeof product.retailerId !== 'undefined') {
87
+ content.push({
88
+ tag: 'retailer_id',
89
+ attrs: {},
90
+ content: Buffer.from(product.retailerId)
91
+ });
133
92
  }
134
- else {
135
- content.push({
136
- tag: "compliance_info",
137
- attrs: {},
138
- content: [
139
- {
140
- tag: "country_code_origin",
93
+ if (product.images.length) {
94
+ content.push({
95
+ tag: 'media',
141
96
  attrs: {},
142
- content: Buffer.from(product.originCountryCode)
143
- }
144
- ]
145
- });
97
+ content: product.images.map(img => {
98
+ if (!('url' in img)) {
99
+ throw new boom_1.Boom('Expected img for product to already be uploaded', { statusCode: 400 });
100
+ }
101
+ return {
102
+ tag: 'image',
103
+ attrs: {},
104
+ content: [
105
+ {
106
+ tag: 'url',
107
+ attrs: {},
108
+ content: Buffer.from(img.url.toString())
109
+ }
110
+ ]
111
+ };
112
+ })
113
+ });
146
114
  }
147
- }
148
- if (typeof product.isHidden !== "undefined") {
149
- attrs["is_hidden"] = product.isHidden.toString();
150
- }
151
- const node = {
152
- tag: "product",
153
- attrs,
154
- content
155
- };
156
- return node;
115
+ if (typeof product.price !== 'undefined') {
116
+ content.push({
117
+ tag: 'price',
118
+ attrs: {},
119
+ content: Buffer.from(product.price.toString())
120
+ });
121
+ }
122
+ if (typeof product.currency !== 'undefined') {
123
+ content.push({
124
+ tag: 'currency',
125
+ attrs: {},
126
+ content: Buffer.from(product.currency)
127
+ });
128
+ }
129
+ if ('originCountryCode' in product) {
130
+ if (typeof product.originCountryCode === 'undefined') {
131
+ attrs['compliance_category'] = 'COUNTRY_ORIGIN_EXEMPT';
132
+ }
133
+ else {
134
+ content.push({
135
+ tag: 'compliance_info',
136
+ attrs: {},
137
+ content: [
138
+ {
139
+ tag: 'country_code_origin',
140
+ attrs: {},
141
+ content: Buffer.from(product.originCountryCode)
142
+ }
143
+ ]
144
+ });
145
+ }
146
+ }
147
+ if (typeof product.isHidden !== 'undefined') {
148
+ attrs['is_hidden'] = product.isHidden.toString();
149
+ }
150
+ const node = {
151
+ tag: 'product',
152
+ attrs,
153
+ content
154
+ };
155
+ return node;
157
156
  };
158
- //=======================================================//
159
- export const parseProductNode = (productNode) => {
160
- const isHidden = productNode.attrs.is_hidden === "true";
161
- const id = getBinaryNodeChildString(productNode, "id");
162
- const mediaNode = getBinaryNodeChild(productNode, "media");
163
- const statusInfoNode = getBinaryNodeChild(productNode, "status_info");
164
- const product = {
165
- id,
166
- imageUrls: parseImageUrls(mediaNode),
167
- reviewStatus: {
168
- whatsapp: getBinaryNodeChildString(statusInfoNode, "status")
169
- },
170
- availability: "in stock",
171
- name: getBinaryNodeChildString(productNode, "name"),
172
- retailerId: getBinaryNodeChildString(productNode, "retailer_id"),
173
- url: getBinaryNodeChildString(productNode, "url"),
174
- description: getBinaryNodeChildString(productNode, "description"),
175
- price: +getBinaryNodeChildString(productNode, "price"),
176
- currency: getBinaryNodeChildString(productNode, "currency"),
177
- isHidden
178
- };
179
- return product;
157
+ exports.toProductNode = toProductNode;
158
+ const parseProductNode = (productNode) => {
159
+ const isHidden = productNode.attrs.is_hidden === 'true';
160
+ const id = (0, WABinary_1.getBinaryNodeChildString)(productNode, 'id');
161
+ const mediaNode = (0, WABinary_1.getBinaryNodeChild)(productNode, 'media');
162
+ const statusInfoNode = (0, WABinary_1.getBinaryNodeChild)(productNode, 'status_info');
163
+ const product = {
164
+ id,
165
+ imageUrls: parseImageUrls(mediaNode),
166
+ reviewStatus: {
167
+ whatsapp: (0, WABinary_1.getBinaryNodeChildString)(statusInfoNode, 'status'),
168
+ },
169
+ availability: 'in stock',
170
+ name: (0, WABinary_1.getBinaryNodeChildString)(productNode, 'name'),
171
+ retailerId: (0, WABinary_1.getBinaryNodeChildString)(productNode, 'retailer_id'),
172
+ url: (0, WABinary_1.getBinaryNodeChildString)(productNode, 'url'),
173
+ description: (0, WABinary_1.getBinaryNodeChildString)(productNode, 'description'),
174
+ price: +(0, WABinary_1.getBinaryNodeChildString)(productNode, 'price'),
175
+ currency: (0, WABinary_1.getBinaryNodeChildString)(productNode, 'currency'),
176
+ isHidden,
177
+ };
178
+ return product;
180
179
  };
181
- //=======================================================//
182
- export async function uploadingNecessaryImagesOfProduct(product, waUploadToServer, timeoutMs = 30000) {
183
- product = {
184
- ...product,
185
- images: product.images
186
- ? await uploadingNecessaryImages(product.images, waUploadToServer, timeoutMs)
187
- : product.images
188
- };
189
- return product;
180
+ exports.parseProductNode = parseProductNode;
181
+ /**
182
+ * Uploads images not already uploaded to WA's servers
183
+ */
184
+ async function uploadingNecessaryImagesOfProduct(product, waUploadToServer, timeoutMs = 30000) {
185
+ product = {
186
+ ...product,
187
+ images: product.images ? await (0, exports.uploadingNecessaryImages)(product.images, waUploadToServer, timeoutMs) : product.images
188
+ };
189
+ return product;
190
190
  }
191
- //=======================================================//
192
- export const uploadingNecessaryImages = async (images, waUploadToServer, timeoutMs = 30000) => {
193
- const results = await Promise.all(images.map(async (img) => {
194
- if ("url" in img) {
195
- const url = img.url.toString();
196
- if (url.includes(".whatsapp.net")) {
197
- return { url };
198
- }
199
- }
200
- const { stream } = await getStream(img);
201
- const hasher = createHash("sha256");
202
- const filePath = join(tmpdir(), "img" + generateMessageIDV2());
203
- const encFileWriteStream = createWriteStream(filePath);
204
- for await (const block of stream) {
205
- hasher.update(block);
206
- encFileWriteStream.write(block);
207
- }
208
- const sha = hasher.digest("base64");
209
- const { directPath } = await waUploadToServer(filePath, {
210
- mediaType: "product-catalog-image",
211
- fileEncSha256B64: sha,
212
- timeoutMs
213
- });
214
- await fs.unlink(filePath).catch(err => console.log("Error deleting temp file ", err));
215
- return { url: getUrlFromDirectPath(directPath) };
216
- }));
217
- return results;
191
+ exports.uploadingNecessaryImagesOfProduct = uploadingNecessaryImagesOfProduct;
192
+ /**
193
+ * Uploads images not already uploaded to WA's servers
194
+ */
195
+ const uploadingNecessaryImages = async (images, waUploadToServer, timeoutMs = 30000) => {
196
+ const results = await Promise.all(images.map(async (img) => {
197
+ if ('url' in img) {
198
+ const url = img.url.toString();
199
+ if (url.includes('.whatsapp.net')) {
200
+ return { url };
201
+ }
202
+ }
203
+ const { stream } = await (0, messages_media_1.getStream)(img);
204
+ const hasher = (0, crypto_1.createHash)('sha256');
205
+ const contentBlocks = [];
206
+ for await (const block of stream) {
207
+ hasher.update(block);
208
+ contentBlocks.push(block);
209
+ }
210
+ const sha = hasher.digest('base64');
211
+ const { directPath } = await waUploadToServer((0, messages_media_1.toReadable)(Buffer.concat(contentBlocks)), {
212
+ mediaType: 'product-catalog-image',
213
+ fileEncSha256B64: sha,
214
+ timeoutMs
215
+ });
216
+ return { url: (0, messages_media_1.getUrlFromDirectPath)(directPath) };
217
+ }));
218
+ return results;
218
219
  };
220
+ exports.uploadingNecessaryImages = uploadingNecessaryImages;
219
221
  const parseImageUrls = (mediaNode) => {
220
- const imgNode = getBinaryNodeChild(mediaNode, "image");
221
- return {
222
- requested: getBinaryNodeChildString(imgNode, "request_image_url"),
223
- original: getBinaryNodeChildString(imgNode, "original_image_url")
224
- };
222
+ const imgNode = (0, WABinary_1.getBinaryNodeChild)(mediaNode, 'image');
223
+ return {
224
+ requested: (0, WABinary_1.getBinaryNodeChildString)(imgNode, 'request_image_url'),
225
+ original: (0, WABinary_1.getBinaryNodeChildString)(imgNode, 'original_image_url')
226
+ };
225
227
  };
226
228
  const parseStatusInfo = (mediaNode) => {
227
- const node = getBinaryNodeChild(mediaNode, "status_info");
228
- return {
229
- status: getBinaryNodeChildString(node, "status"),
230
- canAppeal: getBinaryNodeChildString(node, "can_appeal") === "true"
231
- };
229
+ const node = (0, WABinary_1.getBinaryNodeChild)(mediaNode, 'status_info');
230
+ return {
231
+ status: (0, WABinary_1.getBinaryNodeChildString)(node, 'status'),
232
+ canAppeal: (0, WABinary_1.getBinaryNodeChildString)(node, 'can_appeal') === 'true',
233
+ };
232
234
  };
233
- //=======================================================//
@@ -0,0 +1,71 @@
1
+ /// <reference types="node" />
2
+ import { AxiosRequestConfig } from 'axios';
3
+ import type { Logger } from 'pino';
4
+ import { proto } from '../../WAProto';
5
+ import { BaileysEventEmitter, ChatModification, ChatMutation, Contact, InitialAppStateSyncOptions, LTHashState, WAPatchCreate, WAPatchName } from '../Types';
6
+ import { BinaryNode } from '../WABinary';
7
+ type FetchAppStateSyncKey = (keyId: string) => Promise<proto.Message.IAppStateSyncKeyData | null | undefined>;
8
+ export type ChatMutationMap = {
9
+ [index: string]: ChatMutation;
10
+ };
11
+ export declare const newLTHashState: () => LTHashState;
12
+ export declare const encodeSyncdPatch: ({ type, index, syncAction, apiVersion, operation }: WAPatchCreate, myAppStateKeyId: string, state: LTHashState, getAppStateSyncKey: FetchAppStateSyncKey) => Promise<{
13
+ patch: proto.ISyncdPatch;
14
+ state: LTHashState;
15
+ }>;
16
+ export declare const decodeSyncdMutations: (msgMutations: (proto.ISyncdMutation | proto.ISyncdRecord)[], initialState: LTHashState, getAppStateSyncKey: FetchAppStateSyncKey, onMutation: (mutation: ChatMutation) => void, validateMacs: boolean) => Promise<{
17
+ hash: Buffer;
18
+ indexValueMap: {
19
+ [indexMacBase64: string]: {
20
+ valueMac: Uint8Array | Buffer;
21
+ };
22
+ };
23
+ }>;
24
+ export declare const decodeSyncdPatch: (msg: proto.ISyncdPatch, name: WAPatchName, initialState: LTHashState, getAppStateSyncKey: FetchAppStateSyncKey, onMutation: (mutation: ChatMutation) => void, validateMacs: boolean) => Promise<{
25
+ hash: Buffer;
26
+ indexValueMap: {
27
+ [indexMacBase64: string]: {
28
+ valueMac: Uint8Array | Buffer;
29
+ };
30
+ };
31
+ }>;
32
+ export declare const extractSyncdPatches: (result: BinaryNode, options: AxiosRequestConfig<any>) => Promise<{
33
+ critical_block: {
34
+ patches: proto.ISyncdPatch[];
35
+ hasMorePatches: boolean;
36
+ snapshot?: proto.ISyncdSnapshot | undefined;
37
+ };
38
+ critical_unblock_low: {
39
+ patches: proto.ISyncdPatch[];
40
+ hasMorePatches: boolean;
41
+ snapshot?: proto.ISyncdSnapshot | undefined;
42
+ };
43
+ regular_high: {
44
+ patches: proto.ISyncdPatch[];
45
+ hasMorePatches: boolean;
46
+ snapshot?: proto.ISyncdSnapshot | undefined;
47
+ };
48
+ regular_low: {
49
+ patches: proto.ISyncdPatch[];
50
+ hasMorePatches: boolean;
51
+ snapshot?: proto.ISyncdSnapshot | undefined;
52
+ };
53
+ regular: {
54
+ patches: proto.ISyncdPatch[];
55
+ hasMorePatches: boolean;
56
+ snapshot?: proto.ISyncdSnapshot | undefined;
57
+ };
58
+ }>;
59
+ export declare const downloadExternalBlob: (blob: proto.IExternalBlobReference, options: AxiosRequestConfig<any>) => Promise<Buffer>;
60
+ export declare const downloadExternalPatch: (blob: proto.IExternalBlobReference, options: AxiosRequestConfig<any>) => Promise<proto.SyncdMutations>;
61
+ export declare const decodeSyncdSnapshot: (name: WAPatchName, snapshot: proto.ISyncdSnapshot, getAppStateSyncKey: FetchAppStateSyncKey, minimumVersionNumber: number | undefined, validateMacs?: boolean) => Promise<{
62
+ state: LTHashState;
63
+ mutationMap: ChatMutationMap;
64
+ }>;
65
+ export declare const decodePatches: (name: WAPatchName, syncds: proto.ISyncdPatch[], initial: LTHashState, getAppStateSyncKey: FetchAppStateSyncKey, options: AxiosRequestConfig<any>, minimumVersionNumber?: number, logger?: Logger, validateMacs?: boolean) => Promise<{
66
+ state: LTHashState;
67
+ mutationMap: ChatMutationMap;
68
+ }>;
69
+ export declare const chatModificationToAppPatch: (mod: ChatModification, jid: string) => WAPatchCreate;
70
+ export declare const processSyncAction: (syncAction: ChatMutation, ev: BaileysEventEmitter, me: Contact, initialSyncOpts?: InitialAppStateSyncOptions, logger?: Logger) => void;
71
+ export {};