@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.
Files changed (76) hide show
  1. package/dist/community/audio-transcription.d.ts +46 -0
  2. package/dist/community/audio-transcription.d.ts.map +1 -0
  3. package/dist/community/audio-transcription.js +108 -0
  4. package/dist/community/audio-transcription.js.map +1 -0
  5. package/dist/community/bulk-operations.d.ts +87 -0
  6. package/dist/community/bulk-operations.d.ts.map +1 -0
  7. package/dist/community/bulk-operations.js +223 -0
  8. package/dist/community/bulk-operations.js.map +1 -0
  9. package/dist/community/community-fixes.d.ts +306 -0
  10. package/dist/community/community-fixes.d.ts.map +1 -0
  11. package/dist/community/community-fixes.js +630 -0
  12. package/dist/community/community-fixes.js.map +1 -0
  13. package/dist/community/contacts-manager.d.ts +89 -0
  14. package/dist/community/contacts-manager.d.ts.map +1 -0
  15. package/dist/community/contacts-manager.js +241 -0
  16. package/dist/community/contacts-manager.js.map +1 -0
  17. package/dist/community/disappearing.d.ts +63 -0
  18. package/dist/community/disappearing.d.ts.map +1 -0
  19. package/dist/community/disappearing.js +195 -0
  20. package/dist/community/disappearing.js.map +1 -0
  21. package/dist/community/index.d.ts +101 -0
  22. package/dist/community/index.d.ts.map +1 -0
  23. package/dist/community/index.js +113 -0
  24. package/dist/community/index.js.map +1 -0
  25. package/dist/community/live-location.d.ts +85 -0
  26. package/dist/community/live-location.d.ts.map +1 -0
  27. package/dist/community/live-location.js +238 -0
  28. package/dist/community/live-location.js.map +1 -0
  29. package/dist/community/message-extras.d.ts +110 -0
  30. package/dist/community/message-extras.d.ts.map +1 -0
  31. package/dist/community/message-extras.js +472 -0
  32. package/dist/community/message-extras.js.map +1 -0
  33. package/dist/community/newsletter-extended.d.ts +142 -0
  34. package/dist/community/newsletter-extended.d.ts.map +1 -0
  35. package/dist/community/newsletter-extended.js +543 -0
  36. package/dist/community/newsletter-extended.js.map +1 -0
  37. package/dist/community/privacy-manager.d.ts +98 -0
  38. package/dist/community/privacy-manager.d.ts.map +1 -0
  39. package/dist/community/privacy-manager.js +273 -0
  40. package/dist/community/privacy-manager.js.map +1 -0
  41. package/dist/community/profile-manager.d.ts +94 -0
  42. package/dist/community/profile-manager.d.ts.map +1 -0
  43. package/dist/community/profile-manager.js +363 -0
  44. package/dist/community/profile-manager.js.map +1 -0
  45. package/dist/community/status-extended.d.ts +119 -0
  46. package/dist/community/status-extended.d.ts.map +1 -0
  47. package/dist/community/status-extended.js +444 -0
  48. package/dist/community/status-extended.js.map +1 -0
  49. package/dist/community/sticker-manager.d.ts +73 -0
  50. package/dist/community/sticker-manager.d.ts.map +1 -0
  51. package/dist/community/sticker-manager.js +251 -0
  52. package/dist/community/sticker-manager.js.map +1 -0
  53. package/dist/index.d.ts +4 -2
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +33 -2
  56. package/dist/index.js.map +1 -1
  57. package/dist/socket/wa-socket.d.ts +77 -0
  58. package/dist/socket/wa-socket.d.ts.map +1 -1
  59. package/dist/socket/wa-socket.js +149 -3
  60. package/dist/socket/wa-socket.js.map +1 -1
  61. package/package.json +2 -2
  62. package/src/community/audio-transcription.ts +121 -0
  63. package/src/community/bulk-operations.ts +329 -0
  64. package/src/community/community-fixes.ts +771 -0
  65. package/src/community/contacts-manager.ts +282 -0
  66. package/src/community/disappearing.ts +218 -0
  67. package/src/community/index.ts +169 -0
  68. package/src/community/live-location.ts +287 -0
  69. package/src/community/message-extras.ts +523 -0
  70. package/src/community/newsletter-extended.ts +614 -0
  71. package/src/community/privacy-manager.ts +310 -0
  72. package/src/community/profile-manager.ts +402 -0
  73. package/src/community/status-extended.ts +518 -0
  74. package/src/community/sticker-manager.ts +305 -0
  75. package/src/index.ts +67 -2
  76. package/src/socket/wa-socket.ts +183 -4
@@ -0,0 +1,306 @@
1
+ /**
2
+ * Waliwa - Community Fixes (Community Request)
3
+ *
4
+ * Fix issues yang sering dikeluhkan komunitas Baileys:
5
+ *
6
+ * 1. Message status tidak real-time → Polling fix dengan proper event emission
7
+ * 2. Read receipts tidak reliable → Retry queue + persistent tracking
8
+ * 3. Group description update tidak terdeteksi → Event emission
9
+ * 4. Self message detection → Skip self messages
10
+ * 5. Archive/unarchive tidak reliable → Persist state + verify
11
+ * 6. Chat pin tidak reliable → Persist state + verify
12
+ * 7. Last seen tidak bisa di-get → Presence subscription tracker
13
+ * 8. Battery status tidak terdeteksi → Battery event handler
14
+ * 9. Phone info tidak bisa di-get → Device info fetch
15
+ * 10. Typing indicator tidak reliable → Track per chat
16
+ * 11. Reconnect loses pending messages → Message recovery
17
+ * 12. Group subject change tidak terdeteksi → Event emission
18
+ * 13. Group announce mode change → Event emission
19
+ * 14. Blocklist tidak sync → Sync on connect
20
+ * 15. Contact presence tidak reliable → Periodic refresh
21
+ */
22
+ import { EventEmitter } from 'events';
23
+ import type { JIDLike, WALogger, WAMessage, WAMessageKey, MessageStatus } from '../types/index.js';
24
+ /**
25
+ * Track typing indicator per chat
26
+ * Fix Baileys issue: typing indicator tidak reliable
27
+ */
28
+ export declare class TypingIndicatorTracker extends EventEmitter {
29
+ private typingUsers;
30
+ private typingTimeouts;
31
+ private logger;
32
+ private readonly timeoutMs;
33
+ constructor(logger?: WALogger);
34
+ /**
35
+ * Update typing status untuk a user
36
+ */
37
+ updateTyping(jid: string, type: 'composing' | 'recording' | 'paused'): void;
38
+ /**
39
+ * Check if user is typing
40
+ */
41
+ isTyping(jid: string): boolean;
42
+ /**
43
+ * Check if user is recording voice
44
+ */
45
+ isRecording(jid: string): boolean;
46
+ /**
47
+ * Get all users currently typing
48
+ */
49
+ getAllTyping(): Array<{
50
+ jid: string;
51
+ type: 'composing' | 'recording';
52
+ timestamp: number;
53
+ }>;
54
+ destroy(): void;
55
+ }
56
+ /**
57
+ * Track last seen untuk users
58
+ * Fix Baileys issue: last seen tidak bisa di-get
59
+ */
60
+ export declare class LastSeenTracker {
61
+ private lastSeen;
62
+ private available;
63
+ private logger;
64
+ constructor(logger?: WALogger);
65
+ /**
66
+ * Update last seen untuk user
67
+ */
68
+ update(jid: string, timestamp: number, isAvailable?: boolean): void;
69
+ /**
70
+ * Get last seen untuk user
71
+ */
72
+ getLastSeen(jid: string): number | undefined;
73
+ /**
74
+ * Check if user is currently online
75
+ */
76
+ isOnline(jid: string): boolean;
77
+ /**
78
+ * Get formatted last seen
79
+ */
80
+ getFormattedLastSeen(jid: string): string;
81
+ clear(): void;
82
+ }
83
+ /**
84
+ * Track message status real-time
85
+ * Fix Baileys issue: message status tidak real-time
86
+ */
87
+ export declare class MessageStatusTracker extends EventEmitter {
88
+ private status;
89
+ private logger;
90
+ private retryQueue;
91
+ constructor(logger?: WALogger);
92
+ /**
93
+ * Update message status
94
+ */
95
+ updateStatus(key: WAMessageKey, status: MessageStatus, recipient?: string): void;
96
+ /**
97
+ * Get message status
98
+ */
99
+ getStatus(messageId: string): MessageStatus | undefined;
100
+ /**
101
+ * Get detailed status info
102
+ */
103
+ getStatusInfo(messageId: string): {
104
+ status: MessageStatus;
105
+ timestamp: number;
106
+ deliveredTo: string[];
107
+ readBy: string[];
108
+ } | undefined;
109
+ /**
110
+ * Mark message untuk retry (when status not updating)
111
+ */
112
+ markForRetry(messageId: string): number;
113
+ /**
114
+ * Clear retry tracking
115
+ */
116
+ clearRetry(messageId: string): void;
117
+ /**
118
+ * Get messages yang status-nya stuck (pending/sent > 5 minutes)
119
+ */
120
+ getStuckMessages(maxAgeMs?: number): WAMessageKey[];
121
+ /**
122
+ * Clear old entries
123
+ */
124
+ cleanup(maxAgeMs?: number): number;
125
+ size(): number;
126
+ }
127
+ /**
128
+ * Filter self messages
129
+ * Fix Baileys issue: self message detection missing
130
+ */
131
+ export declare class SelfMessageFilter {
132
+ private ownJid;
133
+ private ownJids;
134
+ setOwnJid(jid: string): void;
135
+ isSelfMessage(jid: JIDLike): boolean;
136
+ isSelfKey(key: WAMessageKey): boolean;
137
+ filterSelfMessages(messages: WAMessage[]): WAMessage[];
138
+ getOwnJid(): string | null;
139
+ }
140
+ /**
141
+ * Persist chat states (archive, pin, mute) yang reliable
142
+ * Fix Baileys issue: archive/pin tidak reliable (lost on restart)
143
+ */
144
+ export interface ChatState {
145
+ jid: string;
146
+ isArchived: boolean;
147
+ isPinned: boolean;
148
+ pinExpiration?: number;
149
+ isMuted: boolean;
150
+ muteExpiration?: number;
151
+ isRead: boolean;
152
+ lastMessage?: WAMessage;
153
+ updatedAt: number;
154
+ }
155
+ export declare class ChatStateManager {
156
+ private states;
157
+ private logger;
158
+ constructor(logger?: WALogger);
159
+ /**
160
+ * Update chat state
161
+ */
162
+ updateState(jid: string, updates: Partial<ChatState>): ChatState;
163
+ /**
164
+ * Get chat state
165
+ */
166
+ getState(jid: string): ChatState | undefined;
167
+ /**
168
+ * Archive chat
169
+ */
170
+ archive(jid: string): void;
171
+ /**
172
+ * Unarchive chat
173
+ */
174
+ unarchive(jid: string): void;
175
+ /**
176
+ * Pin chat
177
+ */
178
+ pin(jid: string, durationMs?: number): void;
179
+ /**
180
+ * Unpin chat
181
+ */
182
+ unpin(jid: string): void;
183
+ /**
184
+ * Mute chat
185
+ */
186
+ mute(jid: string, durationMs?: number): void;
187
+ /**
188
+ * Unmute chat
189
+ */
190
+ unmute(jid: string): void;
191
+ /**
192
+ * Mark chat as read
193
+ */
194
+ markAsRead(jid: string): void;
195
+ /**
196
+ * Mark chat as unread
197
+ */
198
+ markAsUnread(jid: string): void;
199
+ /**
200
+ * Get all archived chats
201
+ */
202
+ getArchivedChats(): string[];
203
+ /**
204
+ * Get all pinned chats
205
+ */
206
+ getPinnedChats(): string[];
207
+ /**
208
+ * Get all muted chats
209
+ */
210
+ getMutedChats(): string[];
211
+ /**
212
+ * Cleanup expired states
213
+ */
214
+ cleanup(): number;
215
+ /**
216
+ * Serialize untuk persistence
217
+ */
218
+ serialize(): string;
219
+ /**
220
+ * Deserialize dari persistence
221
+ */
222
+ deserialize(data: string): void;
223
+ size(): number;
224
+ }
225
+ /**
226
+ * Track device info (battery, phone info)
227
+ * Fix Baileys issue: battery status tidak terdeteksi, phone info tidak bisa di-get
228
+ */
229
+ export declare class DeviceInfoTracker extends EventEmitter {
230
+ private batteryLevel;
231
+ private isCharging;
232
+ private deviceInfo;
233
+ private logger;
234
+ constructor(logger?: WALogger);
235
+ /**
236
+ * Update battery status
237
+ */
238
+ updateBattery(level: number, isCharging: boolean): void;
239
+ /**
240
+ * Update device info
241
+ */
242
+ updateDeviceInfo(info: {
243
+ platform?: string;
244
+ osVersion?: string;
245
+ manufacturer?: string;
246
+ model?: string;
247
+ appVersion?: string;
248
+ }): void;
249
+ getBatteryLevel(): number | null;
250
+ isDeviceCharging(): boolean;
251
+ getDeviceInfo(): {
252
+ platform?: string;
253
+ osVersion?: string;
254
+ manufacturer?: string;
255
+ model?: string;
256
+ appVersion?: string;
257
+ };
258
+ }
259
+ /**
260
+ * Track group events yang reliable
261
+ * Fix Baileys issue: group subject/description/announce changes tidak terdeteksi
262
+ */
263
+ export declare class GroupEventsTracker extends EventEmitter {
264
+ private groupStates;
265
+ private logger;
266
+ constructor(logger?: WALogger);
267
+ /**
268
+ * Update group state dari metadata
269
+ */
270
+ updateGroupState(groupJid: string, metadata: {
271
+ subject?: string;
272
+ desc?: string;
273
+ announce?: boolean;
274
+ restrict?: boolean;
275
+ participants?: any[];
276
+ }): void;
277
+ getGroupState(groupJid: string): {
278
+ subject?: string;
279
+ description?: string;
280
+ announce?: boolean;
281
+ restrict?: boolean;
282
+ participantCount: number;
283
+ lastUpdated: number;
284
+ } | undefined;
285
+ clear(): void;
286
+ }
287
+ /**
288
+ * Get info dari group invite link
289
+ * Fix Baileys issue: group invite link info tidak support
290
+ */
291
+ export interface GroupInviteInfo {
292
+ code: string;
293
+ groupJid: string;
294
+ subject: string;
295
+ description?: string;
296
+ participantsCount: number;
297
+ isCommunity: boolean;
298
+ isParentGroup: boolean;
299
+ createdAt?: number;
300
+ createdBy?: string;
301
+ }
302
+ /**
303
+ * Helper untuk parse group invite info dari binary node response
304
+ */
305
+ export declare function parseGroupInviteInfo(node: any): GroupInviteInfo | null;
306
+ //# sourceMappingURL=community-fixes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"community-fixes.d.ts","sourceRoot":"","sources":["../../src/community/community-fixes.ts"],"names":[],"mappings":"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"}