@badzz88/baileys 7.1.2 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/engine-requirements.js +5 -4
- package/lib/Defaults/baileys-version.json +1 -1
- package/lib/Defaults/index.d.ts +53 -0
- package/lib/Signal/Group/ciphertext-message.d.ts +9 -0
- package/lib/Signal/Group/group-session-builder.d.ts +14 -0
- package/lib/Signal/Group/group_cipher.d.ts +17 -0
- package/lib/Signal/Group/index.d.ts +11 -0
- package/lib/Signal/Group/keyhelper.d.ts +10 -0
- package/lib/Signal/Group/queue-job.d.ts +1 -0
- package/lib/Signal/Group/sender-chain-key.d.ts +13 -0
- package/lib/Signal/Group/sender-key-distribution-message.d.ts +16 -0
- package/lib/Signal/Group/sender-key-message.d.ts +18 -0
- package/lib/Signal/Group/sender-key-name.d.ts +17 -0
- package/lib/Signal/Group/sender-key-record.d.ts +30 -0
- package/lib/Signal/Group/sender-key-state.d.ts +38 -0
- package/lib/Signal/Group/sender-message-key.d.ts +11 -0
- package/lib/Signal/libsignal.d.ts +3 -0
- package/lib/Socket/Client/abstract-socket-client.d.ts +17 -0
- package/lib/Socket/Client/index.d.ts +3 -0
- package/lib/Socket/Client/mobile-socket-client.d.ts +13 -0
- package/lib/Socket/Client/web-socket-client.d.ts +12 -0
- package/lib/Socket/business.d.ts +171 -0
- package/lib/Socket/chats.d.ts +267 -0
- package/lib/Socket/dugong.d.ts +254 -0
- package/lib/Socket/groups.d.ts +115 -0
- package/lib/Socket/index.d.ts +173 -0
- package/lib/Socket/messages-recv.d.ts +161 -0
- package/lib/Socket/messages-send.d.ts +149 -0
- package/lib/Socket/newsletter.d.ts +134 -0
- package/lib/Socket/newsletter.js +137 -49
- package/lib/Socket/registration.d.ts +267 -0
- package/lib/Socket/socket.d.ts +43 -0
- package/lib/Socket/usync.d.ts +36 -0
- package/lib/Store/index.d.ts +3 -0
- package/lib/Store/make-cache-manager-store.d.ts +13 -0
- package/lib/Store/make-in-memory-store.d.ts +118 -0
- package/lib/Store/make-ordered-dictionary.d.ts +13 -0
- package/lib/Store/object-repository.d.ts +10 -0
- package/lib/Types/Auth.d.ts +110 -0
- package/lib/Types/Call.d.ts +13 -0
- package/lib/Types/Chat.d.ts +102 -0
- package/lib/Types/Contact.d.ts +19 -0
- package/lib/Types/Events.d.ts +157 -0
- package/lib/Types/GroupMetadata.d.ts +55 -0
- package/lib/Types/Label.d.ts +35 -0
- package/lib/Types/LabelAssociation.d.ts +29 -0
- package/lib/Types/Message.d.ts +273 -0
- package/lib/Types/Newsletter.d.ts +103 -0
- package/lib/Types/Product.d.ts +78 -0
- package/lib/Types/Signal.d.ts +57 -0
- package/lib/Types/Socket.d.ts +111 -0
- package/lib/Types/State.d.ts +27 -0
- package/lib/Types/USync.d.ts +25 -0
- package/lib/Types/index.d.ts +57 -0
- package/lib/Utils/auth-utils.d.ts +18 -0
- package/lib/Utils/baileys-event-stream.d.ts +16 -0
- package/lib/Utils/business.d.ts +22 -0
- package/lib/Utils/chat-utils.d.ts +71 -0
- package/lib/Utils/crypto.d.ts +41 -0
- package/lib/Utils/decode-wa-message.d.ts +19 -0
- package/lib/Utils/event-buffer.d.ts +35 -0
- package/lib/Utils/generics.d.ts +92 -0
- package/lib/Utils/generics.js +80 -5
- package/lib/Utils/history.d.ts +15 -0
- package/lib/Utils/index.d.ts +17 -0
- package/lib/Utils/link-preview.d.ts +21 -0
- package/lib/Utils/logger.d.ts +4 -0
- package/lib/Utils/lt-hash.d.ts +12 -0
- package/lib/Utils/make-mutex.d.ts +7 -0
- package/lib/Utils/messages-media.d.ts +116 -0
- package/lib/Utils/messages.d.ts +77 -0
- package/lib/Utils/noise-handler.d.ts +21 -0
- package/lib/Utils/process-message.d.ts +41 -0
- package/lib/Utils/signal.d.ts +32 -0
- package/lib/Utils/use-multi-file-auth-state.d.ts +13 -0
- package/lib/Utils/validate-connection.d.ts +11 -0
- package/lib/WABinary/constants.d.ts +30 -0
- package/lib/WABinary/decode.d.ts +7 -0
- package/lib/WABinary/encode.d.ts +3 -0
- package/lib/WABinary/generic-utils.d.ts +17 -0
- package/lib/WABinary/index.d.ts +5 -0
- package/lib/WABinary/jid-utils.d.ts +31 -0
- package/lib/WABinary/types.d.ts +18 -0
- package/lib/WAM/BinaryInfo.d.ts +17 -0
- package/lib/WAM/constants.d.ts +38 -0
- package/lib/WAM/encode.d.ts +3 -0
- package/lib/WAM/index.d.ts +3 -0
- package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +9 -0
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +22 -0
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +12 -0
- package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +12 -0
- package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +25 -0
- package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +8 -0
- package/lib/WAUSync/Protocols/index.d.ts +4 -0
- package/lib/WAUSync/USyncQuery.d.ts +28 -0
- package/lib/WAUSync/USyncUser.d.ts +12 -0
- package/lib/WAUSync/index.d.ts +3 -0
- package/lib/index.d.ts +12 -0
- package/lib/index.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export * from './Auth';
|
|
2
|
+
export * from './GroupMetadata';
|
|
3
|
+
export * from './Chat';
|
|
4
|
+
export * from './Contact';
|
|
5
|
+
export * from './State';
|
|
6
|
+
export * from './Message';
|
|
7
|
+
export * from './Newsletter';
|
|
8
|
+
export * from './Socket';
|
|
9
|
+
export * from './Events';
|
|
10
|
+
export * from './Product';
|
|
11
|
+
export * from './Call';
|
|
12
|
+
export * from './Signal';
|
|
13
|
+
import { AuthenticationState } from './Auth';
|
|
14
|
+
import { SocketConfig } from './Socket';
|
|
15
|
+
export type UserFacingSocketConfig = Partial<SocketConfig> & {
|
|
16
|
+
auth: AuthenticationState;
|
|
17
|
+
};
|
|
18
|
+
export declare enum DisconnectReason {
|
|
19
|
+
connectionClosed = 428,
|
|
20
|
+
connectionLost = 408,
|
|
21
|
+
connectionReplaced = 440,
|
|
22
|
+
timedOut = 408,
|
|
23
|
+
loggedOut = 401,
|
|
24
|
+
badSession = 500,
|
|
25
|
+
restartRequired = 515,
|
|
26
|
+
multideviceMismatch = 411,
|
|
27
|
+
forbidden = 403,
|
|
28
|
+
unavailableService = 503
|
|
29
|
+
}
|
|
30
|
+
export type WAInitResponse = {
|
|
31
|
+
ref: string;
|
|
32
|
+
ttl: number;
|
|
33
|
+
status: 200;
|
|
34
|
+
};
|
|
35
|
+
export type WABusinessHoursConfig = {
|
|
36
|
+
day_of_week: string;
|
|
37
|
+
mode: string;
|
|
38
|
+
open_time?: number;
|
|
39
|
+
close_time?: number;
|
|
40
|
+
};
|
|
41
|
+
export type WABusinessProfile = {
|
|
42
|
+
description: string;
|
|
43
|
+
email: string | undefined;
|
|
44
|
+
business_hours: {
|
|
45
|
+
timezone?: string;
|
|
46
|
+
config?: WABusinessHoursConfig[];
|
|
47
|
+
business_config?: WABusinessHoursConfig[];
|
|
48
|
+
};
|
|
49
|
+
website: string[];
|
|
50
|
+
category?: string;
|
|
51
|
+
wid?: string;
|
|
52
|
+
address?: string;
|
|
53
|
+
};
|
|
54
|
+
export type CurveKeyPair = {
|
|
55
|
+
private: Uint8Array;
|
|
56
|
+
public: Uint8Array;
|
|
57
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Logger } from 'pino';
|
|
2
|
+
import type { AuthenticationCreds, CacheStore, SignalKeyStore, SignalKeyStoreWithTransaction, TransactionCapabilityOptions } from '../Types';
|
|
3
|
+
/**
|
|
4
|
+
* Adds caching capability to a SignalKeyStore
|
|
5
|
+
* @param store the store to add caching to
|
|
6
|
+
* @param logger to log trace events
|
|
7
|
+
* @param _cache cache store to use
|
|
8
|
+
*/
|
|
9
|
+
export declare function makeCacheableSignalKeyStore(store: SignalKeyStore, logger: Logger, _cache?: CacheStore): SignalKeyStore;
|
|
10
|
+
/**
|
|
11
|
+
* Adds DB like transaction capability (https://en.wikipedia.org/wiki/Database_transaction) to the SignalKeyStore,
|
|
12
|
+
* this allows batch read & write operations & improves the performance of the lib
|
|
13
|
+
* @param state the key store to apply this capability to
|
|
14
|
+
* @param logger logger to log events
|
|
15
|
+
* @returns SignalKeyStore with transaction capability
|
|
16
|
+
*/
|
|
17
|
+
export declare const addTransactionCapability: (state: SignalKeyStore, logger: Logger, { maxCommitRetries, delayBetweenTriesMs }: TransactionCapabilityOptions) => SignalKeyStoreWithTransaction;
|
|
18
|
+
export declare const initAuthCreds: () => AuthenticationCreds;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { BaileysEventEmitter } from '../Types';
|
|
2
|
+
/**
|
|
3
|
+
* Captures events from a baileys event emitter & stores them in a file
|
|
4
|
+
* @param ev The event emitter to read events from
|
|
5
|
+
* @param filename File to save to
|
|
6
|
+
*/
|
|
7
|
+
export declare const captureEventStream: (ev: BaileysEventEmitter, filename: string) => void;
|
|
8
|
+
/**
|
|
9
|
+
* Read event file and emit events from there
|
|
10
|
+
* @param filename filename containing event data
|
|
11
|
+
* @param delayIntervalMs delay between each event emit
|
|
12
|
+
*/
|
|
13
|
+
export declare const readAndEmitEventStream: (filename: string, delayIntervalMs?: number) => {
|
|
14
|
+
ev: BaileysEventEmitter;
|
|
15
|
+
task: Promise<void>;
|
|
16
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { CatalogCollection, OrderDetails, Product, ProductCreate, ProductUpdate, WAMediaUpload, WAMediaUploadFunction } from '../Types';
|
|
2
|
+
import { BinaryNode } from '../WABinary';
|
|
3
|
+
export declare const parseCatalogNode: (node: BinaryNode) => {
|
|
4
|
+
products: Product[];
|
|
5
|
+
nextPageCursor: string | undefined;
|
|
6
|
+
};
|
|
7
|
+
export declare const parseCollectionsNode: (node: BinaryNode) => {
|
|
8
|
+
collections: CatalogCollection[];
|
|
9
|
+
};
|
|
10
|
+
export declare const parseOrderDetailsNode: (node: BinaryNode) => OrderDetails;
|
|
11
|
+
export declare const toProductNode: (productId: string | undefined, product: ProductCreate | ProductUpdate) => BinaryNode;
|
|
12
|
+
export declare const parseProductNode: (productNode: BinaryNode) => Product;
|
|
13
|
+
/**
|
|
14
|
+
* Uploads images not already uploaded to WA's servers
|
|
15
|
+
*/
|
|
16
|
+
export declare function uploadingNecessaryImagesOfProduct<T extends ProductUpdate | ProductCreate>(product: T, waUploadToServer: WAMediaUploadFunction, timeoutMs?: number): Promise<T>;
|
|
17
|
+
/**
|
|
18
|
+
* Uploads images not already uploaded to WA's servers
|
|
19
|
+
*/
|
|
20
|
+
export declare const uploadingNecessaryImages: (images: WAMediaUpload[], waUploadToServer: WAMediaUploadFunction, timeoutMs?: number) => Promise<{
|
|
21
|
+
url: string;
|
|
22
|
+
}[]>;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { AxiosRequestConfig } from 'axios';
|
|
3
|
+
import type { Logger } from 'pino';
|
|
4
|
+
import { proto } from '../../WAProto';
|
|
5
|
+
import { BaileysEventEmitter, ChatModification, ChatMutation, Contact, InitialAppStateSyncOptions, LTHashState, WAPatchCreate, WAPatchName } from '../Types';
|
|
6
|
+
import { BinaryNode } from '../WABinary';
|
|
7
|
+
type FetchAppStateSyncKey = (keyId: string) => Promise<proto.Message.IAppStateSyncKeyData | null | undefined>;
|
|
8
|
+
export type ChatMutationMap = {
|
|
9
|
+
[index: string]: ChatMutation;
|
|
10
|
+
};
|
|
11
|
+
export declare const newLTHashState: () => LTHashState;
|
|
12
|
+
export declare const encodeSyncdPatch: ({ type, index, syncAction, apiVersion, operation }: WAPatchCreate, myAppStateKeyId: string, state: LTHashState, getAppStateSyncKey: FetchAppStateSyncKey) => Promise<{
|
|
13
|
+
patch: proto.ISyncdPatch;
|
|
14
|
+
state: LTHashState;
|
|
15
|
+
}>;
|
|
16
|
+
export declare const decodeSyncdMutations: (msgMutations: (proto.ISyncdMutation | proto.ISyncdRecord)[], initialState: LTHashState, getAppStateSyncKey: FetchAppStateSyncKey, onMutation: (mutation: ChatMutation) => void, validateMacs: boolean) => Promise<{
|
|
17
|
+
hash: Buffer;
|
|
18
|
+
indexValueMap: {
|
|
19
|
+
[indexMacBase64: string]: {
|
|
20
|
+
valueMac: Uint8Array | Buffer;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
}>;
|
|
24
|
+
export declare const decodeSyncdPatch: (msg: proto.ISyncdPatch, name: WAPatchName, initialState: LTHashState, getAppStateSyncKey: FetchAppStateSyncKey, onMutation: (mutation: ChatMutation) => void, validateMacs: boolean) => Promise<{
|
|
25
|
+
hash: Buffer;
|
|
26
|
+
indexValueMap: {
|
|
27
|
+
[indexMacBase64: string]: {
|
|
28
|
+
valueMac: Uint8Array | Buffer;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
}>;
|
|
32
|
+
export declare const extractSyncdPatches: (result: BinaryNode, options: AxiosRequestConfig<any>) => Promise<{
|
|
33
|
+
critical_block: {
|
|
34
|
+
patches: proto.ISyncdPatch[];
|
|
35
|
+
hasMorePatches: boolean;
|
|
36
|
+
snapshot?: proto.ISyncdSnapshot | undefined;
|
|
37
|
+
};
|
|
38
|
+
critical_unblock_low: {
|
|
39
|
+
patches: proto.ISyncdPatch[];
|
|
40
|
+
hasMorePatches: boolean;
|
|
41
|
+
snapshot?: proto.ISyncdSnapshot | undefined;
|
|
42
|
+
};
|
|
43
|
+
regular_high: {
|
|
44
|
+
patches: proto.ISyncdPatch[];
|
|
45
|
+
hasMorePatches: boolean;
|
|
46
|
+
snapshot?: proto.ISyncdSnapshot | undefined;
|
|
47
|
+
};
|
|
48
|
+
regular_low: {
|
|
49
|
+
patches: proto.ISyncdPatch[];
|
|
50
|
+
hasMorePatches: boolean;
|
|
51
|
+
snapshot?: proto.ISyncdSnapshot | undefined;
|
|
52
|
+
};
|
|
53
|
+
regular: {
|
|
54
|
+
patches: proto.ISyncdPatch[];
|
|
55
|
+
hasMorePatches: boolean;
|
|
56
|
+
snapshot?: proto.ISyncdSnapshot | undefined;
|
|
57
|
+
};
|
|
58
|
+
}>;
|
|
59
|
+
export declare const downloadExternalBlob: (blob: proto.IExternalBlobReference, options: AxiosRequestConfig<any>) => Promise<Buffer>;
|
|
60
|
+
export declare const downloadExternalPatch: (blob: proto.IExternalBlobReference, options: AxiosRequestConfig<any>) => Promise<proto.SyncdMutations>;
|
|
61
|
+
export declare const decodeSyncdSnapshot: (name: WAPatchName, snapshot: proto.ISyncdSnapshot, getAppStateSyncKey: FetchAppStateSyncKey, minimumVersionNumber: number | undefined, validateMacs?: boolean) => Promise<{
|
|
62
|
+
state: LTHashState;
|
|
63
|
+
mutationMap: ChatMutationMap;
|
|
64
|
+
}>;
|
|
65
|
+
export declare const decodePatches: (name: WAPatchName, syncds: proto.ISyncdPatch[], initial: LTHashState, getAppStateSyncKey: FetchAppStateSyncKey, options: AxiosRequestConfig<any>, minimumVersionNumber?: number, logger?: Logger, validateMacs?: boolean) => Promise<{
|
|
66
|
+
state: LTHashState;
|
|
67
|
+
mutationMap: ChatMutationMap;
|
|
68
|
+
}>;
|
|
69
|
+
export declare const chatModificationToAppPatch: (mod: ChatModification, jid: string) => WAPatchCreate;
|
|
70
|
+
export declare const processSyncAction: (syncAction: ChatMutation, ev: BaileysEventEmitter, me: Contact, initialSyncOpts?: InitialAppStateSyncOptions, logger?: Logger) => void;
|
|
71
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { KeyPair } from '../Types';
|
|
3
|
+
/** prefix version byte to the pub keys, required for some curve crypto functions */
|
|
4
|
+
export declare const generateSignalPubKey: (pubKey: Uint8Array | Buffer) => Uint8Array | Buffer;
|
|
5
|
+
export declare const Curve: {
|
|
6
|
+
generateKeyPair: () => KeyPair;
|
|
7
|
+
sharedKey: (privateKey: Uint8Array, publicKey: Uint8Array) => Buffer;
|
|
8
|
+
sign: (privateKey: Uint8Array, buf: Uint8Array) => any;
|
|
9
|
+
verify: (pubKey: Uint8Array, message: Uint8Array, signature: Uint8Array) => boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare const signedKeyPair: (identityKeyPair: KeyPair, keyId: number) => {
|
|
12
|
+
keyPair: KeyPair;
|
|
13
|
+
signature: any;
|
|
14
|
+
keyId: number;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* encrypt AES 256 GCM;
|
|
18
|
+
* where the tag tag is suffixed to the ciphertext
|
|
19
|
+
* */
|
|
20
|
+
export declare function aesEncryptGCM(plaintext: Uint8Array, key: Uint8Array, iv: Uint8Array, additionalData: Uint8Array): Buffer;
|
|
21
|
+
/**
|
|
22
|
+
* decrypt AES 256 GCM;
|
|
23
|
+
* where the auth tag is suffixed to the ciphertext
|
|
24
|
+
* */
|
|
25
|
+
export declare function aesDecryptGCM(ciphertext: Uint8Array, key: Uint8Array, iv: Uint8Array, additionalData: Uint8Array): Buffer;
|
|
26
|
+
export declare function aesEncryptCTR(plaintext: Uint8Array, key: Uint8Array, iv: Uint8Array): Buffer;
|
|
27
|
+
export declare function aesDecryptCTR(ciphertext: Uint8Array, key: Uint8Array, iv: Uint8Array): Buffer;
|
|
28
|
+
/** decrypt AES 256 CBC; where the IV is prefixed to the buffer */
|
|
29
|
+
export declare function aesDecrypt(buffer: Buffer, key: Buffer): Buffer;
|
|
30
|
+
/** decrypt AES 256 CBC */
|
|
31
|
+
export declare function aesDecryptWithIV(buffer: Buffer, key: Buffer, IV: Buffer): Buffer;
|
|
32
|
+
export declare function aesEncrypt(buffer: Buffer | Uint8Array, key: Buffer): Buffer;
|
|
33
|
+
export declare function aesEncrypWithIV(buffer: Buffer, key: Buffer, IV: Buffer): Buffer;
|
|
34
|
+
export declare function hmacSign(buffer: Buffer | Uint8Array, key: Buffer | Uint8Array, variant?: 'sha256' | 'sha512'): Buffer;
|
|
35
|
+
export declare function sha256(buffer: Buffer): Buffer;
|
|
36
|
+
export declare function md5(buffer: Buffer): Buffer;
|
|
37
|
+
export declare function hkdf(buffer: Uint8Array | Buffer, expandedLength: number, info: {
|
|
38
|
+
salt?: Buffer;
|
|
39
|
+
info?: string;
|
|
40
|
+
}): Buffer;
|
|
41
|
+
export declare function derivePairingCodeKey(pairingCode: string, salt: Buffer): Buffer;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Logger } from 'pino';
|
|
2
|
+
import { proto } from '../../WAProto';
|
|
3
|
+
import { SignalRepository } from '../Types';
|
|
4
|
+
import { BinaryNode } from '../WABinary';
|
|
5
|
+
/**
|
|
6
|
+
* Decode the received node as a message.
|
|
7
|
+
* @note this will only parse the message, not decrypt it
|
|
8
|
+
*/
|
|
9
|
+
export declare function decodeMessageNode(stanza: BinaryNode, meId: string, meLid: string): {
|
|
10
|
+
fullMessage: proto.IWebMessageInfo;
|
|
11
|
+
author: string;
|
|
12
|
+
sender: string;
|
|
13
|
+
};
|
|
14
|
+
export declare const decryptMessageNode: (stanza: BinaryNode, meId: string, meLid: string, repository: SignalRepository, logger: Logger) => {
|
|
15
|
+
fullMessage: proto.IWebMessageInfo;
|
|
16
|
+
category: string;
|
|
17
|
+
author: string;
|
|
18
|
+
decrypt(): Promise<void>;
|
|
19
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Logger } from 'pino';
|
|
2
|
+
import { BaileysEventEmitter, BaileysEventMap } from '../Types';
|
|
3
|
+
/**
|
|
4
|
+
* A map that contains a list of all events that have been triggered
|
|
5
|
+
*
|
|
6
|
+
* Note, this can contain different type of events
|
|
7
|
+
* this can make processing events extremely efficient -- since everything
|
|
8
|
+
* can be done in a single transaction
|
|
9
|
+
*/
|
|
10
|
+
type BaileysEventData = Partial<BaileysEventMap>;
|
|
11
|
+
type BaileysBufferableEventEmitter = BaileysEventEmitter & {
|
|
12
|
+
/** Use to process events in a batch */
|
|
13
|
+
process(handler: (events: BaileysEventData) => void | Promise<void>): (() => void);
|
|
14
|
+
/**
|
|
15
|
+
* starts buffering events, call flush() to release them
|
|
16
|
+
* */
|
|
17
|
+
buffer(): void;
|
|
18
|
+
/** buffers all events till the promise completes */
|
|
19
|
+
createBufferedFunction<A extends any[], T>(work: (...args: A) => Promise<T>): ((...args: A) => Promise<T>);
|
|
20
|
+
/**
|
|
21
|
+
* flushes all buffered events
|
|
22
|
+
* @param force if true, will flush all data regardless of any pending buffers
|
|
23
|
+
* @returns returns true if the flush actually happened, otherwise false
|
|
24
|
+
*/
|
|
25
|
+
flush(force?: boolean): boolean;
|
|
26
|
+
/** is there an ongoing buffer */
|
|
27
|
+
isBuffering(): boolean;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* The event buffer logically consolidates different events into a single event
|
|
31
|
+
* making the data processing more efficient.
|
|
32
|
+
* @param ev the baileys event emitter
|
|
33
|
+
*/
|
|
34
|
+
export declare const makeEventBuffer: (logger: Logger) => BaileysBufferableEventEmitter;
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { AxiosRequestConfig } from 'axios';
|
|
3
|
+
import { Logger } from 'pino';
|
|
4
|
+
import { proto } from '../../WAProto';
|
|
5
|
+
import { BaileysEventEmitter, BaileysEventMap, WACallUpdateType, WAVersion } from '../Types';
|
|
6
|
+
import { BinaryNode } from '../WABinary';
|
|
7
|
+
export declare const Browsers: {
|
|
8
|
+
ubuntu: (browser: any) => [string, string, string];
|
|
9
|
+
macOS: (browser: any) => [string, string, string];
|
|
10
|
+
baileys: (browser: any) => [string, string, string];
|
|
11
|
+
windows: (browser: any) => [string, string, string];
|
|
12
|
+
/** The appropriate browser based on your OS & release */
|
|
13
|
+
appropriate: (browser: any) => [string, string, string];
|
|
14
|
+
};
|
|
15
|
+
export declare const getPlatformId: (browser: string) => any;
|
|
16
|
+
export declare const getKeyAuthor: (key: proto.IMessageKey | undefined | null, meId?: string) => string;
|
|
17
|
+
export declare const writeRandomPadMax16: (msg: Uint8Array) => Buffer;
|
|
18
|
+
export declare const unpadRandomMax16: (e: Uint8Array | Buffer) => Uint8Array;
|
|
19
|
+
export declare const encodeWAMessage: (message: proto.IMessage) => Buffer;
|
|
20
|
+
export declare const generateRegistrationId: () => number;
|
|
21
|
+
export declare const encodeBigEndian: (e: number, t?: number) => Uint8Array;
|
|
22
|
+
export declare const toNumber: (t: Long | number | null | undefined) => number;
|
|
23
|
+
/** unix timestamp of a date in seconds */
|
|
24
|
+
export declare const unixTimestampSeconds: (date?: Date) => number;
|
|
25
|
+
export type DebouncedTimeout = ReturnType<typeof debouncedTimeout>;
|
|
26
|
+
export declare const debouncedTimeout: (intervalMs?: number, task?: () => void) => {
|
|
27
|
+
start: (newIntervalMs?: number, newTask?: () => void) => void;
|
|
28
|
+
cancel: () => void;
|
|
29
|
+
setTask: (newTask: () => void) => () => void;
|
|
30
|
+
setInterval: (newInterval: number) => number;
|
|
31
|
+
};
|
|
32
|
+
export declare const delay: (ms: number) => Promise<void>;
|
|
33
|
+
export declare const delayCancellable: (ms: number) => {
|
|
34
|
+
delay: Promise<void>;
|
|
35
|
+
cancel: () => void;
|
|
36
|
+
};
|
|
37
|
+
export declare function promiseTimeout<T>(ms: number | undefined, promise: (resolve: (v: T) => void, reject: (error: any) => void) => void): Promise<T>;
|
|
38
|
+
export declare const generateMessageIDV2: (userId?: string) => string;
|
|
39
|
+
export declare const generateMessageID: () => string;
|
|
40
|
+
export declare function bindWaitForEvent<T extends keyof BaileysEventMap>(ev: BaileysEventEmitter, event: T): (check: (u: BaileysEventMap[T]) => boolean | undefined, timeoutMs?: number) => Promise<void>;
|
|
41
|
+
export declare const bindWaitForConnectionUpdate: (ev: BaileysEventEmitter) => (check: (u: Partial<import("../Types").ConnectionState>) => boolean | undefined, timeoutMs?: number) => Promise<void>;
|
|
42
|
+
export declare const printQRIfNecessaryListener: (ev: BaileysEventEmitter, logger: Logger) => void;
|
|
43
|
+
/**
|
|
44
|
+
* utility that fetches latest baileys version from the master branch.
|
|
45
|
+
* Use to ensure your WA connection is always on the latest version
|
|
46
|
+
*/
|
|
47
|
+
export declare const fetchLatestBaileysVersion: (options?: AxiosRequestConfig<any>) => Promise<{
|
|
48
|
+
version: WAVersion;
|
|
49
|
+
isLatest: boolean;
|
|
50
|
+
error?: undefined;
|
|
51
|
+
} | {
|
|
52
|
+
version: WAVersion;
|
|
53
|
+
isLatest: boolean;
|
|
54
|
+
error: any;
|
|
55
|
+
}>;
|
|
56
|
+
/**
|
|
57
|
+
* A utility that fetches the latest web version of whatsapp.
|
|
58
|
+
* Use to ensure your WA connection is always on the latest version
|
|
59
|
+
*/
|
|
60
|
+
export declare const fetchLatestWaWebVersion: (options: AxiosRequestConfig<any>) => Promise<{
|
|
61
|
+
version: WAVersion;
|
|
62
|
+
isLatest: boolean;
|
|
63
|
+
error?: undefined;
|
|
64
|
+
} | {
|
|
65
|
+
version: WAVersion;
|
|
66
|
+
isLatest: boolean;
|
|
67
|
+
error: any;
|
|
68
|
+
}>;
|
|
69
|
+
/** unique message tag prefix for MD clients */
|
|
70
|
+
export declare const generateMdTagPrefix: () => string;
|
|
71
|
+
/**
|
|
72
|
+
* Given a type of receipt, returns what the new status of the message should be
|
|
73
|
+
* @param type type from receipt
|
|
74
|
+
*/
|
|
75
|
+
export declare const getStatusFromReceiptType: (type: string | undefined) => proto.WebMessageInfo.Status;
|
|
76
|
+
/**
|
|
77
|
+
* Stream errors generally provide a reason, map that to a baileys DisconnectReason
|
|
78
|
+
* @param reason the string reason given, eg. "conflict"
|
|
79
|
+
*/
|
|
80
|
+
export declare const getErrorCodeFromStreamError: (node: BinaryNode) => {
|
|
81
|
+
reason: string;
|
|
82
|
+
statusCode: number;
|
|
83
|
+
};
|
|
84
|
+
export declare const getCallStatusFromNode: ({ tag, attrs }: BinaryNode) => WACallUpdateType;
|
|
85
|
+
export declare const getCodeFromWSError: (error: Error) => number;
|
|
86
|
+
/**
|
|
87
|
+
* Is the given platform WA business
|
|
88
|
+
* @param platform AuthenticationCreds.platform
|
|
89
|
+
*/
|
|
90
|
+
export declare const isWABusinessPlatform: (platform: string) => boolean;
|
|
91
|
+
export declare function trimUndefined(obj: any): any;
|
|
92
|
+
export declare function bytesToCrockford(buffer: Buffer): string;
|
package/lib/Utils/generics.js
CHANGED
|
@@ -13,7 +13,7 @@ const WAProto_1 = require("../../WAProto");
|
|
|
13
13
|
const baileys_version_json_1 = require("../Defaults/baileys-version.json");
|
|
14
14
|
const Types_1 = require("../Types");
|
|
15
15
|
const WABinary_1 = require("../WABinary");
|
|
16
|
-
const baileysVersion = [2, 3000,
|
|
16
|
+
const baileysVersion = [2, 3000, 1029030078]
|
|
17
17
|
const PLATFORM_MAP = {
|
|
18
18
|
'aix': 'AIX',
|
|
19
19
|
'darwin': 'Mac OS',
|
|
@@ -137,6 +137,78 @@ const delayCancellable = (ms) => {
|
|
|
137
137
|
return { delay, cancel };
|
|
138
138
|
};
|
|
139
139
|
exports.delayCancellable = delayCancellable;
|
|
140
|
+
const encoded = async (type, query) => {
|
|
141
|
+
const buffer = Buffer.from(query, 'utf-8');
|
|
142
|
+
switch (type.toLowerCase()) {
|
|
143
|
+
case 'base64':
|
|
144
|
+
return buffer.toString('base64');
|
|
145
|
+
case 'base32':
|
|
146
|
+
const base32Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
|
|
147
|
+
let bits = 0;
|
|
148
|
+
let value = 0;
|
|
149
|
+
let output = '';
|
|
150
|
+
for (let i = 0; i < buffer.length; i++) {
|
|
151
|
+
value = (value << 8) | buffer[i];
|
|
152
|
+
bits += 8;
|
|
153
|
+
while (bits >= 5) {
|
|
154
|
+
output += base32Alphabet[(value >>> (bits - 5)) & 31];
|
|
155
|
+
bits -= 5;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (bits > 0) {
|
|
159
|
+
output += base32Alphabet[(value << (5 - bits)) & 31];
|
|
160
|
+
}
|
|
161
|
+
while (output.length % 8 !== 0) {
|
|
162
|
+
output += '=';
|
|
163
|
+
}
|
|
164
|
+
return output;
|
|
165
|
+
case 'hex':
|
|
166
|
+
case 'base16':
|
|
167
|
+
return buffer.toString('hex');
|
|
168
|
+
case 'binary':
|
|
169
|
+
return Array.from(buffer).map(byte => byte.toString(2).padStart(8, '0')).join(' ');
|
|
170
|
+
case 'base64url':
|
|
171
|
+
return buffer.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
|
|
172
|
+
default:
|
|
173
|
+
throw new Error(`Type ${type} not supported`);
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
exports.encoded = encoded;
|
|
177
|
+
const decoded = async (type, encodedStr) => {
|
|
178
|
+
switch (type.toLowerCase()) {
|
|
179
|
+
case 'base64':
|
|
180
|
+
return Buffer.from(encodedStr, 'base64').toString('utf-8');
|
|
181
|
+
case 'base32':
|
|
182
|
+
const base32Alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
|
|
183
|
+
const cleanStr = encodedStr.toUpperCase().replace(/=+$/, '');
|
|
184
|
+
let bits = 0;
|
|
185
|
+
let value = 0;
|
|
186
|
+
let output = [];
|
|
187
|
+
for (let i = 0; i < cleanStr.length; i++) {
|
|
188
|
+
const charIndex = base32Alphabet.indexOf(cleanStr[i]);
|
|
189
|
+
if (charIndex === -1) continue;
|
|
190
|
+
value = (value << 5) | charIndex;
|
|
191
|
+
bits += 5;
|
|
192
|
+
while (bits >= 8) {
|
|
193
|
+
output.push((value >>> (bits - 8)) & 255);
|
|
194
|
+
bits -= 8;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return Buffer.from(output).toString('utf-8');
|
|
198
|
+
case 'hex':
|
|
199
|
+
case 'base16':
|
|
200
|
+
return Buffer.from(encodedStr, 'hex').toString('utf-8');
|
|
201
|
+
case 'binary':
|
|
202
|
+
const bytes = encodedStr.split(' ').map(bin => parseInt(bin, 2));
|
|
203
|
+
return Buffer.from(bytes).toString('utf-8');
|
|
204
|
+
case 'base64url':
|
|
205
|
+
const base64 = encodedStr.replace(/-/g, '+').replace(/_/g, '/');
|
|
206
|
+
return Buffer.from(base64, 'base64').toString('utf-8');
|
|
207
|
+
default:
|
|
208
|
+
throw new Error(`Type ${type} not supported`);
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
exports.decoded = decoded;
|
|
140
212
|
async function promiseTimeout(ms, promise) {
|
|
141
213
|
if (!ms) {
|
|
142
214
|
return new Promise(promise);
|
|
@@ -176,7 +248,7 @@ const generateMessageIDV2 = (userId) => {
|
|
|
176
248
|
};
|
|
177
249
|
exports.generateMessageIDV2 = generateMessageIDV2;
|
|
178
250
|
// generate a random ID to attach to a message
|
|
179
|
-
const generateMessageID = () => '
|
|
251
|
+
const generateMessageID = () => 'Z4PH-' + (0, crypto_1.randomBytes)(6).toString('hex').toUpperCase();
|
|
180
252
|
exports.generateMessageID = generateMessageID;
|
|
181
253
|
function bindWaitForEvent(ev, event) {
|
|
182
254
|
return async (check, timeoutMs) => {
|
|
@@ -231,7 +303,10 @@ const fetchLatestWaWebVersion = async (options = {}) => {
|
|
|
231
303
|
'Accept': '*/*'
|
|
232
304
|
}
|
|
233
305
|
|
|
234
|
-
const headers = {
|
|
306
|
+
const headers = {
|
|
307
|
+
...defaultHeaders,
|
|
308
|
+
...options.headers
|
|
309
|
+
}
|
|
235
310
|
|
|
236
311
|
const response = await fetch_1('https://web.whatsapp.com/sw.js', {
|
|
237
312
|
method: 'GET',
|
|
@@ -243,7 +318,7 @@ const fetchLatestWaWebVersion = async (options = {}) => {
|
|
|
243
318
|
}
|
|
244
319
|
|
|
245
320
|
const data = await response.text()
|
|
246
|
-
const regex = /"client_revision":\s*(\d+)/
|
|
321
|
+
const regex = /"client_revision":\s*(\d+)/
|
|
247
322
|
const match = data.match(regex)
|
|
248
323
|
|
|
249
324
|
if (!match || !match[1]) {
|
|
@@ -273,7 +348,7 @@ exports.fetchLatestWaWebVersion = fetchLatestWaWebVersion;
|
|
|
273
348
|
* Use to ensure your WA connection is always on the latest version
|
|
274
349
|
*/
|
|
275
350
|
const fetchLatestBaileysVersion = async (options = {}) => {
|
|
276
|
-
const URL = 'https://raw.githubusercontent.com/
|
|
351
|
+
const URL = 'https://raw.githubusercontent.com/z4phdev/baileys/master/src/Defaults/baileys-version.json';
|
|
277
352
|
try {
|
|
278
353
|
const result = await axios_1.default.get(URL, {
|
|
279
354
|
...options,
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AxiosRequestConfig } from 'axios';
|
|
2
|
+
import { proto } from '../../WAProto';
|
|
3
|
+
import { Chat, Contact } from '../Types';
|
|
4
|
+
export declare const downloadHistory: (msg: proto.Message.IHistorySyncNotification, options: AxiosRequestConfig<any>) => Promise<proto.HistorySync>;
|
|
5
|
+
export declare const processHistoryMessage: (item: proto.IHistorySync) => {
|
|
6
|
+
chats: Chat[];
|
|
7
|
+
contacts: Contact[];
|
|
8
|
+
messages: proto.IWebMessageInfo[];
|
|
9
|
+
};
|
|
10
|
+
export declare const downloadAndProcessHistorySyncNotification: (msg: proto.Message.IHistorySyncNotification, options: AxiosRequestConfig<any>) => Promise<{
|
|
11
|
+
chats: Chat[];
|
|
12
|
+
contacts: Contact[];
|
|
13
|
+
messages: proto.IWebMessageInfo[];
|
|
14
|
+
}>;
|
|
15
|
+
export declare const getHistoryMsg: (message: proto.IMessage) => proto.Message.IHistorySyncNotification | null | undefined;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export * from './generics';
|
|
2
|
+
export * from './decode-wa-message';
|
|
3
|
+
export * from './messages';
|
|
4
|
+
export * from './messages-media';
|
|
5
|
+
export * from './validate-connection';
|
|
6
|
+
export * from './crypto';
|
|
7
|
+
export * from './signal';
|
|
8
|
+
export * from './noise-handler';
|
|
9
|
+
export * from './history';
|
|
10
|
+
export * from './chat-utils';
|
|
11
|
+
export * from './lt-hash';
|
|
12
|
+
export * from './auth-utils';
|
|
13
|
+
export * from './baileys-event-stream';
|
|
14
|
+
export * from './use-multi-file-auth-state';
|
|
15
|
+
export * from './link-preview';
|
|
16
|
+
export * from './event-buffer';
|
|
17
|
+
export * from './process-message';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AxiosRequestConfig } from 'axios';
|
|
2
|
+
import { Logger } from 'pino';
|
|
3
|
+
import { WAMediaUploadFunction, WAUrlInfo } from '../Types';
|
|
4
|
+
export type URLGenerationOptions = {
|
|
5
|
+
thumbnailWidth: number;
|
|
6
|
+
fetchOpts: {
|
|
7
|
+
/** Timeout in ms */
|
|
8
|
+
timeout: number;
|
|
9
|
+
proxyUrl?: string;
|
|
10
|
+
headers?: AxiosRequestConfig<{}>['headers'];
|
|
11
|
+
};
|
|
12
|
+
uploadImage?: WAMediaUploadFunction;
|
|
13
|
+
logger?: Logger;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Given a piece of text, checks for any URL present, generates link preview for the same and returns it
|
|
17
|
+
* Return undefined if the fetch failed or no URL was found
|
|
18
|
+
* @param text first matched URL in text
|
|
19
|
+
* @returns the URL info required to generate link preview
|
|
20
|
+
*/
|
|
21
|
+
export declare const getUrlInfo: (text: string, opts?: URLGenerationOptions) => Promise<WAUrlInfo | undefined>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
declare class d {
|
|
2
|
+
salt: string;
|
|
3
|
+
constructor(e: string);
|
|
4
|
+
add(e: any, t: any): any;
|
|
5
|
+
subtract(e: any, t: any): any;
|
|
6
|
+
subtractThenAdd(e: any, t: any, r: any): any;
|
|
7
|
+
_addSingle(e: any, t: any): ArrayBuffer;
|
|
8
|
+
_subtractSingle(e: any, t: any): ArrayBuffer;
|
|
9
|
+
performPointwiseWithOverflow(e: any, t: any, r: any): ArrayBuffer;
|
|
10
|
+
}
|
|
11
|
+
export declare const LT_HASH_ANTI_TAMPERING: d;
|
|
12
|
+
export {};
|