amiudmodz 6.2.2 → 6.2.5
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/lib/Defaults/index.d.ts +8 -0
- package/lib/Defaults/index.d.ts.map +1 -1
- package/lib/Defaults/index.js +26 -10
- package/lib/Defaults/index.js.map +1 -1
- package/lib/Signal/lid-mapping.d.ts +3 -3
- package/lib/Signal/lid-mapping.d.ts.map +1 -1
- package/lib/Signal/lid-mapping.js +21 -14
- package/lib/Signal/lid-mapping.js.map +1 -1
- package/lib/Socket/business.d.ts +19 -12
- package/lib/Socket/business.d.ts.map +1 -1
- package/lib/Socket/chats.d.ts +2 -5
- package/lib/Socket/chats.d.ts.map +1 -1
- package/lib/Socket/chats.js +29 -11
- package/lib/Socket/chats.js.map +1 -1
- package/lib/Socket/communities.d.ts +19 -12
- package/lib/Socket/communities.d.ts.map +1 -1
- package/lib/Socket/groups.d.ts +1 -4
- package/lib/Socket/groups.d.ts.map +1 -1
- package/lib/Socket/index.d.ts +2 -277
- package/lib/Socket/index.d.ts.map +1 -1
- package/lib/Socket/index.js +30 -1
- package/lib/Socket/index.js.map +1 -1
- package/lib/Socket/messages-recv.d.ts +19 -12
- package/lib/Socket/messages-recv.d.ts.map +1 -1
- package/lib/Socket/messages-recv.js +117 -28
- package/lib/Socket/messages-recv.js.map +1 -1
- package/lib/Socket/messages-send.d.ts +18 -11
- package/lib/Socket/messages-send.d.ts.map +1 -1
- package/lib/Socket/messages-send.js +362 -250
- package/lib/Socket/messages-send.js.map +1 -1
- package/lib/Socket/mex.d.ts +1 -1
- package/lib/Socket/mex.d.ts.map +1 -1
- package/lib/Socket/mex.js +4 -4
- package/lib/Socket/mex.js.map +1 -1
- package/lib/Socket/newsletter.d.ts +6 -7
- package/lib/Socket/newsletter.d.ts.map +1 -1
- package/lib/Socket/newsletter.js +74 -26
- package/lib/Socket/newsletter.js.map +1 -1
- package/lib/Socket/socket.d.ts.map +1 -1
- package/lib/Socket/socket.js +7 -26
- package/lib/Socket/socket.js.map +1 -1
- package/lib/Types/Auth.d.ts +10 -0
- package/lib/Types/Auth.d.ts.map +1 -1
- package/lib/Types/Events.d.ts +2 -1
- package/lib/Types/Events.d.ts.map +1 -1
- package/lib/Types/Message.d.ts +59 -10
- package/lib/Types/Message.d.ts.map +1 -1
- package/lib/Types/Message.js +6 -0
- package/lib/Types/Message.js.map +1 -1
- package/lib/Types/Mex.d.ts +2 -0
- package/lib/Types/Mex.d.ts.map +1 -1
- package/lib/Types/Mex.js +2 -0
- package/lib/Types/Mex.js.map +1 -1
- package/lib/Types/Socket.d.ts +18 -0
- package/lib/Types/Socket.d.ts.map +1 -1
- package/lib/Types/State.d.ts +10 -0
- package/lib/Types/State.d.ts.map +1 -1
- package/lib/Types/State.js.map +1 -1
- package/lib/Types/index.d.ts +1 -1
- package/lib/Types/index.d.ts.map +1 -1
- package/lib/Types/index.js +1 -0
- package/lib/Types/index.js.map +1 -1
- package/lib/Utils/MessageBuilder.d.ts +11 -10
- package/lib/Utils/MessageBuilder.d.ts.map +1 -1
- package/lib/Utils/MessageBuilder.js +14 -3
- package/lib/Utils/MessageBuilder.js.map +1 -1
- package/lib/Utils/auth-utils.d.ts.map +1 -1
- package/lib/Utils/auth-utils.js +23 -8
- package/lib/Utils/auth-utils.js.map +1 -1
- package/lib/Utils/browser-utils.js +4 -4
- package/lib/Utils/browser-utils.js.map +1 -1
- package/lib/Utils/decode-wa-message.d.ts.map +1 -1
- package/lib/Utils/decode-wa-message.js +9 -5
- package/lib/Utils/decode-wa-message.js.map +1 -1
- package/lib/Utils/generics.d.ts.map +1 -1
- package/lib/Utils/generics.js +8 -5
- package/lib/Utils/generics.js.map +1 -1
- package/lib/Utils/index.d.ts +6 -1
- package/lib/Utils/index.d.ts.map +1 -1
- package/lib/Utils/index.js +6 -1
- package/lib/Utils/index.js.map +1 -1
- package/lib/Utils/messages-media.d.ts +12 -18
- package/lib/Utils/messages-media.d.ts.map +1 -1
- package/lib/Utils/messages-media.js +163 -65
- package/lib/Utils/messages-media.js.map +1 -1
- package/lib/Utils/messages.d.ts +26 -71
- package/lib/Utils/messages.d.ts.map +1 -1
- package/lib/Utils/messages.js +1198 -328
- package/lib/Utils/messages.js.map +1 -1
- package/lib/Utils/tc-token-utils.d.ts.map +1 -1
- package/lib/Utils/tc-token-utils.js +2 -3
- package/lib/Utils/tc-token-utils.js.map +1 -1
- package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -1
- package/lib/Utils/use-multi-file-auth-state.js +30 -1
- package/lib/Utils/use-multi-file-auth-state.js.map +1 -1
- package/lib/Utils/use-sqlite-auth-state.js +12 -12
- package/lib/Utils/validate-connection.d.ts.map +1 -1
- package/lib/Utils/validate-connection.js +5 -11
- package/lib/Utils/validate-connection.js.map +1 -1
- package/lib/WABinary/constants.d.ts +8 -0
- package/lib/WABinary/constants.d.ts.map +1 -1
- package/lib/WABinary/constants.js +72 -0
- package/lib/WABinary/constants.js.map +1 -1
- package/lib/WABinary/generic-utils.d.ts +1 -0
- package/lib/WABinary/generic-utils.d.ts.map +1 -1
- package/lib/WABinary/generic-utils.js +100 -1
- package/lib/WABinary/generic-utils.js.map +1 -1
- package/lib/WABinary/jid-utils.d.ts.map +1 -1
- package/lib/WABinary/jid-utils.js +45 -6
- package/lib/WABinary/jid-utils.js.map +1 -1
- 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 +1 -1
package/lib/Utils/messages.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { type Transform } from 'stream';
|
|
2
2
|
import { proto } from '../../WAProto/index.js';
|
|
3
|
-
import type { AnyMediaMessageContent, AnyMessageContent, MessageContentGenerationOptions, MessageGenerationOptions, MessageGenerationOptionsFromContent,
|
|
3
|
+
import type { AnyMediaMessageContent, AnyMessageContent, MessageContentGenerationOptions, MessageGenerationOptions, MessageGenerationOptionsFromContent, MessageUserReceipt, WAMessage, WAMessageContent, WAMessageKey } from '../Types/index.js';
|
|
4
4
|
import type { ILogger } from './logger.js';
|
|
5
5
|
import { type MediaDownloadOptions } from './messages-media.js';
|
|
6
6
|
type ExtractByKey<T, K extends PropertyKey> = T extends Record<K, any> ? T : never;
|
|
7
|
+
type RequireKey<T, K extends keyof T> = T & {
|
|
8
|
+
[P in K]-?: Exclude<T[P], null | undefined>;
|
|
9
|
+
};
|
|
10
|
+
type WithKey<T, K extends PropertyKey> = T extends unknown ? (K extends keyof T ? RequireKey<T, K> : never) : never;
|
|
7
11
|
/**
|
|
8
12
|
* Uses a regex to test whether the string contains a URL, and returns the URL if it does.
|
|
9
13
|
* @param text eg. hello https://google.com
|
|
@@ -20,88 +24,39 @@ export declare const prepareDisappearingMessageSettingContent: (ephemeralExpirat
|
|
|
20
24
|
*/
|
|
21
25
|
export declare const generateForwardMessageContent: (message: WAMessage, forceForward?: boolean) => proto.IMessage;
|
|
22
26
|
export declare const hasNonNullishProperty: <K extends PropertyKey>(message: AnyMessageContent, key: K) => message is ExtractByKey<AnyMessageContent, K>;
|
|
23
|
-
export declare const
|
|
24
|
-
export declare const
|
|
27
|
+
export declare const hasOptionalProperty: <T, K extends PropertyKey>(obj: T, key: K) => obj is WithKey<T, K>;
|
|
28
|
+
export declare const hasValidAlbumMedia: (message: any) => any;
|
|
29
|
+
export declare const hasValidInteractiveHeader: (message: any) => any;
|
|
30
|
+
export declare const hasValidCarouselHeader: (message: any) => any;
|
|
31
|
+
export declare const generateWAMessageContent: (message: AnyMessageContent, options: MessageContentGenerationOptions) => Promise<proto.IMessage>;
|
|
32
|
+
export declare const generateWAMessageFromContent: (jid: string, message: WAMessageContent, options: MessageGenerationOptionsFromContent) => any;
|
|
25
33
|
export declare const generateWAMessage: (jid: string, content: AnyMessageContent, options: MessageGenerationOptions) => Promise<WAMessage>;
|
|
26
|
-
|
|
27
|
-
export declare const getContentType: (content: proto.IMessage | undefined) => keyof proto.IMessage | undefined;
|
|
28
|
-
/**
|
|
29
|
-
* Normalizes ephemeral, view once messages to regular message content
|
|
30
|
-
* Eg. image messages in ephemeral messages, in view once messages etc.
|
|
31
|
-
* @param content
|
|
32
|
-
* @returns
|
|
33
|
-
*/
|
|
34
|
+
export declare const getContentType: (content: WAMessageContent | undefined) => keyof proto.IMessage | undefined;
|
|
34
35
|
export declare const normalizeMessageContent: (content: WAMessageContent | null | undefined) => WAMessageContent | undefined;
|
|
35
|
-
|
|
36
|
-
* Extract the true message content from a message
|
|
37
|
-
* Eg. extracts the inner message from a disappearing message/view once message
|
|
38
|
-
*/
|
|
39
|
-
export declare const extractMessageContent: (content: WAMessageContent | undefined | null) => WAMessageContent | undefined;
|
|
40
|
-
/**
|
|
41
|
-
* Returns the device predicted by message ID
|
|
42
|
-
*/
|
|
36
|
+
export declare const extractMessageContent: (content: WAMessageContent | null | undefined) => WAMessageContent | undefined;
|
|
43
37
|
export declare const getDevice: (id: string) => "web" | "unknown" | "android" | "ios" | "desktop";
|
|
44
|
-
|
|
45
|
-
export declare const
|
|
46
|
-
|
|
47
|
-
export declare const
|
|
48
|
-
|
|
49
|
-
export declare const updateMessageWithPollUpdate: (msg: Pick<WAMessage, "pollUpdates">, update: proto.IPollUpdate) => void;
|
|
50
|
-
/** Update the message with a new event response */
|
|
51
|
-
export declare const updateMessageWithEventResponse: (msg: Pick<WAMessage, "eventResponses">, update: proto.IEventResponse) => void;
|
|
52
|
-
type VoteAggregation = {
|
|
38
|
+
export declare const updateMessageWithReceipt: (msg: WAMessage, receipt: MessageUserReceipt) => void;
|
|
39
|
+
export declare const updateMessageWithReaction: (msg: WAMessage, reaction: proto.IReaction) => void;
|
|
40
|
+
export declare const updateMessageWithPollUpdate: (msg: WAMessage, update: any) => void;
|
|
41
|
+
export declare const updateMessageWithEventResponse: (msg: WAMessage, update: any) => void;
|
|
42
|
+
export declare function getAggregateVotesInPollMessage({ message, pollUpdates }: WAMessage, meId?: string): {
|
|
53
43
|
name: string;
|
|
54
44
|
voters: string[];
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
* Aggregates all poll updates in a poll.
|
|
58
|
-
* @param msg the poll creation message
|
|
59
|
-
* @param meId your jid
|
|
60
|
-
* @returns A list of options & their voters
|
|
61
|
-
*/
|
|
62
|
-
export declare function getAggregateVotesInPollMessage({ message, pollUpdates }: Pick<WAMessage, 'pollUpdates' | 'message'>, meId?: string): VoteAggregation[];
|
|
63
|
-
type ResponseAggregation = {
|
|
45
|
+
}[];
|
|
46
|
+
export declare function getAggregateResponsesInEventMessage({ eventResponses }: WAMessage, meId?: string): {
|
|
64
47
|
response: string;
|
|
65
48
|
responders: string[];
|
|
66
|
-
};
|
|
67
|
-
/**
|
|
68
|
-
* Aggregates all event responses in an event message.
|
|
69
|
-
* @param msg the event creation message
|
|
70
|
-
* @param meId your jid
|
|
71
|
-
* @returns A list of response types & their responders
|
|
72
|
-
*/
|
|
73
|
-
export declare function getAggregateResponsesInEventMessage({ eventResponses }: Pick<WAMessage, 'eventResponses'>, meId?: string): ResponseAggregation[];
|
|
74
|
-
/** Given a list of message keys, aggregates them by chat & sender. Useful for sending read receipts in bulk */
|
|
49
|
+
}[];
|
|
75
50
|
export declare const aggregateMessageKeysNotFromMe: (keys: WAMessageKey[]) => {
|
|
76
51
|
jid: string;
|
|
77
52
|
participant: string | undefined;
|
|
78
53
|
messageIds: string[];
|
|
79
54
|
}[];
|
|
80
|
-
type
|
|
81
|
-
reuploadRequest: (msg: WAMessage) => Promise<WAMessage>;
|
|
55
|
+
export declare const downloadMediaMessage: <Type extends "buffer" | "stream">(message: WAMessage, type: Type, options: MediaDownloadOptions, ctx?: {
|
|
82
56
|
logger: ILogger;
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
export declare const downloadMediaMessage: <Type extends "buffer" | "stream">(message: WAMessage, type: Type, options: MediaDownloadOptions, ctx?: DownloadMediaMessageContext) => Promise<Type extends "buffer" ? Buffer<ArrayBufferLike> : Transform>;
|
|
88
|
-
/** Checks whether the given message is a media message; if it is returns the inner content */
|
|
89
|
-
export declare const assertMediaContent: (content: proto.IMessage | null | undefined) => proto.Message.IVideoMessage | proto.Message.IImageMessage | proto.Message.IAudioMessage | proto.Message.IDocumentMessage | proto.Message.IStickerMessage;
|
|
90
|
-
/**
|
|
91
|
-
* Send a group status message
|
|
92
|
-
* @param socket The socket connection
|
|
93
|
-
* @param groupJid The JID of the group to send the status message to
|
|
94
|
-
* @param content The message content
|
|
95
|
-
* @param options Additional message relay options
|
|
96
|
-
*/
|
|
97
|
-
export declare function sendGroupStatus(socket: any, groupJid: string, content: AnyMessageContent, options?: MessageRelayOptions): Promise<any>;
|
|
98
|
-
/**
|
|
99
|
-
* Send a channel status message
|
|
100
|
-
* @param socket The socket connection
|
|
101
|
-
* @param channelJid The JID of the channel to send the status message to
|
|
102
|
-
* @param content The message content
|
|
103
|
-
* @param options Additional message relay options
|
|
104
|
-
*/
|
|
105
|
-
export declare function sendChannelStatus(socket: any, channelJid: string, content: AnyMessageContent, options?: MessageRelayOptions): Promise<any>;
|
|
57
|
+
reuploadRequest: (msg: WAMessage) => Promise<WAMessage>;
|
|
58
|
+
}) => Promise<Type extends "buffer" ? Buffer<ArrayBufferLike> : Transform>;
|
|
59
|
+
export declare const assertMediaContent: (content: proto.IMessage | null | undefined) => proto.Message.IDocumentMessage | proto.Message.IImageMessage | proto.Message.IVideoMessage | proto.Message.IAudioMessage | proto.Message.IStickerMessage;
|
|
60
|
+
export declare const shouldIncludeBizBinaryNode: (message: proto.IMessage) => boolean;
|
|
106
61
|
export {};
|
|
107
62
|
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/Utils/messages.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/Utils/messages.ts"],"names":[],"mappings":"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"}
|