@queenanya/baileys 9.5.2 → 9.5.3-beta.2

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 (154) hide show
  1. package/README.md +614 -0
  2. package/lib/Defaults/index.d.ts +5 -0
  3. package/lib/Defaults/index.d.ts.map +1 -1
  4. package/lib/Defaults/index.js +32 -3
  5. package/lib/Defaults/index.js.map +1 -1
  6. package/lib/Socket/business.d.ts +35 -2
  7. package/lib/Socket/business.d.ts.map +1 -1
  8. package/lib/Socket/chats.d.ts +3 -1
  9. package/lib/Socket/chats.d.ts.map +1 -1
  10. package/lib/Socket/chats.js +49 -4
  11. package/lib/Socket/chats.js.map +1 -1
  12. package/lib/Socket/communities.d.ts +35 -2
  13. package/lib/Socket/communities.d.ts.map +1 -1
  14. package/lib/Socket/groups.d.ts +1 -0
  15. package/lib/Socket/groups.d.ts.map +1 -1
  16. package/lib/Socket/index.d.ts +35 -2
  17. package/lib/Socket/index.d.ts.map +1 -1
  18. package/lib/Socket/messages-recv.d.ts +36 -3
  19. package/lib/Socket/messages-recv.d.ts.map +1 -1
  20. package/lib/Socket/messages-recv.js +61 -44
  21. package/lib/Socket/messages-recv.js.map +1 -1
  22. package/lib/Socket/messages-send.d.ts +11 -5
  23. package/lib/Socket/messages-send.d.ts.map +1 -1
  24. package/lib/Socket/messages-send.js +110 -78
  25. package/lib/Socket/messages-send.js.map +1 -1
  26. package/lib/Socket/newsletter.d.ts +1 -0
  27. package/lib/Socket/newsletter.d.ts.map +1 -1
  28. package/lib/Socket/newsletter.js +2 -2
  29. package/lib/Socket/newsletter.js.map +1 -1
  30. package/lib/Socket/socket.d.ts.map +1 -1
  31. package/lib/Socket/socket.js +77 -11
  32. package/lib/Socket/socket.js.map +1 -1
  33. package/lib/Types/Call.d.ts +8 -0
  34. package/lib/Types/Call.d.ts.map +1 -1
  35. package/lib/Types/Events.d.ts +2 -0
  36. package/lib/Types/Events.d.ts.map +1 -1
  37. package/lib/Types/Message.d.ts +161 -12
  38. package/lib/Types/Message.d.ts.map +1 -1
  39. package/lib/Types/index.d.ts +9 -0
  40. package/lib/Types/index.d.ts.map +1 -1
  41. package/lib/Types/index.js.map +1 -1
  42. package/lib/Utils/browser-utils.d.ts +13 -0
  43. package/lib/Utils/browser-utils.d.ts.map +1 -1
  44. package/lib/Utils/browser-utils.js +90 -10
  45. package/lib/Utils/browser-utils.js.map +1 -1
  46. package/lib/Utils/event-buffer.js +8 -1
  47. package/lib/Utils/event-buffer.js.map +1 -1
  48. package/lib/Utils/history.d.ts +2 -0
  49. package/lib/Utils/history.d.ts.map +1 -1
  50. package/lib/Utils/history.js +2 -1
  51. package/lib/Utils/history.js.map +1 -1
  52. package/lib/Utils/index.d.ts +2 -0
  53. package/lib/Utils/index.d.ts.map +1 -1
  54. package/lib/Utils/index.js +2 -0
  55. package/lib/Utils/index.js.map +1 -1
  56. package/lib/Utils/interactive-message.d.ts +201 -0
  57. package/lib/Utils/interactive-message.d.ts.map +1 -0
  58. package/lib/Utils/interactive-message.js +256 -0
  59. package/lib/Utils/interactive-message.js.map +1 -0
  60. package/lib/Utils/messages-media.d.ts +16 -2
  61. package/lib/Utils/messages-media.d.ts.map +1 -1
  62. package/lib/Utils/messages-media.js +19 -10
  63. package/lib/Utils/messages-media.js.map +1 -1
  64. package/lib/Utils/messages.d.ts.map +1 -1
  65. package/lib/Utils/messages.js +408 -11
  66. package/lib/Utils/messages.js.map +1 -1
  67. package/lib/Utils/offline-node-processor.d.ts +17 -0
  68. package/lib/Utils/offline-node-processor.d.ts.map +1 -0
  69. package/lib/Utils/offline-node-processor.js +40 -0
  70. package/lib/Utils/offline-node-processor.js.map +1 -0
  71. package/lib/Utils/stanza-ack.d.ts +11 -0
  72. package/lib/Utils/stanza-ack.d.ts.map +1 -0
  73. package/lib/Utils/stanza-ack.js +38 -0
  74. package/lib/Utils/stanza-ack.js.map +1 -0
  75. package/lib/Utils/use-mongo-file-auth-state.d.ts +16 -0
  76. package/lib/Utils/use-mongo-file-auth-state.d.ts.map +1 -0
  77. package/lib/Utils/use-mongo-file-auth-state.js +60 -0
  78. package/lib/Utils/use-mongo-file-auth-state.js.map +1 -0
  79. package/lib/Utils/validate-connection.d.ts.map +1 -1
  80. package/lib/Utils/validate-connection.js +15 -2
  81. package/lib/Utils/validate-connection.js.map +1 -1
  82. package/lib/WABinary/generic-utils.d.ts +9 -0
  83. package/lib/WABinary/generic-utils.d.ts.map +1 -1
  84. package/lib/WABinary/generic-utils.js +23 -0
  85. package/lib/WABinary/generic-utils.js.map +1 -1
  86. package/lib/addons/anti-delete.d.ts +72 -0
  87. package/lib/addons/anti-delete.d.ts.map +1 -0
  88. package/lib/addons/anti-delete.js +165 -0
  89. package/lib/addons/anti-delete.js.map +1 -0
  90. package/lib/addons/auto-reply.d.ts +67 -0
  91. package/lib/addons/auto-reply.d.ts.map +1 -0
  92. package/lib/addons/auto-reply.js +145 -0
  93. package/lib/addons/auto-reply.js.map +1 -0
  94. package/lib/addons/chat-control.d.ts +57 -0
  95. package/lib/addons/chat-control.d.ts.map +1 -0
  96. package/lib/addons/chat-control.js +128 -0
  97. package/lib/addons/chat-control.js.map +1 -0
  98. package/lib/addons/from-chats.d.ts +30 -0
  99. package/lib/addons/from-chats.d.ts.map +1 -0
  100. package/lib/addons/from-chats.js +38 -0
  101. package/lib/addons/from-chats.js.map +1 -0
  102. package/lib/addons/from-messages-recv.d.ts +59 -0
  103. package/lib/addons/from-messages-recv.d.ts.map +1 -0
  104. package/lib/addons/from-messages-recv.js +326 -0
  105. package/lib/addons/from-messages-recv.js.map +1 -0
  106. package/lib/addons/from-messages-send.d.ts +50 -0
  107. package/lib/addons/from-messages-send.d.ts.map +1 -0
  108. package/lib/addons/from-messages-send.js +148 -0
  109. package/lib/addons/from-messages-send.js.map +1 -0
  110. package/lib/addons/from-messages.d.ts +52 -0
  111. package/lib/addons/from-messages.d.ts.map +1 -0
  112. package/lib/addons/from-messages.js +305 -0
  113. package/lib/addons/from-messages.js.map +1 -0
  114. package/lib/addons/index.d.ts +28 -0
  115. package/lib/addons/index.d.ts.map +1 -0
  116. package/lib/addons/index.js +44 -0
  117. package/lib/addons/index.js.map +1 -0
  118. package/lib/addons/interactive-message.d.ts +201 -0
  119. package/lib/addons/interactive-message.d.ts.map +1 -0
  120. package/lib/addons/interactive-message.js +256 -0
  121. package/lib/addons/interactive-message.js.map +1 -0
  122. package/lib/addons/jid-plotting.d.ts +53 -0
  123. package/lib/addons/jid-plotting.d.ts.map +1 -0
  124. package/lib/addons/jid-plotting.js +150 -0
  125. package/lib/addons/jid-plotting.js.map +1 -0
  126. package/lib/addons/message-search.d.ts +38 -0
  127. package/lib/addons/message-search.d.ts.map +1 -0
  128. package/lib/addons/message-search.js +171 -0
  129. package/lib/addons/message-search.js.map +1 -0
  130. package/lib/addons/message-utils.d.ts +14 -0
  131. package/lib/addons/message-utils.d.ts.map +1 -0
  132. package/lib/addons/message-utils.js +174 -0
  133. package/lib/addons/message-utils.js.map +1 -0
  134. package/lib/addons/scheduling.d.ts +40 -0
  135. package/lib/addons/scheduling.d.ts.map +1 -0
  136. package/lib/addons/scheduling.js +110 -0
  137. package/lib/addons/scheduling.js.map +1 -0
  138. package/lib/addons/status-posting.d.ts +120 -0
  139. package/lib/addons/status-posting.d.ts.map +1 -0
  140. package/lib/addons/status-posting.js +94 -0
  141. package/lib/addons/status-posting.js.map +1 -0
  142. package/lib/addons/templates.d.ts +72 -0
  143. package/lib/addons/templates.d.ts.map +1 -0
  144. package/lib/addons/templates.js +145 -0
  145. package/lib/addons/templates.js.map +1 -0
  146. package/lib/addons/vcard.d.ts +57 -0
  147. package/lib/addons/vcard.d.ts.map +1 -0
  148. package/lib/addons/vcard.js +88 -0
  149. package/lib/addons/vcard.js.map +1 -0
  150. package/lib/index.d.ts +1 -0
  151. package/lib/index.d.ts.map +1 -1
  152. package/lib/index.js +1 -0
  153. package/lib/index.js.map +1 -1
  154. package/package.json +2 -1
@@ -0,0 +1,50 @@
1
+ import type { AnyMessageContent, WAMessage } from '../Types/index.js';
2
+ import { generateWAMessage } from '../Utils/messages.js';
3
+ export interface StatusMentionDeps {
4
+ meId: string;
5
+ logger: {
6
+ error: (msg: string) => void;
7
+ };
8
+ groupMetadata: (jid: string) => Promise<{
9
+ participants: Array<{
10
+ id: string;
11
+ }>;
12
+ }>;
13
+ cachedGroupMetadata?: (jid: string) => Promise<{
14
+ participants: Array<{
15
+ id: string;
16
+ }>;
17
+ } | undefined>;
18
+ generateWAMessageFn?: typeof generateWAMessage;
19
+ relayMessage: (jid: string, message: any, opts: any) => Promise<any>;
20
+ waUploadToServer: any;
21
+ getUrlInfo?: any;
22
+ config: any;
23
+ linkPreviewImageThumbnailWidth?: number;
24
+ generateHighQualityLinkPreview?: boolean;
25
+ httpRequestOptions?: any;
26
+ }
27
+ /**
28
+ * Normalize status content — strips fields not valid for media/audio status
29
+ * Source: messages-send.ts → sendStatusMentions (content normalization block)
30
+ */
31
+ export declare function normalizeStatusContent(content: AnyMessageContent): {
32
+ msgContent: AnyMessageContent;
33
+ font?: number;
34
+ textColor?: string;
35
+ backgroundColor?: string;
36
+ ptt?: boolean;
37
+ };
38
+ /**
39
+ * Build the mentioned_users meta node for status relay
40
+ * Source: messages-send.ts → sendStatusMentions (additionalNodes block)
41
+ */
42
+ export declare function buildStatusMentionNode(jids: string[]): any;
43
+ /**
44
+ * Core sendStatusMentions logic
45
+ * Source: messages-send.ts → sendStatusMentions
46
+ *
47
+ * Pass all sock dependencies explicitly so this stays testable.
48
+ */
49
+ export declare function execSendStatusMentions(content: AnyMessageContent, jids: string[], deps: StatusMentionDeps): Promise<WAMessage>;
50
+ //# sourceMappingURL=from-messages-send.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from-messages-send.d.ts","sourceRoot":"","sources":["../../src/addons/from-messages-send.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAuB,MAAM,UAAU,CAAA;AAGjF,OAAO,EAAE,iBAAiB,EAAgC,MAAM,mBAAmB,CAAA;AAInF,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE;QAAE,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAA;IACxC,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,YAAY,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAA;IAChF,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,YAAY,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,GAAG,SAAS,CAAC,CAAA;IACnG,mBAAmB,CAAC,EAAE,OAAO,iBAAiB,CAAA;IAC9C,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACpE,gBAAgB,EAAE,GAAG,CAAA;IACrB,UAAU,CAAC,EAAE,GAAG,CAAA;IAChB,MAAM,EAAE,GAAG,CAAA;IACX,8BAA8B,CAAC,EAAE,MAAM,CAAA;IACvC,8BAA8B,CAAC,EAAE,OAAO,CAAA;IACxC,kBAAkB,CAAC,EAAE,GAAG,CAAA;CACxB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,GAAG;IACnE,UAAU,EAAE,iBAAiB,CAAA;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,GAAG,CAAC,EAAE,OAAO,CAAA;CACb,CAkCA;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAe1D;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC3C,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,iBAAiB,GACrB,OAAO,CAAC,SAAS,CAAC,CA0FpB"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * from-messages-send.ts
3
+ * Source: src/Socket/messages-send.ts
4
+ *
5
+ * Status mentions + content normalization ported from baileys.
6
+ * Imported back into makeMessagesSocket.
7
+ */
8
+ import { randomBytes } from 'crypto';
9
+ import { isJidGroup, jidNormalizedUser } from '../WABinary/index.js';
10
+ import { delay } from '../Utils/generics.js';
11
+ import { generateWAMessage, generateWAMessageFromContent } from '../Utils/messages.js';
12
+ const STORIES_JID = 'status@broadcast';
13
+ /**
14
+ * Normalize status content — strips fields not valid for media/audio status
15
+ * Source: messages-send.ts → sendStatusMentions (content normalization block)
16
+ */
17
+ export function normalizeStatusContent(content) {
18
+ const getRandomHex = () => '#' +
19
+ Math.floor(Math.random() * 16777215)
20
+ .toString(16)
21
+ .padStart(6, '0');
22
+ const isMedia = 'image' in content || 'video' in content || 'audio' in content;
23
+ const isAudio = 'audio' in content;
24
+ const msgContent = { ...content };
25
+ if (isMedia && !isAudio) {
26
+ if (msgContent.text) {
27
+ msgContent.caption = msgContent.text;
28
+ delete msgContent.text;
29
+ }
30
+ delete msgContent.ptt;
31
+ delete msgContent.font;
32
+ delete msgContent.backgroundColor;
33
+ delete msgContent.textColor;
34
+ }
35
+ if (isAudio) {
36
+ delete msgContent.text;
37
+ delete msgContent.caption;
38
+ delete msgContent.font;
39
+ delete msgContent.textColor;
40
+ }
41
+ return {
42
+ msgContent: msgContent,
43
+ font: !isMedia ? (content.font ?? Math.floor(Math.random() * 9)) : undefined,
44
+ textColor: !isMedia ? (content.textColor ?? getRandomHex()) : undefined,
45
+ backgroundColor: !isMedia || isAudio ? (content.backgroundColor ?? getRandomHex()) : undefined,
46
+ ptt: isAudio ? (typeof content.ptt === 'boolean' ? content.ptt : true) : undefined
47
+ };
48
+ }
49
+ /**
50
+ * Build the mentioned_users meta node for status relay
51
+ * Source: messages-send.ts → sendStatusMentions (additionalNodes block)
52
+ */
53
+ export function buildStatusMentionNode(jids) {
54
+ return {
55
+ tag: 'meta',
56
+ attrs: {},
57
+ content: [
58
+ {
59
+ tag: 'mentioned_users',
60
+ attrs: {},
61
+ content: jids.map(jid => ({
62
+ tag: 'to',
63
+ attrs: { jid: jidNormalizedUser(jid) }
64
+ }))
65
+ }
66
+ ]
67
+ };
68
+ }
69
+ /**
70
+ * Core sendStatusMentions logic
71
+ * Source: messages-send.ts → sendStatusMentions
72
+ *
73
+ * Pass all sock dependencies explicitly so this stays testable.
74
+ */
75
+ export async function execSendStatusMentions(content, jids, deps) {
76
+ const { meId, logger, groupMetadata, cachedGroupMetadata, relayMessage, waUploadToServer, getUrlInfo, config, linkPreviewImageThumbnailWidth, generateHighQualityLinkPreview, httpRequestOptions } = deps;
77
+ const userJid = jidNormalizedUser(meId);
78
+ const allUsers = new Set([userJid]);
79
+ for (const id of jids) {
80
+ const isGroup = isJidGroup(id);
81
+ // match fork: isJidUser = ends with @s.whatsapp.net
82
+ const isPrivate = id.endsWith('@s.whatsapp.net');
83
+ if (isGroup) {
84
+ try {
85
+ // fork: cachedGroupMetadata first, then fallback to groupMetadata
86
+ const meta = (cachedGroupMetadata ? await cachedGroupMetadata(id) : undefined) || (await groupMetadata(id));
87
+ meta.participants.forEach(p => allUsers.add(jidNormalizedUser(p.id)));
88
+ }
89
+ catch (e) {
90
+ logger.error(`Error getting metadata for group ${id}: ${e}`);
91
+ }
92
+ }
93
+ else if (isPrivate) {
94
+ allUsers.add(jidNormalizedUser(id));
95
+ }
96
+ }
97
+ const { msgContent, font, textColor, backgroundColor, ptt } = normalizeStatusContent(content);
98
+ const msg = await generateWAMessage(STORIES_JID, msgContent, {
99
+ logger,
100
+ userJid,
101
+ getUrlInfo: getUrlInfo
102
+ ? (text) => getUrlInfo(text, {
103
+ thumbnailWidth: linkPreviewImageThumbnailWidth,
104
+ fetchOpts: { timeout: 3000, ...(httpRequestOptions || {}) },
105
+ logger,
106
+ uploadImage: generateHighQualityLinkPreview ? waUploadToServer : undefined
107
+ })
108
+ : undefined,
109
+ upload: waUploadToServer,
110
+ mediaCache: config.mediaCache,
111
+ options: config.options,
112
+ font,
113
+ backgroundColor,
114
+ ptt,
115
+ ...(textColor ? { textColor } : {})
116
+ });
117
+ await relayMessage(STORIES_JID, msg.message, {
118
+ messageId: msg.key.id,
119
+ statusJidList: Array.from(allUsers),
120
+ additionalNodes: [buildStatusMentionNode(jids)]
121
+ });
122
+ for (const id of jids) {
123
+ try {
124
+ const normalizedId = jidNormalizedUser(id);
125
+ const isPrivate = normalizedId.endsWith('@s.whatsapp.net');
126
+ const type = isPrivate ? 'statusMentionMessage' : 'groupStatusMentionMessage';
127
+ const protocolMessage = {
128
+ [type]: { message: { protocolMessage: { key: msg.key, type: 25 } } },
129
+ messageContextInfo: { messageSecret: randomBytes(32) }
130
+ };
131
+ const statusMsg = generateWAMessageFromContent(normalizedId, protocolMessage, { userJid: meId });
132
+ await relayMessage(normalizedId, statusMsg.message, {
133
+ additionalNodes: [
134
+ {
135
+ tag: 'meta',
136
+ attrs: isPrivate ? { is_status_mention: 'true' } : { is_group_status_mention: 'true' }
137
+ }
138
+ ]
139
+ });
140
+ await delay(2000);
141
+ }
142
+ catch (e) {
143
+ logger.error(`Error sending status mention to ${id}: ${e}`);
144
+ }
145
+ }
146
+ return msg;
147
+ }
148
+ //# sourceMappingURL=from-messages-send.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from-messages-send.js","sourceRoot":"","sources":["../../src/addons/from-messages-send.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { proto } from '../../WAProto/index.js';
2
+ import type { MessageContentGenerationOptions } from '../Types/index.js';
3
+ import type { AdminInviteInfo, CallCreationInfo, PaymentInviteInfo, StickerPack } from '../Types/Message.js';
4
+ /**
5
+ * Build newsletterAdminInviteMessage from adminInvite content
6
+ * Source: messages.ts → adminInvite block
7
+ */
8
+ export declare function buildAdminInviteMessage(adminInvite: AdminInviteInfo, contextInfo: any, options: MessageContentGenerationOptions): Promise<proto.Message.INewsletterAdminInviteMessage>;
9
+ /**
10
+ * Build scheduledCallCreationMessage from call content
11
+ * Source: messages.ts → call block
12
+ */
13
+ export declare function buildCallMessage(call: CallCreationInfo): proto.Message.IScheduledCallCreationMessage;
14
+ /**
15
+ * Build paymentInviteMessage from paymentInvite content
16
+ * Source: messages.ts → paymentInvite block
17
+ */
18
+ export declare function buildPaymentInviteMessage(paymentInvite: PaymentInviteInfo): proto.Message.IPaymentInviteMessage;
19
+ /**
20
+ * Check if buffer is a valid WebP file (magic bytes: RIFF....WEBP)
21
+ * Source: PR #84 rsalcara/InfiniteAPI
22
+ */
23
+ export declare function isWebPBuffer(buffer: Buffer): boolean;
24
+ /**
25
+ * Detect animated WebP by checking VP8X chunk animation flag
26
+ * Source: PR #84 rsalcara/InfiniteAPI
27
+ */
28
+ export declare function isAnimatedWebP(buffer: Buffer): boolean;
29
+ /**
30
+ * Detect Lottie/WAS format (gzip-compressed or raw Lottie JSON)
31
+ * WAS = WhatsApp Animated Sticker = gzip-compressed Lottie JSON
32
+ * Source: PR #260 rsalcara/InfiniteAPI
33
+ */
34
+ export declare function isLottieBuffer(buffer: Buffer): boolean;
35
+ /**
36
+ * Build stickerPackMessage following PR #1561 (WhiskeySockets) + PR #84 + PR #260 approach:
37
+ *
38
+ * Architecture:
39
+ * 1. Process stickers → WebP/WAS buffers (with Lottie support from PR #260)
40
+ * 2. Cover (tray icon) → add to ZIP as ${packId}.webp inside ZIP
41
+ * 3. ZIP everything → encrypt → upload as 'sticker-pack'
42
+ * 4. Generate 252x252 JPEG thumbnail from cover → encrypt with SAME mediaKey → upload as 'thumbnail-sticker-pack'
43
+ * 5. Return full IStickerPackMessage with both upload results
44
+ *
45
+ * KEY FIXES vs old implementation:
46
+ * - Cover goes INSIDE ZIP (not uploaded separately as image)
47
+ * - Thumbnail is separate 252x252 JPEG upload with same mediaKey
48
+ * - stickerPackOrigin: USER_CREATED (not THIRD_PARTY)
49
+ * - thumbnail-sticker-pack media type for thumbnail
50
+ */
51
+ export declare function buildStickerPackMessage(stickerPack: StickerPack, options: MessageContentGenerationOptions): Promise<proto.Message.IStickerPackMessage>;
52
+ //# sourceMappingURL=from-messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from-messages.d.ts","sourceRoot":"","sources":["../../src/addons/from-messages.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAK9C,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,UAAU,CAAA;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAIzG;;;GAGG;AACH,wBAAsB,uBAAuB,CAC5C,WAAW,EAAE,eAAe,EAC5B,WAAW,EAAE,GAAG,EAChB,OAAO,EAAE,+BAA+B,GACtC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAkBtD;AAID;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,6BAA6B,CAMpG;AAID;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAK/G;AAID;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAKpD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAiBtD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAwBtD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,uBAAuB,CAC5C,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,+BAA+B,GACtC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,CA6K5C"}
@@ -0,0 +1,305 @@
1
+ /**
2
+ * from-messages.ts
3
+ * Source: src/Utils/messages.ts
4
+ *
5
+ * Message content builder functions ported from baileys.
6
+ * These are imported back into generateWAMessageContent in messages.ts.
7
+ */
8
+ import { gunzipSync, gzipSync } from 'zlib';
9
+ import { promises as fs } from 'fs';
10
+ import { zipSync } from 'fflate';
11
+ import { Boom } from '@hapi/boom';
12
+ import { proto } from '../../WAProto/index.js';
13
+ import { generateMessageIDV2, unixTimestampSeconds } from '../Utils/generics.js';
14
+ import { sha256 } from '../Utils/crypto.js';
15
+ import { encryptedStream, getImageProcessingLibrary, getStream, toBuffer } from '../Utils/messages-media.js';
16
+ import { generateThumbnail } from '../Utils/messages-media.js';
17
+ // ── adminInvite → newsletterAdminInviteMessage ─────────────────────────────
18
+ /**
19
+ * Build newsletterAdminInviteMessage from adminInvite content
20
+ * Source: messages.ts → adminInvite block
21
+ */
22
+ export async function buildAdminInviteMessage(adminInvite, contextInfo, options) {
23
+ const msg = {
24
+ newsletterJid: adminInvite.jid,
25
+ newsletterName: adminInvite.name,
26
+ caption: adminInvite.caption,
27
+ inviteExpiration: adminInvite.expiration,
28
+ contextInfo
29
+ };
30
+ if (options.getProfilePicUrl) {
31
+ try {
32
+ const pfpUrl = await options.getProfilePicUrl(adminInvite.jid, 'preview');
33
+ if (pfpUrl) {
34
+ const { thumbnail } = await generateThumbnail(pfpUrl, 'image', {});
35
+ if (thumbnail)
36
+ msg.jpegThumbnail = Buffer.from(thumbnail, 'base64');
37
+ }
38
+ }
39
+ catch { }
40
+ }
41
+ return msg;
42
+ }
43
+ // ── call → scheduledCallCreationMessage ───────────────────────────────────
44
+ /**
45
+ * Build scheduledCallCreationMessage from call content
46
+ * Source: messages.ts → call block
47
+ */
48
+ export function buildCallMessage(call) {
49
+ return {
50
+ scheduledTimestampMs: call.time ?? Date.now(),
51
+ callType: call.type ?? 1,
52
+ title: call.name ?? 'Call'
53
+ };
54
+ }
55
+ // ── paymentInvite → paymentInviteMessage ──────────────────────────────────
56
+ /**
57
+ * Build paymentInviteMessage from paymentInvite content
58
+ * Source: messages.ts → paymentInvite block
59
+ */
60
+ export function buildPaymentInviteMessage(paymentInvite) {
61
+ return {
62
+ expiryTimestamp: paymentInvite.expiry ?? 0,
63
+ serviceType: paymentInvite.type ?? 2
64
+ };
65
+ }
66
+ // ── stickerPack → stickerPackMessage ──────────────────────────────────────
67
+ /**
68
+ * Check if buffer is a valid WebP file (magic bytes: RIFF....WEBP)
69
+ * Source: PR #84 rsalcara/InfiniteAPI
70
+ */
71
+ export function isWebPBuffer(buffer) {
72
+ if (buffer.length < 12)
73
+ return false;
74
+ const riffHeader = buffer.toString('ascii', 0, 4);
75
+ const webpHeader = buffer.toString('ascii', 8, 12);
76
+ return riffHeader === 'RIFF' && webpHeader === 'WEBP';
77
+ }
78
+ /**
79
+ * Detect animated WebP by checking VP8X chunk animation flag
80
+ * Source: PR #84 rsalcara/InfiniteAPI
81
+ */
82
+ export function isAnimatedWebP(buffer) {
83
+ if (!isWebPBuffer(buffer))
84
+ return false;
85
+ // VP8X chunk starts at offset 12 for extended WebP
86
+ try {
87
+ let offset = 12;
88
+ while (offset + 8 <= buffer.length) {
89
+ const chunkId = buffer.toString('ascii', offset, offset + 4);
90
+ const chunkSize = buffer.readUInt32LE(offset + 4);
91
+ if (chunkId === 'VP8X') {
92
+ // flags byte at offset+8, bit 1 (0x02) = animation
93
+ const flags = buffer[offset + 8] ?? 0;
94
+ return (flags & 0x02) !== 0;
95
+ }
96
+ offset += 8 + chunkSize + (chunkSize % 2);
97
+ }
98
+ }
99
+ catch { }
100
+ return false;
101
+ }
102
+ /**
103
+ * Detect Lottie/WAS format (gzip-compressed or raw Lottie JSON)
104
+ * WAS = WhatsApp Animated Sticker = gzip-compressed Lottie JSON
105
+ * Source: PR #260 rsalcara/InfiniteAPI
106
+ */
107
+ export function isLottieBuffer(buffer) {
108
+ if (buffer.length < 2)
109
+ return false;
110
+ let jsonBuffer;
111
+ if (buffer[0] === 0x1f && buffer[1] === 0x8b) {
112
+ // gzip-compressed
113
+ try {
114
+ jsonBuffer = gunzipSync(buffer, { maxOutputLength: 50 * 1024 * 1024 });
115
+ }
116
+ catch {
117
+ return false;
118
+ }
119
+ }
120
+ else if (buffer[0] === 0x7b) {
121
+ // raw JSON starts with '{'
122
+ jsonBuffer = buffer;
123
+ }
124
+ else {
125
+ return false;
126
+ }
127
+ try {
128
+ const str = jsonBuffer.toString('utf8', 0, Math.min(jsonBuffer.length, 4096));
129
+ return str.includes('"v"') && str.includes('"layers"') && str.includes('"ip"') && str.includes('"op"');
130
+ }
131
+ catch {
132
+ return false;
133
+ }
134
+ }
135
+ /**
136
+ * Build stickerPackMessage following PR #1561 (WhiskeySockets) + PR #84 + PR #260 approach:
137
+ *
138
+ * Architecture:
139
+ * 1. Process stickers → WebP/WAS buffers (with Lottie support from PR #260)
140
+ * 2. Cover (tray icon) → add to ZIP as ${packId}.webp inside ZIP
141
+ * 3. ZIP everything → encrypt → upload as 'sticker-pack'
142
+ * 4. Generate 252x252 JPEG thumbnail from cover → encrypt with SAME mediaKey → upload as 'thumbnail-sticker-pack'
143
+ * 5. Return full IStickerPackMessage with both upload results
144
+ *
145
+ * KEY FIXES vs old implementation:
146
+ * - Cover goes INSIDE ZIP (not uploaded separately as image)
147
+ * - Thumbnail is separate 252x252 JPEG upload with same mediaKey
148
+ * - stickerPackOrigin: USER_CREATED (not THIRD_PARTY)
149
+ * - thumbnail-sticker-pack media type for thumbnail
150
+ */
151
+ export async function buildStickerPackMessage(stickerPack, options) {
152
+ const { stickers, cover, name, publisher, packId, description } = stickerPack;
153
+ const stickerPackId = packId || generateMessageIDV2();
154
+ const stickerData = {};
155
+ // ── Step 1: Process stickers ──────────────────────────────────────────
156
+ const validStickers = stickers.filter(s => s !== null && s !== undefined);
157
+ if (validStickers.length < 1) {
158
+ throw new Error('Sticker pack must contain at least one sticker');
159
+ }
160
+ const stickerMetadata = await Promise.all(validStickers.map(async (s, i) => {
161
+ const raw = s.sticker ?? s.data;
162
+ const normalized = Buffer.isBuffer(raw) ? raw : typeof raw === 'string' ? { url: raw } : raw;
163
+ const { stream } = await getStream(normalized);
164
+ const buffer = (await toBuffer(stream));
165
+ // Lottie/WAS detection (PR #260)
166
+ const detectedLottie = s.isLottie !== undefined ? s.isLottie : isLottieBuffer(buffer);
167
+ let finalBuffer = buffer;
168
+ if (detectedLottie) {
169
+ // Raw Lottie JSON → gzip to WAS
170
+ if (buffer[0] === 0x7b) {
171
+ finalBuffer = gzipSync(buffer);
172
+ }
173
+ }
174
+ else if (isWebPBuffer(buffer)) {
175
+ finalBuffer = buffer; // preserve WebP as-is (keeps EXIF + animation)
176
+ }
177
+ else {
178
+ // Non-WebP sticker — needs sharp to convert (jimp can't output WebP)
179
+ const lib = await getImageProcessingLibrary();
180
+ if (lib?.sharp) {
181
+ finalBuffer = await lib.sharp.default(buffer).webp().toBuffer();
182
+ }
183
+ else {
184
+ throw new Boom(`Sticker ${i + 1}: No image processing library (sharp) available for converting to WebP. Either install sharp or provide stickers in WebP format.`, { statusCode: 400 });
185
+ }
186
+ }
187
+ const isAnimated = detectedLottie ? true : isAnimatedWebP(finalBuffer);
188
+ const extension = detectedLottie ? 'was' : 'webp';
189
+ // Use sha256 hash for filename (deduplication) — RFC 4648 base64url
190
+ const hash = sha256(finalBuffer).toString('base64url');
191
+ const fileName = `${hash}.${extension}`;
192
+ // Dedup: only add if not already in stickerData
193
+ if (!stickerData[fileName]) {
194
+ stickerData[fileName] = [new Uint8Array(finalBuffer), { level: 0 }];
195
+ }
196
+ return {
197
+ fileName,
198
+ mimetype: detectedLottie ? 'application/was' : 'image/webp',
199
+ isAnimated,
200
+ isLottie: detectedLottie,
201
+ emojis: s.emojis || [],
202
+ accessibilityLabel: s.accessibilityLabel || ''
203
+ };
204
+ }));
205
+ // ── Step 2: Process cover (tray icon) → add INSIDE ZIP ───────────────
206
+ const coverRaw = Buffer.isBuffer(cover) ? cover : typeof cover === 'string' ? { url: cover } : cover;
207
+ const { stream: coverStream } = await getStream(coverRaw);
208
+ const coverBuffer = (await toBuffer(coverStream));
209
+ // Cover as WebP in ZIP (tray icon)
210
+ let coverWebP;
211
+ if (isWebPBuffer(coverBuffer)) {
212
+ coverWebP = coverBuffer;
213
+ }
214
+ else {
215
+ const lib = await getImageProcessingLibrary();
216
+ if (lib?.sharp) {
217
+ coverWebP = await lib.sharp.default(coverBuffer).webp().toBuffer();
218
+ }
219
+ else {
220
+ throw new Boom('No image processing library (sharp) available for converting cover to WebP. Either install sharp or provide cover in WebP format.', { statusCode: 400 });
221
+ }
222
+ }
223
+ const trayIconFileName = `${stickerPackId}.webp`;
224
+ stickerData[trayIconFileName] = [new Uint8Array(coverWebP), { level: 0 }];
225
+ // ── Step 3: ZIP + encrypt + upload as 'sticker-pack' ─────────────────
226
+ const zipBuffer = Buffer.from(zipSync(stickerData));
227
+ const stickerPackEncrypted = await encryptedStream(zipBuffer, 'sticker-pack', {
228
+ logger: options.logger,
229
+ opts: options.options
230
+ });
231
+ const stickerPackResult = await options.upload(stickerPackEncrypted.encFilePath, {
232
+ fileEncSha256B64: stickerPackEncrypted.fileEncSha256.toString('base64'),
233
+ mediaType: 'sticker-pack',
234
+ timeoutMs: options.mediaUploadTimeoutMs
235
+ });
236
+ // Cleanup temp file
237
+ try {
238
+ await fs.unlink(stickerPackEncrypted.encFilePath);
239
+ }
240
+ catch { }
241
+ // ── Step 4: Generate 252x252 JPEG thumbnail + upload as 'thumbnail-sticker-pack'
242
+ // CRITICAL: same mediaKey as ZIP upload (required by WhatsApp protocol)
243
+ let thumbnailBuffer;
244
+ try {
245
+ const lib = await getImageProcessingLibrary();
246
+ if (lib?.sharp) {
247
+ thumbnailBuffer = await lib.sharp.default(coverBuffer).resize(252, 252).jpeg().toBuffer();
248
+ }
249
+ else if (lib?.jimp) {
250
+ const jimpImage = await lib.jimp.Jimp.read(coverBuffer);
251
+ thumbnailBuffer = await jimpImage.resize({ w: 252, h: 252 }).getBuffer('image/jpeg');
252
+ }
253
+ else {
254
+ throw new Error('No image processing library available for thumbnail generation');
255
+ }
256
+ if (!thumbnailBuffer || thumbnailBuffer.length === 0) {
257
+ throw new Error('Failed to generate thumbnail buffer');
258
+ }
259
+ }
260
+ catch {
261
+ thumbnailBuffer = coverBuffer;
262
+ }
263
+ const thumbEncrypted = await encryptedStream(thumbnailBuffer, 'thumbnail-sticker-pack', {
264
+ logger: options.logger,
265
+ opts: options.options,
266
+ mediaKey: stickerPackEncrypted.mediaKey // SAME mediaKey — protocol requirement!
267
+ });
268
+ const thumbResult = await options.upload(thumbEncrypted.encFilePath, {
269
+ fileEncSha256B64: thumbEncrypted.fileEncSha256.toString('base64'),
270
+ mediaType: 'thumbnail-sticker-pack',
271
+ timeoutMs: options.mediaUploadTimeoutMs
272
+ });
273
+ // Cleanup thumb temp file
274
+ try {
275
+ await fs.unlink(thumbEncrypted.encFilePath);
276
+ }
277
+ catch { }
278
+ // ── Step 5: Return complete IStickerPackMessage ───────────────────────
279
+ return {
280
+ name,
281
+ publisher,
282
+ stickerPackId,
283
+ packDescription: description,
284
+ stickerPackOrigin: proto.Message.StickerPackMessage.StickerPackOrigin.USER_CREATED,
285
+ stickerPackSize: zipBuffer.length,
286
+ stickers: stickerMetadata,
287
+ // ZIP upload fields
288
+ fileSha256: stickerPackEncrypted.fileSha256,
289
+ fileEncSha256: stickerPackEncrypted.fileEncSha256,
290
+ mediaKey: stickerPackEncrypted.mediaKey,
291
+ directPath: stickerPackResult.directPath,
292
+ fileLength: zipBuffer.length,
293
+ mediaKeyTimestamp: unixTimestampSeconds(),
294
+ // Tray icon (cover filename inside ZIP)
295
+ trayIconFileName,
296
+ // Thumbnail upload fields (separate 252x252 JPEG, same mediaKey)
297
+ thumbnailDirectPath: thumbResult.directPath,
298
+ thumbnailSha256: thumbEncrypted.fileSha256,
299
+ thumbnailEncSha256: thumbEncrypted.fileEncSha256,
300
+ thumbnailHeight: 252,
301
+ thumbnailWidth: 252,
302
+ imageDataHash: sha256(thumbnailBuffer).toString('base64')
303
+ };
304
+ }
305
+ //# sourceMappingURL=from-messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from-messages.js","sourceRoot":"","sources":["../../src/addons/from-messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * baileys utility functions
3
+ * Ported to TypeScript for @whiskeysockets/baileys
4
+ *
5
+ * Usage:
6
+ * import { MessageStore, createAntiDeleteHandler } from 'baileys/src/addons'
7
+ * import { MessageScheduler, createMessageScheduler } from 'baileys/src/addons'
8
+ * import { AutoReplyHandler, createAutoReply } from 'baileys/src/addons'
9
+ * import { generateVCard, createContactCard } from 'baileys/src/addons'
10
+ * import { StatusHelper, createTextStatus } from 'baileys/src/addons'
11
+ * import { MessageSearchManager, searchMessages } from 'baileys/src/addons'
12
+ * import { TemplateManager, createTemplateManager, renderTemplate } from 'baileys/src/addons'
13
+ */
14
+ export * from './anti-delete.js';
15
+ export * from './scheduling.js';
16
+ export * from './auto-reply.js';
17
+ export * from './vcard.js';
18
+ export * from './status-posting.js';
19
+ export * from './message-search.js';
20
+ export * from './templates.js';
21
+ export * from './chat-control.js';
22
+ export * from './jid-plotting.js';
23
+ export * from './message-utils.js';
24
+ export * from './from-messages-recv.js';
25
+ export * from './from-messages-send.js';
26
+ export * from './from-chats.js';
27
+ export * from './from-messages.js';
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/addons/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,cAAc,eAAe,CAAA;AAG7B,cAAc,cAAc,CAAA;AAG5B,cAAc,cAAc,CAAA;AAG5B,cAAc,SAAS,CAAA;AAGvB,cAAc,kBAAkB,CAAA;AAGhC,cAAc,kBAAkB,CAAA;AAGhC,cAAc,aAAa,CAAA;AAG3B,cAAc,gBAAgB,CAAA;AAG9B,cAAc,gBAAgB,CAAA;AAG9B,cAAc,iBAAiB,CAAA;AAG/B,cAAc,sBAAsB,CAAA;AAGpC,cAAc,sBAAsB,CAAA;AAGpC,cAAc,cAAc,CAAA;AAG5B,cAAc,iBAAiB,CAAA"}