@queenanya/baileys 9.2.1 → 9.4.1
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 +349 -1171
- package/WAProto/fix-imports.js +74 -18
- package/WAProto/index.js +201 -160
- package/engine-requirements.js +7 -7
- package/lib/Defaults/index.d.ts +19 -0
- package/lib/Defaults/index.d.ts.map +1 -1
- package/lib/Defaults/index.js +32 -6
- package/lib/Defaults/index.js.map +1 -1
- package/lib/Signal/libsignal.d.ts.map +1 -1
- package/lib/Signal/libsignal.js +61 -2
- package/lib/Signal/libsignal.js.map +1 -1
- package/lib/Signal/lid-mapping.d.ts +5 -9
- package/lib/Signal/lid-mapping.d.ts.map +1 -1
- package/lib/Signal/lid-mapping.js +170 -70
- package/lib/Signal/lid-mapping.js.map +1 -1
- package/lib/Socket/Client/websocket.d.ts +1 -1
- package/lib/Socket/Client/websocket.d.ts.map +1 -1
- package/lib/Socket/Client/websocket.js +5 -1
- package/lib/Socket/Client/websocket.js.map +1 -1
- package/lib/Socket/business.d.ts +125 -5
- package/lib/Socket/business.d.ts.map +1 -1
- package/lib/Socket/business.js +11 -8
- package/lib/Socket/business.js.map +1 -1
- package/lib/Socket/chats.d.ts +22 -3
- package/lib/Socket/chats.d.ts.map +1 -1
- package/lib/Socket/chats.js +277 -58
- package/lib/Socket/chats.js.map +1 -1
- package/lib/Socket/communities.d.ts +125 -5
- package/lib/Socket/communities.d.ts.map +1 -1
- package/lib/Socket/groups.d.ts +19 -3
- package/lib/Socket/groups.d.ts.map +1 -1
- package/lib/Socket/groups.js +7 -1
- package/lib/Socket/groups.js.map +1 -1
- package/lib/Socket/index.d.ts +125 -5
- package/lib/Socket/index.d.ts.map +1 -1
- package/lib/Socket/index.js +0 -6
- package/lib/Socket/index.js.map +1 -1
- package/lib/Socket/messages-recv.d.ts +126 -6
- package/lib/Socket/messages-recv.d.ts.map +1 -1
- package/lib/Socket/messages-recv.js +771 -177
- package/lib/Socket/messages-recv.js.map +1 -1
- package/lib/Socket/messages-send.d.ts +129 -7
- package/lib/Socket/messages-send.d.ts.map +1 -1
- package/lib/Socket/messages-send.js +430 -119
- package/lib/Socket/messages-send.js.map +1 -1
- package/lib/Socket/newsletter.d.ts +20 -5
- package/lib/Socket/newsletter.d.ts.map +1 -1
- package/lib/Socket/newsletter.js +2 -47
- package/lib/Socket/newsletter.js.map +1 -1
- package/lib/Socket/socket.d.ts +3 -1
- package/lib/Socket/socket.d.ts.map +1 -1
- package/lib/Socket/socket.js +151 -29
- package/lib/Socket/socket.js.map +1 -1
- package/lib/Types/Auth.d.ts +2 -0
- package/lib/Types/Auth.d.ts.map +1 -1
- package/lib/Types/Call.d.ts +10 -1
- package/lib/Types/Call.d.ts.map +1 -1
- package/lib/Types/Contact.d.ts +2 -0
- package/lib/Types/Contact.d.ts.map +1 -1
- package/lib/Types/Events.d.ts +60 -6
- package/lib/Types/Events.d.ts.map +1 -1
- package/lib/Types/GroupMetadata.d.ts +4 -0
- package/lib/Types/GroupMetadata.d.ts.map +1 -1
- package/lib/Types/Message.d.ts +530 -16
- package/lib/Types/Message.d.ts.map +1 -1
- package/lib/Types/Message.js.map +1 -1
- package/lib/Types/Newsletter.d.ts +32 -45
- package/lib/Types/Newsletter.d.ts.map +1 -1
- package/lib/Types/Newsletter.js +25 -23
- package/lib/Types/Newsletter.js.map +1 -1
- package/lib/Types/State.d.ts +54 -0
- package/lib/Types/State.d.ts.map +1 -1
- package/lib/Types/State.js +42 -0
- package/lib/Types/State.js.map +1 -1
- package/lib/Types/index.d.ts +9 -0
- package/lib/Types/index.d.ts.map +1 -1
- package/lib/Types/index.js.map +1 -1
- package/lib/Utils/auth-utils.d.ts.map +1 -1
- package/lib/Utils/auth-utils.js +53 -20
- package/lib/Utils/auth-utils.js.map +1 -1
- package/lib/Utils/browser-utils.d.ts +13 -0
- package/lib/Utils/browser-utils.d.ts.map +1 -1
- package/lib/Utils/browser-utils.js +90 -10
- package/lib/Utils/browser-utils.js.map +1 -1
- package/lib/Utils/chat-utils.d.ts +30 -0
- package/lib/Utils/chat-utils.d.ts.map +1 -1
- package/lib/Utils/chat-utils.js +134 -59
- package/lib/Utils/chat-utils.js.map +1 -1
- package/lib/Utils/companion-reg-client-utils.d.ts +17 -0
- package/lib/Utils/companion-reg-client-utils.d.ts.map +1 -0
- package/lib/Utils/companion-reg-client-utils.js +34 -0
- package/lib/Utils/companion-reg-client-utils.js.map +1 -0
- package/lib/Utils/crypto.d.ts +4 -8
- package/lib/Utils/crypto.d.ts.map +1 -1
- package/lib/Utils/crypto.js +2 -26
- package/lib/Utils/crypto.js.map +1 -1
- package/lib/Utils/decode-wa-message.d.ts +12 -0
- package/lib/Utils/decode-wa-message.d.ts.map +1 -1
- package/lib/Utils/decode-wa-message.js +16 -0
- package/lib/Utils/decode-wa-message.js.map +1 -1
- package/lib/Utils/event-buffer.d.ts.map +1 -1
- package/lib/Utils/event-buffer.js +43 -8
- package/lib/Utils/event-buffer.js.map +1 -1
- package/lib/Utils/generics.d.ts +3 -1
- package/lib/Utils/generics.d.ts.map +1 -1
- package/lib/Utils/generics.js +17 -4
- package/lib/Utils/generics.js.map +1 -1
- package/lib/Utils/history.d.ts +8 -3
- package/lib/Utils/history.d.ts.map +1 -1
- package/lib/Utils/history.js +60 -16
- package/lib/Utils/history.js.map +1 -1
- package/lib/Utils/identity-change-handler.d.ts +44 -0
- package/lib/Utils/identity-change-handler.d.ts.map +1 -0
- package/lib/Utils/identity-change-handler.js +50 -0
- package/lib/Utils/identity-change-handler.js.map +1 -0
- package/lib/Utils/index.d.ts +6 -0
- package/lib/Utils/index.d.ts.map +1 -1
- package/lib/Utils/index.js +6 -0
- package/lib/Utils/index.js.map +1 -1
- package/lib/Utils/interactive-message.d.ts +201 -0
- package/lib/Utils/interactive-message.d.ts.map +1 -0
- package/lib/Utils/interactive-message.js +256 -0
- package/lib/Utils/interactive-message.js.map +1 -0
- package/lib/Utils/lt-hash.d.ts +7 -12
- package/lib/Utils/lt-hash.d.ts.map +1 -1
- package/lib/Utils/lt-hash.js +2 -42
- package/lib/Utils/lt-hash.js.map +1 -1
- package/lib/Utils/make-mutex.d.ts +1 -0
- package/lib/Utils/make-mutex.d.ts.map +1 -1
- package/lib/Utils/make-mutex.js +20 -27
- package/lib/Utils/make-mutex.js.map +1 -1
- package/lib/Utils/message-composer.d.ts +5 -0
- package/lib/Utils/message-composer.d.ts.map +1 -0
- package/lib/Utils/message-composer.js +5 -0
- package/lib/Utils/message-composer.js.map +1 -0
- package/lib/Utils/message-retry-manager.d.ts +30 -2
- package/lib/Utils/message-retry-manager.d.ts.map +1 -1
- package/lib/Utils/message-retry-manager.js +58 -5
- package/lib/Utils/message-retry-manager.js.map +1 -1
- package/lib/Utils/messages-media.d.ts +35 -5
- package/lib/Utils/messages-media.d.ts.map +1 -1
- package/lib/Utils/messages-media.js +171 -51
- package/lib/Utils/messages-media.js.map +1 -1
- package/lib/Utils/messages.d.ts +2 -0
- package/lib/Utils/messages.d.ts.map +1 -1
- package/lib/Utils/messages.js +475 -35
- package/lib/Utils/messages.js.map +1 -1
- package/lib/Utils/noise-handler.d.ts +4 -4
- package/lib/Utils/noise-handler.d.ts.map +1 -1
- package/lib/Utils/noise-handler.js +139 -85
- package/lib/Utils/noise-handler.js.map +1 -1
- package/lib/Utils/offline-node-processor.d.ts +17 -0
- package/lib/Utils/offline-node-processor.d.ts.map +1 -0
- package/lib/Utils/offline-node-processor.js +40 -0
- package/lib/Utils/offline-node-processor.js.map +1 -0
- package/lib/Utils/process-message.d.ts.map +1 -1
- package/lib/Utils/process-message.js +115 -16
- package/lib/Utils/process-message.js.map +1 -1
- package/lib/Utils/reporting-utils.d.ts +11 -0
- package/lib/Utils/reporting-utils.d.ts.map +1 -0
- package/lib/Utils/reporting-utils.js +258 -0
- package/lib/Utils/reporting-utils.js.map +1 -0
- package/lib/Utils/stanza-ack.d.ts +11 -0
- package/lib/Utils/stanza-ack.d.ts.map +1 -0
- package/lib/Utils/stanza-ack.js +38 -0
- package/lib/Utils/stanza-ack.js.map +1 -0
- package/lib/Utils/sync-action-utils.d.ts +19 -0
- package/lib/Utils/sync-action-utils.d.ts.map +1 -0
- package/lib/Utils/sync-action-utils.js +49 -0
- package/lib/Utils/sync-action-utils.js.map +1 -0
- package/lib/Utils/tc-token-utils.d.ts +37 -0
- package/lib/Utils/tc-token-utils.d.ts.map +1 -0
- package/lib/Utils/tc-token-utils.js +163 -0
- package/lib/Utils/tc-token-utils.js.map +1 -0
- package/lib/Utils/use-mongo-file-auth-state.d.ts +16 -0
- package/lib/Utils/use-mongo-file-auth-state.d.ts.map +1 -0
- package/lib/Utils/use-mongo-file-auth-state.js +60 -0
- package/lib/Utils/use-mongo-file-auth-state.js.map +1 -0
- package/lib/Utils/use-multi-file-auth-state.js +1 -1
- package/lib/Utils/use-multi-file-auth-state.js.map +1 -1
- package/lib/Utils/use-single-file-auth-state.d.ts.map +1 -1
- package/lib/Utils/use-single-file-auth-state.js.map +1 -1
- package/lib/Utils/validate-connection.d.ts.map +1 -1
- package/lib/Utils/validate-connection.js +11 -1
- package/lib/Utils/validate-connection.js.map +1 -1
- package/lib/WABinary/decode.d.ts.map +1 -1
- package/lib/WABinary/decode.js +24 -0
- package/lib/WABinary/decode.js.map +1 -1
- package/lib/WABinary/encode.js +5 -1
- package/lib/WABinary/encode.js.map +1 -1
- package/lib/WABinary/generic-utils.d.ts +10 -1
- package/lib/WABinary/generic-utils.d.ts.map +1 -1
- package/lib/WABinary/generic-utils.js +42 -8
- package/lib/WABinary/generic-utils.js.map +1 -1
- package/lib/WABinary/jid-utils.js.map +1 -1
- package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -1
- package/lib/WAUSync/Protocols/USyncContactProtocol.js +26 -3
- package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +1 -1
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts +10 -0
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts.map +1 -0
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +25 -0
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.js.map +1 -0
- package/lib/WAUSync/Protocols/index.d.ts +1 -0
- package/lib/WAUSync/Protocols/index.d.ts.map +1 -1
- package/lib/WAUSync/Protocols/index.js +1 -0
- package/lib/WAUSync/Protocols/index.js.map +1 -1
- package/lib/WAUSync/USyncQuery.d.ts +1 -0
- package/lib/WAUSync/USyncQuery.d.ts.map +1 -1
- package/lib/WAUSync/USyncQuery.js +6 -2
- package/lib/WAUSync/USyncQuery.js.map +1 -1
- package/lib/WAUSync/USyncUser.d.ts +4 -0
- package/lib/WAUSync/USyncUser.d.ts.map +1 -1
- package/lib/WAUSync/USyncUser.js +8 -0
- package/lib/WAUSync/USyncUser.js.map +1 -1
- package/lib/addons/anti-delete.d.ts +72 -0
- package/lib/addons/anti-delete.d.ts.map +1 -0
- package/lib/addons/anti-delete.js +165 -0
- package/lib/addons/anti-delete.js.map +1 -0
- package/lib/addons/auto-reply.d.ts +67 -0
- package/lib/addons/auto-reply.d.ts.map +1 -0
- package/lib/addons/auto-reply.js +145 -0
- package/lib/addons/auto-reply.js.map +1 -0
- package/lib/addons/browser-presets.d.ts +16 -0
- package/lib/addons/browser-presets.d.ts.map +1 -0
- package/lib/addons/browser-presets.js +24 -0
- package/lib/addons/browser-presets.js.map +1 -0
- package/lib/addons/button-sender.d.ts +260 -0
- package/lib/addons/button-sender.d.ts.map +1 -0
- package/lib/addons/button-sender.js +771 -0
- package/lib/addons/button-sender.js.map +1 -0
- package/lib/addons/call-handler.d.ts +79 -0
- package/lib/addons/call-handler.d.ts.map +1 -0
- package/lib/addons/call-handler.js +342 -0
- package/lib/addons/call-handler.js.map +1 -0
- package/lib/addons/from-chats.d.ts +30 -0
- package/lib/addons/from-chats.d.ts.map +1 -0
- package/lib/addons/from-chats.js +38 -0
- package/lib/addons/from-chats.js.map +1 -0
- package/lib/addons/from-messages-recv.d.ts +59 -0
- package/lib/addons/from-messages-recv.d.ts.map +1 -0
- package/lib/addons/from-messages-recv.js +326 -0
- package/lib/addons/from-messages-recv.js.map +1 -0
- package/lib/addons/from-messages-send.d.ts +50 -0
- package/lib/addons/from-messages-send.d.ts.map +1 -0
- package/lib/addons/from-messages-send.js +148 -0
- package/lib/addons/from-messages-send.js.map +1 -0
- package/lib/addons/from-messages.d.ts +52 -0
- package/lib/addons/from-messages.d.ts.map +1 -0
- package/lib/addons/from-messages.js +304 -0
- package/lib/addons/from-messages.js.map +1 -0
- package/lib/addons/index.d.ts +67 -0
- package/lib/addons/index.d.ts.map +1 -0
- package/lib/addons/index.js +86 -0
- package/lib/addons/index.js.map +1 -0
- package/lib/addons/interactive-message.d.ts +201 -0
- package/lib/addons/interactive-message.d.ts.map +1 -0
- package/lib/addons/interactive-message.js +256 -0
- package/lib/addons/interactive-message.js.map +1 -0
- package/lib/addons/jid-plot.d.ts +49 -0
- package/lib/addons/jid-plot.d.ts.map +1 -0
- package/lib/addons/jid-plot.js +84 -0
- package/lib/addons/jid-plot.js.map +1 -0
- package/lib/addons/jid-plotting.d.ts +54 -0
- package/lib/addons/jid-plotting.d.ts.map +1 -0
- package/lib/addons/jid-plotting.js +150 -0
- package/lib/addons/jid-plotting.js.map +1 -0
- package/lib/addons/lid-support.d.ts +41 -0
- package/lib/addons/lid-support.d.ts.map +1 -0
- package/lib/addons/lid-support.js +42 -0
- package/lib/addons/lid-support.js.map +1 -0
- package/lib/addons/message-composer.d.ts +142 -0
- package/lib/addons/message-composer.d.ts.map +1 -0
- package/lib/addons/message-composer.js +377 -0
- package/lib/addons/message-composer.js.map +1 -0
- package/lib/addons/message-scheduler.d.ts +77 -0
- package/lib/addons/message-scheduler.d.ts.map +1 -0
- package/lib/addons/message-scheduler.js +108 -0
- package/lib/addons/message-scheduler.js.map +1 -0
- package/lib/addons/message-search.d.ts +51 -0
- package/lib/addons/message-search.d.ts.map +1 -0
- package/lib/addons/message-search.js +171 -0
- package/lib/addons/message-search.js.map +1 -0
- package/lib/addons/message-utils.d.ts +88 -0
- package/lib/addons/message-utils.d.ts.map +1 -0
- package/lib/addons/message-utils.js +292 -0
- package/lib/addons/message-utils.js.map +1 -0
- package/lib/addons/outgoing-calls.d.ts +64 -0
- package/lib/addons/outgoing-calls.d.ts.map +1 -0
- package/lib/addons/outgoing-calls.js +139 -0
- package/lib/addons/outgoing-calls.js.map +1 -0
- package/lib/addons/pairing-fix.d.ts +31 -0
- package/lib/addons/pairing-fix.d.ts.map +1 -0
- package/lib/addons/pairing-fix.js +74 -0
- package/lib/addons/pairing-fix.js.map +1 -0
- package/lib/addons/past-participants.d.ts +42 -0
- package/lib/addons/past-participants.d.ts.map +1 -0
- package/lib/addons/past-participants.js +41 -0
- package/lib/addons/past-participants.js.map +1 -0
- package/lib/addons/rich-response.d.ts +111 -0
- package/lib/addons/rich-response.d.ts.map +1 -0
- package/lib/addons/rich-response.js +152 -0
- package/lib/addons/rich-response.js.map +1 -0
- package/lib/addons/scheduling.d.ts +41 -0
- package/lib/addons/scheduling.d.ts.map +1 -0
- package/lib/addons/scheduling.js +110 -0
- package/lib/addons/scheduling.js.map +1 -0
- package/lib/addons/status-posting.d.ts +177 -0
- package/lib/addons/status-posting.d.ts.map +1 -0
- package/lib/addons/status-posting.js +240 -0
- package/lib/addons/status-posting.js.map +1 -0
- package/lib/addons/stickerpack.d.ts +37 -0
- package/lib/addons/stickerpack.d.ts.map +1 -0
- package/lib/addons/stickerpack.js +39 -0
- package/lib/addons/stickerpack.js.map +1 -0
- package/lib/addons/templates.d.ts +72 -0
- package/lib/addons/templates.d.ts.map +1 -0
- package/lib/addons/templates.js +145 -0
- package/lib/addons/templates.js.map +1 -0
- package/lib/addons/vcard.d.ts +59 -0
- package/lib/addons/vcard.d.ts.map +1 -0
- package/lib/addons/vcard.js +88 -0
- package/lib/addons/vcard.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/package.json +6 -3
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { proto } from '../../WAProto/index.js';
|
|
2
|
+
import type { MediaGenerationOptions, WAMediaUpload } from '../Types/index.js';
|
|
3
|
+
export type InteractiveButton = {
|
|
4
|
+
buttonId?: string;
|
|
5
|
+
displayText: string;
|
|
6
|
+
};
|
|
7
|
+
export type InteractiveButtonMessageContent = {
|
|
8
|
+
/** Body text of the message */
|
|
9
|
+
body: string;
|
|
10
|
+
/** Footer text */
|
|
11
|
+
footer?: string;
|
|
12
|
+
/** Buttons to display */
|
|
13
|
+
buttons: InteractiveButton[];
|
|
14
|
+
/** Optional: plain text title (uses TEXT header type) */
|
|
15
|
+
title?: string;
|
|
16
|
+
/** Optional: image header */
|
|
17
|
+
headerImage?: WAMediaUpload;
|
|
18
|
+
/** Optional: video header */
|
|
19
|
+
headerVideo?: WAMediaUpload;
|
|
20
|
+
/** Optional: document header */
|
|
21
|
+
headerDocument?: WAMediaUpload & {
|
|
22
|
+
filename?: string;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export type ListRow = {
|
|
26
|
+
rowId: string;
|
|
27
|
+
title: string;
|
|
28
|
+
description?: string;
|
|
29
|
+
};
|
|
30
|
+
export type ListSection = {
|
|
31
|
+
title: string;
|
|
32
|
+
rows: ListRow[];
|
|
33
|
+
};
|
|
34
|
+
export type InteractiveListMessageContent = {
|
|
35
|
+
title: string;
|
|
36
|
+
description?: string;
|
|
37
|
+
buttonText: string;
|
|
38
|
+
footer?: string;
|
|
39
|
+
sections: ListSection[];
|
|
40
|
+
};
|
|
41
|
+
export type TemplateHydratedButton = {
|
|
42
|
+
index: number;
|
|
43
|
+
quickReplyButton?: {
|
|
44
|
+
displayText: string;
|
|
45
|
+
id: string;
|
|
46
|
+
};
|
|
47
|
+
urlButton?: {
|
|
48
|
+
displayText: string;
|
|
49
|
+
url: string;
|
|
50
|
+
};
|
|
51
|
+
callButton?: {
|
|
52
|
+
displayText: string;
|
|
53
|
+
phoneNumber: string;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
export type TemplateMessageContent = {
|
|
57
|
+
body: string;
|
|
58
|
+
footer?: string;
|
|
59
|
+
title?: string;
|
|
60
|
+
buttons: TemplateHydratedButton[];
|
|
61
|
+
headerImage?: WAMediaUpload;
|
|
62
|
+
headerVideo?: WAMediaUpload;
|
|
63
|
+
headerLocation?: {
|
|
64
|
+
latitude: number;
|
|
65
|
+
longitude: number;
|
|
66
|
+
name?: string;
|
|
67
|
+
address?: string;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
export type NativeFlowButton = {
|
|
71
|
+
name: string;
|
|
72
|
+
buttonParamsJson: string;
|
|
73
|
+
};
|
|
74
|
+
export type NativeFlowOptions = {
|
|
75
|
+
footer?: string;
|
|
76
|
+
header?: {
|
|
77
|
+
title?: string;
|
|
78
|
+
subtitle?: string;
|
|
79
|
+
hasMediaAttachment?: boolean;
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
export type CopyCodeButtonOptions = NativeFlowOptions & {
|
|
83
|
+
displayText?: string;
|
|
84
|
+
};
|
|
85
|
+
export type UrlButton = {
|
|
86
|
+
displayText: string;
|
|
87
|
+
url: string;
|
|
88
|
+
merchantUrl?: string;
|
|
89
|
+
};
|
|
90
|
+
export type UrlButtonOptions = {
|
|
91
|
+
footer?: string;
|
|
92
|
+
title?: string;
|
|
93
|
+
};
|
|
94
|
+
export type QuickReplyButton = {
|
|
95
|
+
displayText: string;
|
|
96
|
+
id: string;
|
|
97
|
+
};
|
|
98
|
+
export type QuickReplyOptions = {
|
|
99
|
+
footer?: string;
|
|
100
|
+
title?: string;
|
|
101
|
+
};
|
|
102
|
+
export type CombinedButton = {
|
|
103
|
+
type: 'url';
|
|
104
|
+
displayText: string;
|
|
105
|
+
url: string;
|
|
106
|
+
} | {
|
|
107
|
+
type: 'reply';
|
|
108
|
+
displayText: string;
|
|
109
|
+
id: string;
|
|
110
|
+
} | {
|
|
111
|
+
type: 'copy';
|
|
112
|
+
displayText: string;
|
|
113
|
+
copyCode: string;
|
|
114
|
+
} | {
|
|
115
|
+
type: 'call';
|
|
116
|
+
displayText: string;
|
|
117
|
+
phoneNumber: string;
|
|
118
|
+
};
|
|
119
|
+
export type CombinedButtonOptions = {
|
|
120
|
+
footer?: string;
|
|
121
|
+
title?: string;
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* Generate a classic WhatsApp ButtonsMessage (up to 3 buttons).
|
|
125
|
+
* Works via `sendMessage(jid, content.buttonsMessage)`.
|
|
126
|
+
*/
|
|
127
|
+
export declare const generateInteractiveButtonMessage: (content: InteractiveButtonMessageContent, options?: MediaGenerationOptions) => Promise<{
|
|
128
|
+
buttonsMessage: proto.Message.IButtonsMessage;
|
|
129
|
+
}>;
|
|
130
|
+
/**
|
|
131
|
+
* Generate a single-select list message.
|
|
132
|
+
* Works via `sendMessage(jid, content.listMessage)`.
|
|
133
|
+
*/
|
|
134
|
+
export declare const generateInteractiveListMessage: (content: InteractiveListMessageContent) => {
|
|
135
|
+
listMessage: proto.Message.IListMessage;
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* Generate a template message with quick-reply / URL / call buttons.
|
|
139
|
+
* Works via `sendMessage(jid, content.templateMessage)`.
|
|
140
|
+
*/
|
|
141
|
+
export declare const generateTemplateMessage: (content: TemplateMessageContent, options?: MediaGenerationOptions) => Promise<{
|
|
142
|
+
templateMessage: proto.Message.ITemplateMessage;
|
|
143
|
+
}>;
|
|
144
|
+
/**
|
|
145
|
+
* Core builder: generate a native-flow interactiveMessage with raw button definitions.
|
|
146
|
+
* All higher-level helpers (generateUrlButtonMessage, generateQuickReplyButtons, etc.) call this.
|
|
147
|
+
*/
|
|
148
|
+
export declare const generateNativeFlowMessage: (body: string, buttons: NativeFlowButton[], options?: NativeFlowOptions) => {
|
|
149
|
+
interactiveMessage: proto.Message.IInteractiveMessage;
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Button that copies a code to the clipboard when tapped.
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* const msg = generateCopyCodeButton('Here is your OTP', '123456')
|
|
156
|
+
* await sock.sendMessage(jid, msg.interactiveMessage)
|
|
157
|
+
*/
|
|
158
|
+
export declare const generateCopyCodeButton: (body: string, copyCode: string, displayText?: string, options?: CopyCodeButtonOptions) => {
|
|
159
|
+
interactiveMessage: proto.Message.IInteractiveMessage;
|
|
160
|
+
};
|
|
161
|
+
/**
|
|
162
|
+
* One or more CTA URL buttons (opens a link in browser).
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* const msg = generateUrlButtonMessage('Visit us!', [
|
|
166
|
+
* { displayText: 'Open Website', url: 'https://example.com' }
|
|
167
|
+
* ])
|
|
168
|
+
* await sock.sendMessage(jid, msg.interactiveMessage)
|
|
169
|
+
*/
|
|
170
|
+
export declare const generateUrlButtonMessage: (body: string, buttons: UrlButton[], options?: UrlButtonOptions) => {
|
|
171
|
+
interactiveMessage: proto.Message.IInteractiveMessage;
|
|
172
|
+
};
|
|
173
|
+
/**
|
|
174
|
+
* One or more quick-reply buttons (sends a reply when tapped).
|
|
175
|
+
*
|
|
176
|
+
* @example
|
|
177
|
+
* const msg = generateQuickReplyButtons('Choose an option:', [
|
|
178
|
+
* { displayText: 'Yes', id: 'yes' },
|
|
179
|
+
* { displayText: 'No', id: 'no' }
|
|
180
|
+
* ])
|
|
181
|
+
* await sock.sendMessage(jid, msg.interactiveMessage)
|
|
182
|
+
*/
|
|
183
|
+
export declare const generateQuickReplyButtons: (body: string, buttons: QuickReplyButton[], options?: QuickReplyOptions) => {
|
|
184
|
+
interactiveMessage: proto.Message.IInteractiveMessage;
|
|
185
|
+
};
|
|
186
|
+
/**
|
|
187
|
+
* Mix of url / reply / copy / call buttons in one message.
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
* const msg = generateCombinedButtons('What do you want?', [
|
|
191
|
+
* { type: 'url', displayText: 'Visit', url: 'https://example.com' },
|
|
192
|
+
* { type: 'reply', displayText: 'Ping', id: 'ping' },
|
|
193
|
+
* { type: 'copy', displayText: 'Copy', copyCode: 'ABC123' },
|
|
194
|
+
* { type: 'call', displayText: 'Call', phoneNumber: '+911234567890' }
|
|
195
|
+
* ])
|
|
196
|
+
* await sock.sendMessage(jid, msg.interactiveMessage)
|
|
197
|
+
*/
|
|
198
|
+
export declare const generateCombinedButtons: (body: string, buttons: CombinedButton[], options?: CombinedButtonOptions) => {
|
|
199
|
+
interactiveMessage: proto.Message.IInteractiveMessage;
|
|
200
|
+
};
|
|
201
|
+
//# sourceMappingURL=interactive-message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive-message.d.ts","sourceRoot":"","sources":["../../src/addons/interactive-message.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import { proto } from '../../WAProto/index.js';
|
|
2
|
+
import { prepareWAMessageMedia } from '../Utils/messages.js';
|
|
3
|
+
// ─── Generators ────────────────────────────────────────────────────────────────
|
|
4
|
+
/**
|
|
5
|
+
* Generate a classic WhatsApp ButtonsMessage (up to 3 buttons).
|
|
6
|
+
* Works via `sendMessage(jid, content.buttonsMessage)`.
|
|
7
|
+
*/
|
|
8
|
+
export const generateInteractiveButtonMessage = async (content, options) => {
|
|
9
|
+
const buttons = content.buttons.map((btn, idx) => ({
|
|
10
|
+
buttonId: btn.buttonId ?? `btn-${idx}`,
|
|
11
|
+
buttonText: { displayText: btn.displayText },
|
|
12
|
+
type: proto.Message.ButtonsMessage.Button.Type.RESPONSE,
|
|
13
|
+
nativeFlowInfo: undefined
|
|
14
|
+
}));
|
|
15
|
+
const buttonsMessage = {
|
|
16
|
+
contentText: content.body,
|
|
17
|
+
footerText: content.footer,
|
|
18
|
+
buttons,
|
|
19
|
+
headerType: proto.Message.ButtonsMessage.HeaderType.EMPTY
|
|
20
|
+
};
|
|
21
|
+
if (content.headerImage && options) {
|
|
22
|
+
const media = await prepareWAMessageMedia({ image: content.headerImage }, options);
|
|
23
|
+
buttonsMessage.imageMessage = media.imageMessage;
|
|
24
|
+
buttonsMessage.headerType = proto.Message.ButtonsMessage.HeaderType.IMAGE;
|
|
25
|
+
}
|
|
26
|
+
else if (content.headerVideo && options) {
|
|
27
|
+
const media = await prepareWAMessageMedia({ video: content.headerVideo }, options);
|
|
28
|
+
buttonsMessage.videoMessage = media.videoMessage;
|
|
29
|
+
buttonsMessage.headerType = proto.Message.ButtonsMessage.HeaderType.VIDEO;
|
|
30
|
+
}
|
|
31
|
+
else if (content.headerDocument && options) {
|
|
32
|
+
const doc = content.headerDocument;
|
|
33
|
+
const media = await prepareWAMessageMedia({ document: doc, mimetype: 'application/pdf', fileName: doc.filename }, options);
|
|
34
|
+
buttonsMessage.documentMessage = media.documentMessage;
|
|
35
|
+
buttonsMessage.headerType = proto.Message.ButtonsMessage.HeaderType.DOCUMENT;
|
|
36
|
+
}
|
|
37
|
+
else if (content.title) {
|
|
38
|
+
buttonsMessage.text = content.title;
|
|
39
|
+
buttonsMessage.headerType = proto.Message.ButtonsMessage.HeaderType.TEXT;
|
|
40
|
+
}
|
|
41
|
+
return { buttonsMessage };
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Generate a single-select list message.
|
|
45
|
+
* Works via `sendMessage(jid, content.listMessage)`.
|
|
46
|
+
*/
|
|
47
|
+
export const generateInteractiveListMessage = (content) => {
|
|
48
|
+
const sections = content.sections.map(section => ({
|
|
49
|
+
title: section.title,
|
|
50
|
+
rows: section.rows.map(row => ({
|
|
51
|
+
rowId: row.rowId,
|
|
52
|
+
title: row.title,
|
|
53
|
+
description: row.description ?? ''
|
|
54
|
+
}))
|
|
55
|
+
}));
|
|
56
|
+
return {
|
|
57
|
+
listMessage: {
|
|
58
|
+
title: content.title,
|
|
59
|
+
description: content.description ?? '',
|
|
60
|
+
buttonText: content.buttonText,
|
|
61
|
+
footerText: content.footer ?? '',
|
|
62
|
+
listType: proto.Message.ListMessage.ListType.SINGLE_SELECT,
|
|
63
|
+
sections
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Generate a template message with quick-reply / URL / call buttons.
|
|
69
|
+
* Works via `sendMessage(jid, content.templateMessage)`.
|
|
70
|
+
*/
|
|
71
|
+
export const generateTemplateMessage = async (content, options) => {
|
|
72
|
+
const hydratedButtons = content.buttons.map(btn => {
|
|
73
|
+
const hydratedBtn = { index: btn.index };
|
|
74
|
+
if (btn.quickReplyButton) {
|
|
75
|
+
hydratedBtn.quickReplyButton = {
|
|
76
|
+
displayText: btn.quickReplyButton.displayText,
|
|
77
|
+
id: btn.quickReplyButton.id
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
else if (btn.urlButton) {
|
|
81
|
+
hydratedBtn.urlButton = {
|
|
82
|
+
displayText: btn.urlButton.displayText,
|
|
83
|
+
url: btn.urlButton.url
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
else if (btn.callButton) {
|
|
87
|
+
hydratedBtn.callButton = {
|
|
88
|
+
displayText: btn.callButton.displayText,
|
|
89
|
+
phoneNumber: btn.callButton.phoneNumber
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
return hydratedBtn;
|
|
93
|
+
});
|
|
94
|
+
const hydratedTemplate = {
|
|
95
|
+
hydratedContentText: content.body,
|
|
96
|
+
hydratedFooterText: content.footer,
|
|
97
|
+
hydratedButtons
|
|
98
|
+
};
|
|
99
|
+
if (content.title) {
|
|
100
|
+
hydratedTemplate.hydratedTitleText = content.title;
|
|
101
|
+
}
|
|
102
|
+
if (content.headerImage && options) {
|
|
103
|
+
const media = await prepareWAMessageMedia({ image: content.headerImage }, options);
|
|
104
|
+
hydratedTemplate.imageMessage = media.imageMessage;
|
|
105
|
+
}
|
|
106
|
+
else if (content.headerVideo && options) {
|
|
107
|
+
const media = await prepareWAMessageMedia({ video: content.headerVideo }, options);
|
|
108
|
+
hydratedTemplate.videoMessage = media.videoMessage;
|
|
109
|
+
}
|
|
110
|
+
else if (content.headerLocation) {
|
|
111
|
+
hydratedTemplate.locationMessage = {
|
|
112
|
+
degreesLatitude: content.headerLocation.latitude,
|
|
113
|
+
degreesLongitude: content.headerLocation.longitude,
|
|
114
|
+
name: content.headerLocation.name,
|
|
115
|
+
address: content.headerLocation.address
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
templateMessage: {
|
|
120
|
+
hydratedTemplate
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Core builder: generate a native-flow interactiveMessage with raw button definitions.
|
|
126
|
+
* All higher-level helpers (generateUrlButtonMessage, generateQuickReplyButtons, etc.) call this.
|
|
127
|
+
*/
|
|
128
|
+
export const generateNativeFlowMessage = (body, buttons, options) => {
|
|
129
|
+
return {
|
|
130
|
+
interactiveMessage: {
|
|
131
|
+
body: { text: body },
|
|
132
|
+
footer: options?.footer ? { text: options.footer } : undefined,
|
|
133
|
+
header: options?.header
|
|
134
|
+
? {
|
|
135
|
+
title: options.header.title,
|
|
136
|
+
subtitle: options.header.subtitle,
|
|
137
|
+
hasMediaAttachment: options.header.hasMediaAttachment ?? false
|
|
138
|
+
}
|
|
139
|
+
: undefined,
|
|
140
|
+
nativeFlowMessage: {
|
|
141
|
+
buttons: buttons.map(btn => ({
|
|
142
|
+
name: btn.name,
|
|
143
|
+
buttonParamsJson: btn.buttonParamsJson
|
|
144
|
+
})),
|
|
145
|
+
messageParamsJson: ''
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* Button that copies a code to the clipboard when tapped.
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* const msg = generateCopyCodeButton('Here is your OTP', '123456')
|
|
155
|
+
* await sock.sendMessage(jid, msg.interactiveMessage)
|
|
156
|
+
*/
|
|
157
|
+
export const generateCopyCodeButton = (body, copyCode, displayText = 'Copy Code', options) => {
|
|
158
|
+
return generateNativeFlowMessage(body, [
|
|
159
|
+
{
|
|
160
|
+
name: 'cta_copy',
|
|
161
|
+
buttonParamsJson: JSON.stringify({ display_text: displayText, copy_code: copyCode })
|
|
162
|
+
}
|
|
163
|
+
], options);
|
|
164
|
+
};
|
|
165
|
+
/**
|
|
166
|
+
* One or more CTA URL buttons (opens a link in browser).
|
|
167
|
+
*
|
|
168
|
+
* @example
|
|
169
|
+
* const msg = generateUrlButtonMessage('Visit us!', [
|
|
170
|
+
* { displayText: 'Open Website', url: 'https://example.com' }
|
|
171
|
+
* ])
|
|
172
|
+
* await sock.sendMessage(jid, msg.interactiveMessage)
|
|
173
|
+
*/
|
|
174
|
+
export const generateUrlButtonMessage = (body, buttons, options) => {
|
|
175
|
+
const nativeButtons = buttons.map(btn => ({
|
|
176
|
+
name: 'cta_url',
|
|
177
|
+
buttonParamsJson: JSON.stringify({
|
|
178
|
+
display_text: btn.displayText,
|
|
179
|
+
url: btn.url,
|
|
180
|
+
merchant_url: btn.merchantUrl
|
|
181
|
+
})
|
|
182
|
+
}));
|
|
183
|
+
return generateNativeFlowMessage(body, nativeButtons, {
|
|
184
|
+
footer: options?.footer,
|
|
185
|
+
header: options?.title ? { title: options.title } : undefined
|
|
186
|
+
});
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* One or more quick-reply buttons (sends a reply when tapped).
|
|
190
|
+
*
|
|
191
|
+
* @example
|
|
192
|
+
* const msg = generateQuickReplyButtons('Choose an option:', [
|
|
193
|
+
* { displayText: 'Yes', id: 'yes' },
|
|
194
|
+
* { displayText: 'No', id: 'no' }
|
|
195
|
+
* ])
|
|
196
|
+
* await sock.sendMessage(jid, msg.interactiveMessage)
|
|
197
|
+
*/
|
|
198
|
+
export const generateQuickReplyButtons = (body, buttons, options) => {
|
|
199
|
+
const nativeButtons = buttons.map(btn => ({
|
|
200
|
+
name: 'quick_reply',
|
|
201
|
+
buttonParamsJson: JSON.stringify({ display_text: btn.displayText, id: btn.id })
|
|
202
|
+
}));
|
|
203
|
+
return generateNativeFlowMessage(body, nativeButtons, {
|
|
204
|
+
footer: options?.footer,
|
|
205
|
+
header: options?.title ? { title: options.title } : undefined
|
|
206
|
+
});
|
|
207
|
+
};
|
|
208
|
+
/**
|
|
209
|
+
* Mix of url / reply / copy / call buttons in one message.
|
|
210
|
+
*
|
|
211
|
+
* @example
|
|
212
|
+
* const msg = generateCombinedButtons('What do you want?', [
|
|
213
|
+
* { type: 'url', displayText: 'Visit', url: 'https://example.com' },
|
|
214
|
+
* { type: 'reply', displayText: 'Ping', id: 'ping' },
|
|
215
|
+
* { type: 'copy', displayText: 'Copy', copyCode: 'ABC123' },
|
|
216
|
+
* { type: 'call', displayText: 'Call', phoneNumber: '+911234567890' }
|
|
217
|
+
* ])
|
|
218
|
+
* await sock.sendMessage(jid, msg.interactiveMessage)
|
|
219
|
+
*/
|
|
220
|
+
export const generateCombinedButtons = (body, buttons, options) => {
|
|
221
|
+
const nativeButtons = buttons.map(btn => {
|
|
222
|
+
switch (btn.type) {
|
|
223
|
+
case 'url':
|
|
224
|
+
return {
|
|
225
|
+
name: 'cta_url',
|
|
226
|
+
buttonParamsJson: JSON.stringify({ display_text: btn.displayText, url: btn.url })
|
|
227
|
+
};
|
|
228
|
+
case 'reply':
|
|
229
|
+
return {
|
|
230
|
+
name: 'quick_reply',
|
|
231
|
+
buttonParamsJson: JSON.stringify({ display_text: btn.displayText, id: btn.id })
|
|
232
|
+
};
|
|
233
|
+
case 'copy':
|
|
234
|
+
return {
|
|
235
|
+
name: 'cta_copy',
|
|
236
|
+
buttonParamsJson: JSON.stringify({
|
|
237
|
+
display_text: btn.displayText,
|
|
238
|
+
copy_code: btn.copyCode
|
|
239
|
+
})
|
|
240
|
+
};
|
|
241
|
+
case 'call':
|
|
242
|
+
return {
|
|
243
|
+
name: 'cta_call',
|
|
244
|
+
buttonParamsJson: JSON.stringify({
|
|
245
|
+
display_text: btn.displayText,
|
|
246
|
+
phone_number: btn.phoneNumber
|
|
247
|
+
})
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
return generateNativeFlowMessage(body, nativeButtons, {
|
|
252
|
+
footer: options?.footer,
|
|
253
|
+
header: options?.title ? { title: options.title } : undefined
|
|
254
|
+
});
|
|
255
|
+
};
|
|
256
|
+
//# sourceMappingURL=interactive-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive-message.js","sourceRoot":"","sources":["../../src/addons/interactive-message.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JID Plotting & LID Support utilities
|
|
3
|
+
* Maps between PN JIDs (@s.whatsapp.net) and LID JIDs (@lid)
|
|
4
|
+
* Useful for resolving JIDs in groups that use LID addressing
|
|
5
|
+
*/
|
|
6
|
+
export type JidPlotEntry = {
|
|
7
|
+
pnJid: string;
|
|
8
|
+
lidJid: string;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Register a PN <-> LID mapping in the plot
|
|
12
|
+
*/
|
|
13
|
+
export declare const plotJidPair: (pnJid: string, lidJid: string) => void;
|
|
14
|
+
/**
|
|
15
|
+
* Batch register multiple PN <-> LID pairs
|
|
16
|
+
*/
|
|
17
|
+
export declare const plotJidPairs: (entries: JidPlotEntry[]) => void;
|
|
18
|
+
/**
|
|
19
|
+
* Resolve a JID to its PN form (@s.whatsapp.net)
|
|
20
|
+
* If already PN, returns as-is. If LID, looks up the mapped PN.
|
|
21
|
+
*/
|
|
22
|
+
export declare const resolvePnJid: (jid: string) => string | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Resolve a JID to its LID form (@lid)
|
|
25
|
+
* If already LID, returns as-is. If PN, looks up the mapped LID.
|
|
26
|
+
*/
|
|
27
|
+
export declare const resolveLidJid: (jid: string) => string | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Check whether a JID has a known LID counterpart in the plot
|
|
30
|
+
*/
|
|
31
|
+
export declare const hasLidMapping: (pnJid: string) => boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Check whether a LID JID has a known PN counterpart in the plot
|
|
34
|
+
*/
|
|
35
|
+
export declare const hasPnMapping: (lidJid: string) => boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Get all registered plot entries
|
|
38
|
+
*/
|
|
39
|
+
export declare const getAllJidPlotEntries: () => JidPlotEntry[];
|
|
40
|
+
/**
|
|
41
|
+
* Clear all JID plot mappings
|
|
42
|
+
*/
|
|
43
|
+
export declare const clearJidPlot: () => void;
|
|
44
|
+
/**
|
|
45
|
+
* Normalize a JID — convert @c.us to @s.whatsapp.net,
|
|
46
|
+
* strip device suffix, and resolve LID to PN if mapped.
|
|
47
|
+
*/
|
|
48
|
+
export declare const normalizeJidForSend: (jid: string) => string;
|
|
49
|
+
//# sourceMappingURL=jid-plot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jid-plot.d.ts","sourceRoot":"","sources":["../../src/addons/jid-plot.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACd,CAAA;AAKD;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAG,IAG3D,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,YAAY,EAAE,KAAG,IAItD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,SAInD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,SAIpD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,OAAgC,CAAA;AAE9E;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,KAAG,OAAiC,CAAA;AAE/E;;GAEG;AACH,eAAO,MAAM,oBAAoB,QAAO,YAAY,EASnD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,QAAO,IAE/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,KAAK,MAAM,KAAG,MAMjD,CAAA"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JID Plotting & LID Support utilities
|
|
3
|
+
* Maps between PN JIDs (@s.whatsapp.net) and LID JIDs (@lid)
|
|
4
|
+
* Useful for resolving JIDs in groups that use LID addressing
|
|
5
|
+
*/
|
|
6
|
+
import { isLidUser, isPnUser, jidDecode, jidEncode } from '../WABinary/index.js';
|
|
7
|
+
/** In-memory JID plot map: pnJid -> lidJid and lidJid -> pnJid */
|
|
8
|
+
const jidPlotMap = new Map();
|
|
9
|
+
/**
|
|
10
|
+
* Register a PN <-> LID mapping in the plot
|
|
11
|
+
*/
|
|
12
|
+
export const plotJidPair = (pnJid, lidJid) => {
|
|
13
|
+
jidPlotMap.set(pnJid, lidJid);
|
|
14
|
+
jidPlotMap.set(lidJid, pnJid);
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Batch register multiple PN <-> LID pairs
|
|
18
|
+
*/
|
|
19
|
+
export const plotJidPairs = (entries) => {
|
|
20
|
+
for (const { pnJid, lidJid } of entries) {
|
|
21
|
+
plotJidPair(pnJid, lidJid);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Resolve a JID to its PN form (@s.whatsapp.net)
|
|
26
|
+
* If already PN, returns as-is. If LID, looks up the mapped PN.
|
|
27
|
+
*/
|
|
28
|
+
export const resolvePnJid = (jid) => {
|
|
29
|
+
if (isPnUser(jid))
|
|
30
|
+
return jid;
|
|
31
|
+
if (isLidUser(jid))
|
|
32
|
+
return jidPlotMap.get(jid);
|
|
33
|
+
return jid;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Resolve a JID to its LID form (@lid)
|
|
37
|
+
* If already LID, returns as-is. If PN, looks up the mapped LID.
|
|
38
|
+
*/
|
|
39
|
+
export const resolveLidJid = (jid) => {
|
|
40
|
+
if (isLidUser(jid))
|
|
41
|
+
return jid;
|
|
42
|
+
if (isPnUser(jid))
|
|
43
|
+
return jidPlotMap.get(jid);
|
|
44
|
+
return jid;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Check whether a JID has a known LID counterpart in the plot
|
|
48
|
+
*/
|
|
49
|
+
export const hasLidMapping = (pnJid) => jidPlotMap.has(pnJid);
|
|
50
|
+
/**
|
|
51
|
+
* Check whether a LID JID has a known PN counterpart in the plot
|
|
52
|
+
*/
|
|
53
|
+
export const hasPnMapping = (lidJid) => jidPlotMap.has(lidJid);
|
|
54
|
+
/**
|
|
55
|
+
* Get all registered plot entries
|
|
56
|
+
*/
|
|
57
|
+
export const getAllJidPlotEntries = () => {
|
|
58
|
+
const entries = [];
|
|
59
|
+
for (const [key, value] of jidPlotMap.entries()) {
|
|
60
|
+
if (isPnUser(key)) {
|
|
61
|
+
entries.push({ pnJid: key, lidJid: value });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return entries;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Clear all JID plot mappings
|
|
68
|
+
*/
|
|
69
|
+
export const clearJidPlot = () => {
|
|
70
|
+
jidPlotMap.clear();
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Normalize a JID — convert @c.us to @s.whatsapp.net,
|
|
74
|
+
* strip device suffix, and resolve LID to PN if mapped.
|
|
75
|
+
*/
|
|
76
|
+
export const normalizeJidForSend = (jid) => {
|
|
77
|
+
const decoded = jidDecode(jid);
|
|
78
|
+
if (!decoded)
|
|
79
|
+
return jid;
|
|
80
|
+
const { user, server } = decoded;
|
|
81
|
+
const normalized = jidEncode(user, server === 'c.us' ? 's.whatsapp.net' : server);
|
|
82
|
+
return resolvePnJid(normalized) || normalized;
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=jid-plot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jid-plot.js","sourceRoot":"","sources":["../../src/addons/jid-plot.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAOvE,kEAAkE;AAClE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAA;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,MAAc,EAAQ,EAAE;IAClE,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC7B,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AAC9B,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAuB,EAAQ,EAAE;IAC7D,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC3B,CAAC;AACF,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAsB,EAAE;IAC/D,IAAI,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAA;IAC7B,IAAI,SAAS,CAAC,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC9C,OAAO,GAAG,CAAA;AACX,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAsB,EAAE;IAChE,IAAI,SAAS,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAA;IAC9B,IAAI,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7C,OAAO,GAAG,CAAA;AACX,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAE9E;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAc,EAAW,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAmB,EAAE;IACxD,MAAM,OAAO,GAAmB,EAAE,CAAA;IAClC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;QACjD,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QAC5C,CAAC;IACF,CAAC;IAED,OAAO,OAAO,CAAA;AACf,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAS,EAAE;IACtC,UAAU,CAAC,KAAK,EAAE,CAAA;AACnB,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAU,EAAE;IAC1D,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,CAAC,OAAO;QAAE,OAAO,GAAG,CAAA;IACxB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAChC,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IACjF,OAAO,YAAY,CAAC,UAAU,CAAC,IAAI,UAAU,CAAA;AAC9C,CAAC,CAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { AuthenticationState, WAMessage } from '../Types/index.js';
|
|
2
|
+
export interface JidInfo {
|
|
3
|
+
jid: string;
|
|
4
|
+
user: string;
|
|
5
|
+
server: string;
|
|
6
|
+
device: number;
|
|
7
|
+
agent: number;
|
|
8
|
+
isLid: boolean;
|
|
9
|
+
isPn: boolean;
|
|
10
|
+
isHosted: boolean;
|
|
11
|
+
isGroup: boolean;
|
|
12
|
+
isNewsletter: boolean;
|
|
13
|
+
normalizedUser: string;
|
|
14
|
+
}
|
|
15
|
+
export interface SenderPnInfo {
|
|
16
|
+
phoneJid: string;
|
|
17
|
+
phoneNumber: string;
|
|
18
|
+
lid?: string;
|
|
19
|
+
deviceId: number;
|
|
20
|
+
pushName?: string;
|
|
21
|
+
platform?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface PlottedJid {
|
|
24
|
+
original: string;
|
|
25
|
+
primary: string;
|
|
26
|
+
info: JidInfo | null;
|
|
27
|
+
pn?: string;
|
|
28
|
+
lid?: string;
|
|
29
|
+
}
|
|
30
|
+
export declare const parseJid: (jid: string) => JidInfo | null;
|
|
31
|
+
export declare const getSenderPn: (creds: AuthenticationState["creds"]) => SenderPnInfo | null;
|
|
32
|
+
export declare const getCurrentSenderInfo: (authState: AuthenticationState) => SenderPnInfo | null;
|
|
33
|
+
export declare const isSelf: (jid: string, senderPn: SenderPnInfo) => boolean;
|
|
34
|
+
export declare const plotJid: (jid: string) => PlottedJid | null;
|
|
35
|
+
export declare const normalizePhoneToJid: (phone: string) => string;
|
|
36
|
+
export declare const extractPhoneNumber: (jid: string) => string | null;
|
|
37
|
+
export declare const formatJidDisplay: (jid: string, options?: {
|
|
38
|
+
showDevice?: boolean;
|
|
39
|
+
showType?: boolean;
|
|
40
|
+
}) => string;
|
|
41
|
+
export declare const isSameUser: (jid1: string, jid2: string) => boolean;
|
|
42
|
+
export declare const getJidVariants: (phone: string) => string[];
|
|
43
|
+
export declare const constructJidWithDevice: (user: string, device: number, server?: string) => string;
|
|
44
|
+
export declare const getRemoteJidFromMessage: (msg: WAMessage) => {
|
|
45
|
+
chatJid: string;
|
|
46
|
+
senderJid: string;
|
|
47
|
+
} | null;
|
|
48
|
+
export interface JidPlotterWithMapping {
|
|
49
|
+
plotToLid: (pn: string) => Promise<string | null>;
|
|
50
|
+
plotToPn: (lid: string) => Promise<string | null>;
|
|
51
|
+
plotBidirectional: (jid: string) => Promise<PlottedJid>;
|
|
52
|
+
}
|
|
53
|
+
export declare const createJidPlotter: (getLIDForPN: (pn: string) => Promise<string | null>, getPNForLID: (lid: string) => Promise<string | null>) => JidPlotterWithMapping;
|
|
54
|
+
//# sourceMappingURL=jid-plotting.d.ts.map
|