@skyzopedia/baileys-mod 5.0.8 → 6.0.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 (212) 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 +392 -319
  123. package/lib/Utils/generics.js.bak +433 -0
  124. package/lib/Utils/history.d.ts +15 -0
  125. package/lib/Utils/history.js +92 -83
  126. package/lib/Utils/index.d.ts +17 -0
  127. package/lib/Utils/index.js +33 -21
  128. package/lib/Utils/link-preview.d.ts +21 -0
  129. package/lib/Utils/link-preview.js +83 -71
  130. package/lib/Utils/logger.d.ts +4 -0
  131. package/lib/Utils/logger.js +7 -5
  132. package/lib/Utils/lt-hash.d.ts +12 -0
  133. package/lib/Utils/lt-hash.js +46 -40
  134. package/lib/Utils/make-mutex.d.ts +7 -0
  135. package/lib/Utils/make-mutex.js +41 -34
  136. package/lib/Utils/messages-media.d.ts +116 -0
  137. package/lib/Utils/messages-media.js +768 -550
  138. package/lib/Utils/messages.d.ts +77 -0
  139. package/lib/Utils/messages.js +263 -362
  140. package/lib/Utils/noise-handler.d.ts +21 -0
  141. package/lib/Utils/noise-handler.js +149 -138
  142. package/lib/Utils/process-message.d.ts +41 -0
  143. package/lib/Utils/process-message.js +303 -323
  144. package/lib/Utils/signal.d.ts +32 -0
  145. package/lib/Utils/signal.js +141 -149
  146. package/lib/Utils/use-multi-file-auth-state.d.ts +13 -0
  147. package/lib/Utils/use-multi-file-auth-state.js +103 -95
  148. package/lib/Utils/validate-connection.d.ts +11 -0
  149. package/lib/Utils/validate-connection.js +214 -183
  150. package/lib/Utils/validate-connection.js.bak +237 -0
  151. package/lib/WABinary/constants.d.ts +30 -0
  152. package/lib/WABinary/constants.js +35 -1298
  153. package/lib/WABinary/decode.d.ts +7 -0
  154. package/lib/WABinary/decode.js +249 -237
  155. package/lib/WABinary/encode.d.ts +3 -0
  156. package/lib/WABinary/encode.js +260 -213
  157. package/lib/WABinary/generic-utils.d.ts +17 -0
  158. package/lib/WABinary/generic-utils.js +65 -56
  159. package/lib/WABinary/index.d.ts +5 -0
  160. package/lib/WABinary/index.js +21 -7
  161. package/lib/WABinary/jid-utils.d.ts +31 -0
  162. package/lib/WABinary/jid-utils.js +58 -89
  163. package/lib/WABinary/types.d.ts +18 -0
  164. package/lib/WABinary/types.js +2 -3
  165. package/lib/WAM/BinaryInfo.d.ts +17 -0
  166. package/lib/WAM/BinaryInfo.js +12 -10
  167. package/lib/WAM/constants.d.ts +38 -0
  168. package/lib/WAM/constants.js +15348 -22851
  169. package/lib/WAM/encode.d.ts +3 -0
  170. package/lib/WAM/encode.js +136 -135
  171. package/lib/WAM/index.d.ts +3 -0
  172. package/lib/WAM/index.js +19 -5
  173. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +9 -0
  174. package/lib/WAUSync/Protocols/USyncContactProtocol.js +30 -28
  175. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +22 -0
  176. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +53 -49
  177. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +12 -0
  178. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +28 -27
  179. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +12 -0
  180. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +39 -36
  181. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +25 -0
  182. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +50 -50
  183. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +8 -0
  184. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +20 -26
  185. package/lib/WAUSync/Protocols/index.d.ts +4 -0
  186. package/lib/WAUSync/Protocols/index.js +20 -6
  187. package/lib/WAUSync/USyncQuery.d.ts +28 -0
  188. package/lib/WAUSync/USyncQuery.js +85 -86
  189. package/lib/WAUSync/USyncUser.d.ts +12 -0
  190. package/lib/WAUSync/USyncUser.js +25 -23
  191. package/lib/WAUSync/index.d.ts +3 -0
  192. package/lib/WAUSync/index.js +19 -5
  193. package/lib/index.d.ts +12 -0
  194. package/lib/index.js +36 -24
  195. package/package.json +106 -98
  196. package/LICENSE +0 -21
  197. package/WAProto/WAProto.proto +0 -5311
  198. package/lib/KeyDB/BinarySearch.js +0 -20
  199. package/lib/KeyDB/KeyedDB.js +0 -167
  200. package/lib/KeyDB/index.js +0 -4
  201. package/lib/Signal/lid-mapping.js +0 -155
  202. package/lib/Socket/Client/types.js +0 -13
  203. package/lib/Socket/Client/websocket.js +0 -52
  204. package/lib/Socket/Client/websocket.js.bak +0 -53
  205. package/lib/Socket/communities.js +0 -413
  206. package/lib/Socket/mex.js +0 -45
  207. package/lib/Types/Bussines.js +0 -3
  208. package/lib/Types/Newsletter.js.bak +0 -33
  209. package/lib/Utils/browser-utils.js +0 -25
  210. package/lib/Utils/message-retry-manager.js +0 -113
  211. package/lib/Utils/messages.js.bak +0 -907
  212. 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 {};