@kangwifi-pro/waliwa 1.0.2 → 1.1.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.
- package/dist/community/audio-transcription.d.ts +46 -0
- package/dist/community/audio-transcription.d.ts.map +1 -0
- package/dist/community/audio-transcription.js +108 -0
- package/dist/community/audio-transcription.js.map +1 -0
- package/dist/community/bulk-operations.d.ts +87 -0
- package/dist/community/bulk-operations.d.ts.map +1 -0
- package/dist/community/bulk-operations.js +223 -0
- package/dist/community/bulk-operations.js.map +1 -0
- package/dist/community/community-fixes.d.ts +306 -0
- package/dist/community/community-fixes.d.ts.map +1 -0
- package/dist/community/community-fixes.js +630 -0
- package/dist/community/community-fixes.js.map +1 -0
- package/dist/community/contacts-manager.d.ts +89 -0
- package/dist/community/contacts-manager.d.ts.map +1 -0
- package/dist/community/contacts-manager.js +241 -0
- package/dist/community/contacts-manager.js.map +1 -0
- package/dist/community/disappearing.d.ts +63 -0
- package/dist/community/disappearing.d.ts.map +1 -0
- package/dist/community/disappearing.js +195 -0
- package/dist/community/disappearing.js.map +1 -0
- package/dist/community/index.d.ts +101 -0
- package/dist/community/index.d.ts.map +1 -0
- package/dist/community/index.js +113 -0
- package/dist/community/index.js.map +1 -0
- package/dist/community/live-location.d.ts +85 -0
- package/dist/community/live-location.d.ts.map +1 -0
- package/dist/community/live-location.js +238 -0
- package/dist/community/live-location.js.map +1 -0
- package/dist/community/message-extras.d.ts +110 -0
- package/dist/community/message-extras.d.ts.map +1 -0
- package/dist/community/message-extras.js +472 -0
- package/dist/community/message-extras.js.map +1 -0
- package/dist/community/newsletter-extended.d.ts +142 -0
- package/dist/community/newsletter-extended.d.ts.map +1 -0
- package/dist/community/newsletter-extended.js +543 -0
- package/dist/community/newsletter-extended.js.map +1 -0
- package/dist/community/privacy-manager.d.ts +98 -0
- package/dist/community/privacy-manager.d.ts.map +1 -0
- package/dist/community/privacy-manager.js +273 -0
- package/dist/community/privacy-manager.js.map +1 -0
- package/dist/community/profile-manager.d.ts +94 -0
- package/dist/community/profile-manager.d.ts.map +1 -0
- package/dist/community/profile-manager.js +363 -0
- package/dist/community/profile-manager.js.map +1 -0
- package/dist/community/status-extended.d.ts +119 -0
- package/dist/community/status-extended.d.ts.map +1 -0
- package/dist/community/status-extended.js +444 -0
- package/dist/community/status-extended.js.map +1 -0
- package/dist/community/sticker-manager.d.ts +73 -0
- package/dist/community/sticker-manager.d.ts.map +1 -0
- package/dist/community/sticker-manager.js +251 -0
- package/dist/community/sticker-manager.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -2
- package/dist/index.js.map +1 -1
- package/dist/socket/wa-socket.d.ts +77 -0
- package/dist/socket/wa-socket.d.ts.map +1 -1
- package/dist/socket/wa-socket.js +149 -3
- package/dist/socket/wa-socket.js.map +1 -1
- package/package.json +2 -2
- package/src/community/audio-transcription.ts +121 -0
- package/src/community/bulk-operations.ts +329 -0
- package/src/community/community-fixes.ts +771 -0
- package/src/community/contacts-manager.ts +282 -0
- package/src/community/disappearing.ts +218 -0
- package/src/community/index.ts +169 -0
- package/src/community/live-location.ts +287 -0
- package/src/community/message-extras.ts +523 -0
- package/src/community/newsletter-extended.ts +614 -0
- package/src/community/privacy-manager.ts +310 -0
- package/src/community/profile-manager.ts +402 -0
- package/src/community/status-extended.ts +518 -0
- package/src/community/sticker-manager.ts +305 -0
- package/src/index.ts +67 -2
- package/src/socket/wa-socket.ts +183 -4
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Waliwa - Message Extras (Community Request)
|
|
3
|
+
*
|
|
4
|
+
* Fitur yang sering diminta komunitas Baileys:
|
|
5
|
+
* - Edit message (after send)
|
|
6
|
+
* - Star/unstar messages
|
|
7
|
+
* - Get starred messages
|
|
8
|
+
* - View once media download (bypass)
|
|
9
|
+
* - Pin message dalam chat
|
|
10
|
+
* - Mark message as unread
|
|
11
|
+
* - Get message info (read by, delivered to)
|
|
12
|
+
* - Message info / stats
|
|
13
|
+
*
|
|
14
|
+
* Fix Baileys issues:
|
|
15
|
+
* - Edit message tidak support
|
|
16
|
+
* - Star messages tidak ada
|
|
17
|
+
* - View once media tidak bisa didownload
|
|
18
|
+
* - Message read/delivery info missing
|
|
19
|
+
*/
|
|
20
|
+
import type { JIDLike, WAMessage, WAMessageKey, WALogger } from '../types/index.js';
|
|
21
|
+
import { BinaryNode } from '../core/binary.js';
|
|
22
|
+
export interface MessageInfo {
|
|
23
|
+
key: WAMessageKey;
|
|
24
|
+
status: 'pending' | 'sent' | 'delivered' | 'read' | 'played';
|
|
25
|
+
deliveredTo: string[];
|
|
26
|
+
readBy: string[];
|
|
27
|
+
playedBy: string[];
|
|
28
|
+
timestamp: number;
|
|
29
|
+
isStarred: boolean;
|
|
30
|
+
isPinned: boolean;
|
|
31
|
+
isEdited: boolean;
|
|
32
|
+
editTimestamp?: number;
|
|
33
|
+
}
|
|
34
|
+
export interface MessageExtrasOptions {
|
|
35
|
+
send: (data: Uint8Array) => void;
|
|
36
|
+
registerIqHandler: (id: string, handler: (node: BinaryNode) => void) => void;
|
|
37
|
+
logger?: WALogger;
|
|
38
|
+
/** Function untuk download media (untuk view-once bypass) */
|
|
39
|
+
downloadMedia?: (url: string, mediaKey: Uint8Array, type: string, mimetype: string) => Promise<Buffer>;
|
|
40
|
+
}
|
|
41
|
+
export declare class MessageExtras {
|
|
42
|
+
private send;
|
|
43
|
+
private registerIqHandler;
|
|
44
|
+
private logger;
|
|
45
|
+
private downloadMedia?;
|
|
46
|
+
private starredMessages;
|
|
47
|
+
private pinnedMessages;
|
|
48
|
+
constructor(opts: MessageExtrasOptions);
|
|
49
|
+
/**
|
|
50
|
+
* Edit message yang sudah dikirim
|
|
51
|
+
* Fix Baileys issue: edit message tidak support
|
|
52
|
+
*/
|
|
53
|
+
editMessage(jid: JIDLike, key: WAMessageKey, newText: string): Promise<string>;
|
|
54
|
+
/**
|
|
55
|
+
* Star a message
|
|
56
|
+
* Fix Baileys issue: star messages tidak ada
|
|
57
|
+
*/
|
|
58
|
+
starMessage(key: WAMessageKey, starred?: boolean): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Unstar a message
|
|
61
|
+
*/
|
|
62
|
+
unstarMessage(key: WAMessageKey): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Get all starred messages in a chat
|
|
65
|
+
*/
|
|
66
|
+
getStarredMessages(jid: JIDLike, limit?: number): Promise<WAMessage[]>;
|
|
67
|
+
/**
|
|
68
|
+
* Pin message dalam chat (highlight)
|
|
69
|
+
*/
|
|
70
|
+
pinMessage(key: WAMessageKey, durationMs?: number): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Unpin message
|
|
73
|
+
*/
|
|
74
|
+
unpinMessage(key: WAMessageKey): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Get pinned message for a chat
|
|
77
|
+
*/
|
|
78
|
+
getPinnedMessage(chatJid: JIDLike): string | undefined;
|
|
79
|
+
/**
|
|
80
|
+
* Mark chat as unread
|
|
81
|
+
*/
|
|
82
|
+
markChatAsUnread(jid: JIDLike): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Get message info (read by, delivered to)
|
|
85
|
+
* Fix Baileys issue: message read/delivery info missing
|
|
86
|
+
*/
|
|
87
|
+
getMessageInfo(key: WAMessageKey): Promise<MessageInfo>;
|
|
88
|
+
/**
|
|
89
|
+
* Download view-once media (bypass protection)
|
|
90
|
+
* Fix Baileys issue: view once media tidak bisa didownload
|
|
91
|
+
*/
|
|
92
|
+
downloadViewOnceMedia(message: WAMessage): Promise<Buffer | undefined>;
|
|
93
|
+
/**
|
|
94
|
+
* React multiple emojis to a message (limited support)
|
|
95
|
+
*/
|
|
96
|
+
reactMultiple(key: WAMessageKey, emojis: string[]): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* Remove reaction dari message
|
|
99
|
+
*/
|
|
100
|
+
removeReaction(key: WAMessageKey): Promise<void>;
|
|
101
|
+
/**
|
|
102
|
+
* Forward message with quoted context
|
|
103
|
+
*/
|
|
104
|
+
forwardWithContext(to: JIDLike, message: WAMessage, additionalText: string): Promise<string>;
|
|
105
|
+
private sendReaction;
|
|
106
|
+
private parseMessageNode;
|
|
107
|
+
private findChild;
|
|
108
|
+
private sendIqAndWait;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=message-extras.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-extras.d.ts","sourceRoot":"","sources":["../../src/community/message-extras.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,472 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Waliwa - Message Extras (Community Request)
|
|
4
|
+
*
|
|
5
|
+
* Fitur yang sering diminta komunitas Baileys:
|
|
6
|
+
* - Edit message (after send)
|
|
7
|
+
* - Star/unstar messages
|
|
8
|
+
* - Get starred messages
|
|
9
|
+
* - View once media download (bypass)
|
|
10
|
+
* - Pin message dalam chat
|
|
11
|
+
* - Mark message as unread
|
|
12
|
+
* - Get message info (read by, delivered to)
|
|
13
|
+
* - Message info / stats
|
|
14
|
+
*
|
|
15
|
+
* Fix Baileys issues:
|
|
16
|
+
* - Edit message tidak support
|
|
17
|
+
* - Star messages tidak ada
|
|
18
|
+
* - View once media tidak bisa didownload
|
|
19
|
+
* - Message read/delivery info missing
|
|
20
|
+
*/
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.MessageExtras = void 0;
|
|
23
|
+
const binary_js_1 = require("../core/binary.js");
|
|
24
|
+
const jid_js_1 = require("../utils/jid.js");
|
|
25
|
+
const message_encoder_js_1 = require("../messages/message-encoder.js");
|
|
26
|
+
const logger_js_1 = require("../utils/logger.js");
|
|
27
|
+
class MessageExtras {
|
|
28
|
+
send;
|
|
29
|
+
registerIqHandler;
|
|
30
|
+
logger;
|
|
31
|
+
downloadMedia;
|
|
32
|
+
starredMessages = new Set();
|
|
33
|
+
pinnedMessages = new Map(); // chatJid -> messageId
|
|
34
|
+
constructor(opts) {
|
|
35
|
+
this.send = opts.send;
|
|
36
|
+
this.registerIqHandler = opts.registerIqHandler;
|
|
37
|
+
this.logger = opts.logger ?? new logger_js_1.SilentLogger();
|
|
38
|
+
this.downloadMedia = opts.downloadMedia;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Edit message yang sudah dikirim
|
|
42
|
+
* Fix Baileys issue: edit message tidak support
|
|
43
|
+
*/
|
|
44
|
+
async editMessage(jid, key, newText) {
|
|
45
|
+
const messageId = (0, message_encoder_js_1.generateMessageId)();
|
|
46
|
+
const node = {
|
|
47
|
+
tag: 'message',
|
|
48
|
+
attrs: {
|
|
49
|
+
to: (0, jid_js_1.jidToString)(jid),
|
|
50
|
+
type: 'edit',
|
|
51
|
+
id: messageId
|
|
52
|
+
},
|
|
53
|
+
content: [
|
|
54
|
+
{
|
|
55
|
+
tag: 'edit_message',
|
|
56
|
+
attrs: {
|
|
57
|
+
original_id: key.id,
|
|
58
|
+
original_from_me: key.fromMe ? 'true' : 'false',
|
|
59
|
+
original_participant: (0, jid_js_1.jidToString)(key.participant ?? key.remoteJid)
|
|
60
|
+
},
|
|
61
|
+
content: [
|
|
62
|
+
{
|
|
63
|
+
tag: 'conversation',
|
|
64
|
+
attrs: {},
|
|
65
|
+
content: newText
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
};
|
|
71
|
+
this.send((0, binary_js_1.encodeBinaryNode)(node));
|
|
72
|
+
this.logger.info(`Edited message ${key.id} in ${(0, jid_js_1.jidToString)(jid)}`);
|
|
73
|
+
return messageId;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Star a message
|
|
77
|
+
* Fix Baileys issue: star messages tidak ada
|
|
78
|
+
*/
|
|
79
|
+
async starMessage(key, starred = true) {
|
|
80
|
+
const id = (0, message_encoder_js_1.generateStanzaId)();
|
|
81
|
+
const node = {
|
|
82
|
+
tag: 'iq',
|
|
83
|
+
attrs: {
|
|
84
|
+
type: 'set',
|
|
85
|
+
to: (0, jid_js_1.jidToString)(key.remoteJid),
|
|
86
|
+
id
|
|
87
|
+
},
|
|
88
|
+
content: [
|
|
89
|
+
{
|
|
90
|
+
tag: 'star',
|
|
91
|
+
attrs: {
|
|
92
|
+
action: starred ? 'star' : 'unstar',
|
|
93
|
+
id: key.id,
|
|
94
|
+
from_me: key.fromMe ? 'true' : 'false',
|
|
95
|
+
participant: (0, jid_js_1.jidToString)(key.participant ?? key.remoteJid)
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
]
|
|
99
|
+
};
|
|
100
|
+
await this.sendIqAndWait(node, id);
|
|
101
|
+
if (starred) {
|
|
102
|
+
this.starredMessages.add(key.id);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
this.starredMessages.delete(key.id);
|
|
106
|
+
}
|
|
107
|
+
this.logger.info(`${starred ? 'Starred' : 'Unstarred'} message ${key.id}`);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Unstar a message
|
|
111
|
+
*/
|
|
112
|
+
async unstarMessage(key) {
|
|
113
|
+
return this.starMessage(key, false);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get all starred messages in a chat
|
|
117
|
+
*/
|
|
118
|
+
async getStarredMessages(jid, limit = 50) {
|
|
119
|
+
const id = (0, message_encoder_js_1.generateStanzaId)();
|
|
120
|
+
const node = {
|
|
121
|
+
tag: 'iq',
|
|
122
|
+
attrs: {
|
|
123
|
+
type: 'get',
|
|
124
|
+
to: (0, jid_js_1.jidToString)(jid),
|
|
125
|
+
id
|
|
126
|
+
},
|
|
127
|
+
content: [
|
|
128
|
+
{
|
|
129
|
+
tag: 'starred',
|
|
130
|
+
attrs: { limit: limit.toString() }
|
|
131
|
+
}
|
|
132
|
+
]
|
|
133
|
+
};
|
|
134
|
+
const response = await this.sendIqAndWait(node, id);
|
|
135
|
+
const starredNode = this.findChild(response, 'starred');
|
|
136
|
+
const messages = [];
|
|
137
|
+
if (Array.isArray(starredNode?.content)) {
|
|
138
|
+
for (const child of starredNode.content) {
|
|
139
|
+
if (typeof child !== 'object' || child?.tag !== 'message')
|
|
140
|
+
continue;
|
|
141
|
+
const msg = this.parseMessageNode(child);
|
|
142
|
+
if (msg) {
|
|
143
|
+
messages.push(msg);
|
|
144
|
+
this.starredMessages.add(msg.key.id);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return messages;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Pin message dalam chat (highlight)
|
|
152
|
+
*/
|
|
153
|
+
async pinMessage(key, durationMs = 24 * 60 * 60 * 1000) {
|
|
154
|
+
const id = (0, message_encoder_js_1.generateStanzaId)();
|
|
155
|
+
const node = {
|
|
156
|
+
tag: 'iq',
|
|
157
|
+
attrs: {
|
|
158
|
+
type: 'set',
|
|
159
|
+
to: (0, jid_js_1.jidToString)(key.remoteJid),
|
|
160
|
+
id
|
|
161
|
+
},
|
|
162
|
+
content: [
|
|
163
|
+
{
|
|
164
|
+
tag: 'pin',
|
|
165
|
+
attrs: {
|
|
166
|
+
action: 'pin',
|
|
167
|
+
id: key.id,
|
|
168
|
+
from_me: key.fromMe ? 'true' : 'false',
|
|
169
|
+
participant: (0, jid_js_1.jidToString)(key.participant ?? key.remoteJid),
|
|
170
|
+
duration: Math.floor(durationMs / 1000).toString()
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
]
|
|
174
|
+
};
|
|
175
|
+
await this.sendIqAndWait(node, id);
|
|
176
|
+
this.pinnedMessages.set((0, jid_js_1.jidToString)(key.remoteJid), key.id);
|
|
177
|
+
this.logger.info(`Pinned message ${key.id} in ${(0, jid_js_1.jidToString)(key.remoteJid)}`);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Unpin message
|
|
181
|
+
*/
|
|
182
|
+
async unpinMessage(key) {
|
|
183
|
+
const id = (0, message_encoder_js_1.generateStanzaId)();
|
|
184
|
+
const node = {
|
|
185
|
+
tag: 'iq',
|
|
186
|
+
attrs: {
|
|
187
|
+
type: 'set',
|
|
188
|
+
to: (0, jid_js_1.jidToString)(key.remoteJid),
|
|
189
|
+
id
|
|
190
|
+
},
|
|
191
|
+
content: [
|
|
192
|
+
{
|
|
193
|
+
tag: 'pin',
|
|
194
|
+
attrs: {
|
|
195
|
+
action: 'unpin',
|
|
196
|
+
id: key.id,
|
|
197
|
+
from_me: key.fromMe ? 'true' : 'false',
|
|
198
|
+
participant: (0, jid_js_1.jidToString)(key.participant ?? key.remoteJid)
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
]
|
|
202
|
+
};
|
|
203
|
+
await this.sendIqAndWait(node, id);
|
|
204
|
+
this.pinnedMessages.delete((0, jid_js_1.jidToString)(key.remoteJid));
|
|
205
|
+
this.logger.info(`Unpinned message ${key.id}`);
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Get pinned message for a chat
|
|
209
|
+
*/
|
|
210
|
+
getPinnedMessage(chatJid) {
|
|
211
|
+
return this.pinnedMessages.get((0, jid_js_1.jidToString)(chatJid));
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Mark chat as unread
|
|
215
|
+
*/
|
|
216
|
+
async markChatAsUnread(jid) {
|
|
217
|
+
const id = (0, message_encoder_js_1.generateStanzaId)();
|
|
218
|
+
const node = {
|
|
219
|
+
tag: 'iq',
|
|
220
|
+
attrs: {
|
|
221
|
+
type: 'set',
|
|
222
|
+
to: (0, jid_js_1.jidToString)(jid),
|
|
223
|
+
id
|
|
224
|
+
},
|
|
225
|
+
content: [
|
|
226
|
+
{
|
|
227
|
+
tag: 'mark_unread',
|
|
228
|
+
attrs: {}
|
|
229
|
+
}
|
|
230
|
+
]
|
|
231
|
+
};
|
|
232
|
+
await this.sendIqAndWait(node, id);
|
|
233
|
+
this.logger.info(`Marked ${(0, jid_js_1.jidToString)(jid)} as unread`);
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Get message info (read by, delivered to)
|
|
237
|
+
* Fix Baileys issue: message read/delivery info missing
|
|
238
|
+
*/
|
|
239
|
+
async getMessageInfo(key) {
|
|
240
|
+
const id = (0, message_encoder_js_1.generateStanzaId)();
|
|
241
|
+
const node = {
|
|
242
|
+
tag: 'iq',
|
|
243
|
+
attrs: {
|
|
244
|
+
type: 'get',
|
|
245
|
+
to: 's.whatsapp.net',
|
|
246
|
+
id
|
|
247
|
+
},
|
|
248
|
+
content: [
|
|
249
|
+
{
|
|
250
|
+
tag: 'message_info',
|
|
251
|
+
attrs: {
|
|
252
|
+
id: key.id,
|
|
253
|
+
from_me: key.fromMe ? 'true' : 'false',
|
|
254
|
+
participant: (0, jid_js_1.jidToString)(key.participant ?? key.remoteJid)
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
]
|
|
258
|
+
};
|
|
259
|
+
const response = await this.sendIqAndWait(node, id);
|
|
260
|
+
const infoNode = this.findChild(response, 'message_info');
|
|
261
|
+
const info = {
|
|
262
|
+
key,
|
|
263
|
+
status: 'sent',
|
|
264
|
+
deliveredTo: [],
|
|
265
|
+
readBy: [],
|
|
266
|
+
playedBy: [],
|
|
267
|
+
timestamp: parseInt(infoNode?.attrs?.timestamp ?? '0', 10),
|
|
268
|
+
isStarred: this.starredMessages.has(key.id),
|
|
269
|
+
isPinned: this.pinnedMessages.get((0, jid_js_1.jidToString)(key.remoteJid)) === key.id,
|
|
270
|
+
isEdited: infoNode?.attrs?.is_edited === 'true'
|
|
271
|
+
};
|
|
272
|
+
if (Array.isArray(infoNode?.content)) {
|
|
273
|
+
for (const child of infoNode.content) {
|
|
274
|
+
if (typeof child !== 'object' || !child?.tag)
|
|
275
|
+
continue;
|
|
276
|
+
if (child.tag === 'delivered_to' && Array.isArray(child.content)) {
|
|
277
|
+
info.deliveredTo = child.content
|
|
278
|
+
.filter(c => typeof c === 'object' && c?.tag === 'recipient')
|
|
279
|
+
.map(c => c.attrs?.jid)
|
|
280
|
+
.filter(Boolean);
|
|
281
|
+
}
|
|
282
|
+
if (child.tag === 'read_by' && Array.isArray(child.content)) {
|
|
283
|
+
info.readBy = child.content
|
|
284
|
+
.filter(c => typeof c === 'object' && c?.tag === 'recipient')
|
|
285
|
+
.map(c => c.attrs?.jid)
|
|
286
|
+
.filter(Boolean);
|
|
287
|
+
}
|
|
288
|
+
if (child.tag === 'played_by' && Array.isArray(child.content)) {
|
|
289
|
+
info.playedBy = child.content
|
|
290
|
+
.filter(c => typeof c === 'object' && c?.tag === 'recipient')
|
|
291
|
+
.map(c => c.attrs?.jid)
|
|
292
|
+
.filter(Boolean);
|
|
293
|
+
}
|
|
294
|
+
if (child.tag === 'status') {
|
|
295
|
+
info.status = child.attrs?.value ?? 'sent';
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
return info;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Download view-once media (bypass protection)
|
|
303
|
+
* Fix Baileys issue: view once media tidak bisa didownload
|
|
304
|
+
*/
|
|
305
|
+
async downloadViewOnceMedia(message) {
|
|
306
|
+
if (!this.downloadMedia) {
|
|
307
|
+
throw new Error('downloadMedia function not provided');
|
|
308
|
+
}
|
|
309
|
+
// Check if message has view-once media
|
|
310
|
+
const mediaTypes = ['image', 'video', 'audio', 'document', 'sticker'];
|
|
311
|
+
let mediaInfo;
|
|
312
|
+
for (const type of mediaTypes) {
|
|
313
|
+
const media = message.message?.[type];
|
|
314
|
+
if (media?.viewOnce === true || message.message?.viewOnce === true) {
|
|
315
|
+
mediaInfo = {
|
|
316
|
+
url: media.url,
|
|
317
|
+
mediaKey: media.mediaKey,
|
|
318
|
+
type,
|
|
319
|
+
mimetype: media.mimetype
|
|
320
|
+
};
|
|
321
|
+
break;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
if (!mediaInfo) {
|
|
325
|
+
this.logger.debug('Message does not contain view-once media');
|
|
326
|
+
return undefined;
|
|
327
|
+
}
|
|
328
|
+
this.logger.info(`Downloading view-once ${mediaInfo.type} media`);
|
|
329
|
+
return this.downloadMedia(mediaInfo.url, mediaInfo.mediaKey, mediaInfo.type, mediaInfo.mimetype);
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* React multiple emojis to a message (limited support)
|
|
333
|
+
*/
|
|
334
|
+
async reactMultiple(key, emojis) {
|
|
335
|
+
// WhatsApp currently only supports single reaction
|
|
336
|
+
// But we send sequentially for last-one-wins behavior
|
|
337
|
+
for (const emoji of emojis) {
|
|
338
|
+
await this.sendReaction(key, emoji);
|
|
339
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Remove reaction dari message
|
|
344
|
+
*/
|
|
345
|
+
async removeReaction(key) {
|
|
346
|
+
return this.sendReaction(key, '');
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Forward message with quoted context
|
|
350
|
+
*/
|
|
351
|
+
async forwardWithContext(to, message, additionalText) {
|
|
352
|
+
const messageId = (0, message_encoder_js_1.generateMessageId)();
|
|
353
|
+
const node = {
|
|
354
|
+
tag: 'message',
|
|
355
|
+
attrs: {
|
|
356
|
+
to: (0, jid_js_1.jidToString)(to),
|
|
357
|
+
type: 'text',
|
|
358
|
+
id: messageId
|
|
359
|
+
},
|
|
360
|
+
content: [
|
|
361
|
+
{
|
|
362
|
+
tag: 'conversation',
|
|
363
|
+
attrs: {},
|
|
364
|
+
content: additionalText
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
tag: 'contextInfo',
|
|
368
|
+
attrs: {},
|
|
369
|
+
content: [
|
|
370
|
+
{
|
|
371
|
+
tag: 'stanzaId',
|
|
372
|
+
attrs: {},
|
|
373
|
+
content: message.key.id
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
tag: 'participant',
|
|
377
|
+
attrs: {},
|
|
378
|
+
content: (0, jid_js_1.jidToString)(message.key.participant ?? message.key.remoteJid)
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
tag: 'forwardingScore',
|
|
382
|
+
attrs: {},
|
|
383
|
+
content: '1'
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
tag: 'isForwarded',
|
|
387
|
+
attrs: {},
|
|
388
|
+
content: 'true'
|
|
389
|
+
}
|
|
390
|
+
]
|
|
391
|
+
}
|
|
392
|
+
]
|
|
393
|
+
};
|
|
394
|
+
this.send((0, binary_js_1.encodeBinaryNode)(node));
|
|
395
|
+
return messageId;
|
|
396
|
+
}
|
|
397
|
+
// ============== Internal Helpers ==============
|
|
398
|
+
async sendReaction(key, emoji) {
|
|
399
|
+
const messageId = (0, message_encoder_js_1.generateMessageId)();
|
|
400
|
+
const node = {
|
|
401
|
+
tag: 'message',
|
|
402
|
+
attrs: {
|
|
403
|
+
to: (0, jid_js_1.jidToString)(key.remoteJid),
|
|
404
|
+
type: 'reaction',
|
|
405
|
+
id: messageId
|
|
406
|
+
},
|
|
407
|
+
content: [
|
|
408
|
+
{
|
|
409
|
+
tag: 'reactionMessage',
|
|
410
|
+
attrs: {
|
|
411
|
+
key: JSON.stringify({
|
|
412
|
+
id: key.id,
|
|
413
|
+
fromMe: key.fromMe,
|
|
414
|
+
remoteJid: (0, jid_js_1.jidToString)(key.remoteJid),
|
|
415
|
+
participant: key.participant ? (0, jid_js_1.jidToString)(key.participant) : undefined
|
|
416
|
+
}),
|
|
417
|
+
text: emoji,
|
|
418
|
+
timestamp: Math.floor(Date.now() / 1000).toString()
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
]
|
|
422
|
+
};
|
|
423
|
+
this.send((0, binary_js_1.encodeBinaryNode)(node));
|
|
424
|
+
}
|
|
425
|
+
parseMessageNode(node) {
|
|
426
|
+
if (!node.attrs)
|
|
427
|
+
return null;
|
|
428
|
+
return {
|
|
429
|
+
key: {
|
|
430
|
+
remoteJid: node.attrs.from ?? node.attrs.to ?? '',
|
|
431
|
+
fromMe: node.attrs.from_me === 'true',
|
|
432
|
+
id: node.attrs.id ?? ''
|
|
433
|
+
},
|
|
434
|
+
message: typeof node.content === 'string' ? { text: node.content } : {},
|
|
435
|
+
messageTimestamp: parseInt(node.attrs.timestamp ?? '0', 10),
|
|
436
|
+
status: 'read'
|
|
437
|
+
};
|
|
438
|
+
}
|
|
439
|
+
findChild(node, tag) {
|
|
440
|
+
if (!Array.isArray(node.content))
|
|
441
|
+
return null;
|
|
442
|
+
for (const child of node.content) {
|
|
443
|
+
if (typeof child === 'object' && child?.tag === tag)
|
|
444
|
+
return child;
|
|
445
|
+
}
|
|
446
|
+
return null;
|
|
447
|
+
}
|
|
448
|
+
sendIqAndWait(node, id, timeoutMs = 15000) {
|
|
449
|
+
return new Promise((resolve, reject) => {
|
|
450
|
+
const timeout = setTimeout(() => reject(new Error(`IQ ${id} timeout`)), timeoutMs);
|
|
451
|
+
this.registerIqHandler(id, (response) => {
|
|
452
|
+
clearTimeout(timeout);
|
|
453
|
+
const type = response.attrs?.type;
|
|
454
|
+
if (type === 'error') {
|
|
455
|
+
reject(new Error(`IQ error: ${JSON.stringify(response.attrs)}`));
|
|
456
|
+
}
|
|
457
|
+
else {
|
|
458
|
+
resolve(response);
|
|
459
|
+
}
|
|
460
|
+
});
|
|
461
|
+
try {
|
|
462
|
+
this.send((0, binary_js_1.encodeBinaryNode)(node));
|
|
463
|
+
}
|
|
464
|
+
catch (err) {
|
|
465
|
+
clearTimeout(timeout);
|
|
466
|
+
reject(err);
|
|
467
|
+
}
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
exports.MessageExtras = MessageExtras;
|
|
472
|
+
//# sourceMappingURL=message-extras.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-extras.js","sourceRoot":"","sources":["../../src/community/message-extras.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAGH,iDAAiE;AACjE,4CAA8C;AAC9C,uEAAqF;AACrF,kDAAkD;AAuBlD,MAAa,aAAa;IAChB,IAAI,CAA6B;IACjC,iBAAiB,CAA4D;IAC7E,MAAM,CAAW;IACjB,aAAa,CAA0F;IACvG,eAAe,GAAgB,IAAI,GAAG,EAAE,CAAC;IACzC,cAAc,GAAwB,IAAI,GAAG,EAAE,CAAC,CAAC,uBAAuB;IAEhF,YAAY,IAA0B;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,wBAAY,EAAE,CAAC;QAChD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CACf,GAAY,EACZ,GAAiB,EACjB,OAAe;QAEf,MAAM,SAAS,GAAG,IAAA,sCAAiB,GAAE,CAAC;QACtC,MAAM,IAAI,GAAe;YACvB,GAAG,EAAE,SAAS;YACd,KAAK,EAAE;gBACL,EAAE,EAAE,IAAA,oBAAW,EAAC,GAAG,CAAC;gBACpB,IAAI,EAAE,MAAM;gBACZ,EAAE,EAAE,SAAS;aACd;YACD,OAAO,EAAE;gBACP;oBACE,GAAG,EAAE,cAAc;oBACnB,KAAK,EAAE;wBACL,WAAW,EAAE,GAAG,CAAC,EAAE;wBACnB,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;wBAC/C,oBAAoB,EAAE,IAAA,oBAAW,EAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,SAAS,CAAC;qBACpE;oBACD,OAAO,EAAE;wBACP;4BACE,GAAG,EAAE,cAAc;4BACnB,KAAK,EAAE,EAAE;4BACT,OAAO,EAAE,OAAO;yBACjB;qBACF;iBACF;aACF;SACF,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,IAAA,4BAAgB,EAAC,IAAI,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAE,OAAO,IAAA,oBAAW,EAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,GAAiB,EAAE,UAAmB,IAAI;QAC1D,MAAM,EAAE,GAAG,IAAA,qCAAgB,GAAE,CAAC;QAC9B,MAAM,IAAI,GAAe;YACvB,GAAG,EAAE,IAAI;YACT,KAAK,EAAE;gBACL,IAAI,EAAE,KAAK;gBACX,EAAE,EAAE,IAAA,oBAAW,EAAC,GAAG,CAAC,SAAS,CAAC;gBAC9B,EAAE;aACH;YACD,OAAO,EAAE;gBACP;oBACE,GAAG,EAAE,MAAM;oBACX,KAAK,EAAE;wBACL,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;wBACnC,EAAE,EAAE,GAAG,CAAC,EAAE;wBACV,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;wBACtC,WAAW,EAAE,IAAA,oBAAW,EAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,SAAS,CAAC;qBAC3D;iBACF;aACF;SACF,CAAC;QACF,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAEnC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,YAAY,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,GAAiB;QACnC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,GAAY,EAAE,QAAgB,EAAE;QACvD,MAAM,EAAE,GAAG,IAAA,qCAAgB,GAAE,CAAC;QAC9B,MAAM,IAAI,GAAe;YACvB,GAAG,EAAE,IAAI;YACT,KAAK,EAAE;gBACL,IAAI,EAAE,KAAK;gBACX,EAAE,EAAE,IAAA,oBAAW,EAAC,GAAG,CAAC;gBACpB,EAAE;aACH;YACD,OAAO,EAAE;gBACP;oBACE,GAAG,EAAE,SAAS;oBACd,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE;iBACnC;aACF;SACF,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAgB,EAAE,CAAC;QAEjC,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;YACxC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,EAAE,GAAG,KAAK,SAAS;oBAAE,SAAS;gBACpE,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBACzC,IAAI,GAAG,EAAE,CAAC;oBACR,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,GAAiB,EAAE,aAAqB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;QAC1E,MAAM,EAAE,GAAG,IAAA,qCAAgB,GAAE,CAAC;QAC9B,MAAM,IAAI,GAAe;YACvB,GAAG,EAAE,IAAI;YACT,KAAK,EAAE;gBACL,IAAI,EAAE,KAAK;gBACX,EAAE,EAAE,IAAA,oBAAW,EAAC,GAAG,CAAC,SAAS,CAAC;gBAC9B,EAAE;aACH;YACD,OAAO,EAAE;gBACP;oBACE,GAAG,EAAE,KAAK;oBACV,KAAK,EAAE;wBACL,MAAM,EAAE,KAAK;wBACb,EAAE,EAAE,GAAG,CAAC,EAAE;wBACV,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;wBACtC,WAAW,EAAE,IAAA,oBAAW,EAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,SAAS,CAAC;wBAC1D,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE;qBACnD;iBACF;aACF;SACF,CAAC;QACF,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAA,oBAAW,EAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAE,OAAO,IAAA,oBAAW,EAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,GAAiB;QAClC,MAAM,EAAE,GAAG,IAAA,qCAAgB,GAAE,CAAC;QAC9B,MAAM,IAAI,GAAe;YACvB,GAAG,EAAE,IAAI;YACT,KAAK,EAAE;gBACL,IAAI,EAAE,KAAK;gBACX,EAAE,EAAE,IAAA,oBAAW,EAAC,GAAG,CAAC,SAAS,CAAC;gBAC9B,EAAE;aACH;YACD,OAAO,EAAE;gBACP;oBACE,GAAG,EAAE,KAAK;oBACV,KAAK,EAAE;wBACL,MAAM,EAAE,OAAO;wBACf,EAAE,EAAE,GAAG,CAAC,EAAE;wBACV,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;wBACtC,WAAW,EAAE,IAAA,oBAAW,EAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,SAAS,CAAC;qBAC3D;iBACF;aACF;SACF,CAAC;QACF,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAA,oBAAW,EAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,OAAgB;QAC/B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAA,oBAAW,EAAC,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,GAAY;QACjC,MAAM,EAAE,GAAG,IAAA,qCAAgB,GAAE,CAAC;QAC9B,MAAM,IAAI,GAAe;YACvB,GAAG,EAAE,IAAI;YACT,KAAK,EAAE;gBACL,IAAI,EAAE,KAAK;gBACX,EAAE,EAAE,IAAA,oBAAW,EAAC,GAAG,CAAC;gBACpB,EAAE;aACH;YACD,OAAO,EAAE;gBACP;oBACE,GAAG,EAAE,aAAa;oBAClB,KAAK,EAAE,EAAE;iBACV;aACF;SACF,CAAC;QACF,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,IAAA,oBAAW,EAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAAC,GAAiB;QACpC,MAAM,EAAE,GAAG,IAAA,qCAAgB,GAAE,CAAC;QAC9B,MAAM,IAAI,GAAe;YACvB,GAAG,EAAE,IAAI;YACT,KAAK,EAAE;gBACL,IAAI,EAAE,KAAK;gBACX,EAAE,EAAE,gBAAgB;gBACpB,EAAE;aACH;YACD,OAAO,EAAE;gBACP;oBACE,GAAG,EAAE,cAAc;oBACnB,KAAK,EAAE;wBACL,EAAE,EAAE,GAAG,CAAC,EAAE;wBACV,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;wBACtC,WAAW,EAAE,IAAA,oBAAW,EAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,SAAS,CAAC;qBAC3D;iBACF;aACF;SACF,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAE1D,MAAM,IAAI,GAAgB;YACxB,GAAG;YACH,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,EAAE;YACf,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,IAAI,GAAG,EAAE,EAAE,CAAC;YAC1D,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3C,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAA,oBAAW,EAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE;YACxE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,KAAK,MAAM;SAChD,CAAC;QAEF,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;YACrC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,GAAG;oBAAE,SAAS;gBAEvD,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;oBACjE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO;yBAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,EAAE,GAAG,KAAK,WAAW,CAAC;yBAC5D,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC;yBACtB,MAAM,CAAC,OAAO,CAAC,CAAC;gBACrB,CAAC;gBACD,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5D,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO;yBACxB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,EAAE,GAAG,KAAK,WAAW,CAAC;yBAC5D,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC;yBACtB,MAAM,CAAC,OAAO,CAAC,CAAC;gBACrB,CAAC;gBACD,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC9D,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO;yBAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,EAAE,GAAG,KAAK,WAAW,CAAC;yBAC5D,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC;yBACtB,MAAM,CAAC,OAAO,CAAC,CAAC;gBACrB,CAAC;gBACD,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC3B,IAAI,CAAC,MAAM,GAAI,KAAK,CAAC,KAAK,EAAE,KAAa,IAAI,MAAM,CAAC;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,qBAAqB,CAAC,OAAkB;QAC5C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,uCAAuC;QACvC,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAU,CAAC;QAC/E,IAAI,SAA4F,CAAC;QAEjG,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAI,OAAO,CAAC,OAAe,EAAE,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,KAAK,EAAE,QAAQ,KAAK,IAAI,IAAK,OAAO,CAAC,OAAe,EAAE,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAC5E,SAAS,GAAG;oBACV,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,IAAI;oBACJ,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBACzB,CAAC;gBACF,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,SAAS,CAAC,IAAI,QAAQ,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IACnG,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,GAAiB,EAAE,MAAgB;QACrD,mDAAmD;QACnD,sDAAsD;QACtD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACpC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,GAAiB;QACpC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CACtB,EAAW,EACX,OAAkB,EAClB,cAAsB;QAEtB,MAAM,SAAS,GAAG,IAAA,sCAAiB,GAAE,CAAC;QACtC,MAAM,IAAI,GAAe;YACvB,GAAG,EAAE,SAAS;YACd,KAAK,EAAE;gBACL,EAAE,EAAE,IAAA,oBAAW,EAAC,EAAE,CAAC;gBACnB,IAAI,EAAE,MAAM;gBACZ,EAAE,EAAE,SAAS;aACd;YACD,OAAO,EAAE;gBACP;oBACE,GAAG,EAAE,cAAc;oBACnB,KAAK,EAAE,EAAE;oBACT,OAAO,EAAE,cAAc;iBACxB;gBACD;oBACE,GAAG,EAAE,aAAa;oBAClB,KAAK,EAAE,EAAE;oBACT,OAAO,EAAE;wBACP;4BACE,GAAG,EAAE,UAAU;4BACf,KAAK,EAAE,EAAE;4BACT,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE;yBACxB;wBACD;4BACE,GAAG,EAAE,aAAa;4BAClB,KAAK,EAAE,EAAE;4BACT,OAAO,EAAE,IAAA,oBAAW,EAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;yBACvE;wBACD;4BACE,GAAG,EAAE,iBAAiB;4BACtB,KAAK,EAAE,EAAE;4BACT,OAAO,EAAE,GAAG;yBACb;wBACD;4BACE,GAAG,EAAE,aAAa;4BAClB,KAAK,EAAE,EAAE;4BACT,OAAO,EAAE,MAAM;yBAChB;qBACF;iBACF;aACF;SACF,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,IAAA,4BAAgB,EAAC,IAAI,CAAC,CAAC,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iDAAiD;IAEzC,KAAK,CAAC,YAAY,CAAC,GAAiB,EAAE,KAAa;QACzD,MAAM,SAAS,GAAG,IAAA,sCAAiB,GAAE,CAAC;QACtC,MAAM,IAAI,GAAe;YACvB,GAAG,EAAE,SAAS;YACd,KAAK,EAAE;gBACL,EAAE,EAAE,IAAA,oBAAW,EAAC,GAAG,CAAC,SAAS,CAAC;gBAC9B,IAAI,EAAE,UAAU;gBAChB,EAAE,EAAE,SAAS;aACd;YACD,OAAO,EAAE;gBACP;oBACE,GAAG,EAAE,iBAAiB;oBACtB,KAAK,EAAE;wBACL,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC;4BAClB,EAAE,EAAE,GAAG,CAAC,EAAE;4BACV,MAAM,EAAE,GAAG,CAAC,MAAM;4BAClB,SAAS,EAAE,IAAA,oBAAW,EAAC,GAAG,CAAC,SAAS,CAAC;4BACrC,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAA,oBAAW,EAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;yBACxE,CAAC;wBACF,IAAI,EAAE,KAAK;wBACX,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE;qBACpD;iBACF;aACF;SACF,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,IAAA,4BAAgB,EAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IAEO,gBAAgB,CAAC,IAAgB;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAC7B,OAAO;YACL,GAAG,EAAE;gBACH,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE;gBACjD,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM;gBACrC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE;aACxB;YACD,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;YACvE,gBAAgB,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,GAAG,EAAE,EAAE,CAAC;YAC3D,MAAM,EAAE,MAAa;SACtB,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,IAAgB,EAAE,GAAW;QAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,EAAE,GAAG,KAAK,GAAG;gBAAE,OAAO,KAAK,CAAC;QACpE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,aAAa,CAAC,IAAgB,EAAE,EAAU,EAAE,YAAoB,KAAK;QAC3E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACnF,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACtC,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;gBAClC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;oBACrB,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,IAAA,4BAAgB,EAAC,IAAI,CAAC,CAAC,CAAC;YACpC,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA3dD,sCA2dC"}
|