baileys-joss 1.0.1 → 1.0.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.
- package/README.md +1983 -79
- package/lib/Socket/business.d.ts +4 -0
- package/lib/Socket/business.d.ts.map +1 -1
- package/lib/Socket/chats.d.ts +4 -0
- package/lib/Socket/chats.d.ts.map +1 -1
- package/lib/Socket/chats.js +44 -1
- package/lib/Socket/chats.js.map +1 -1
- package/lib/Socket/communities.d.ts +4 -0
- package/lib/Socket/communities.d.ts.map +1 -1
- package/lib/Socket/groups.d.ts +4 -0
- package/lib/Socket/groups.d.ts.map +1 -1
- package/lib/Socket/index.d.ts +4 -0
- package/lib/Socket/index.d.ts.map +1 -1
- package/lib/Socket/messages-recv.d.ts +4 -0
- package/lib/Socket/messages-recv.d.ts.map +1 -1
- package/lib/Socket/messages-send.d.ts +4 -0
- package/lib/Socket/messages-send.d.ts.map +1 -1
- package/lib/Socket/newsletter.d.ts +4 -0
- package/lib/Socket/newsletter.d.ts.map +1 -1
- package/lib/Types/Message.d.ts +4 -0
- package/lib/Types/Message.d.ts.map +1 -1
- package/lib/Utils/activity-logger.d.ts +189 -0
- package/lib/Utils/activity-logger.d.ts.map +1 -0
- package/lib/Utils/activity-logger.js +418 -0
- package/lib/Utils/activity-logger.js.map +1 -0
- package/lib/Utils/anti-spam.d.ts +145 -0
- package/lib/Utils/anti-spam.d.ts.map +1 -0
- package/lib/Utils/anti-spam.js +398 -0
- package/lib/Utils/anti-spam.js.map +1 -0
- package/lib/Utils/auto-reply.d.ts +123 -0
- package/lib/Utils/auto-reply.d.ts.map +1 -0
- package/lib/Utils/auto-reply.js +234 -0
- package/lib/Utils/auto-reply.js.map +1 -0
- package/lib/Utils/broadcast.d.ts +121 -0
- package/lib/Utils/broadcast.d.ts.map +1 -0
- package/lib/Utils/broadcast.js +223 -0
- package/lib/Utils/broadcast.js.map +1 -0
- package/lib/Utils/bulk-messaging.d.ts +79 -0
- package/lib/Utils/bulk-messaging.d.ts.map +1 -0
- package/lib/Utils/bulk-messaging.js +148 -0
- package/lib/Utils/bulk-messaging.js.map +1 -0
- package/lib/Utils/chat-analytics.d.ts +92 -0
- package/lib/Utils/chat-analytics.d.ts.map +1 -0
- package/lib/Utils/chat-analytics.js +337 -0
- package/lib/Utils/chat-analytics.js.map +1 -0
- package/lib/Utils/chat-control.d.ts +156 -0
- package/lib/Utils/chat-control.d.ts.map +1 -0
- package/lib/Utils/chat-control.js +224 -0
- package/lib/Utils/chat-control.js.map +1 -0
- package/lib/Utils/chat-export.d.ts +75 -0
- package/lib/Utils/chat-export.d.ts.map +1 -0
- package/lib/Utils/chat-export.js +309 -0
- package/lib/Utils/chat-export.js.map +1 -0
- package/lib/Utils/content-detector.d.ts +199 -0
- package/lib/Utils/content-detector.d.ts.map +1 -0
- package/lib/Utils/content-detector.js +442 -0
- package/lib/Utils/content-detector.js.map +1 -0
- package/lib/Utils/index.d.ts +23 -0
- package/lib/Utils/index.d.ts.map +1 -1
- package/lib/Utils/index.js +52 -0
- package/lib/Utils/index.js.map +1 -1
- package/lib/Utils/link-scanner.d.ts +112 -0
- package/lib/Utils/link-scanner.d.ts.map +1 -0
- package/lib/Utils/link-scanner.js +433 -0
- package/lib/Utils/link-scanner.js.map +1 -0
- package/lib/Utils/media-downloader.d.ts +86 -0
- package/lib/Utils/media-downloader.d.ts.map +1 -0
- package/lib/Utils/media-downloader.js +269 -0
- package/lib/Utils/media-downloader.js.map +1 -0
- package/lib/Utils/meme-generator.d.ts +96 -0
- package/lib/Utils/meme-generator.d.ts.map +1 -0
- package/lib/Utils/meme-generator.js +368 -0
- package/lib/Utils/meme-generator.js.map +1 -0
- package/lib/Utils/message-search.d.ts +96 -0
- package/lib/Utils/message-search.d.ts.map +1 -0
- package/lib/Utils/message-search.js +261 -0
- package/lib/Utils/message-search.js.map +1 -0
- package/lib/Utils/messages-media.d.ts +20 -1
- package/lib/Utils/messages-media.d.ts.map +1 -1
- package/lib/Utils/messages-media.js +100 -5
- package/lib/Utils/messages-media.js.map +1 -1
- package/lib/Utils/messages.d.ts.map +1 -1
- package/lib/Utils/messages.js +9 -2
- package/lib/Utils/messages.js.map +1 -1
- package/lib/Utils/mini-games.d.ts +155 -0
- package/lib/Utils/mini-games.d.ts.map +1 -0
- package/lib/Utils/mini-games.js +445 -0
- package/lib/Utils/mini-games.js.map +1 -0
- package/lib/Utils/pomodoro.d.ts +139 -0
- package/lib/Utils/pomodoro.d.ts.map +1 -0
- package/lib/Utils/pomodoro.js +434 -0
- package/lib/Utils/pomodoro.js.map +1 -0
- package/lib/Utils/qr-generator.d.ts +95 -0
- package/lib/Utils/qr-generator.d.ts.map +1 -0
- package/lib/Utils/qr-generator.js +226 -0
- package/lib/Utils/qr-generator.js.map +1 -0
- package/lib/Utils/quotes.d.ts +110 -0
- package/lib/Utils/quotes.d.ts.map +1 -0
- package/lib/Utils/quotes.js +325 -0
- package/lib/Utils/quotes.js.map +1 -0
- package/lib/Utils/scheduling.d.ts +88 -0
- package/lib/Utils/scheduling.d.ts.map +1 -0
- package/lib/Utils/scheduling.js +163 -0
- package/lib/Utils/scheduling.js.map +1 -0
- package/lib/Utils/status-posting.d.ts +151 -0
- package/lib/Utils/status-posting.d.ts.map +1 -0
- package/lib/Utils/status-posting.js +162 -0
- package/lib/Utils/status-posting.js.map +1 -0
- package/lib/Utils/templates.d.ts +154 -0
- package/lib/Utils/templates.d.ts.map +1 -0
- package/lib/Utils/templates.js +368 -0
- package/lib/Utils/templates.js.map +1 -0
- package/lib/Utils/vcard.d.ts +86 -0
- package/lib/Utils/vcard.d.ts.map +1 -0
- package/lib/Utils/vcard.js +195 -0
- package/lib/Utils/vcard.js.map +1 -0
- package/lib/Utils/voice-note.d.ts +115 -0
- package/lib/Utils/voice-note.d.ts.map +1 -0
- package/lib/Utils/voice-note.js +212 -0
- package/lib/Utils/voice-note.js.map +1 -0
- package/lib/Utils/weather.d.ts +118 -0
- package/lib/Utils/weather.d.ts.map +1 -0
- package/lib/Utils/weather.js +362 -0
- package/lib/Utils/weather.js.map +1 -0
- package/package.json +6 -3
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Baileys-Joss: Content Detector
|
|
3
|
+
*
|
|
4
|
+
* Deteksi otomatis berbagai jenis konten dalam pesan:
|
|
5
|
+
* - Links/URLs
|
|
6
|
+
* - Phone numbers
|
|
7
|
+
* - Emails
|
|
8
|
+
* - Media (images, videos, audio, documents)
|
|
9
|
+
* - Mentions
|
|
10
|
+
* - Hashtags
|
|
11
|
+
* - Sensitive content keywords
|
|
12
|
+
*/
|
|
13
|
+
// =====================================================
|
|
14
|
+
// REGEX PATTERNS
|
|
15
|
+
// =====================================================
|
|
16
|
+
const PATTERNS = {
|
|
17
|
+
// URLs
|
|
18
|
+
URL: /https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*)/gi,
|
|
19
|
+
// Domain extraction
|
|
20
|
+
DOMAIN: /(?:https?:\/\/)?(?:www\.)?([a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+)/i,
|
|
21
|
+
// Phone numbers (international format)
|
|
22
|
+
PHONE: /(?:\+62|62|0)(?:\d{2,3}[-\s.]?)?\d{3,4}[-\s.]?\d{3,4}(?:[-\s.]?\d{1,4})?|(?:\+\d{1,3}[-\s.]?)?\(?\d{1,4}\)?[-\s.]?\d{1,4}[-\s.]?\d{1,9}/g,
|
|
23
|
+
// Email addresses
|
|
24
|
+
EMAIL: /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/gi,
|
|
25
|
+
// Hashtags
|
|
26
|
+
HASHTAG: /#[a-zA-Z0-9_\u0600-\u06FF]+/g,
|
|
27
|
+
// Emojis
|
|
28
|
+
EMOJI: /[\u{1F600}-\u{1F64F}]|[\u{1F300}-\u{1F5FF}]|[\u{1F680}-\u{1F6FF}]|[\u{1F1E0}-\u{1F1FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]|[\u{FE00}-\u{FE0F}]|[\u{1F900}-\u{1F9FF}]|[\u{1FA00}-\u{1FA6F}]|[\u{1FA70}-\u{1FAFF}]/gu,
|
|
29
|
+
// Social media domains
|
|
30
|
+
SOCIAL_DOMAINS: /(?:facebook|fb|instagram|twitter|tiktok|youtube|linkedin|whatsapp|telegram|discord)\.(?:com|me|tv|gg)/i,
|
|
31
|
+
// Image extensions
|
|
32
|
+
IMAGE_URL: /\.(jpg|jpeg|png|gif|webp|bmp|svg)(\?.*)?$/i,
|
|
33
|
+
// Video extensions
|
|
34
|
+
VIDEO_URL: /\.(mp4|avi|mov|wmv|flv|webm|mkv)(\?.*)?$/i,
|
|
35
|
+
// File extensions
|
|
36
|
+
FILE_URL: /\.(pdf|doc|docx|xls|xlsx|ppt|pptx|zip|rar|7z|tar|gz)(\?.*)?$/i
|
|
37
|
+
};
|
|
38
|
+
// =====================================================
|
|
39
|
+
// CONTENT DETECTOR CLASS
|
|
40
|
+
// =====================================================
|
|
41
|
+
export class ContentDetector {
|
|
42
|
+
constructor(options = {}) {
|
|
43
|
+
this.sensitiveKeywords = [];
|
|
44
|
+
this.customPatterns = [];
|
|
45
|
+
this.sensitiveKeywords = options.sensitiveKeywords || [];
|
|
46
|
+
this.customPatterns = options.customPatterns || [];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Analyze a WhatsApp message
|
|
50
|
+
*/
|
|
51
|
+
analyze(message) {
|
|
52
|
+
const text = this.extractText(message);
|
|
53
|
+
const mediaType = this.getMediaType(message);
|
|
54
|
+
const links = this.detectLinks(text);
|
|
55
|
+
const phoneNumbers = this.detectPhoneNumbers(text);
|
|
56
|
+
const emails = this.detectEmails(text);
|
|
57
|
+
const mentions = this.detectMentions(message);
|
|
58
|
+
const hashtags = this.detectHashtags(text);
|
|
59
|
+
const emojis = this.detectEmojis(text);
|
|
60
|
+
const sensitiveKeywords = this.detectSensitiveContent(text);
|
|
61
|
+
return {
|
|
62
|
+
hasMedia: mediaType !== null,
|
|
63
|
+
mediaType,
|
|
64
|
+
hasLinks: links.length > 0,
|
|
65
|
+
links,
|
|
66
|
+
hasPhoneNumbers: phoneNumbers.length > 0,
|
|
67
|
+
phoneNumbers,
|
|
68
|
+
hasEmails: emails.length > 0,
|
|
69
|
+
emails,
|
|
70
|
+
hasMentions: mentions.length > 0,
|
|
71
|
+
mentions,
|
|
72
|
+
hasHashtags: hashtags.length > 0,
|
|
73
|
+
hashtags,
|
|
74
|
+
hasEmojis: emojis.length > 0,
|
|
75
|
+
emojis,
|
|
76
|
+
hasSensitiveContent: sensitiveKeywords.length > 0,
|
|
77
|
+
sensitiveKeywords,
|
|
78
|
+
messageType: this.getMessageType(message),
|
|
79
|
+
textLength: text.length,
|
|
80
|
+
wordCount: text.split(/\s+/).filter(w => w.length > 0).length
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Extract text from message
|
|
85
|
+
*/
|
|
86
|
+
extractText(message) {
|
|
87
|
+
const content = message.message;
|
|
88
|
+
if (!content)
|
|
89
|
+
return '';
|
|
90
|
+
if (content.conversation)
|
|
91
|
+
return content.conversation;
|
|
92
|
+
if (content.extendedTextMessage?.text)
|
|
93
|
+
return content.extendedTextMessage.text;
|
|
94
|
+
if (content.imageMessage?.caption)
|
|
95
|
+
return content.imageMessage.caption;
|
|
96
|
+
if (content.videoMessage?.caption)
|
|
97
|
+
return content.videoMessage.caption;
|
|
98
|
+
if (content.documentMessage?.caption)
|
|
99
|
+
return content.documentMessage.caption;
|
|
100
|
+
return '';
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get media type from message
|
|
104
|
+
*/
|
|
105
|
+
getMediaType(message) {
|
|
106
|
+
const content = message.message;
|
|
107
|
+
if (!content)
|
|
108
|
+
return null;
|
|
109
|
+
if (content.imageMessage)
|
|
110
|
+
return 'image';
|
|
111
|
+
if (content.videoMessage)
|
|
112
|
+
return 'video';
|
|
113
|
+
if (content.audioMessage)
|
|
114
|
+
return 'audio';
|
|
115
|
+
if (content.documentMessage)
|
|
116
|
+
return 'document';
|
|
117
|
+
if (content.stickerMessage)
|
|
118
|
+
return 'sticker';
|
|
119
|
+
if (content.locationMessage || content.liveLocationMessage)
|
|
120
|
+
return 'location';
|
|
121
|
+
if (content.contactMessage || content.contactsArrayMessage)
|
|
122
|
+
return 'contact';
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get message type string
|
|
127
|
+
*/
|
|
128
|
+
getMessageType(message) {
|
|
129
|
+
const content = message.message;
|
|
130
|
+
if (!content)
|
|
131
|
+
return 'unknown';
|
|
132
|
+
if (content.conversation || content.extendedTextMessage)
|
|
133
|
+
return 'text';
|
|
134
|
+
if (content.imageMessage)
|
|
135
|
+
return 'image';
|
|
136
|
+
if (content.videoMessage)
|
|
137
|
+
return 'video';
|
|
138
|
+
if (content.audioMessage)
|
|
139
|
+
return 'audio';
|
|
140
|
+
if (content.documentMessage)
|
|
141
|
+
return 'document';
|
|
142
|
+
if (content.stickerMessage)
|
|
143
|
+
return 'sticker';
|
|
144
|
+
if (content.locationMessage)
|
|
145
|
+
return 'location';
|
|
146
|
+
if (content.liveLocationMessage)
|
|
147
|
+
return 'live_location';
|
|
148
|
+
if (content.contactMessage)
|
|
149
|
+
return 'contact';
|
|
150
|
+
if (content.contactsArrayMessage)
|
|
151
|
+
return 'contacts';
|
|
152
|
+
if (content.pollCreationMessage)
|
|
153
|
+
return 'poll';
|
|
154
|
+
if (content.reactionMessage)
|
|
155
|
+
return 'reaction';
|
|
156
|
+
return 'other';
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Detect links in text
|
|
160
|
+
*/
|
|
161
|
+
detectLinks(text) {
|
|
162
|
+
const matches = text.match(PATTERNS.URL) || [];
|
|
163
|
+
return matches.map(url => {
|
|
164
|
+
const domainMatch = url.match(PATTERNS.DOMAIN);
|
|
165
|
+
const domain = domainMatch ? domainMatch[1] || '' : '';
|
|
166
|
+
let type = 'other';
|
|
167
|
+
if (PATTERNS.SOCIAL_DOMAINS.test(url))
|
|
168
|
+
type = 'social';
|
|
169
|
+
else if (PATTERNS.IMAGE_URL.test(url))
|
|
170
|
+
type = 'image';
|
|
171
|
+
else if (PATTERNS.VIDEO_URL.test(url))
|
|
172
|
+
type = 'video';
|
|
173
|
+
else if (PATTERNS.FILE_URL.test(url))
|
|
174
|
+
type = 'file';
|
|
175
|
+
else
|
|
176
|
+
type = 'website';
|
|
177
|
+
return {
|
|
178
|
+
url,
|
|
179
|
+
domain,
|
|
180
|
+
isHttps: url.startsWith('https'),
|
|
181
|
+
type
|
|
182
|
+
};
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Detect phone numbers
|
|
187
|
+
*/
|
|
188
|
+
detectPhoneNumbers(text) {
|
|
189
|
+
const matches = text.match(PATTERNS.PHONE) || [];
|
|
190
|
+
return matches.map(raw => {
|
|
191
|
+
const digits = raw.replace(/\D/g, '');
|
|
192
|
+
let countryCode;
|
|
193
|
+
let formatted = raw;
|
|
194
|
+
if (digits.startsWith('62')) {
|
|
195
|
+
countryCode = '+62';
|
|
196
|
+
formatted = '+62 ' + digits.slice(2);
|
|
197
|
+
}
|
|
198
|
+
else if (digits.startsWith('0')) {
|
|
199
|
+
countryCode = '+62';
|
|
200
|
+
formatted = '+62 ' + digits.slice(1);
|
|
201
|
+
}
|
|
202
|
+
return { raw, formatted, countryCode };
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Detect email addresses
|
|
207
|
+
*/
|
|
208
|
+
detectEmails(text) {
|
|
209
|
+
return text.match(PATTERNS.EMAIL) || [];
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Detect mentions from message
|
|
213
|
+
*/
|
|
214
|
+
detectMentions(message) {
|
|
215
|
+
const mentions = [];
|
|
216
|
+
const mentionedJids = message.message?.extendedTextMessage?.contextInfo?.mentionedJid || [];
|
|
217
|
+
for (const jid of mentionedJids) {
|
|
218
|
+
mentions.push({
|
|
219
|
+
jid,
|
|
220
|
+
position: { start: 0, end: 0 } // Position detection would require more parsing
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
return mentions;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Detect hashtags
|
|
227
|
+
*/
|
|
228
|
+
detectHashtags(text) {
|
|
229
|
+
return (text.match(PATTERNS.HASHTAG) || []).map(h => h.substring(1));
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Detect emojis
|
|
233
|
+
*/
|
|
234
|
+
detectEmojis(text) {
|
|
235
|
+
return text.match(PATTERNS.EMOJI) || [];
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Detect sensitive content
|
|
239
|
+
*/
|
|
240
|
+
detectSensitiveContent(text) {
|
|
241
|
+
const lowerText = text.toLowerCase();
|
|
242
|
+
return this.sensitiveKeywords.filter(keyword => lowerText.includes(keyword.toLowerCase()));
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Check custom patterns
|
|
246
|
+
*/
|
|
247
|
+
checkCustomPatterns(text) {
|
|
248
|
+
return this.customPatterns.map(pattern => pattern.test(text));
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Add sensitive keywords
|
|
252
|
+
*/
|
|
253
|
+
addSensitiveKeywords(keywords) {
|
|
254
|
+
this.sensitiveKeywords.push(...keywords);
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Set sensitive keywords
|
|
258
|
+
*/
|
|
259
|
+
setSensitiveKeywords(keywords) {
|
|
260
|
+
this.sensitiveKeywords = keywords;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Add custom pattern
|
|
264
|
+
*/
|
|
265
|
+
addCustomPattern(pattern) {
|
|
266
|
+
this.customPatterns.push(pattern);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
// =====================================================
|
|
270
|
+
// CONTENT FILTER CLASS
|
|
271
|
+
// =====================================================
|
|
272
|
+
export class ContentFilter {
|
|
273
|
+
constructor(options = {}) {
|
|
274
|
+
this.options = {
|
|
275
|
+
blockLinks: options.blockLinks ?? false,
|
|
276
|
+
blockedDomains: options.blockedDomains ?? [],
|
|
277
|
+
blockPhoneNumbers: options.blockPhoneNumbers ?? false,
|
|
278
|
+
blockEmails: options.blockEmails ?? false,
|
|
279
|
+
sensitiveKeywords: options.sensitiveKeywords ?? [],
|
|
280
|
+
maxMessageLength: options.maxMessageLength ?? 0,
|
|
281
|
+
customPatterns: options.customPatterns ?? []
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Filter a message
|
|
286
|
+
*/
|
|
287
|
+
filter(message) {
|
|
288
|
+
const detector = new ContentDetector({ sensitiveKeywords: this.options.sensitiveKeywords });
|
|
289
|
+
const analysis = detector.analyze(message);
|
|
290
|
+
const violations = [];
|
|
291
|
+
// Check links
|
|
292
|
+
if (this.options.blockLinks && analysis.hasLinks) {
|
|
293
|
+
violations.push('Links are not allowed');
|
|
294
|
+
}
|
|
295
|
+
// Check blocked domains
|
|
296
|
+
if (this.options.blockedDomains.length > 0 && analysis.hasLinks) {
|
|
297
|
+
const blockedFound = analysis.links.filter(link => this.options.blockedDomains.some(domain => link.domain.toLowerCase().includes(domain.toLowerCase())));
|
|
298
|
+
if (blockedFound.length > 0) {
|
|
299
|
+
violations.push(`Blocked domains: ${blockedFound.map(l => l.domain).join(', ')}`);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
// Check phone numbers
|
|
303
|
+
if (this.options.blockPhoneNumbers && analysis.hasPhoneNumbers) {
|
|
304
|
+
violations.push('Phone numbers are not allowed');
|
|
305
|
+
}
|
|
306
|
+
// Check emails
|
|
307
|
+
if (this.options.blockEmails && analysis.hasEmails) {
|
|
308
|
+
violations.push('Email addresses are not allowed');
|
|
309
|
+
}
|
|
310
|
+
// Check sensitive content
|
|
311
|
+
if (analysis.hasSensitiveContent) {
|
|
312
|
+
violations.push(`Sensitive content detected: ${analysis.sensitiveKeywords.join(', ')}`);
|
|
313
|
+
}
|
|
314
|
+
// Check message length
|
|
315
|
+
if (this.options.maxMessageLength > 0 && analysis.textLength > this.options.maxMessageLength) {
|
|
316
|
+
violations.push(`Message too long (${analysis.textLength}/${this.options.maxMessageLength})`);
|
|
317
|
+
}
|
|
318
|
+
// Check custom patterns
|
|
319
|
+
const text = this.extractText(message);
|
|
320
|
+
for (let i = 0; i < this.options.customPatterns.length; i++) {
|
|
321
|
+
if (this.options.customPatterns[i]?.test(text)) {
|
|
322
|
+
violations.push(`Custom pattern #${i + 1} matched`);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
return {
|
|
326
|
+
allowed: violations.length === 0,
|
|
327
|
+
blockedReason: violations.length > 0 ? violations[0] : undefined,
|
|
328
|
+
detectedViolations: violations
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Extract text from message
|
|
333
|
+
*/
|
|
334
|
+
extractText(message) {
|
|
335
|
+
const content = message.message;
|
|
336
|
+
if (!content)
|
|
337
|
+
return '';
|
|
338
|
+
if (content.conversation)
|
|
339
|
+
return content.conversation;
|
|
340
|
+
if (content.extendedTextMessage?.text)
|
|
341
|
+
return content.extendedTextMessage.text;
|
|
342
|
+
if (content.imageMessage?.caption)
|
|
343
|
+
return content.imageMessage.caption;
|
|
344
|
+
if (content.videoMessage?.caption)
|
|
345
|
+
return content.videoMessage.caption;
|
|
346
|
+
return '';
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Update filter options
|
|
350
|
+
*/
|
|
351
|
+
updateOptions(options) {
|
|
352
|
+
this.options = { ...this.options, ...options };
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
// =====================================================
|
|
356
|
+
// QUICK DETECTION FUNCTIONS
|
|
357
|
+
// =====================================================
|
|
358
|
+
/**
|
|
359
|
+
* Quick check if message contains links
|
|
360
|
+
*/
|
|
361
|
+
export const hasLinks = (text) => {
|
|
362
|
+
return PATTERNS.URL.test(text);
|
|
363
|
+
};
|
|
364
|
+
/**
|
|
365
|
+
* Quick check if message contains phone numbers
|
|
366
|
+
*/
|
|
367
|
+
export const hasPhoneNumbers = (text) => {
|
|
368
|
+
return PATTERNS.PHONE.test(text);
|
|
369
|
+
};
|
|
370
|
+
/**
|
|
371
|
+
* Quick check if message contains emails
|
|
372
|
+
*/
|
|
373
|
+
export const hasEmails = (text) => {
|
|
374
|
+
return PATTERNS.EMAIL.test(text);
|
|
375
|
+
};
|
|
376
|
+
/**
|
|
377
|
+
* Extract all links from text
|
|
378
|
+
*/
|
|
379
|
+
export const extractLinks = (text) => {
|
|
380
|
+
return text.match(PATTERNS.URL) || [];
|
|
381
|
+
};
|
|
382
|
+
/**
|
|
383
|
+
* Extract all phone numbers from text
|
|
384
|
+
*/
|
|
385
|
+
export const extractPhoneNumbers = (text) => {
|
|
386
|
+
return text.match(PATTERNS.PHONE) || [];
|
|
387
|
+
};
|
|
388
|
+
/**
|
|
389
|
+
* Extract all emails from text
|
|
390
|
+
*/
|
|
391
|
+
export const extractEmails = (text) => {
|
|
392
|
+
return text.match(PATTERNS.EMAIL) || [];
|
|
393
|
+
};
|
|
394
|
+
/**
|
|
395
|
+
* Check if message has media content
|
|
396
|
+
*/
|
|
397
|
+
export const hasMediaContent = (message) => {
|
|
398
|
+
const content = message.message;
|
|
399
|
+
if (!content)
|
|
400
|
+
return false;
|
|
401
|
+
return !!(content.imageMessage ||
|
|
402
|
+
content.videoMessage ||
|
|
403
|
+
content.audioMessage ||
|
|
404
|
+
content.documentMessage ||
|
|
405
|
+
content.stickerMessage);
|
|
406
|
+
};
|
|
407
|
+
/**
|
|
408
|
+
* Check if message is forwarded
|
|
409
|
+
*/
|
|
410
|
+
export const isForwarded = (message) => {
|
|
411
|
+
const content = message.message;
|
|
412
|
+
if (!content)
|
|
413
|
+
return false;
|
|
414
|
+
const contextInfo = content.extendedTextMessage?.contextInfo ||
|
|
415
|
+
content.imageMessage?.contextInfo ||
|
|
416
|
+
content.videoMessage?.contextInfo ||
|
|
417
|
+
content.documentMessage?.contextInfo ||
|
|
418
|
+
content.audioMessage?.contextInfo;
|
|
419
|
+
return !!contextInfo?.isForwarded;
|
|
420
|
+
};
|
|
421
|
+
/**
|
|
422
|
+
* Get forward count
|
|
423
|
+
*/
|
|
424
|
+
export const getForwardCount = (message) => {
|
|
425
|
+
const content = message.message;
|
|
426
|
+
if (!content)
|
|
427
|
+
return 0;
|
|
428
|
+
const contextInfo = content.extendedTextMessage?.contextInfo ||
|
|
429
|
+
content.imageMessage?.contextInfo ||
|
|
430
|
+
content.videoMessage?.contextInfo;
|
|
431
|
+
return contextInfo?.forwardingScore || 0;
|
|
432
|
+
};
|
|
433
|
+
// =====================================================
|
|
434
|
+
// FACTORY FUNCTIONS
|
|
435
|
+
// =====================================================
|
|
436
|
+
export const createContentDetector = (options) => {
|
|
437
|
+
return new ContentDetector(options);
|
|
438
|
+
};
|
|
439
|
+
export const createContentFilter = (options) => {
|
|
440
|
+
return new ContentFilter(options);
|
|
441
|
+
};
|
|
442
|
+
//# sourceMappingURL=content-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-detector.js","sourceRoot":"","sources":["../../src/Utils/content-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAuEH,wDAAwD;AACxD,iBAAiB;AACjB,wDAAwD;AAExD,MAAM,QAAQ,GAAG;IAChB,OAAO;IACP,GAAG,EAAE,6GAA6G;IAElH,oBAAoB;IACpB,MAAM,EAAE,gEAAgE;IAExE,uCAAuC;IACvC,KAAK,EAAE,0IAA0I;IAEjJ,kBAAkB;IAClB,KAAK,EAAE,kDAAkD;IAEzD,WAAW;IACX,OAAO,EAAE,8BAA8B;IAEvC,SAAS;IACT,KAAK,EAAE,yNAAyN;IAEhO,uBAAuB;IACvB,cAAc,EAAE,wGAAwG;IAExH,mBAAmB;IACnB,SAAS,EAAE,4CAA4C;IAEvD,mBAAmB;IACnB,SAAS,EAAE,2CAA2C;IAEtD,kBAAkB;IAClB,QAAQ,EAAE,+DAA+D;CACzE,CAAA;AAED,wDAAwD;AACxD,yBAAyB;AACzB,wDAAwD;AAExD,MAAM,OAAO,eAAe;IAI3B,YAAY,UAAuE,EAAE;QAH7E,sBAAiB,GAAa,EAAE,CAAA;QAChC,mBAAc,GAAa,EAAE,CAAA;QAGpC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAA;QACxD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,EAAE,CAAA;IACnD,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,OAAkB;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAE5C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QACtC,MAAM,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAA;QAE3D,OAAO;YACN,QAAQ,EAAE,SAAS,KAAK,IAAI;YAC5B,SAAS;YACT,QAAQ,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC;YAC1B,KAAK;YACL,eAAe,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC;YACxC,YAAY;YACZ,SAAS,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC;YAC5B,MAAM;YACN,WAAW,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC;YAChC,QAAQ;YACR,WAAW,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC;YAChC,QAAQ;YACR,SAAS,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC;YAC5B,MAAM;YACN,mBAAmB,EAAE,iBAAiB,CAAC,MAAM,GAAG,CAAC;YACjD,iBAAiB;YACjB,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YACzC,UAAU,EAAE,IAAI,CAAC,MAAM;YACvB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM;SAC7D,CAAA;IACF,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,OAAkB;QACrC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC/B,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAA;QAEvB,IAAI,OAAO,CAAC,YAAY;YAAE,OAAO,OAAO,CAAC,YAAY,CAAA;QACrD,IAAI,OAAO,CAAC,mBAAmB,EAAE,IAAI;YAAE,OAAO,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAA;QAC9E,IAAI,OAAO,CAAC,YAAY,EAAE,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAA;QACtE,IAAI,OAAO,CAAC,YAAY,EAAE,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAA;QACtE,IAAI,OAAO,CAAC,eAAe,EAAE,OAAO;YAAE,OAAO,OAAO,CAAC,eAAe,CAAC,OAAO,CAAA;QAE5E,OAAO,EAAE,CAAA;IACV,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,OAAkB;QACtC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC/B,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAA;QAEzB,IAAI,OAAO,CAAC,YAAY;YAAE,OAAO,OAAO,CAAA;QACxC,IAAI,OAAO,CAAC,YAAY;YAAE,OAAO,OAAO,CAAA;QACxC,IAAI,OAAO,CAAC,YAAY;YAAE,OAAO,OAAO,CAAA;QACxC,IAAI,OAAO,CAAC,eAAe;YAAE,OAAO,UAAU,CAAA;QAC9C,IAAI,OAAO,CAAC,cAAc;YAAE,OAAO,SAAS,CAAA;QAC5C,IAAI,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,mBAAmB;YAAE,OAAO,UAAU,CAAA;QAC7E,IAAI,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,oBAAoB;YAAE,OAAO,SAAS,CAAA;QAE5E,OAAO,IAAI,CAAA;IACZ,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,OAAkB;QACxC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC/B,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAA;QAE9B,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,mBAAmB;YAAE,OAAO,MAAM,CAAA;QACtE,IAAI,OAAO,CAAC,YAAY;YAAE,OAAO,OAAO,CAAA;QACxC,IAAI,OAAO,CAAC,YAAY;YAAE,OAAO,OAAO,CAAA;QACxC,IAAI,OAAO,CAAC,YAAY;YAAE,OAAO,OAAO,CAAA;QACxC,IAAI,OAAO,CAAC,eAAe;YAAE,OAAO,UAAU,CAAA;QAC9C,IAAI,OAAO,CAAC,cAAc;YAAE,OAAO,SAAS,CAAA;QAC5C,IAAI,OAAO,CAAC,eAAe;YAAE,OAAO,UAAU,CAAA;QAC9C,IAAI,OAAO,CAAC,mBAAmB;YAAE,OAAO,eAAe,CAAA;QACvD,IAAI,OAAO,CAAC,cAAc;YAAE,OAAO,SAAS,CAAA;QAC5C,IAAI,OAAO,CAAC,oBAAoB;YAAE,OAAO,UAAU,CAAA;QACnD,IAAI,OAAO,CAAC,mBAAmB;YAAE,OAAO,MAAM,CAAA;QAC9C,IAAI,OAAO,CAAC,eAAe;YAAE,OAAO,UAAU,CAAA;QAE9C,OAAO,OAAO,CAAA;IACf,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,IAAY;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QAC9C,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACxB,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC9C,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YAEtD,IAAI,IAAI,GAAqB,OAAO,CAAA;YACpC,IAAI,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,IAAI,GAAG,QAAQ,CAAA;iBACjD,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,IAAI,GAAG,OAAO,CAAA;iBAChD,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,IAAI,GAAG,OAAO,CAAA;iBAChD,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,IAAI,GAAG,MAAM,CAAA;;gBAC9C,IAAI,GAAG,SAAS,CAAA;YAErB,OAAO;gBACN,GAAG;gBACH,MAAM;gBACN,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;gBAChC,IAAI;aACJ,CAAA;QACF,CAAC,CAAC,CAAA;IACH,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,IAAY;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;QAChD,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACxB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YACrC,IAAI,WAA+B,CAAA;YACnC,IAAI,SAAS,GAAG,GAAG,CAAA;YAEnB,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7B,WAAW,GAAG,KAAK,CAAA;gBACnB,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACrC,CAAC;iBAAM,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnC,WAAW,GAAG,KAAK,CAAA;gBACnB,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACrC,CAAC;YAED,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,CAAA;QACvC,CAAC,CAAC,CAAA;IACH,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;IACxC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,OAAkB;QAChC,MAAM,QAAQ,GAAkB,EAAE,CAAA;QAClC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,YAAY,IAAI,EAAE,CAAA;QAE3F,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YACjC,QAAQ,CAAC,IAAI,CAAC;gBACb,GAAG;gBACH,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,gDAAgD;aAC/E,CAAC,CAAA;QACH,CAAC;QAED,OAAO,QAAQ,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,IAAY;QAC1B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IACrE,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;IACxC,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,IAAY;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QACpC,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAC9C,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CACzC,CAAA;IACF,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,IAAY;QAC/B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9D,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,QAAkB;QACtC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;IACzC,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,QAAkB;QACtC,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAA;IAClC,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,OAAe;QAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAClC,CAAC;CACD;AAED,wDAAwD;AACxD,uBAAuB;AACvB,wDAAwD;AAExD,MAAM,OAAO,aAAa;IAGzB,YAAY,UAAgC,EAAE;QAC7C,IAAI,CAAC,OAAO,GAAG;YACd,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK;YACvC,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,EAAE;YAC5C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,KAAK;YACrD,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK;YACzC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,EAAE;YAClD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,CAAC;YAC/C,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,EAAE;SAC5C,CAAA;IACF,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAkB;QACxB,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAA;QAC3F,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC1C,MAAM,UAAU,GAAa,EAAE,CAAA;QAE/B,cAAc;QACd,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAClD,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QACzC,CAAC;QAED,wBAAwB;QACxB,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACjE,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CACjD,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CACzC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CACxD,CACD,CAAA;YACD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,UAAU,CAAC,IAAI,CAAC,oBAAoB,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAClF,CAAC;QACF,CAAC;QAED,sBAAsB;QACtB,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;YAChE,UAAU,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;QACjD,CAAC;QAED,eAAe;QACf,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACpD,UAAU,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;QACnD,CAAC;QAED,0BAA0B;QAC1B,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;YAClC,UAAU,CAAC,IAAI,CAAC,+BAA+B,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACxF,CAAC;QAED,uBAAuB;QACvB,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,CAAC,IAAI,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC9F,UAAU,CAAC,IAAI,CAAC,qBAAqB,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAA;QAC9F,CAAC;QAED,wBAAwB;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7D,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChD,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YACpD,CAAC;QACF,CAAC;QAED,OAAO;YACN,OAAO,EAAE,UAAU,CAAC,MAAM,KAAK,CAAC;YAChC,aAAa,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAChE,kBAAkB,EAAE,UAAU;SAC9B,CAAA;IACF,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,OAAkB;QACrC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC/B,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAA;QAEvB,IAAI,OAAO,CAAC,YAAY;YAAE,OAAO,OAAO,CAAC,YAAY,CAAA;QACrD,IAAI,OAAO,CAAC,mBAAmB,EAAE,IAAI;YAAE,OAAO,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAA;QAC9E,IAAI,OAAO,CAAC,YAAY,EAAE,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAA;QACtE,IAAI,OAAO,CAAC,YAAY,EAAE,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAA;QAEtE,OAAO,EAAE,CAAA;IACV,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAsC;QACnD,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAA;IAC/C,CAAC;CACD;AAED,wDAAwD;AACxD,4BAA4B;AAC5B,wDAAwD;AAExD;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAW,EAAE;IACjD,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC/B,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAW,EAAE;IACxD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACjC,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAW,EAAE;IAClD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACjC,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAY,EAAE;IACtD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;AACtC,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAY,EAAE;IAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;AACxC,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAY,EAAE;IACvD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;AACxC,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAkB,EAAW,EAAE;IAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC/B,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAA;IAE1B,OAAO,CAAC,CAAC,CACR,OAAO,CAAC,YAAY;QACpB,OAAO,CAAC,YAAY;QACpB,OAAO,CAAC,YAAY;QACpB,OAAO,CAAC,eAAe;QACvB,OAAO,CAAC,cAAc,CACtB,CAAA;AACF,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAkB,EAAW,EAAE;IAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC/B,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAA;IAE1B,MAAM,WAAW,GAChB,OAAO,CAAC,mBAAmB,EAAE,WAAW;QACxC,OAAO,CAAC,YAAY,EAAE,WAAW;QACjC,OAAO,CAAC,YAAY,EAAE,WAAW;QACjC,OAAO,CAAC,eAAe,EAAE,WAAW;QACpC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAA;IAElC,OAAO,CAAC,CAAC,WAAW,EAAE,WAAW,CAAA;AAClC,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAkB,EAAU,EAAE;IAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC/B,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,CAAA;IAEtB,MAAM,WAAW,GAChB,OAAO,CAAC,mBAAmB,EAAE,WAAW;QACxC,OAAO,CAAC,YAAY,EAAE,WAAW;QACjC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAA;IAElC,OAAO,WAAW,EAAE,eAAe,IAAI,CAAC,CAAA;AACzC,CAAC,CAAA;AAED,wDAAwD;AACxD,oBAAoB;AACpB,wDAAwD;AAExD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAGrC,EAAmB,EAAE;IACrB,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAA;AACpC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAA8B,EAAiB,EAAE;IACpF,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,CAAA;AAClC,CAAC,CAAA"}
|
package/lib/Utils/index.d.ts
CHANGED
|
@@ -23,4 +23,27 @@ export * from './view-once.js';
|
|
|
23
23
|
export * from './anti-delete.js';
|
|
24
24
|
export * from './sticker-maker.js';
|
|
25
25
|
export * from './group-utils.js';
|
|
26
|
+
export * from './scheduling.js';
|
|
27
|
+
export * from './bulk-messaging.js';
|
|
28
|
+
export * from './auto-reply.js';
|
|
29
|
+
export * from './vcard.js';
|
|
30
|
+
export * from './status-posting.js';
|
|
31
|
+
export * from './voice-note.js';
|
|
32
|
+
export * from './templates.js';
|
|
33
|
+
export * from './broadcast.js';
|
|
34
|
+
export * from './chat-control.js';
|
|
35
|
+
export * from './message-search.js';
|
|
36
|
+
export * from './chat-analytics.js';
|
|
37
|
+
export * from './chat-export.js';
|
|
38
|
+
export * from './qr-generator.js';
|
|
39
|
+
export * from './media-downloader.js';
|
|
40
|
+
export * from './mini-games.js';
|
|
41
|
+
export * from './content-detector.js';
|
|
42
|
+
export * from './anti-spam.js';
|
|
43
|
+
export * from './link-scanner.js';
|
|
44
|
+
export * from './activity-logger.js';
|
|
45
|
+
export * from './meme-generator.js';
|
|
46
|
+
export * from './pomodoro.js';
|
|
47
|
+
export * from './quotes.js';
|
|
48
|
+
export * from './weather.js';
|
|
26
49
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/Utils/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AAOzC,cAAc,uBAAuB,CAAA;AAGrC,cAAc,gBAAgB,CAAA;AAG9B,cAAc,aAAa,CAAA;AAG3B,cAAc,eAAe,CAAA;AAG7B,cAAc,iBAAiB,CAAA;AAG/B,cAAc,eAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AAOzC,cAAc,uBAAuB,CAAA;AAGrC,cAAc,gBAAgB,CAAA;AAG9B,cAAc,aAAa,CAAA;AAG3B,cAAc,eAAe,CAAA;AAG7B,cAAc,iBAAiB,CAAA;AAG/B,cAAc,eAAe,CAAA;AAO7B,cAAc,cAAc,CAAA;AAG5B,cAAc,kBAAkB,CAAA;AAGhC,cAAc,cAAc,CAAA;AAG5B,cAAc,SAAS,CAAA;AAGvB,cAAc,kBAAkB,CAAA;AAGhC,cAAc,cAAc,CAAA;AAG5B,cAAc,aAAa,CAAA;AAG3B,cAAc,aAAa,CAAA;AAG3B,cAAc,gBAAgB,CAAA;AAG9B,cAAc,kBAAkB,CAAA;AAGhC,cAAc,kBAAkB,CAAA;AAGhC,cAAc,eAAe,CAAA;AAG7B,cAAc,gBAAgB,CAAA;AAG9B,cAAc,oBAAoB,CAAA;AAOlC,cAAc,cAAc,CAAA;AAG5B,cAAc,oBAAoB,CAAA;AAGlC,cAAc,aAAa,CAAA;AAG3B,cAAc,gBAAgB,CAAA;AAG9B,cAAc,mBAAmB,CAAA;AAGjC,cAAc,kBAAkB,CAAA;AAGhC,cAAc,YAAY,CAAA;AAG1B,cAAc,UAAU,CAAA;AAGxB,cAAc,WAAW,CAAA"}
|
package/lib/Utils/index.js
CHANGED
|
@@ -32,4 +32,56 @@ export * from './anti-delete.js';
|
|
|
32
32
|
export * from './sticker-maker.js';
|
|
33
33
|
// Group Utilities
|
|
34
34
|
export * from './group-utils.js';
|
|
35
|
+
// =====================================================
|
|
36
|
+
// Baileys-Joss v1.0.2 NEW FEATURES
|
|
37
|
+
// =====================================================
|
|
38
|
+
// Message Scheduling
|
|
39
|
+
export * from './scheduling.js';
|
|
40
|
+
// Bulk Messaging
|
|
41
|
+
export * from './bulk-messaging.js';
|
|
42
|
+
// Auto Reply System
|
|
43
|
+
export * from './auto-reply.js';
|
|
44
|
+
// vCard / Contact Card
|
|
45
|
+
export * from './vcard.js';
|
|
46
|
+
// Status/Story Posting
|
|
47
|
+
export * from './status-posting.js';
|
|
48
|
+
// Voice Note Utilities
|
|
49
|
+
export * from './voice-note.js';
|
|
50
|
+
// Message Templates
|
|
51
|
+
export * from './templates.js';
|
|
52
|
+
// Broadcast List Manager
|
|
53
|
+
export * from './broadcast.js';
|
|
54
|
+
// Chat Control (Typing, Read Receipt, Pinned, Disappearing)
|
|
55
|
+
export * from './chat-control.js';
|
|
56
|
+
// Message Search
|
|
57
|
+
export * from './message-search.js';
|
|
58
|
+
// Chat Analytics
|
|
59
|
+
export * from './chat-analytics.js';
|
|
60
|
+
// Chat Export
|
|
61
|
+
export * from './chat-export.js';
|
|
62
|
+
// QR Code Generator
|
|
63
|
+
export * from './qr-generator.js';
|
|
64
|
+
// Media Downloader
|
|
65
|
+
export * from './media-downloader.js';
|
|
66
|
+
// =====================================================
|
|
67
|
+
// Baileys-Joss v1.0.3 FUN & SECURITY FEATURES
|
|
68
|
+
// =====================================================
|
|
69
|
+
// Mini Games (Guess Number, Quiz, TicTacToe, RPS, Dice, Coin Flip)
|
|
70
|
+
export * from './mini-games.js';
|
|
71
|
+
// Content Detector (Links, Phone, Email, Media, Mentions, Hashtags)
|
|
72
|
+
export * from './content-detector.js';
|
|
73
|
+
// Anti-Spam System (Rate Limit, Duplicate Detection, Flood Protection)
|
|
74
|
+
export * from './anti-spam.js';
|
|
75
|
+
// Link Scanner (URL Security, Phishing Detection)
|
|
76
|
+
export * from './link-scanner.js';
|
|
77
|
+
// Activity Logger (Audit Trail, Message Logging)
|
|
78
|
+
export * from './activity-logger.js';
|
|
79
|
+
// Meme Generator (Text Memes, Templates)
|
|
80
|
+
export * from './meme-generator.js';
|
|
81
|
+
// Pomodoro Timer (Productivity Timer)
|
|
82
|
+
export * from './pomodoro.js';
|
|
83
|
+
// Quote Generator (Random Quotes, Quote of the Day)
|
|
84
|
+
export * from './quotes.js';
|
|
85
|
+
// Weather Bot (Weather Information)
|
|
86
|
+
export * from './weather.js';
|
|
35
87
|
//# sourceMappingURL=index.js.map
|
package/lib/Utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AAEzC,wDAAwD;AACxD,+BAA+B;AAC/B,wDAAwD;AAExD,iCAAiC;AACjC,cAAc,uBAAuB,CAAA;AAErC,4BAA4B;AAC5B,cAAc,gBAAgB,CAAA;AAE9B,8BAA8B;AAC9B,cAAc,aAAa,CAAA;AAE3B,8BAA8B;AAC9B,cAAc,eAAe,CAAA;AAE7B,gBAAgB;AAChB,cAAc,iBAAiB,CAAA;AAE/B,kBAAkB;AAClB,cAAc,eAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AAEzC,wDAAwD;AACxD,+BAA+B;AAC/B,wDAAwD;AAExD,iCAAiC;AACjC,cAAc,uBAAuB,CAAA;AAErC,4BAA4B;AAC5B,cAAc,gBAAgB,CAAA;AAE9B,8BAA8B;AAC9B,cAAc,aAAa,CAAA;AAE3B,8BAA8B;AAC9B,cAAc,eAAe,CAAA;AAE7B,gBAAgB;AAChB,cAAc,iBAAiB,CAAA;AAE/B,kBAAkB;AAClB,cAAc,eAAe,CAAA;AAE7B,wDAAwD;AACxD,mCAAmC;AACnC,wDAAwD;AAExD,qBAAqB;AACrB,cAAc,cAAc,CAAA;AAE5B,iBAAiB;AACjB,cAAc,kBAAkB,CAAA;AAEhC,oBAAoB;AACpB,cAAc,cAAc,CAAA;AAE5B,uBAAuB;AACvB,cAAc,SAAS,CAAA;AAEvB,uBAAuB;AACvB,cAAc,kBAAkB,CAAA;AAEhC,uBAAuB;AACvB,cAAc,cAAc,CAAA;AAE5B,oBAAoB;AACpB,cAAc,aAAa,CAAA;AAE3B,yBAAyB;AACzB,cAAc,aAAa,CAAA;AAE3B,4DAA4D;AAC5D,cAAc,gBAAgB,CAAA;AAE9B,iBAAiB;AACjB,cAAc,kBAAkB,CAAA;AAEhC,iBAAiB;AACjB,cAAc,kBAAkB,CAAA;AAEhC,cAAc;AACd,cAAc,eAAe,CAAA;AAE7B,oBAAoB;AACpB,cAAc,gBAAgB,CAAA;AAE9B,mBAAmB;AACnB,cAAc,oBAAoB,CAAA;AAElC,wDAAwD;AACxD,8CAA8C;AAC9C,wDAAwD;AAExD,mEAAmE;AACnE,cAAc,cAAc,CAAA;AAE5B,oEAAoE;AACpE,cAAc,oBAAoB,CAAA;AAElC,uEAAuE;AACvE,cAAc,aAAa,CAAA;AAE3B,kDAAkD;AAClD,cAAc,gBAAgB,CAAA;AAE9B,iDAAiD;AACjD,cAAc,mBAAmB,CAAA;AAEjC,yCAAyC;AACzC,cAAc,kBAAkB,CAAA;AAEhC,sCAAsC;AACtC,cAAc,YAAY,CAAA;AAE1B,oDAAoD;AACpD,cAAc,UAAU,CAAA;AAExB,oCAAoC;AACpC,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Baileys-Joss: Link Scanner
|
|
3
|
+
*
|
|
4
|
+
* Scan dan validasi URL untuk keamanan:
|
|
5
|
+
* - Check domain reputation
|
|
6
|
+
* - Detect phishing patterns
|
|
7
|
+
* - URL shortener expansion
|
|
8
|
+
* - Safe browsing check
|
|
9
|
+
*/
|
|
10
|
+
export interface LinkScanResult {
|
|
11
|
+
url: string;
|
|
12
|
+
safe: boolean;
|
|
13
|
+
riskLevel: 'safe' | 'low' | 'medium' | 'high' | 'critical';
|
|
14
|
+
riskScore: number;
|
|
15
|
+
threats: string[];
|
|
16
|
+
details: {
|
|
17
|
+
isShortener: boolean;
|
|
18
|
+
finalUrl?: string;
|
|
19
|
+
domain: string;
|
|
20
|
+
isHttps: boolean;
|
|
21
|
+
hasIPAddress: boolean;
|
|
22
|
+
hasSuspiciousPath: boolean;
|
|
23
|
+
isKnownMalicious: boolean;
|
|
24
|
+
phishingScore: number;
|
|
25
|
+
};
|
|
26
|
+
scannedAt: Date;
|
|
27
|
+
}
|
|
28
|
+
export interface LinkScannerOptions {
|
|
29
|
+
/** Follow redirects to get final URL */
|
|
30
|
+
followRedirects?: boolean;
|
|
31
|
+
/** Maximum redirects to follow */
|
|
32
|
+
maxRedirects?: number;
|
|
33
|
+
/** Timeout for URL check (ms) */
|
|
34
|
+
timeout?: number;
|
|
35
|
+
/** Custom malicious domains list */
|
|
36
|
+
maliciousDomains?: string[];
|
|
37
|
+
/** Custom safe domains (always allowed) */
|
|
38
|
+
safeDomains?: string[];
|
|
39
|
+
/** Enable phishing pattern detection */
|
|
40
|
+
enablePhishingDetection?: boolean;
|
|
41
|
+
}
|
|
42
|
+
export declare class LinkScanner {
|
|
43
|
+
private options;
|
|
44
|
+
private maliciousDomains;
|
|
45
|
+
private safeDomains;
|
|
46
|
+
constructor(options?: LinkScannerOptions);
|
|
47
|
+
/**
|
|
48
|
+
* Scan a URL for security threats
|
|
49
|
+
*/
|
|
50
|
+
scan(url: string): Promise<LinkScanResult>;
|
|
51
|
+
/**
|
|
52
|
+
* Batch scan multiple URLs
|
|
53
|
+
*/
|
|
54
|
+
scanMultiple(urls: string[]): Promise<LinkScanResult[]>;
|
|
55
|
+
/**
|
|
56
|
+
* Quick check if URL is suspicious
|
|
57
|
+
*/
|
|
58
|
+
quickCheck(url: string): {
|
|
59
|
+
suspicious: boolean;
|
|
60
|
+
reasons: string[];
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Add domain to malicious list
|
|
64
|
+
*/
|
|
65
|
+
addMaliciousDomain(domain: string): void;
|
|
66
|
+
/**
|
|
67
|
+
* Add domain to safe list
|
|
68
|
+
*/
|
|
69
|
+
addSafeDomain(domain: string): void;
|
|
70
|
+
/**
|
|
71
|
+
* Remove domain from malicious list
|
|
72
|
+
*/
|
|
73
|
+
removeMaliciousDomain(domain: string): void;
|
|
74
|
+
/**
|
|
75
|
+
* Check if domain is safe
|
|
76
|
+
*/
|
|
77
|
+
private isDomainSafe;
|
|
78
|
+
/**
|
|
79
|
+
* Check for suspicious TLD
|
|
80
|
+
*/
|
|
81
|
+
private hasSuspiciousTLD;
|
|
82
|
+
/**
|
|
83
|
+
* Check for suspicious path patterns
|
|
84
|
+
*/
|
|
85
|
+
private checkSuspiciousPath;
|
|
86
|
+
/**
|
|
87
|
+
* Calculate phishing score
|
|
88
|
+
*/
|
|
89
|
+
private calculatePhishingScore;
|
|
90
|
+
/**
|
|
91
|
+
* Get risk level from score
|
|
92
|
+
*/
|
|
93
|
+
private getRiskLevel;
|
|
94
|
+
/**
|
|
95
|
+
* Resolve URL redirects
|
|
96
|
+
*/
|
|
97
|
+
private resolveRedirects;
|
|
98
|
+
}
|
|
99
|
+
export declare const createLinkScanner: (options?: LinkScannerOptions) => LinkScanner;
|
|
100
|
+
/**
|
|
101
|
+
* Quick check if URL is a shortener
|
|
102
|
+
*/
|
|
103
|
+
export declare const isUrlShortener: (url: string) => boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Extract domain from URL
|
|
106
|
+
*/
|
|
107
|
+
export declare const extractDomain: (url: string) => string | null;
|
|
108
|
+
/**
|
|
109
|
+
* Check if domain is trusted
|
|
110
|
+
*/
|
|
111
|
+
export declare const isTrustedDomain: (domain: string) => boolean;
|
|
112
|
+
//# sourceMappingURL=link-scanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-scanner.d.ts","sourceRoot":"","sources":["../../src/Utils/link-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,MAAM,WAAW,cAAc;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,OAAO,CAAA;IACb,SAAS,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;IAC1D,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE;QACR,WAAW,EAAE,OAAO,CAAA;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,OAAO,CAAA;QAChB,YAAY,EAAE,OAAO,CAAA;QACrB,iBAAiB,EAAE,OAAO,CAAA;QAC1B,gBAAgB,EAAE,OAAO,CAAA;QACzB,aAAa,EAAE,MAAM,CAAA;KACrB,CAAA;IACD,SAAS,EAAE,IAAI,CAAA;CACf;AAED,MAAM,WAAW,kBAAkB;IAClC,wCAAwC;IACxC,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oCAAoC;IACpC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,wCAAwC;IACxC,uBAAuB,CAAC,EAAE,OAAO,CAAA;CACjC;AA8CD,qBAAa,WAAW;IACvB,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,WAAW,CAAa;gBAEpB,OAAO,GAAE,kBAAuB;IAc5C;;OAEG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAsJhD;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAI7D;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE;IAoCnE;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAInC;;OAEG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI3C;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAqD9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAgCxB;AAMD,eAAO,MAAM,iBAAiB,GAAI,UAAU,kBAAkB,KAAG,WAEhE,CAAA;AAMD;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,KAAG,OAO5C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,IAMpD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,KAAG,OAEhD,CAAA"}
|