@queenanya/baileys 6.7.0 → 6.8.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 (129) hide show
  1. package/WASignalGroup/readme.md +6 -0
  2. package/lib/Defaults/baileys-version.json +3 -3
  3. package/lib/Defaults/index.d.ts +284 -284
  4. package/lib/Defaults/index.js +120 -120
  5. package/lib/Defaults/phonenumber-mcc.json +223 -223
  6. package/lib/Signal/libsignal.d.ts +3 -3
  7. package/lib/Signal/libsignal.js +152 -152
  8. package/lib/Socket/Client/abstract-socket-client.d.ts +17 -17
  9. package/lib/Socket/Client/abstract-socket-client.js +13 -13
  10. package/lib/Socket/Client/index.d.ts +3 -3
  11. package/lib/Socket/Client/index.js +19 -19
  12. package/lib/Socket/Client/mobile-socket-client.d.ts +13 -13
  13. package/lib/Socket/Client/mobile-socket-client.js +65 -65
  14. package/lib/Socket/Client/web-socket-client.d.ts +12 -12
  15. package/lib/Socket/Client/web-socket-client.js +62 -62
  16. package/lib/Socket/business.d.ts +135 -135
  17. package/lib/Socket/business.js +259 -259
  18. package/lib/Socket/chats.d.ts +79 -79
  19. package/lib/Socket/chats.js +854 -854
  20. package/lib/Socket/groups.d.ts +113 -113
  21. package/lib/Socket/groups.js +302 -302
  22. package/lib/Socket/index.d.ts +137 -137
  23. package/lib/Socket/index.js +10 -10
  24. package/lib/Socket/messages-recv.d.ts +124 -124
  25. package/lib/Socket/messages-recv.js +747 -747
  26. package/lib/Socket/messages-send.d.ts +119 -119
  27. package/lib/Socket/messages-send.js +663 -663
  28. package/lib/Socket/registration.d.ts +232 -232
  29. package/lib/Socket/registration.js +166 -166
  30. package/lib/Socket/socket.d.ts +42 -42
  31. package/lib/Socket/socket.js +588 -588
  32. package/lib/Store/index.d.ts +3 -3
  33. package/lib/Store/index.js +10 -10
  34. package/lib/Store/make-cache-manager-store.d.ts +13 -13
  35. package/lib/Store/make-cache-manager-store.js +83 -83
  36. package/lib/Store/make-in-memory-store.d.ts +117 -117
  37. package/lib/Store/make-in-memory-store.js +437 -437
  38. package/lib/Store/make-ordered-dictionary.d.ts +13 -13
  39. package/lib/Store/make-ordered-dictionary.js +81 -81
  40. package/lib/Store/object-repository.d.ts +10 -10
  41. package/lib/Store/object-repository.js +27 -27
  42. package/lib/Types/Auth.d.ts +108 -108
  43. package/lib/Types/Auth.js +2 -2
  44. package/lib/Types/Call.d.ts +13 -13
  45. package/lib/Types/Call.js +2 -2
  46. package/lib/Types/Chat.d.ts +102 -102
  47. package/lib/Types/Chat.js +4 -4
  48. package/lib/Types/Contact.d.ts +19 -19
  49. package/lib/Types/Contact.js +2 -2
  50. package/lib/Types/Events.d.ts +157 -157
  51. package/lib/Types/Events.js +2 -2
  52. package/lib/Types/GroupMetadata.d.ts +52 -52
  53. package/lib/Types/GroupMetadata.js +2 -2
  54. package/lib/Types/Label.d.ts +35 -35
  55. package/lib/Types/Label.js +27 -27
  56. package/lib/Types/LabelAssociation.d.ts +29 -29
  57. package/lib/Types/LabelAssociation.js +9 -9
  58. package/lib/Types/Message.d.ts +261 -261
  59. package/lib/Types/Message.js +9 -9
  60. package/lib/Types/Product.d.ts +78 -78
  61. package/lib/Types/Product.js +2 -2
  62. package/lib/Types/Signal.d.ts +57 -57
  63. package/lib/Types/Signal.js +2 -2
  64. package/lib/Types/Socket.d.ts +111 -111
  65. package/lib/Types/Socket.js +2 -2
  66. package/lib/Types/State.d.ts +27 -27
  67. package/lib/Types/State.js +2 -2
  68. package/lib/Types/index.d.ts +56 -56
  69. package/lib/Types/index.js +41 -41
  70. package/lib/Utils/auth-utils.d.ts +18 -18
  71. package/lib/Utils/auth-utils.js +204 -204
  72. package/lib/Utils/baileys-event-stream.d.ts +16 -16
  73. package/lib/Utils/baileys-event-stream.js +63 -63
  74. package/lib/Utils/business.d.ts +22 -22
  75. package/lib/Utils/business.js +234 -234
  76. package/lib/Utils/chat-utils.d.ts +71 -71
  77. package/lib/Utils/chat-utils.js +724 -724
  78. package/lib/Utils/crypto.d.ts +41 -41
  79. package/lib/Utils/crypto.js +151 -151
  80. package/lib/Utils/decode-wa-message.d.ts +19 -19
  81. package/lib/Utils/decode-wa-message.js +174 -174
  82. package/lib/Utils/event-buffer.d.ts +35 -35
  83. package/lib/Utils/event-buffer.js +514 -514
  84. package/lib/Utils/generics.d.ts +94 -94
  85. package/lib/Utils/generics.js +367 -367
  86. package/lib/Utils/history.d.ts +15 -15
  87. package/lib/Utils/history.js +91 -91
  88. package/lib/Utils/index.d.ts +17 -17
  89. package/lib/Utils/index.js +33 -33
  90. package/lib/Utils/link-preview.d.ts +21 -21
  91. package/lib/Utils/link-preview.js +93 -93
  92. package/lib/Utils/logger.d.ts +4 -4
  93. package/lib/Utils/logger.js +7 -7
  94. package/lib/Utils/lt-hash.d.ts +12 -12
  95. package/lib/Utils/lt-hash.js +51 -51
  96. package/lib/Utils/make-mutex.d.ts +7 -7
  97. package/lib/Utils/make-mutex.js +43 -43
  98. package/lib/Utils/messages-media.d.ts +107 -107
  99. package/lib/Utils/messages-media.js +680 -680
  100. package/lib/Utils/messages.d.ts +76 -76
  101. package/lib/Utils/messages.js +768 -768
  102. package/lib/Utils/noise-handler.d.ts +20 -20
  103. package/lib/Utils/noise-handler.js +142 -142
  104. package/lib/Utils/process-message.d.ts +41 -41
  105. package/lib/Utils/process-message.js +320 -320
  106. package/lib/Utils/signal.d.ts +32 -32
  107. package/lib/Utils/signal.js +151 -151
  108. package/lib/Utils/use-multi-file-auth-state.d.ts +12 -12
  109. package/lib/Utils/use-multi-file-auth-state.js +80 -80
  110. package/lib/Utils/validate-connection.d.ts +11 -11
  111. package/lib/Utils/validate-connection.js +191 -222
  112. package/lib/WABinary/constants.d.ts +27 -27
  113. package/lib/WABinary/constants.js +40 -40
  114. package/lib/WABinary/decode.d.ts +7 -7
  115. package/lib/WABinary/decode.js +252 -252
  116. package/lib/WABinary/encode.d.ts +3 -3
  117. package/lib/WABinary/encode.js +228 -228
  118. package/lib/WABinary/generic-utils.d.ts +15 -15
  119. package/lib/WABinary/generic-utils.js +110 -110
  120. package/lib/WABinary/index.d.ts +5 -5
  121. package/lib/WABinary/index.js +21 -21
  122. package/lib/WABinary/jid-utils.d.ts +29 -29
  123. package/lib/WABinary/jid-utils.js +59 -59
  124. package/lib/WABinary/types.d.ts +18 -18
  125. package/lib/WABinary/types.js +2 -2
  126. package/lib/index.d.ts +10 -10
  127. package/lib/index.js +29 -29
  128. package/package.json +1 -1
  129. package/CHANGELOG.md +0 -4
@@ -1,234 +1,234 @@
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');
12
- return {
13
- products,
14
- nextPageCursor: paging
15
- ? (0, WABinary_1.getBinaryNodeChildString)(paging, 'after')
16
- : undefined
17
- };
18
- };
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
- });
33
- return {
34
- collections
35
- };
36
- };
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');
42
- return {
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')
49
- };
50
- });
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
- });
92
- }
93
- if (product.images.length) {
94
- content.push({
95
- tag: 'media',
96
- attrs: {},
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
- });
114
- }
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;
156
- };
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;
179
- };
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
- }
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;
219
- };
220
- exports.uploadingNecessaryImages = uploadingNecessaryImages;
221
- const parseImageUrls = (mediaNode) => {
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
- };
227
- };
228
- const parseStatusInfo = (mediaNode) => {
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
- };
234
- };
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');
12
+ return {
13
+ products,
14
+ nextPageCursor: paging
15
+ ? (0, WABinary_1.getBinaryNodeChildString)(paging, 'after')
16
+ : undefined
17
+ };
18
+ };
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
+ });
33
+ return {
34
+ collections
35
+ };
36
+ };
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');
42
+ return {
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')
49
+ };
50
+ });
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
+ });
92
+ }
93
+ if (product.images.length) {
94
+ content.push({
95
+ tag: 'media',
96
+ attrs: {},
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
+ });
114
+ }
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;
156
+ };
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;
179
+ };
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
+ }
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;
219
+ };
220
+ exports.uploadingNecessaryImages = uploadingNecessaryImages;
221
+ const parseImageUrls = (mediaNode) => {
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
+ };
227
+ };
228
+ const parseStatusInfo = (mediaNode) => {
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
+ };
234
+ };
@@ -1,71 +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 {};
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 {};