zaileys 2.1.6 → 2.1.8

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/dist/index.d.mts CHANGED
@@ -410,6 +410,7 @@ declare const BaseMessagesType: z.ZodObject<{
410
410
  placeholder: "placeholder";
411
411
  encEventUpdate: "encEventUpdate";
412
412
  }>;
413
+ receiverLid: z.ZodString;
413
414
  receiverId: z.ZodString;
414
415
  receiverName: z.ZodString;
415
416
  roomId: z.ZodString;
@@ -511,6 +512,7 @@ declare const ListenerMessagesType: z.ZodObject<{
511
512
  placeholder: "placeholder";
512
513
  encEventUpdate: "encEventUpdate";
513
514
  }>;
515
+ receiverLid: z.ZodString;
514
516
  receiverId: z.ZodString;
515
517
  receiverName: z.ZodString;
516
518
  roomId: z.ZodString;
@@ -611,6 +613,7 @@ declare const ListenerMessagesType: z.ZodObject<{
611
613
  placeholder: "placeholder";
612
614
  encEventUpdate: "encEventUpdate";
613
615
  }>;
616
+ receiverLid: z.ZodString;
614
617
  receiverId: z.ZodString;
615
618
  receiverName: z.ZodString;
616
619
  roomId: z.ZodString;
@@ -1105,6 +1108,7 @@ declare class AudioProcessor {
1105
1108
  declare class VideoProcessor {
1106
1109
  static getThumbnail(input: MediaInput): Promise<string>;
1107
1110
  static getDuration(filePath: string): Promise<number>;
1111
+ static getWaVideo(input: MediaInput): Promise<Buffer>;
1108
1112
  }
1109
1113
  declare class ImageProcessor {
1110
1114
  static getThumbnail(buffer: Buffer): Promise<string>;
@@ -1131,6 +1135,7 @@ declare class DocumentProcessor {
1131
1135
  declare const toBuffer: any;
1132
1136
  declare const getWaAudio: any;
1133
1137
  declare const getWaImage: any;
1138
+ declare const getWaVideo: any;
1134
1139
  declare const getVideoThumbnail: any;
1135
1140
  declare const getVideoDuration: any;
1136
1141
  declare const getMediaThumbnail: any;
@@ -1147,4 +1152,4 @@ declare const cleanupSocket: (socket: WASocket) => void;
1147
1152
  declare const repairSessionKeys: (session: string) => Promise<void>;
1148
1153
  declare const getExistingSocket: () => WASocket | null;
1149
1154
 
1150
- export { AudioProcessor, type AudioType, BaseMessagesType, ButtonInteractiveCallType, ButtonInteractiveCopyType, ButtonInteractiveReplyType, ButtonInteractiveSingleSelectType, ButtonInteractiveType, ButtonInteractiveUrlType, ButtonSimpleType, ButtonType, type CallsContext, CitationType, Client, ClientAuthPairingType, ClientAuthQRType, ClientBaseType, ClientOptionsType, type ConnectionContext, DEVICE_ENUM_TYPES, DocumentProcessor, type EventCallbackType, EventEnumType, FakeReplyType, ImageProcessor, LimiterType, ListenerCallsType, ListenerConnectionType, ListenerMessagesType, MESSAGE_ENUM_TYPES, MediaProcessor, type MessagesContext, type PluginDefinition, Plugins, type PluginsConfigType, type PluginsHandlerType, StickerMetadataType, StickerProcessor, StickerShapeType, VideoProcessor, cleanJid, cleanMediaObject, cleanupSocket, configureFFmpeg, definePlugins, extractJids, extractUrls, findGlobalWord, findNestedByKeys, generateId, getDeepContent, getExistingSocket, getLatestLibVersion, getMediaThumbnail, getUsersMentions, getVideoDuration, getVideoThumbnail, getWaAudio, getWaDocument, getWaImage, getWaSticker, ignoreLint, logColor, modifyFn, normalizeText, numbersToJids, pickKeysFromArray, randomize, registerAuthCreds, removeAuthCreds, repairSessionKeys, shuffleString, toBuffer, toJson, toString, useAuthState };
1155
+ export { AudioProcessor, type AudioType, BaseMessagesType, ButtonInteractiveCallType, ButtonInteractiveCopyType, ButtonInteractiveReplyType, ButtonInteractiveSingleSelectType, ButtonInteractiveType, ButtonInteractiveUrlType, ButtonSimpleType, ButtonType, type CallsContext, CitationType, Client, ClientAuthPairingType, ClientAuthQRType, ClientBaseType, ClientOptionsType, type ConnectionContext, DEVICE_ENUM_TYPES, DocumentProcessor, type EventCallbackType, EventEnumType, FakeReplyType, ImageProcessor, LimiterType, ListenerCallsType, ListenerConnectionType, ListenerMessagesType, MESSAGE_ENUM_TYPES, MediaProcessor, type MessagesContext, type PluginDefinition, Plugins, type PluginsConfigType, type PluginsHandlerType, StickerMetadataType, StickerProcessor, StickerShapeType, VideoProcessor, cleanJid, cleanMediaObject, cleanupSocket, configureFFmpeg, definePlugins, extractJids, extractUrls, findGlobalWord, findNestedByKeys, generateId, getDeepContent, getExistingSocket, getLatestLibVersion, getMediaThumbnail, getUsersMentions, getVideoDuration, getVideoThumbnail, getWaAudio, getWaDocument, getWaImage, getWaSticker, getWaVideo, ignoreLint, logColor, modifyFn, normalizeText, numbersToJids, pickKeysFromArray, randomize, registerAuthCreds, removeAuthCreds, repairSessionKeys, shuffleString, toBuffer, toJson, toString, useAuthState };
package/dist/index.d.ts CHANGED
@@ -410,6 +410,7 @@ declare const BaseMessagesType: z.ZodObject<{
410
410
  placeholder: "placeholder";
411
411
  encEventUpdate: "encEventUpdate";
412
412
  }>;
413
+ receiverLid: z.ZodString;
413
414
  receiverId: z.ZodString;
414
415
  receiverName: z.ZodString;
415
416
  roomId: z.ZodString;
@@ -511,6 +512,7 @@ declare const ListenerMessagesType: z.ZodObject<{
511
512
  placeholder: "placeholder";
512
513
  encEventUpdate: "encEventUpdate";
513
514
  }>;
515
+ receiverLid: z.ZodString;
514
516
  receiverId: z.ZodString;
515
517
  receiverName: z.ZodString;
516
518
  roomId: z.ZodString;
@@ -611,6 +613,7 @@ declare const ListenerMessagesType: z.ZodObject<{
611
613
  placeholder: "placeholder";
612
614
  encEventUpdate: "encEventUpdate";
613
615
  }>;
616
+ receiverLid: z.ZodString;
614
617
  receiverId: z.ZodString;
615
618
  receiverName: z.ZodString;
616
619
  roomId: z.ZodString;
@@ -1105,6 +1108,7 @@ declare class AudioProcessor {
1105
1108
  declare class VideoProcessor {
1106
1109
  static getThumbnail(input: MediaInput): Promise<string>;
1107
1110
  static getDuration(filePath: string): Promise<number>;
1111
+ static getWaVideo(input: MediaInput): Promise<Buffer>;
1108
1112
  }
1109
1113
  declare class ImageProcessor {
1110
1114
  static getThumbnail(buffer: Buffer): Promise<string>;
@@ -1131,6 +1135,7 @@ declare class DocumentProcessor {
1131
1135
  declare const toBuffer: any;
1132
1136
  declare const getWaAudio: any;
1133
1137
  declare const getWaImage: any;
1138
+ declare const getWaVideo: any;
1134
1139
  declare const getVideoThumbnail: any;
1135
1140
  declare const getVideoDuration: any;
1136
1141
  declare const getMediaThumbnail: any;
@@ -1147,4 +1152,4 @@ declare const cleanupSocket: (socket: WASocket) => void;
1147
1152
  declare const repairSessionKeys: (session: string) => Promise<void>;
1148
1153
  declare const getExistingSocket: () => WASocket | null;
1149
1154
 
1150
- export { AudioProcessor, type AudioType, BaseMessagesType, ButtonInteractiveCallType, ButtonInteractiveCopyType, ButtonInteractiveReplyType, ButtonInteractiveSingleSelectType, ButtonInteractiveType, ButtonInteractiveUrlType, ButtonSimpleType, ButtonType, type CallsContext, CitationType, Client, ClientAuthPairingType, ClientAuthQRType, ClientBaseType, ClientOptionsType, type ConnectionContext, DEVICE_ENUM_TYPES, DocumentProcessor, type EventCallbackType, EventEnumType, FakeReplyType, ImageProcessor, LimiterType, ListenerCallsType, ListenerConnectionType, ListenerMessagesType, MESSAGE_ENUM_TYPES, MediaProcessor, type MessagesContext, type PluginDefinition, Plugins, type PluginsConfigType, type PluginsHandlerType, StickerMetadataType, StickerProcessor, StickerShapeType, VideoProcessor, cleanJid, cleanMediaObject, cleanupSocket, configureFFmpeg, definePlugins, extractJids, extractUrls, findGlobalWord, findNestedByKeys, generateId, getDeepContent, getExistingSocket, getLatestLibVersion, getMediaThumbnail, getUsersMentions, getVideoDuration, getVideoThumbnail, getWaAudio, getWaDocument, getWaImage, getWaSticker, ignoreLint, logColor, modifyFn, normalizeText, numbersToJids, pickKeysFromArray, randomize, registerAuthCreds, removeAuthCreds, repairSessionKeys, shuffleString, toBuffer, toJson, toString, useAuthState };
1155
+ export { AudioProcessor, type AudioType, BaseMessagesType, ButtonInteractiveCallType, ButtonInteractiveCopyType, ButtonInteractiveReplyType, ButtonInteractiveSingleSelectType, ButtonInteractiveType, ButtonInteractiveUrlType, ButtonSimpleType, ButtonType, type CallsContext, CitationType, Client, ClientAuthPairingType, ClientAuthQRType, ClientBaseType, ClientOptionsType, type ConnectionContext, DEVICE_ENUM_TYPES, DocumentProcessor, type EventCallbackType, EventEnumType, FakeReplyType, ImageProcessor, LimiterType, ListenerCallsType, ListenerConnectionType, ListenerMessagesType, MESSAGE_ENUM_TYPES, MediaProcessor, type MessagesContext, type PluginDefinition, Plugins, type PluginsConfigType, type PluginsHandlerType, StickerMetadataType, StickerProcessor, StickerShapeType, VideoProcessor, cleanJid, cleanMediaObject, cleanupSocket, configureFFmpeg, definePlugins, extractJids, extractUrls, findGlobalWord, findNestedByKeys, generateId, getDeepContent, getExistingSocket, getLatestLibVersion, getMediaThumbnail, getUsersMentions, getVideoDuration, getVideoThumbnail, getWaAudio, getWaDocument, getWaImage, getWaSticker, getWaVideo, ignoreLint, logColor, modifyFn, normalizeText, numbersToJids, pickKeysFromArray, randomize, registerAuthCreds, removeAuthCreds, repairSessionKeys, shuffleString, toBuffer, toJson, toString, useAuthState };
package/dist/index.js CHANGED
@@ -1,16 +1,16 @@
1
- 'use strict';var Ut=require('baileys'),$e=require('fs/promises'),jetdb=require('jetdb'),nanospinner=require('nanospinner'),Ne=require('node-cache'),events=require('events'),Bt=require('pino'),F=require('fs'),ot=require('unorm'),at=require('gradient-string'),x=require('lodash'),fileType=require('file-type'),Z=require('fluent-ffmpeg'),Jt=require('node-webpmux'),os$1=require('os'),Le=require('path'),ie=require('sharp'),Ht=require('figlet'),Qt=require('qrcode-terminal'),rateLimiterFlexible=require('rate-limiter-flexible'),u=require('zod'),As=require('stream'),url=require('url');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var Ut__default=/*#__PURE__*/_interopDefault(Ut);var $e__default=/*#__PURE__*/_interopDefault($e);var Ne__default=/*#__PURE__*/_interopDefault(Ne);var Bt__default=/*#__PURE__*/_interopDefault(Bt);var F__namespace=/*#__PURE__*/_interopNamespace(F);var ot__default=/*#__PURE__*/_interopDefault(ot);var at__default=/*#__PURE__*/_interopDefault(at);var x__default=/*#__PURE__*/_interopDefault(x);var Z__default=/*#__PURE__*/_interopDefault(Z);var Jt__default=/*#__PURE__*/_interopDefault(Jt);var Le__namespace=/*#__PURE__*/_interopNamespace(Le);var ie__default=/*#__PURE__*/_interopDefault(ie);var Ht__default=/*#__PURE__*/_interopDefault(Ht);var Qt__default=/*#__PURE__*/_interopDefault(Qt);var u__default=/*#__PURE__*/_interopDefault(u);var As__default=/*#__PURE__*/_interopDefault(As);var Be=class{data=new Map;set(e,t){let n=s=>s&&typeof s=="object"&&s.constructor===Object,o=this.data.get(e);n(t)&&n(o)?this.data.set(e,{...o,...t}):this.data.set(e,t);}get(e){return this.data.get(e)||{}}update(e,t){let n=this.get(e);this.set(e,t(n));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}db(e,t){let n=`.session/${e}/store/${t}.json`;return jetdb.createJetDB(n,{cacheSize:5e3,flushMode:"debounce",debounceMs:300,compression:"deflate",serialization:"json",enableIndexing:true,hotThreshold:5})}spinner=nanospinner.createSpinner("",{color:"green"});logger=Bt__default.default({level:"silent",enabled:false});events=new events.EventEmitter;groupCache=new Ne__default.default({stdTTL:300,useClones:false});collectors=new Map},i=new Be;var Ye=async a=>{i.spinner.start(" Initializing auth state...");let e=await $e.stat(a).catch(()=>{});if(e){if(!e.isDirectory())throw i.spinner.error(` Failed to open credentials
2
- `),`found something that is not a directory at ${a}, either delete it or specify a different location`}else await $e.mkdir(a,{recursive:true});let t=jetdb.createJetDB(`${a}/auth/creds.json`,{BufferJSON:Ut.BufferJSON,cacheSize:100,flushMode:"sync",compression:"none",enableIndexing:false}),n=jetdb.createJetDB(`${a}/auth/keys.json`,{BufferJSON:Ut.BufferJSON,size:512*1024,cacheSize:1e3,flushMode:"debounce",debounceMs:500,compression:"deflate",enableIndexing:false,hotThreshold:3});await Promise.all([t.read(),n.read()]);let o=await t.get("creds")||Ut.initAuthCreds();return i.spinner.success(" Generate auth successfully"),{state:{creds:o,keys:{get:async(s,r)=>{let c={};return await Promise.all(r.map(async l=>{let p=`${s}:${l}`,k=await n.get(p);s==="app-state-sync-key"&&k&&(k=Ut.proto.Message.AppStateSyncKeyData.fromObject(k)),c[l]=k;})),c},set:async s=>{let r=[],c=[];for(let l in s)for(let p in s[l]){let k=s[l][p],v=`${l}:${p}`;k?r.push({key:v,value:k}):c.push(v);}r.length&&await n.batchSet(r),c.length&&await n.batchDelete(c),await n.flush();}}},saveCreds:async()=>{await t.set("creds",o),await t.write();}}};var jt=new Ne__default.default,Xe=(a,e)=>({logger:i.logger,printQRInTerminal:false,markOnlineOnConnect:a.options.autoOnline,syncFullHistory:a.options.syncFullHistory,msgRetryCounterCache:new Ne__default.default,mediaCache:new Ne__default.default({stdTTL:60}),cachedGroupMetadata:async t=>jt.get(t),auth:{creds:e.creds,keys:Ut.makeCacheableSignalKeyStore(e.keys,i.logger)},shouldIgnoreJid:()=>false,patchMessageBeforeSending:t=>t,getMessage:async t=>t?.remoteJid?await a.db("messages").query(t.remoteJid).where("key.id","=",t.id).first():void 0});var tt=a=>{if(a)try{a.ev?.removeAllListeners(),a.end?.(new Error("Cleanup"));}catch{}},oe=async a=>{let e=`.session/${a}/auth/keys.json`;try{let t=await F.promises.readFile(e,"utf-8"),n=JSON.parse(t),o=["sender-key:","session:"],s={},r=!1;for(let[c,l]of Object.entries(n))o.some(k=>c.startsWith(k))?r=!0:s[c]=l;r&&(await F.promises.writeFile(e,JSON.stringify(s,null,2)),i.spinner.success(" Session keys repaired successfully"));}catch{i.spinner.warn(" Could not repair session keys, will re-negotiate");}},st=()=>{let a=i.get("socket");return a?.end?a:null};var nt=async a=>{let e=st();e&&tt(e);let t=`.session/${a.options.session}`;console.info=()=>{};let{state:n,saveCreds:o}=await Ye(t),s=Xe(a,n),r=Ut__default.default(s);r.ev.on("creds.update",o),i.set("socket",r);};var h=a=>a,rt=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(a){throw a}},it=async a=>{try{let e=`.session/${a}/auth/creds.json`;await $e__default.default.unlink(e);}catch(e){throw i.spinner.error(`Failed to remove auth creds for session "${a}"!`),e}},R=(a="")=>{if(!a?.length)return null;let e=a.replace(/\u202E(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/\u202D(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/gu,"").replace(/[\u200B\u200C\u200D\uFEFF]/gu,"").replace(/[\u00AD\u034F\u115F\u1160\u17B4\u17B5\u180B-\u180E]/gu,"").replace(/[\u2060-\u2064\u206A-\u206F]/gu,"").replace(/[\u2800\uFFFC\uFFFD]/gu,"").replace(/[\uFE00-\uFE0F]/gu,"").split("").map(t=>ot__default.default.nfkd(t)).join("").replace(/[\u0300-\u036F]/gu,"").replace(/[\u1AB0-\u1AFF]/gu,"").replace(/[\u1DC0-\u1DFF]/gu,"").replace(/[\u20D0-\u20FF]/gu,"").replace(/[\uFE20-\uFE2F]/gu,"").replace(/[\p{Cc}]/gu,"").replace(/[\p{Cf}]/gu,"").replace(/[\p{Co}]/gu,"").replace(/[\p{Cn}]/gu,"").replace(/[\p{Cs}]/gu,"").replace(/[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/gu," ").replace(/[\u2028\u2029]/gu," ").replace(/[\t\r\n\f\v]/g," ").split("").map(t=>ot__default.default.nfkc(t)).join("").normalize("NFC").replace(/\s+/g," ").trim();return e.length?e:null};var M=(a,e="lime")=>Array.isArray(e)?at__default.default(e)(a):at__default.default([e,e])(a),Oe=a=>{try{return JSON.parse(a)}catch{return x__default.default.attempt(()=>JSON.parse(JSON.stringify(a)||"{}"))}},J=a=>{try{return JSON.stringify(a)}catch{let e=x__default.default.attempt(()=>JSON.stringify(Oe(a)||"{}"));return x__default.default.isError(e)?"{}":e}},Cn=(a="")=>x__default.default.shuffle(a).join(""),K=(a="",e="")=>a?x__default.default.includes(a.toLowerCase(),e.toLowerCase()):null,ct=(a="")=>a?x__default.default.castArray(a.match(Ut.URL_REGEX)||[]):[],An=a=>a[Math.floor(Math.random()*a.length)],N=(a,e)=>{let t=o=>!!(o==null||typeof o=="string"&&o.trim()===""||Array.isArray(o)&&o.length===0||typeof o=="object"&&Object.keys(o).length===0),n=(o,s)=>{if(!o||typeof o!="object")return;let r=o,c=s.split(".");for(let l of c){let p=l.match(/^(.+?)\[(\d+)\]$/);if(p){let[,k,v]=p;r=r?.[k]?.[parseInt(v,10)];}else r=r?.[l];if(t(r))return}return r};if(!(!Array.isArray(a)||a.length===0)&&!(!Array.isArray(e)||e.length===0)){for(let o of a)if(!(!o||typeof o!="object"))for(let s of e){let r=n(o,s);if(!t(r))return r}}},In=(a,e)=>{let t=x__default.default.castArray(e),n=(r,c)=>x__default.default.every(c,(l,p)=>r?.[p]===l),o=(r,c)=>x__default.default.some(c,(l,p)=>r?.[p]===l),s=r=>x__default.default.isArray(r)?x__default.default.find(r,s)??r:x__default.default.isObject(r)?x__default.default.find(t,p=>n(r,p))||x__default.default.find(t,p=>o(r,p))?r:x__default.default.find(x__default.default.values(r),s)??r:null;return s(a)},Rn=(a,e,t)=>new Proxy(a,{apply(n,o,s){e?.(s);let r=Reflect.apply(n,o,s);return t?t(r,s):r}});var L=a=>{let e;Array.isArray(a)?e=a.join("|"):typeof a=="string"?e=a:e=String(a);let t=2166136261,n=e.length;for(let o=0;o<n;o++)t^=e.charCodeAt(o),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},lt=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))e.add(t[1]);return x__default.default.toArray(e)},Fe=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return x__default.default.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},Nn=a=>x__default.default.isEmpty(a)?[]:x__default.default.map([...a],e=>`${e}@s.whatsapp.net`),pt=a=>x__default.default.omit(a,["url","contextInfo","fileSha256","fileEncSha256","mediaKey","directPath","waveform","thumbnail","jpegThumbnail","thumbnailEncSha256","thumbnailSha256","thumbnailDirectPath","firstFrameSidecar","streamingSidecar","scansSidecar","callKey","message","key","midQualityFileSha256","historySyncNotification","appStateSyncKeyShare","appStateSyncKeyRequest","initialSecurityNotificationSettingSync","appStateFatalExceptionNotification","disappearingMode","peerDataOperationRequestMessage","peerDataOperationRequestResponseMessage","botFeedbackMessage"]),re=a=>{if(!a)return {leaf:void 0,chain:[]};let e=Ut.extractMessageContent(a)||a,t=[];for(;e&&typeof e=="object";){let n=Ut.getContentType(e);if(!n)break;t.push(n);let o=e[n];if(!o||typeof o!="object"){e=o;break}e=o;}return {leaf:e,chain:t}},P=a=>Number(a?.split("@")[0]);var ut=async(a=false)=>{if(!a)try{let e=(await import('@ffmpeg-installer/ffmpeg')).default,t=(await import('@ffprobe-installer/ffprobe')).default;Z__default.default.setFfmpegPath(e.path),Z__default.default.setFfprobePath(t.path);}catch{}},y={OPUS:{CODEC:"libopus",CHANNELS:1,FREQUENCY:48e3,BITRATE:"48k",FORMAT:"ogg"},THUMBNAIL:{SIZE:100,QUALITY:50,TIMESTAMP:"10%"},STICKER:{SIZE:512,MAX_DURATION:10,FPS:15,DEFAULT_QUALITY:80,COMPRESSION_LEVEL:6},MIME:{AUDIO:"audio/",VIDEO:"video/",IMAGE:"image/",GIF:"image/gif",MP4:"video/mp4"}},b=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return Le__namespace.default.join(os$1.tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>$e__default.default.unlink(t)));}static async safeReadFile(e){try{return await $e__default.default.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await $e__default.default.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},I=class{static async toBuffer(e){if(x__default.default.isBuffer(e))return e;if(x__default.default.isArrayBuffer(e))return Buffer.from(e);if(x__default.default.isString(e))return this.fromString(e);throw new Error("Invalid input type: expected string, Buffer, or ArrayBuffer")}static async fromString(e){return e.startsWith("http://")||e.startsWith("https://")?this.fromUrl(e):Buffer.from(e,"base64")}static async fromUrl(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);let n=await t.arrayBuffer();return Buffer.from(n)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},j=class{static validate(e,t){if(!e?.mime?.startsWith(t))throw new Error(`Invalid file type: expected ${t}*, got ${e?.mime||"unknown"}`)}static isMedia(e){return e.startsWith(y.MIME.IMAGE)||e.startsWith(y.MIME.VIDEO)}static isAnimated(e){return e===y.MIME.GIF||e.startsWith(y.MIME.VIDEO)}},Q=class{static async process(e){return new Promise((t,n)=>{let o=Z__default.default(e.input).output(e.output);for(let s=0;s<e.options.length;s++){let r=e.options[s];r.startsWith("-")&&s+1<e.options.length&&!e.options[s+1].startsWith("-")?(o.outputOptions(r,e.options[s+1]),s++):o.outputOptions(r);}o.on("end",async()=>{try{await e.onEnd(),t();}catch(s){n(s);}}).on("error",async s=>{try{await e.onError(s);}finally{n(s);}}).run();})}static async getDuration(e){return new Promise((t,n)=>{Z__default.default.ffprobe(e,(o,s)=>{if(o)return n(o);t(s.format.duration||0);});})}},ae=class{static async getWaAudio(e,t="opus"){let n=await I.toBuffer(e),o=await fileType.fileTypeFromBuffer(n);j.validate(o,y.MIME.AUDIO);let s=b.createTempPath("audio_in","wav"),r=t==="opus"?"ogg":"mp3",c=b.createTempPath("audio_out",r);await b.safeWriteFile(s,n);let l;try{let p=t==="opus"?["-vn","-c:a","libopus","-b:a","48k","-ac","1","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","opus"]:["-vn","-c:a","libmp3lame","-b:a","128k","-ac","2","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","mp3"];return await Q.process({input:s,output:c,options:p,onEnd:async()=>{l=await b.safeReadFile(c);},onError:async()=>{await b.cleanup([s,c]);}}),await b.cleanup([s,c]),l}catch(p){throw await b.cleanup([s,c]),new Error(`${t.toUpperCase()} conversion failed: ${p.message}`)}}},W=class{static async getThumbnail(e){let t=await I.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);j.validate(n,y.MIME.VIDEO);let o=b.createTempPath("video","mp4"),s=b.createTempPath("thumb","jpg");await b.safeWriteFile(o,t);let r;try{return await new Promise((c,l)=>{Z__default.default(o).screenshots({timestamps:[y.THUMBNAIL.TIMESTAMP],filename:Le__namespace.default.basename(s),folder:Le__namespace.default.dirname(s),size:`${y.THUMBNAIL.SIZE}x${y.THUMBNAIL.SIZE}`,quality:y.THUMBNAIL.QUALITY}).on("end",async()=>{try{r=(await b.safeReadFile(s)).toString("base64"),c();}catch(p){l(p);}}).on("error",l);}),await b.cleanup([o,s]),r}catch(c){throw await b.cleanup([o,s]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return Q.getDuration(e)}},U=class{static async getThumbnail(e){return (await((await fileType.fileTypeFromBuffer(e)).mime===y.MIME.GIF?ie__default.default(e,{animated:false}):ie__default.default(e)).resize(y.THUMBNAIL.SIZE,y.THUMBNAIL.SIZE,{fit:"cover"}).jpeg({quality:y.THUMBNAIL.QUALITY}).toBuffer()).toString("base64")}static async resizeForSticker(e,t,n="default"){let o=ie__default.default(e).resize(y.STICKER.SIZE,y.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}});if(n!=="default"){let s=y.STICKER.SIZE,r;switch(n){case "rounded":r=`<svg width="${s}" height="${s}"><rect x="0" y="0" width="${s}" height="${s}" rx="${s/10}" ry="${s/10}" fill="white"/></svg>`;break;case "circle":r=`<svg width="${s}" height="${s}"><circle cx="${s/2}" cy="${s/2}" r="${s/2}" fill="white"/></svg>`;break;case "oval":r=`<svg width="${s}" height="${s}"><ellipse cx="${s/2}" cy="${s/2}" rx="${s/2}" ry="${s/3}" fill="white"/></svg>`;break;default:r="";}r&&(o=o.composite([{input:Buffer.from(r),blend:"dest-in"}]));}return o.webp({quality:t}).toBuffer()}static async getWaImage(e){let t=await I.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);if(!n||!n.mime.startsWith(y.MIME.IMAGE))throw new Error("Invalid image type");return n.mime==="image/webp"?await ie__default.default(t).jpeg().toBuffer():t}},Y=class{static async getThumbnail(e){let t=await I.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);if(!n||!j.isMedia(n.mime))throw new Error("Invalid media type: expected image or video");return n.mime.startsWith(y.MIME.VIDEO)?W.getThumbnail(e):U.getThumbnail(t)}},ce=class{static createExifMetadata(e){let t={"sticker-pack-id":L(Date.now().toString()),"sticker-pack-name":e?.packageName||"Zaileys Library","sticker-pack-publisher":e?.authorName||"https://github.com/zeative/zaileys",emojis:["\u{1F913}"],"android-app-store-link":"https://play.google.com/store/apps/details?id=com.marsvard.stickermakerforwhatsapp","ios-app-store-link":"https://itunes.apple.com/app/sticker-maker-studio/id1443326857"},n=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),o=Buffer.from(JSON.stringify(t),"utf8"),s=Buffer.concat([n,o]);return s.writeUIntLE(o.length,14,4),s}static async processAnimated(e,t,n){let o=this.getExtension(t),s=b.createTempPath("sticker_in",o),r=b.createTempPath("sticker_out","webp");await b.safeWriteFile(s,e);let c=y.STICKER.MAX_DURATION;try{let v=await W.getDuration(s);c=h(Math.min(v,y.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",y.STICKER.MAX_DURATION);}let l=`scale=${y.STICKER.SIZE}:${y.STICKER.SIZE}:force_original_aspect_ratio=increase,crop=${y.STICKER.SIZE}:${y.STICKER.SIZE},fps=${y.STICKER.FPS},format=rgba`,p=Math.max(1,Math.min(100,100-n)),k;try{return await Q.process({input:s,output:r,options:["-vcodec libwebp",`-vf ${l}`,`-q:v ${p}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${y.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{k=await b.safeReadFile(r);},onError:async()=>{await b.cleanup([s,r]);}}),await b.cleanup([s,r]),k}catch(v){throw await b.cleanup([s,r]),new Error(`Animated sticker processing failed: ${v.message}`)}}static getExtension(e){return e===y.MIME.GIF?"gif":e.startsWith(y.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let n=await I.toBuffer(e),o=await fileType.fileTypeFromBuffer(n);if(!o)throw new Error("Unable to detect file type");let s=t?.quality||y.STICKER.DEFAULT_QUALITY,r=j.isAnimated(o.mime),c=t?.shape||"default",l=r?await this.processAnimated(n,o.mime,s):await U.resizeForSticker(n,s,c),p=this.createExifMetadata(t),k=new Jt__default.default.Image;await k.load(l),k.exif=p;let v=await k.save(null);return Buffer.isBuffer(v)?v:Buffer.from(v)}catch(n){throw new Error(`Sticker creation failed: ${n.message||n}`)}}},le=class{static async create(e){try{let t=await I.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);if(!n)throw new Error("Unable to detect file type");return {document:t,mimetype:n.mime,fileName:L(Date.now().toString()),jpegThumbnail:await Y.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},pe=I.toBuffer.bind(I),mt=ae.getWaAudio.bind(ae),dt=U.getWaImage.bind(U),Kn=W.getThumbnail.bind(W),Hn=W.getDuration.bind(W),je=Y.getThumbnail.bind(Y),ft=ce.create.bind(ce),gt=le.create.bind(le);var ue=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=i.get("socket");e.ev.on("call",async t=>{for(let n of t){let o=await this.parse(n);o&&(await this.client.middleware.run({calls:o}),await this.client.plugins.execute(this.client,{messages:o}),i.events.emit("calls",o),this.client.options?.autoRejectCall&&await e.rejectCall(o.callId,o.callerId));}});}async parse(e){let t=i.get("socket"),n={};return n.callId=e.id,n.callerId=Ut.jidNormalizedUser(e.from),n.callerName=await this.client.getRoomName(n.callerId),n.roomId=Ut.jidNormalizedUser(e.chatId),n.roomName=R(t?.user?.name||t?.user?.verifiedName),n.date=e.date,n.offline=e.offline,n.status=e.status,n.isVideo=!!e.isVideo,n.isGroup=!!e.isGroup,this.client.logs.call(n),n}};var ht=a=>{Qt__default.default.generate(a,{small:true},e=>{console.log(e);});},kt=async()=>{console.clear(),i.spinner.start(" Checking for updates...");let a="2.1.5",e="zaadevofc",t=await rt(),n=a===t;i.spinner.stop();let o="Zaileys",s=`
1
+ 'use strict';var zt=require('baileys'),$e=require('fs/promises'),jetdb=require('jetdb'),nanospinner=require('nanospinner'),Oe=require('node-cache'),events=require('events'),Ot=require('pino'),F=require('fs'),ot=require('unorm'),at=require('gradient-string'),x=require('lodash'),fileType=require('file-type'),Y=require('fluent-ffmpeg'),Kt=require('node-webpmux'),os$1=require('os'),Le=require('path'),ie=require('sharp'),Zt=require('figlet'),Yt=require('qrcode-terminal'),rateLimiterFlexible=require('rate-limiter-flexible'),u=require('zod'),Is=require('stream'),url=require('url');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var zt__default=/*#__PURE__*/_interopDefault(zt);var $e__default=/*#__PURE__*/_interopDefault($e);var Oe__default=/*#__PURE__*/_interopDefault(Oe);var Ot__default=/*#__PURE__*/_interopDefault(Ot);var F__namespace=/*#__PURE__*/_interopNamespace(F);var ot__default=/*#__PURE__*/_interopDefault(ot);var at__default=/*#__PURE__*/_interopDefault(at);var x__default=/*#__PURE__*/_interopDefault(x);var Y__default=/*#__PURE__*/_interopDefault(Y);var Kt__default=/*#__PURE__*/_interopDefault(Kt);var Le__namespace=/*#__PURE__*/_interopNamespace(Le);var ie__default=/*#__PURE__*/_interopDefault(ie);var Zt__default=/*#__PURE__*/_interopDefault(Zt);var Yt__default=/*#__PURE__*/_interopDefault(Yt);var u__default=/*#__PURE__*/_interopDefault(u);var Is__default=/*#__PURE__*/_interopDefault(Is);var Be=class{data=new Map;set(e,t){let n=s=>s&&typeof s=="object"&&s.constructor===Object,o=this.data.get(e);n(t)&&n(o)?this.data.set(e,{...o,...t}):this.data.set(e,t);}get(e){return this.data.get(e)||{}}update(e,t){let n=this.get(e);this.set(e,t(n));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}db(e,t){let n=`.session/${e}/store/${t}.json`;return jetdb.createJetDB(n,{cacheSize:5e3,flushMode:"debounce",debounceMs:300,compression:"deflate",serialization:"json",enableIndexing:true,hotThreshold:5})}spinner=nanospinner.createSpinner("",{color:"green"});logger=Ot__default.default({level:"silent",enabled:false});events=new events.EventEmitter;groupCache=new Oe__default.default({stdTTL:300,useClones:false});collectors=new Map},i=new Be;var Ye=async a=>{i.spinner.start(" Initializing auth state...");let e=await $e.stat(a).catch(()=>{});if(e){if(!e.isDirectory())throw i.spinner.error(` Failed to open credentials
2
+ `),`found something that is not a directory at ${a}, either delete it or specify a different location`}else await $e.mkdir(a,{recursive:true});let t=jetdb.createJetDB(`${a}/auth/creds.json`,{BufferJSON:zt.BufferJSON,cacheSize:100,flushMode:"sync",compression:"none",enableIndexing:false}),n=jetdb.createJetDB(`${a}/auth/keys.json`,{BufferJSON:zt.BufferJSON,size:512*1024,cacheSize:1e3,flushMode:"debounce",debounceMs:500,compression:"deflate",enableIndexing:false,hotThreshold:3});await Promise.all([t.read(),n.read()]);let o=await t.get("creds")||zt.initAuthCreds();return i.spinner.success(" Generate auth successfully"),{state:{creds:o,keys:{get:async(s,r)=>{let c={};return await Promise.all(r.map(async l=>{let p=`${s}:${l}`,k=await n.get(p);s==="app-state-sync-key"&&k&&(k=zt.proto.Message.AppStateSyncKeyData.fromObject(k)),c[l]=k;})),c},set:async s=>{let r=[],c=[];for(let l in s)for(let p in s[l]){let k=s[l][p],M=`${l}:${p}`;k?r.push({key:M,value:k}):c.push(M);}r.length&&await n.batchSet(r),c.length&&await n.batchDelete(c),await n.flush();}}},saveCreds:async()=>{await t.set("creds",o),await t.write();}}};var Ut=new Oe__default.default,Xe=(a,e)=>({logger:i.logger,printQRInTerminal:false,markOnlineOnConnect:a.options.autoOnline,syncFullHistory:a.options.syncFullHistory,msgRetryCounterCache:new Oe__default.default,mediaCache:new Oe__default.default({stdTTL:60}),cachedGroupMetadata:async t=>Ut.get(t),auth:{creds:e.creds,keys:zt.makeCacheableSignalKeyStore(e.keys,i.logger)},shouldIgnoreJid:()=>false,patchMessageBeforeSending:t=>t,getMessage:async t=>t?.remoteJid?await a.db("messages").query(t.remoteJid).where("key.id","=",t.id).first():void 0});var tt=a=>{if(a)try{a.ev?.removeAllListeners(),a.end?.(new Error("Cleanup"));}catch{}},oe=async a=>{let e=`.session/${a}/auth/keys.json`;try{let t=await F.promises.readFile(e,"utf-8"),n=JSON.parse(t),o=["sender-key:","session:"],s={},r=!1;for(let[c,l]of Object.entries(n))o.some(k=>c.startsWith(k))?r=!0:s[c]=l;r&&(await F.promises.writeFile(e,JSON.stringify(s,null,2)),i.spinner.success(" Session keys repaired successfully"));}catch{i.spinner.warn(" Could not repair session keys, will re-negotiate");}},st=()=>{let a=i.get("socket");return a?.end?a:null};var nt=async a=>{let e=st();e&&tt(e);let t=`.session/${a.options.session}`;console.info=()=>{};let{state:n,saveCreds:o}=await Ye(t),s=Xe(a,n),r=zt__default.default(s);r.ev.on("creds.update",o),i.set("socket",r);};var h=a=>a,rt=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(a){throw a}},it=async a=>{try{let e=`.session/${a}/auth/creds.json`;await $e__default.default.unlink(e);}catch(e){throw i.spinner.error(`Failed to remove auth creds for session "${a}"!`),e}},E=(a="")=>{if(!a?.length)return null;let e=a.replace(/\u202E(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/\u202D(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/gu,"").replace(/[\u200B\u200C\u200D\uFEFF]/gu,"").replace(/[\u00AD\u034F\u115F\u1160\u17B4\u17B5\u180B-\u180E]/gu,"").replace(/[\u2060-\u2064\u206A-\u206F]/gu,"").replace(/[\u2800\uFFFC\uFFFD]/gu,"").replace(/[\uFE00-\uFE0F]/gu,"").split("").map(t=>ot__default.default.nfkd(t)).join("").replace(/[\u0300-\u036F]/gu,"").replace(/[\u1AB0-\u1AFF]/gu,"").replace(/[\u1DC0-\u1DFF]/gu,"").replace(/[\u20D0-\u20FF]/gu,"").replace(/[\uFE20-\uFE2F]/gu,"").replace(/[\p{Cc}]/gu,"").replace(/[\p{Cf}]/gu,"").replace(/[\p{Co}]/gu,"").replace(/[\p{Cn}]/gu,"").replace(/[\p{Cs}]/gu,"").replace(/[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/gu," ").replace(/[\u2028\u2029]/gu," ").replace(/[\t\r\n\f\v]/g," ").split("").map(t=>ot__default.default.nfkc(t)).join("").normalize("NFC").replace(/\s+/g," ").trim();return e.length?e:null};var v=(a,e="lime")=>Array.isArray(e)?at__default.default(e)(a):at__default.default([e,e])(a),Ne=a=>{try{return JSON.parse(a)}catch{return x__default.default.attempt(()=>JSON.parse(JSON.stringify(a)||"{}"))}},H=a=>{try{return JSON.stringify(a)}catch{let e=x__default.default.attempt(()=>JSON.stringify(Ne(a)||"{}"));return x__default.default.isError(e)?"{}":e}},An=(a="")=>x__default.default.shuffle(a).join(""),Z=(a="",e="")=>a?x__default.default.includes(a.toLowerCase(),e.toLowerCase()):null,ct=(a="")=>a?x__default.default.castArray(a.match(zt.URL_REGEX)||[]):[],In=a=>a[Math.floor(Math.random()*a.length)],O=(a,e)=>{let t=o=>!!(o==null||typeof o=="string"&&o.trim()===""||Array.isArray(o)&&o.length===0||typeof o=="object"&&Object.keys(o).length===0),n=(o,s)=>{if(!o||typeof o!="object")return;let r=o,c=s.split(".");for(let l of c){let p=l.match(/^(.+?)\[(\d+)\]$/);if(p){let[,k,M]=p;r=r?.[k]?.[parseInt(M,10)];}else r=r?.[l];if(t(r))return}return r};if(!(!Array.isArray(a)||a.length===0)&&!(!Array.isArray(e)||e.length===0)){for(let o of a)if(!(!o||typeof o!="object"))for(let s of e){let r=n(o,s);if(!t(r))return r}}},Rn=(a,e)=>{let t=x__default.default.castArray(e),n=(r,c)=>x__default.default.every(c,(l,p)=>r?.[p]===l),o=(r,c)=>x__default.default.some(c,(l,p)=>r?.[p]===l),s=r=>x__default.default.isArray(r)?x__default.default.find(r,s)??r:x__default.default.isObject(r)?x__default.default.find(t,p=>n(r,p))||x__default.default.find(t,p=>o(r,p))?r:x__default.default.find(x__default.default.values(r),s)??r:null;return s(a)},En=(a,e,t)=>new Proxy(a,{apply(n,o,s){e?.(s);let r=Reflect.apply(n,o,s);return t?t(r,s):r}});var j=a=>{let e;Array.isArray(a)?e=a.join("|"):typeof a=="string"?e=a:e=String(a);let t=2166136261,n=e.length;for(let o=0;o<n;o++)t^=e.charCodeAt(o),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},lt=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))e.add(t[1]);return x__default.default.toArray(e)},Fe=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return x__default.default.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},Nn=a=>x__default.default.isEmpty(a)?[]:x__default.default.map([...a],e=>`${e}@s.whatsapp.net`),pt=a=>x__default.default.omit(a,["url","contextInfo","fileSha256","fileEncSha256","mediaKey","directPath","waveform","thumbnail","jpegThumbnail","thumbnailEncSha256","thumbnailSha256","thumbnailDirectPath","firstFrameSidecar","streamingSidecar","scansSidecar","callKey","message","key","midQualityFileSha256","historySyncNotification","appStateSyncKeyShare","appStateSyncKeyRequest","initialSecurityNotificationSettingSync","appStateFatalExceptionNotification","disappearingMode","peerDataOperationRequestMessage","peerDataOperationRequestResponseMessage","botFeedbackMessage"]),re=a=>{if(!a)return {leaf:void 0,chain:[]};let e=zt.extractMessageContent(a)||a,t=[];for(;e&&typeof e=="object";){let n=zt.getContentType(e);if(!n)break;t.push(n);let o=e[n];if(!o||typeof o!="object"){e=o;break}e=o;}return {leaf:e,chain:t}},W=a=>Number(a?.split("@")[0]);var ut=async(a=false)=>{if(!a)try{let e=(await import('@ffmpeg-installer/ffmpeg')).default,t=(await import('@ffprobe-installer/ffprobe')).default;Y__default.default.setFfmpegPath(e.path),Y__default.default.setFfprobePath(t.path);}catch{}},y={OPUS:{CODEC:"libopus",CHANNELS:1,FREQUENCY:48e3,BITRATE:"48k",FORMAT:"ogg"},THUMBNAIL:{SIZE:100,QUALITY:50,TIMESTAMP:"10%"},STICKER:{SIZE:512,MAX_DURATION:10,FPS:15,DEFAULT_QUALITY:80,COMPRESSION_LEVEL:6},MIME:{AUDIO:"audio/",VIDEO:"video/",IMAGE:"image/",GIF:"image/gif",MP4:"video/mp4"}},w=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return Le__namespace.default.join(os$1.tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>$e__default.default.unlink(t)));}static async safeReadFile(e){try{return await $e__default.default.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await $e__default.default.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},C=class{static async toBuffer(e){if(x__default.default.isBuffer(e))return e;if(x__default.default.isArrayBuffer(e))return Buffer.from(e);if(x__default.default.isString(e))return this.fromString(e);throw new Error("Invalid input type: expected string, Buffer, or ArrayBuffer")}static async fromString(e){return e.startsWith("http://")||e.startsWith("https://")?this.fromUrl(e):Buffer.from(e,"base64")}static async fromUrl(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);let n=await t.arrayBuffer();return Buffer.from(n)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},N=class{static validate(e,t){if(!e?.mime?.startsWith(t))throw new Error(`Invalid file type: expected ${t}*, got ${e?.mime||"unknown"}`)}static isMedia(e){return e.startsWith(y.MIME.IMAGE)||e.startsWith(y.MIME.VIDEO)}static isAnimated(e){return e===y.MIME.GIF||e.startsWith(y.MIME.VIDEO)}},U=class{static async process(e){return new Promise((t,n)=>{let o=Y__default.default(e.input).output(e.output);for(let s=0;s<e.options.length;s++){let r=e.options[s];r.startsWith("-")&&s+1<e.options.length&&!e.options[s+1].startsWith("-")?(o.outputOptions(r,e.options[s+1]),s++):o.outputOptions(r);}o.on("end",async()=>{try{await e.onEnd(),t();}catch(s){n(s);}}).on("error",async s=>{try{await e.onError(s);}finally{n(s);}}).run();})}static async getDuration(e){return new Promise((t,n)=>{Y__default.default.ffprobe(e,(o,s)=>{if(o)return n(o);t(s.format.duration||0);});})}},ae=class{static async getWaAudio(e,t="opus"){let n=await C.toBuffer(e),o=await fileType.fileTypeFromBuffer(n);N.validate(o,y.MIME.AUDIO);let s=w.createTempPath("audio_in","wav"),r=t==="opus"?"ogg":"mp3",c=w.createTempPath("audio_out",r);await w.safeWriteFile(s,n);let l;try{let p=t==="opus"?["-vn","-c:a","libopus","-b:a","48k","-ac","1","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","opus"]:["-vn","-c:a","libmp3lame","-b:a","128k","-ac","2","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","mp3"];return await U.process({input:s,output:c,options:p,onEnd:async()=>{l=await w.safeReadFile(c);},onError:async()=>{await w.cleanup([s,c]);}}),await w.cleanup([s,c]),l}catch(p){throw await w.cleanup([s,c]),new Error(`${t.toUpperCase()} conversion failed: ${p.message}`)}}},R=class{static async getThumbnail(e){let t=await C.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);N.validate(n,y.MIME.VIDEO);let o=w.createTempPath("video","mp4"),s=w.createTempPath("thumb","jpg");await w.safeWriteFile(o,t);let r;try{return await new Promise((c,l)=>{Y__default.default(o).screenshots({timestamps:[y.THUMBNAIL.TIMESTAMP],filename:Le__namespace.default.basename(s),folder:Le__namespace.default.dirname(s),size:`${y.THUMBNAIL.SIZE}x${y.THUMBNAIL.SIZE}`,quality:y.THUMBNAIL.QUALITY}).on("end",async()=>{try{r=(await w.safeReadFile(s)).toString("base64"),c();}catch(p){l(p);}}).on("error",l);}),await w.cleanup([o,s]),r}catch(c){throw await w.cleanup([o,s]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return U.getDuration(e)}static async getWaVideo(e){let t=await C.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);N.validate(n,y.MIME.VIDEO);let o=w.createTempPath("video_in","mp4"),s=w.createTempPath("video_out","mp4");await w.safeWriteFile(o,t);let r;try{let c=["-c:v","libx264","-preset","ultrafast","-crf","28","-c:a","aac","-b:a","128k","-movflags","+faststart","-pix_fmt","yuv420p","-f","mp4"];return await U.process({input:o,output:s,options:c,onEnd:async()=>{r=await w.safeReadFile(s);},onError:async()=>{await w.cleanup([o,s]);}}),await w.cleanup([o,s]),r}catch(c){throw await w.cleanup([o,s]),new Error(`Video re-encoding failed: ${c.message}`)}}},z=class{static async getThumbnail(e){return (await((await fileType.fileTypeFromBuffer(e)).mime===y.MIME.GIF?ie__default.default(e,{animated:false}):ie__default.default(e)).resize(y.THUMBNAIL.SIZE,y.THUMBNAIL.SIZE,{fit:"cover"}).jpeg({quality:y.THUMBNAIL.QUALITY}).toBuffer()).toString("base64")}static async resizeForSticker(e,t,n="default"){let o=ie__default.default(e).resize(y.STICKER.SIZE,y.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}});if(n!=="default"){let s=y.STICKER.SIZE,r;switch(n){case "rounded":r=`<svg width="${s}" height="${s}"><rect x="0" y="0" width="${s}" height="${s}" rx="${s/10}" ry="${s/10}" fill="white"/></svg>`;break;case "circle":r=`<svg width="${s}" height="${s}"><circle cx="${s/2}" cy="${s/2}" r="${s/2}" fill="white"/></svg>`;break;case "oval":r=`<svg width="${s}" height="${s}"><ellipse cx="${s/2}" cy="${s/2}" rx="${s/2}" ry="${s/3}" fill="white"/></svg>`;break;default:r="";}r&&(o=o.composite([{input:Buffer.from(r),blend:"dest-in"}]));}return o.webp({quality:t}).toBuffer()}static async getWaImage(e){let t=await C.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);if(!n||!n.mime.startsWith(y.MIME.IMAGE))throw new Error("Invalid image type");return n.mime==="image/webp"?await ie__default.default(t).jpeg().toBuffer():t}},X=class{static async getThumbnail(e){let t=await C.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);if(!n||!N.isMedia(n.mime))throw new Error("Invalid media type: expected image or video");return n.mime.startsWith(y.MIME.VIDEO)?R.getThumbnail(e):z.getThumbnail(t)}},ce=class{static createExifMetadata(e){let t={"sticker-pack-id":j(Date.now().toString()),"sticker-pack-name":e?.packageName||"Zaileys Library","sticker-pack-publisher":e?.authorName||"https://github.com/zeative/zaileys",emojis:["\u{1F913}"],"android-app-store-link":"https://play.google.com/store/apps/details?id=com.marsvard.stickermakerforwhatsapp","ios-app-store-link":"https://itunes.apple.com/app/sticker-maker-studio/id1443326857"},n=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),o=Buffer.from(JSON.stringify(t),"utf8"),s=Buffer.concat([n,o]);return s.writeUIntLE(o.length,14,4),s}static async processAnimated(e,t,n){let o=this.getExtension(t),s=w.createTempPath("sticker_in",o),r=w.createTempPath("sticker_out","webp");await w.safeWriteFile(s,e);let c=y.STICKER.MAX_DURATION;try{let M=await R.getDuration(s);c=h(Math.min(M,y.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",y.STICKER.MAX_DURATION);}let l=`scale=${y.STICKER.SIZE}:${y.STICKER.SIZE}:force_original_aspect_ratio=increase,crop=${y.STICKER.SIZE}:${y.STICKER.SIZE},fps=${y.STICKER.FPS},format=rgba`,p=Math.max(1,Math.min(100,100-n)),k;try{return await U.process({input:s,output:r,options:["-vcodec libwebp",`-vf ${l}`,`-q:v ${p}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${y.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{k=await w.safeReadFile(r);},onError:async()=>{await w.cleanup([s,r]);}}),await w.cleanup([s,r]),k}catch(M){throw await w.cleanup([s,r]),new Error(`Animated sticker processing failed: ${M.message}`)}}static getExtension(e){return e===y.MIME.GIF?"gif":e.startsWith(y.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let n=await C.toBuffer(e),o=await fileType.fileTypeFromBuffer(n);if(!o)throw new Error("Unable to detect file type");let s=t?.quality||y.STICKER.DEFAULT_QUALITY,r=N.isAnimated(o.mime),c=t?.shape||"default",l=r?await this.processAnimated(n,o.mime,s):await z.resizeForSticker(n,s,c),p=this.createExifMetadata(t),k=new Kt__default.default.Image;await k.load(l),k.exif=p;let M=await k.save(null);return Buffer.isBuffer(M)?M:Buffer.from(M)}catch(n){throw new Error(`Sticker creation failed: ${n.message||n}`)}}},le=class{static async create(e){try{let t=await C.toBuffer(e),n=await fileType.fileTypeFromBuffer(t);if(!n)throw new Error("Unable to detect file type");return {document:t,mimetype:n.mime,fileName:j(Date.now().toString()),jpegThumbnail:await X.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},pe=C.toBuffer.bind(C),mt=ae.getWaAudio.bind(ae),dt=z.getWaImage.bind(z),ft=R.getWaVideo.bind(R),Hn=R.getThumbnail.bind(R),Zn=R.getDuration.bind(R),je=X.getThumbnail.bind(X),gt=ce.create.bind(ce),yt=le.create.bind(le);var ue=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=i.get("socket");e.ev.on("call",async t=>{for(let n of t){let o=await this.parse(n);o&&(await this.client.middleware.run({calls:o}),await this.client.plugins.execute(this.client,{messages:o}),i.events.emit("calls",o),this.client.options?.autoRejectCall&&await e.rejectCall(o.callId,o.callerId));}});}async parse(e){let t=i.get("socket"),n={};return n.callId=e.id,n.callerId=zt.jidNormalizedUser(e.from),n.callerName=await this.client.getRoomName(n.callerId),n.roomId=zt.jidNormalizedUser(e.chatId),n.roomName=E(t?.user?.name||t?.user?.verifiedName),n.date=e.date,n.offline=e.offline,n.status=e.status,n.isVideo=!!e.isVideo,n.isGroup=!!e.isGroup,this.client.logs.call(n),n}};var wt=a=>{Yt__default.default.generate(a,{small:true},e=>{console.log(e);});},kt=async()=>{console.clear(),i.spinner.start(" Checking for updates...");let a="2.1.7",e="zaadevofc",t=await rt(),n=a===t;i.spinner.stop();let o="Zaileys",s=`
3
3
  by ${e} \xB7 v${a}`,r=`${n?"Already using latest version!":`Update available! (v${t})`}
4
- `,c=n?"lime":"orange",l=await Ht__default.default.text(o),p=at.cristal(l);console.log(p),console.log(M(s,"dimgray")),console.log(M(r,c));};var fe=class{constructor(e){this.client=e;this.initialize();}async initialize(){i.spinner.start(" Initializing connection...");let e=i.get("socket"),t={},n=async()=>{t.status="reload",i.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},o=async()=>{await Ut.delay(3e3),i.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await Ut.delay(3e3),await it(this.client.options.session),await n();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){i.spinner.update(" Generating pairing code..."),await Ut.delay(3500);try{t.authTimeout=Date.now()+6e4;let s=new Date(t.authTimeout).toLocaleTimeString(),r=await e.requestPairingCode(this.client.options.phoneNumber.toString());i.spinner.warn(` Pairing expired at ${at.cristal(s)}`),i.spinner.warn(` Pairing code: ${r}`),t.code=r;}catch{await o();}}e.ev.on("connection.update",async s=>{let{connection:r,lastDisconnect:c,qr:l}=s;if(t.status=r||"connecting",t.authType=this.client.options.authType,i.spinner.update(" Connection status: "+at.cristal(t.status)),this.client.options.authType==="qr"&&l){t.authTimeout=Date.now()+6e4;let p=new Date(t.authTimeout).toLocaleTimeString();i.spinner.warn(" Please scan the QR code..."),i.spinner.warn(` Qr code expired at ${at.cristal(p)}`),ht(l),t.qr=l;return}if(r==="close"){let p=h(c?.error)?.output?.statusCode,k=c?.error?.message||"",v=typeof p=="number"&&p!==Ut.DisconnectReason.loggedOut,$=p===515||k.toLowerCase().includes("prekey");if(i.spinner.error(` [${p} - Closed] ${k}`),$){i.spinner.warn(" Session key mismatch detected, attempting repair..."),await oe(this.client.options.session),await Ut.delay(1e3),await n();return}if(p===401||p===405){i.spinner.warn(" Session may be used by another device/instance."),i.spinner.warn(" If you want to connect here, close the other connection first."),i.spinner.warn(` Or use a different session name in your Client options.
5
- `);return}if(p===500){i.spinner.error(" Server error occurred, attempting reconnect..."),await n();return}v&&await n();}if(r==="open")if(e.user?.id){let p=Ut.jidNormalizedUser(e.user.id).split("@")[0],k=e.user.name||e.user.verifiedName;i.spinner.success(` Connected as ${at.cristal(k||p)}`);}else i.spinner.success(" Connected!");i.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:s})=>{t.status="syncing",t.syncProgress=s,i.spinner.start(" Syncing messages history..."),s&&i.spinner.update(` Syncing messages history ${s+"%"}`),s==100&&(i.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),i.events.emit("connection",t);});}};var wt={text:"text",conversation:"text",imageMessage:"image",contactMessage:"contact",locationMessage:"location",documentMessage:"document",audioMessage:"audio",videoMessage:"video",protocolMessage:"protocol",contactsArrayMessage:"contacts",highlyStructuredMessage:"highlyStructured",sendPaymentMessage:"sendPayment",liveLocationMessage:"location",requestPaymentMessage:"requestPayment",groupStatusMentionMessage:"groupStatusMention",statusMentionMessage:"statusMention",albumMessage:"album",declinePaymentRequestMessage:"declinePaymentRequest",cancelPaymentRequestMessage:"cancelPaymentRequest",templateMessage:"template",stickerMessage:"sticker",groupInviteMessage:"groupInvite",templateButtonReplyMessage:"buttons",productMessage:"product",deviceSentMessage:"deviceSent",listMessage:"lists",viewOnceMessage:"viewOnce",orderMessage:"order",listResponseMessage:"lists",ephemeralMessage:"ephemeral",invoiceMessage:"invoice",buttonsMessage:"buttons",buttonsResponseMessage:"buttons",paymentInviteMessage:"paymentInvite",interactiveMessage:"interactive",reactionMessage:"reaction",stickerSyncRmrMessage:"sticker",questionMessage:"question",nativeFlowResponseMessage:"lists",interactiveResponseMessage:"interactiveResponse",pollCreationMessage:"pollCreation",pollCreationMessageKey:"pollUpdate",pollUpdateMessage:"pollUpdate",keepInChatMessage:"keepInChat",documentWithCaptionMessage:"document",requestPhoneNumberMessage:"requestPhoneNumber",viewOnceMessageV2:"viewOnce",encReactionMessage:"reaction",editedMessage:"text",viewOnceMessageV2Extension:"viewOnce",pollCreationMessageV2:"pollCreation",scheduledCallCreationMessage:"scheduledCallCreation",groupMentionedMessage:"groupMentioned",pinInChatMessage:"pinInChat",pollCreationMessageV3:"pollCreation",scheduledCallEditMessage:"scheduledCallEdit",ptvMessage:"ptv",botInvokeMessage:"botInvoke",callLogMesssage:"callLog",encCommentMessage:"encComment",bcallMessage:"bcall",lottieStickerMessage:"lottieSticker",eventMessage:"event",commentMessage:"comment",newsletterAdminInviteMessage:"text",extendedTextMessageWithParentKey:"text",extendedTextMessage:"text",placeholderMessage:"placeholder",encEventUpdateMessage:"encEventUpdate"},Ue={whatsapp:"0@s.whatsapp.net",meta:"13135550002@s.whatsapp.net",chatgpt:"18002428478@s.whatsapp.net",copilot:"18772241042@s.whatsapp.net",instagram:"447723442971@s.whatsapp.net",tiktok:"6285574670498@s.whatsapp.net"};var ge=class{constructor(e){this.client=e;this.limiter=new rateLimiterFlexible.RateLimiterMemory({points:this.client.options.limiter?.maxMessages,duration:this.client.options.limiter?.durationMs/1e3});}limiter;async isSpam(e){try{return await this.limiter.consume(e),!1}catch{return true}}};var ye=class{constructor(e){this.client=e;this.limiter=new ge(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=i.get("socket");if(!e?.ev){console.warn("\u26A0\uFE0F [Messages] Socket or socket.ev is not available during initialization");return}e.ev.on("messages.upsert",async({messages:t,type:n})=>{try{if(n!=="notify"&&n!=="append")return;for(let o of t)try{let s=await this.parse(o);s&&(this.client.collector.push(s)||(await this.client.middleware.run({messages:s}),await this.client.plugins.execute(this.client,{messages:s}),i.set("message",s),i.events.emit("messages",s)),this.client.options.autoRead&&await e.readMessages([s.message().key]));}catch(s){console.error(`\u274C [Messages] Error processing message ${o.key?.id}:`,s);}}catch(o){console.error("\u274C [Messages] Critical error in upsert listener:",o);}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage)return;let n=e,o=i.get("socket"),s={},r=re(e.message),c=r.chain.at(-1),l=r.leaf;if(l?.message&&(r=re(l.message),c=r.chain.at(-1),l=r.leaf),s.uniqueId=null,s.channelId=null,s.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,s.chatType=wt[c],!s.chatType)return;s.receiverId=Ut.jidNormalizedUser(o?.user?.id||""),s.receiverName=R(o?.user?.name||o?.user?.verifiedName),s.roomId=Ut.jidNormalizedUser(e?.key?.remoteJid);let p=l?.type===0,k=l?.type===1,v=l?.type===2,$=s.roomId?.includes("@newsletter"),Ee=!!e?.message?.questionMessage,z=e?.key?.fromMe||false;if(z&&this.client.options.ignoreMe&&t!=="replied")return;let Pe=l?.key?.id;if(p||k||v){let T=await this.client.db("messages").query(s.roomId).where("key.id","=",Pe).first();if(!T)return;e=T,r=re(e.message),c=r.chain.at(-1),l=r.leaf;}if(s.roomName=await this.client.getRoomName(s.roomId),s.senderLid=Ut.jidNormalizedUser(e?.key?.participant||e?.key?.remoteJid)||null,s.senderId=Ut.jidNormalizedUser(e?.key?.participantAlt||e?.key?.remoteJidAlt)||null,s.senderName=R(e?.pushName||e?.verifiedBizName),s.senderDevice=Ut.getDevice(s.chatId||""),s.channelId=L([s.roomId,s.senderId]),s.uniqueId=L([s.channelId,s.chatId]),s.timestamp=Number(e?.messageTimestamp)*1e3,$){let T=await o.newsletterMetadata("jid",s.roomId);s.roomName=h(T.thread_metadata.name)?.text,s.senderId=null,s.senderLid=null;}if(z&&(s.senderLid=Ut.jidNormalizedUser(o.user.lid),s.senderId=s.receiverId,s.senderName=s.receiverName),s.text=l?.text||l?.caption||l?.name||l?.displayName||l?.conversation||l?.contentText||l?.selectedDisplayText||l||null,l?.name=="menu_options"&&(s.text=Oe(l?.paramsJson)?.id),s.text=R(s.text),s.mentions=lt(s.text),s.links=ct(s.text||""),s.isBot=s.chatId.startsWith("BAE5")||s.chatId.startsWith("3EB0")||s.chatId.startsWith("Z4D3FC"),s.isFromMe=z,s.isPrefix=s.text?.startsWith(this.client.options?.prefix)||false,s.isTagMe=s.mentions?.includes(s.receiverId.split("@")[0]),s.isStatusMention=!!e?.message?.statusMentionMessage,s.isGroupStatusMention=!!e?.message?.groupStatusMentionMessage,s.isHideTags=false,x__default.default.isEmpty(s.text)&&l?.contextInfo?.mentionedJid?.length&&(s.isHideTags=true),s.isSpam=await this.limiter.isSpam(s.channelId),s.isPrefix&&(s.text=s.text.replace(new RegExp(`^${this.client.options?.prefix}`),"")),s.isGroup=s.roomId?.includes("@g.us"),s.isNewsletter=$,s.isQuestion=Ee,s.isStory=s.roomId?.includes("@broadcast"),!s.isGroup&&!s.roomName&&(s.roomName=s.senderName),s.isViewOnce=false,s.isEdited=!!K(J(r),"editedMessage"),s.isDeleted=p,s.isPinned=k,s.isUnPinned=v,s.isBroadcast=!!e?.broadcast,s.isEphemeral=!!K(J(l?.contextInfo),"ephemeralSettingTimestamp"),s.isForwarded=!!K(J(l?.contextInfo),"forwardingScore"),s.citation=null,this.client.options.citation){s.citation=s.citation||{};let T=this.client.options.citation;for(let E of Object.keys(T)){let We=T[E];s.citation[E]=async()=>{let De=await We(),ne=[P(s.roomId),P(s.senderLid),P(s.senderId)];return !!x__default.default.intersection(ne,De).length};}}s.chatType!=="text"&&(s.media={...pt(l),buffer:()=>Ut.downloadMediaMessage(e,"buffer",{}),stream:()=>Ut.downloadMediaMessage(e,"stream",{})}),s.isStatusMention&&(s.chatType="statusMention"),s.isGroupStatusMention&&(s.chatType="groupStatusMention"),s.message=()=>n,s.replied=null;let _=l?.contextInfo?.quotedMessage,q=K(J(_),"viewOnce"),V=l?.contextInfo?.stanzaId,se=l?.contextInfo?.participant;if(_&&this.maxReplies){this.maxReplies--;let T=await this.client.db("messages").query(q?se:s.roomId).where("key.id","=",V).first(),E;q?E={...T,message:_}:E=T,s.replied=await this.parse(E,"replied"),s.replied&&(s.replied.isViewOnce=true),this.maxReplies=3;}return t!="replied"&&this.client.logs.message(s),s}};var he=class{constructor(e){this.client=e;this.connection=new fe(e),this.messages=new ye(e),this.calls=new ue(e),this.initialize();}connection;messages;calls;async initialize(){let e=i.get("socket");e.ev.on("groups.update",async([t])=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e.ev.on("group-participants.update",async t=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e?.ev.on("messaging-history.set",async t=>{let{chats:n,contacts:o,messages:s}=t;for(let r of n)await this.client.db("chats").set(r.id,r);for(let r of o)await this.client.db("contacts").set(r.id,r);for(let r of s){if(r?.category==="peer"||!r.message&&!r.key.isViewOnce&&(!r.message?.groupStatusMentionMessage||!r.message?.statusMentionMessage)||r.message?.protocolMessage&&!r.message?.protocolMessage?.memberLabel)continue;let c=Number(r.messageTimestamp)*1e3;Date.now()-c>1440*60*1e3||await this.client.db("messages").upsert(r.key.remoteJid,r,"key.id");}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let n of t){if(n?.category==="peer"||!n.message&&!n.key.isViewOnce||n.message?.protocolMessage&&!n.message?.protocolMessage?.memberLabel)continue;let o=Number(n.messageTimestamp)*1e3;if(Date.now()-o>1440*60*1e3)continue;N([n?.key],["participant","remoteJid"])||null;await this.client.db("messages").upsert(n.key.remoteJid,n,"key.id");}}),e?.ev.on("chats.upsert",async t=>{for(let n of t)await this.client.db("chats").upsert(n.id,n,"id");}),e?.ev.on("contacts.upsert",async t=>{for(let n of t)await this.client.db("contacts").upsert(n.id,n,"id");});}};var ee=(a,e)=>{let t=a.safeParse(e);if(t.success)return t.data;throw console.error(t.error),"Invalid data"};var ss=u__default.default.object({type:u__default.default.literal("quick_reply"),text:u__default.default.string()}),ns=u__default.default.object({type:u__default.default.literal("cta_url"),url:u__default.default.url(),text:u__default.default.string()}),os=u__default.default.object({type:u__default.default.literal("cta_copy"),copy:u__default.default.string(),text:u__default.default.string()}),rs=u__default.default.object({type:u__default.default.literal("cta_call"),text:u__default.default.string(),phoneNumber:u__default.default.string()}),is=u__default.default.object({type:u__default.default.literal("single_select"),text:u__default.default.string(),section:u__default.default.object({title:u__default.default.string(),highlight_label:u__default.default.string().optional(),rows:u__default.default.object({id:u__default.default.string(),title:u__default.default.string(),header:u__default.default.string().optional(),description:u__default.default.string().optional()}).array()}).array()}),as=u__default.default.object({type:u__default.default.literal("interactive"),footer:u__default.default.string().optional(),data:u__default.default.union([ss,ns,os,rs,is]).array()}),cs=u__default.default.object({type:u__default.default.literal("simple"),footer:u__default.default.string().optional(),data:u__default.default.object({id:u__default.default.string(),text:u__default.default.string()}).array()}),vt=u__default.default.union([cs,as]);var ls=u.z.object({maxMessages:u.z.number().default(20),durationMs:u.z.number().default(1e4)}).optional(),ps=u.z.record(u.z.string(),u.z.function({output:u.z.promise(u.z.array(u.z.number()))})).optional(),us=u.z.object({provider:u.z.enum(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]).or(u.z.number())}).optional(),ze=u.z.enum(["default","rounded","circle","oval"]).default("default"),ms=u.z.object({packageName:u.z.string().optional(),authorName:u.z.string().optional(),quality:u.z.number().optional(),shape:ze.optional()}).optional(),xt=u.z.object({session:u.z.string().default("zaileys").optional(),prefix:u.z.string().optional(),ignoreMe:u.z.boolean().default(true).optional(),showLogs:u.z.boolean().default(true).optional(),syncFullHistory:u.z.boolean().default(true).optional(),disableFFmpeg:u.z.boolean().default(false).optional(),cleanupDays:u.z.number().default(7).optional(),autoMarkAI:u.z.boolean().default(true).optional(),autoMentions:u.z.boolean().default(true).optional(),autoOnline:u.z.boolean().default(true).optional(),autoRead:u.z.boolean().default(true).optional(),autoPresence:u.z.boolean().default(true).optional(),autoRejectCall:u.z.boolean().default(true).optional(),limiter:ls,citation:ps,fakeReply:us,sticker:ms}),ds=u.z.object({authType:u.z.literal("pairing"),phoneNumber:u.z.number()}),fs=u.z.object({authType:u.z.literal("qr")}),St=u.z.union([ds.extend(xt.shape),fs.extend(xt.shape)]),ir=u.z.enum(["connection","messages","calls"]);var te=u__default.default.url().or(u__default.default.base64()).or(u__default.default.instanceof(Buffer)),Tt=u__default.default.object({text:u__default.default.string()}).passthrough(),gs=u__default.default.object({image:te,caption:u__default.default.string().optional()}).passthrough(),ys=u__default.default.object({audio:te,caption:u__default.default.string().optional(),ptt:u__default.default.boolean().optional()}).passthrough(),hs=u__default.default.object({video:te,caption:u__default.default.string().optional(),ptv:u__default.default.boolean().optional()}).passthrough(),ks=u__default.default.object({sticker:te,shape:ze.optional(),caption:u__default.default.string().optional()}).passthrough(),ws=u__default.default.object({document:te,caption:u__default.default.string().optional(),fileName:u__default.default.string().optional()}).passthrough(),bs=u__default.default.object({location:u__default.default.object({latitude:u__default.default.number(),longitude:u__default.default.number(),url:u__default.default.url().optional(),title:u__default.default.string().optional(),footer:u__default.default.string().optional()}).optional()}).passthrough(),Ms=u__default.default.object({contacts:u__default.default.object({title:u__default.default.string().optional(),contacts:u__default.default.object({fullname:u__default.default.string(),phoneNumber:u__default.default.number(),organization:u__default.default.string().optional()}).array()})}).passthrough(),vs=u__default.default.object({poll:u__default.default.object({name:u__default.default.string(),answers:u__default.default.string().array(),isMultiple:u__default.default.boolean().default(false).optional()})}),Ct=u__default.default.object({replied:u__default.default.custom().optional(),isForwardedMany:u__default.default.boolean().optional(),isViewOnce:u__default.default.boolean().optional(),banner:u__default.default.custom().optional(),buttons:vt.optional()});u__default.default.enum(["forward","button","edit","delete"]);var xs=u__default.default.union([Tt,gs,ys,hs,ks,ws,bs,Ms,vs]),At=u__default.default.string().or(u__default.default.intersection(xs,Ct.omit({buttons:true}))),It=u__default.default.intersection(Tt,Ct.omit({banner:true}));var ke=class{toNativeSimple(e){return e.map(({id:t,text:n})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:n,id:t})}))}toNativeInteractive(e){let t={quick_reply:n=>({display_text:n.text,id:n.id}),cta_url:n=>({display_text:n.text,url:n.url,merchant_url:n.url}),cta_copy:n=>({display_text:n.text,id:n.id,copy_code:n.copy}),cta_call:n=>({display_text:n.text,phone_number:n.phoneNumber}),single_select:n=>({title:n.text,sections:n.section})};return e.map(n=>({name:n.type,buttonParamsJson:JSON.stringify(t[n.type](n))}))}build(e){let t=h(e).buttons,n=t?.data||[],s=t?.type=="simple"?this.toNativeSimple(n):this.toNativeInteractive(n);return {body:{text:h(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:s}}}async send(e,t,n){let o=i.get("socket"),s=o.authState?.creds?.me?.id||o.user?.id,r=this.build(t),c=Ut.generateWAMessageFromContent(e,{interactiveMessage:r},{userJid:s,messageId:Ut.generateMessageIDV2(s),...n});return await o.relayMessage(e,c.message,{messageId:c.key.id,...n,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),o.config?.emitOwnEvents&&!Ut.isJidGroup(e)&&process.nextTick(()=>o.upsertMessage?.(c,"append")),c}};var we=class{constructor(e){this.client=e;}async signal(e,t,n,o){n!="delete"&&(n=="button"?t=ee(It,t):t=ee(At,t));let s=i.get("socket"),r={},c={},l=x__default.default.isString(t),p=this.client.options?.fakeReply?.provider,k=this.client.options?.autoMentions,v=this.client.options?.autoPresence,$=x__default.default.has(t,"replied"),Ee=x__default.default.has(t,"banner"),z=x__default.default.has(t,"isViewOnce"),Pe=n=="button",_=x__default.default.has(t,"image"),q=x__default.default.has(t,"video"),V=x__default.default.has(t,"audio"),se=x__default.default.has(t,"sticker"),T=x__default.default.has(t,"document"),E=x__default.default.has(t,"location"),We=x__default.default.has(t,"contacts"),De=x__default.default.has(t,"poll"),ne=_||q||V||se||T,G=l?t:N([t],["text","caption"]);if(v&&(V?await s.sendPresenceUpdate("recording",e):await s.sendPresenceUpdate("composing",e)),k&&(r={...r,mentions:Fe(G),contextInfo:{mentionedJid:Fe(G)}}),$&&(c.quoted=h(t).replied,p&&(c.quoted.key.remoteJid=Ue[p],c.quoted.key.participant=Ue[p])),Ee&&(r={...r,contextInfo:{externalAdReply:h(t).banner}},r.contextInfo.externalAdReply.mediaType=1),z&&(r={...r,viewOnce:h(t)?.isViewOnce}),G&&(r={...r,text:G,caption:G},ne&&delete h(r).text),ne){let w=N([t],["image","video","audio","sticker","document"]),B=x__default.default.isString(w)?{url:w}:w;if(_&&(r={...r,image:await dt(w),jpegThumbnail:await je(w)}),q){let A=h(t)?.ptv;r={...r,video:B,ptv:A,jpegThumbnail:await je(w)};}if(V){let A=h(t)?.ptt;r={...r,audio:await mt(w),ptt:A,mimetype:A?"audio/ogg; codecs=opus":"audio/mpeg"};}if(se){let A=h(t)?.shape;r={...r,sticker:await ft(w,{...this.client.options?.sticker,shape:A})};}if(T){let A=await gt(w);r={...r,fileName:h(t).fileName,...A};}}if(E){let w=h(t).location;r={...r,location:{degreesLatitude:w.latitude,degreesLongitude:w.longitude,url:w.url,address:w.footer,name:w.title}};}if(We){let w=h(t)?.contacts,He=w?.contacts.map(B=>{let A=["BEGIN:VCARD","VERSION:3.0",`FN:${B.fullname}`,`ORG:${B.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${B.phoneNumber}:${B.phoneNumber}`,"END:VCARD"].join(`
6
- `);return {displayName:B.fullname,vcard:A}});r={...r,contacts:{displayName:w?.title,contacts:He}};}if(De){let w=h(t)?.poll;r={...r,poll:{name:w.name,values:w.answers,selectableCount:w.isMultiple?1:0,toAnnouncementGroup:true}};}return n=="forward"&&(r={...r,contextInfo:{...h(r).contextInfo,isForwarded:true,forwardingScore:h(t).isForwardedMany?9999:1}}),n=="edit"&&(r={...r,edit:o?.key},await s.sendPresenceUpdate("paused",e)),n=="delete"&&(r={...r,delete:o?.key},await s.sendPresenceUpdate("paused",e)),Pe?await new ke().send(e,t,c):await s.sendMessage(e,h(r),c)}async send(e,t){return await this.signal(e,t)}async forward(e,t){return await this.signal(e,t,"forward")}async button(e,t){return await this.signal(e,t,"button")}async edit(e,t){return await this.signal(e.key.remoteJid,t,"edit",e)}async delete(e){return x__default.default.isArray(e)?Promise.all(e.map(t=>this.signal(t.key.remoteJid,{},"delete",t))):await this.signal(e.key.remoteJid,{},"delete",e)}async presence(e,t){let n=i.get("socket"),o={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await n.sendPresenceUpdate(o[t],e)}async reaction(e,t){return await i.get("socket").sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}async memberLabel(e,t){return await i.get("socket").relayMessage(e,{protocolMessage:{type:30,memberLabel:{label:t,labelTimestamp:Date.now()}}},{})}};var qe=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").communityCreate(e,t)}async createGroup(e,t,n){return await i.get("socket").communityCreateGroup(e,t,n)}async leave(e){return await i.get("socket").communityLeave(e)}async metadata(e){return await i.get("socket").communityMetadata(e)}async update(e,t,n){let o=i.get("socket");switch(t){case "subject":return await o.communityUpdateSubject(e,n);case "description":return await o.communityUpdateDescription(e,n)}}async group(e,t,n){let o=i.get("socket");switch(t){case "link":if(!n)throw "Group JID is required for linking";return await o.communityLinkGroup(e,n);case "unlink":if(!n)throw "Group JID is required for unlinking";return await o.communityUnlinkGroup(e,n);case "linked":return await o.communityFetchLinkedGroups(e)}}async participants(e,t,n,o){let s=i.get("socket");switch(t){case "list":return await s.communityRequestParticipantsList(e);case "request-update":return await s.communityRequestParticipantsUpdate(e,o,h(n));case "update":if(!n||!o)throw "Action and participants are required for update";return await s.communityParticipantsUpdate(e,o,h(n));case "all":return await s.communityFetchAllParticipating()}}async invite(e,t,...n){let o=i.get("socket");switch(t){case "code":return await o.communityInviteCode(e);case "revoke":return await o.communityRevokeInvite(e);case "accept":return await o.communityAcceptInvite(e);case "info":return await o.communityGetInviteInfo(e);case "revokeV4":return await o.communityRevokeInviteV4(e,n[0]);case "acceptV4":return await o.communityAcceptInviteV4(e,n[0])}}async settings(e,t,n){let o=i.get("socket");switch(t){case "ephemeral":return await o.communityToggleEphemeral(e,n);case "update":return await o.communitySettingUpdate(e,n);case "memberAdd":return await o.communityMemberAddMode(e,n);case "approval":return await o.communityJoinApprovalMode(e,n)}}},be=class{constructor(e){this.mlient=e;this.community=new qe(e);}community};var Ve=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").groupCreate(e,t)}async participant(e,t,n){return await i.get("socket").groupParticipantsUpdate(e,t,n)}async profile(e,t,n){let o=i.get("socket"),s=Buffer.isBuffer(t);switch(n){case "subject":if(!s)return await o.groupUpdateSubject(e,t);case "description":if(!s)return await o.groupUpdateDescription(e,t);case "picture":return await o.updateProfilePicture(e,pe(t))}}async setting(e,t){let n=i.get("socket");switch(t){case "open":return await n.groupSettingUpdate(e,"not_announcement");case "close":return await n.groupSettingUpdate(e,"announcement");case "locked":return await n.groupSettingUpdate(e,t);case "unlocked":return await n.groupSettingUpdate(e,t);case "all_member_add":return await n.groupMemberAddMode(e,t);case "admin_add":return await n.groupMemberAddMode(e,t)}}async leave(e){return await i.get("socket").groupLeave(e)}async inviteCode(e,t){let n=i.get("socket");switch(t){case "code":return await n.groupInviteCode(e);case "revoke":return await n.groupRevokeInvite(e);case "accept":return await n.groupAcceptInvite(e);case "info":return await n.groupGetInviteInfo(e)}}async metadata(e){let t=i.get("socket"),n=i.groupCache.get(e);if(n)return n;let o=await t.groupMetadata(e);return o&&i.groupCache.set(e,o),o}async requestJoin(e,t,n){let o=i.get("socket");switch(n){case "approve":return await o.groupRequestParticipantsUpdate(e,t,n);case "reject":return await o.groupRequestParticipantsUpdate(e,t,n)}}async requestJoinList(e){return await i.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await i.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let n=i.get("socket"),o={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await n.groupToggleEphemeral(e,o[t])}},Me=class{constructor(e){this.glient=e;this.group=new Ve(e);}group};var Ge=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").newsletterCreate(e,t)}async action(e,t){let n=i.get("socket");switch(t){case "follow":return await n.newsletterFollow(e);case "unfollow":return await n.newsletterUnfollow(e);case "mute":return await n.newsletterMute(e);case "unmute":return await n.newsletterUnmute(e);}}async update(e,t,n){let o=i.get("socket"),s=Buffer.isBuffer(t);switch(n){case "name":if(!s)return await o.newsletterUpdateName(e,t);case "description":if(!s)return await o.newsletterUpdateDescription(e,t);case "picture":return await o.newsletterUpdatePicture(e,pe(t))}}async metadata(e,t){return await i.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await i.get("socket").newsletterSubscribers(e)}async reaction(e,t,n){return await i.get("socket").newsletterReactMessage(e,t,n)}async fetchMessages(e,t,n,o){let s=i.get("socket"),r=n.getTime()/1e3,c=o.getTime()/1e3;return await s.newsletterFetchMessages(e,t,r,c)}async adminCount(e){return await i.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await i.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await i.get("socket").newsletterDemote(e,t)}async delete(e){return await i.get("socket").newsletterDelete(e)}async removePicture(e){return await i.get("socket").newsletterRemovePicture(e)}},ve=class{constructor(e){this.nlient=e;this.newsletter=new Ge(e);}newsletter};var Je=class{constructor(e){this.client=e;}async block(e){return await i.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await i.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await i.get("socket").updateLastSeenPrivacy(e)}async online(e){return await i.get("socket").updateOnlinePrivacy(e)}async picture(e){return await i.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await i.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await i.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await i.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=i.get("socket"),n={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(n[e])}async blocklist(){return await i.get("socket").fetchBlocklist()}async getSettings(){return await i.get("socket").fetchPrivacySettings(true)}},xe=class{constructor(e){this.plient=e;this.privacy=new Je(e);}privacy};var Kr=u__default.default.object({status:u__default.default.enum(["connecting","open","close","reload","syncing"]),authType:u__default.default.enum(["pairing","qr"]),authTimeout:u__default.default.number().optional(),syncProgress:u__default.default.number().optional(),syncCompleted:u__default.default.boolean().default(false).optional(),qr:u__default.default.string().optional(),code:u__default.default.string().optional()});var Is=u__default.default.enum(["unknown","android","ios","desktop","web"]),Rs=u__default.default.enum(["text","album","image","contact","location","document","audio","video","protocol","contacts","highlyStructured","sendPayment","requestPayment","groupStatusMention","statusMention","declinePaymentRequest","cancelPaymentRequest","template","sticker","groupInvite","product","deviceSent","lists","viewOnce","order","ephemeral","invoice","buttons","paymentInvite","interactive","reaction","sticker","interactiveResponse","pollCreation","pollUpdate","keepInChat","document","requestPhoneNumber","viewOnce","reaction","text","viewOnce","pollCreation","scheduledCallCreation","groupMentioned","pinInChat","pollCreation","scheduledCallEdit","ptv","botInvoke","callLog","encComment","bcall","lottieSticker","event","comment","placeholder","encEventUpdate"]),Rt=u__default.default.object({channelId:u__default.default.string(),uniqueId:u__default.default.string(),chatId:u__default.default.string(),chatType:Rs,receiverId:u__default.default.string(),receiverName:u__default.default.string(),roomId:u__default.default.string(),roomName:u__default.default.string(),senderLid:u__default.default.string(),senderId:u__default.default.string(),senderName:u__default.default.string(),senderDevice:Is,timestamp:u__default.default.number(),text:u__default.default.string().nullable(),mentions:u__default.default.string().array(),links:u__default.default.string().array(),isBot:u__default.default.boolean(),isFromMe:u__default.default.boolean(),isPrefix:u__default.default.boolean(),isSpam:u__default.default.boolean(),isTagMe:u__default.default.boolean(),isStatusMention:u__default.default.boolean(),isGroupStatusMention:u__default.default.boolean(),isHideTags:u__default.default.boolean(),isGroup:u__default.default.boolean(),isNewsletter:u__default.default.boolean(),isQuestion:u__default.default.boolean(),isStory:u__default.default.boolean(),isViewOnce:u__default.default.boolean(),isEdited:u__default.default.boolean(),isDeleted:u__default.default.boolean(),isPinned:u__default.default.boolean(),isUnPinned:u__default.default.boolean(),isBroadcast:u__default.default.boolean(),isEphemeral:u__default.default.boolean(),isForwarded:u__default.default.boolean(),citation:u__default.default.record(u__default.default.string(),u__default.default.function({output:u__default.default.promise(u__default.default.boolean())})).nullable(),media:u__default.default.object({buffer:u__default.default.function({output:u__default.default.promise(u__default.default.instanceof(Buffer))}),stream:u__default.default.function({output:u__default.default.promise(u__default.default.instanceof(As__default.default))})}).loose().nullable(),message:u__default.default.function({input:[],output:u__default.default.custom()})}),Xr=Rt.extend({replied:Rt.nullable()});var ni=u__default.default.object({callId:u__default.default.string(),callerId:u__default.default.string(),callerName:u__default.default.string(),roomId:u__default.default.string(),roomName:u__default.default.string(),date:u__default.default.date(),offline:u__default.default.boolean(),status:u__default.default.enum(["accept","offer","reject","ringing","terminate","timeout"]),isVideo:u__default.default.boolean(),isGroup:u__default.default.boolean()});var Se=class{collect(e,t,n){let o=t.max??1/0;if(o<=0){n([]);return}let s=i.collectors.get(e);s&&(clearTimeout(s.timeoutId),s.callback(s.messages),i.collectors.delete(e));let r=setTimeout(()=>{let c=i.collectors.get(e);c&&(c.callback(c.messages),i.collectors.delete(e));},t.timeout);i.collectors.set(e,{messages:[],max:o,filter:t.filter,callback:n,timeoutId:r});}push(e){let t=i.collectors.get(e.channelId);return !t||t.filter&&!t.filter(e)?false:(t.messages.push(e),t.messages.length>=t.max&&(clearTimeout(t.timeoutId),t.callback(t.messages),i.collectors.delete(e.channelId)),true)}has(e){return i.collectors.has(e)}cancel(e){let t=i.collectors.get(e);return t?(clearTimeout(t.timeoutId),t.callback(t.messages),i.collectors.delete(e),t.messages):[]}};var Es={checkIntervalMs:6e4,staleThresholdMs:12e4,cooldownMs:6e4,maxRetries:3},Te=class{constructor(e,t={}){this.client=e;this.options={...Es,...t};}lastActivityTime=Date.now();lastRecoveryTime=0;checkInterval=null;cleanupInterval=null;isRecovering=false;retryCount=0;options;start(){this.stop(),this.lastActivityTime=Date.now(),this.setupActivityListeners(),this.checkInterval=setInterval(()=>this.check(),this.options.checkIntervalMs),this.cleanupInterval=setInterval(()=>this.client.cleanupMessages(this.client.options.cleanupDays),3600*1e3),this.client.cleanupMessages(this.client.options.cleanupDays),i.spinner.success(" Health manager monitoring started");}stop(){this.checkInterval&&(clearInterval(this.checkInterval),this.checkInterval=null),this.cleanupInterval&&(clearInterval(this.cleanupInterval),this.cleanupInterval=null);}touch(){this.lastActivityTime=Date.now(),this.retryCount=0;}setupActivityListeners(){let e=this.client.socket;if(!e?.ev)return;let t=["messages.upsert","message-receipt.update","presence.update","chats.update","connection.update"];for(let n of t)e.ev.on(n,()=>this.touch());}async check(){if(this.isRecovering)return;let t=Date.now()-this.lastActivityTime;t>this.options.staleThresholdMs&&(i.spinner.warn(` Connection stale for ${Math.round(t/1e3)}s. Triggering recovery...`),await this.recover());}isInCooldown(){return Date.now()-this.lastRecoveryTime<this.options.cooldownMs}async recover(){if(!this.isRecovering){if(this.isInCooldown()){i.spinner.warn(" Recovery in cooldown, skipping...");return}if(this.retryCount>=this.options.maxRetries){i.spinner.error(` Max health recovery retries (${this.options.maxRetries}) reached.`);return}this.isRecovering=true,this.lastRecoveryTime=Date.now(),this.retryCount++;try{i.spinner.warn(` Health recovery attempt ${this.retryCount}/${this.options.maxRetries}...`);let e=this.client.socket;if(e?.ws?.readyState===1)try{await e.fetchStatus(e.user?.id||""),this.touch(),i.spinner.success(" Health check passed, session is alive");return}catch{i.spinner.warn(" Health check failed, session unresponsive");}await oe(this.client.options.session),i.spinner.warn(" Re-initializing client connection..."),await this.client.initialize(),this.touch(),i.spinner.success(" Health recovery successful");}catch(e){i.spinner.error(` Health recovery failed: ${e instanceof Error?e.message:String(e)}`);}finally{this.isRecovering=false;}}}};var Ce=class{constructor(e){this.client=e;this.initialize();}logsInitialized=false;logsDisplayed=false;isReady=false;getRoomColor(e){return e?.isNewsletter?"blue":e?.isGroup?e?.isGroup?"lime":"dimgray":"orange"}initialize(){if(!this.client.options.showLogs||this.logsInitialized)return;this.logsInitialized=true;let e=async({status:t})=>{t==="open"&&(this.isReady=true,this.logsDisplayed||setTimeout(()=>{this.displayIndicator();},500));};i.events.on("connection",e);}displayIndicator(){this.logsDisplayed||(this.logsDisplayed=true,console.log(),i.spinner.info("Logs Indicator:"),console.log(M(" \u2022","orange")+" Private Chat"),console.log(M(" \u2022","lime")+" Group Chat"),console.log(M(" \u2022","blue")+" Newsletter Chat"),console.log());}message(e){if(!this.isReady)return;let t=h(this.getRoomColor(e)),n=e?.text?.toLowerCase()?.match("zaileys"),o=M(`[${new Date(e?.timestamp).toTimeString().split(" ")[0]}]`,"dimgray"),s=M(`${e?.roomName}`,t),r=e?.text?.slice(0,300)||"",c=r?.length>=300?"...":"",l=`${o} \u2192 ${s}
7
- `;e?.isNewsletter?l+=`${M("[room]","dimgray")} \u2192 ${M(`${e?.roomName} (${P(e?.roomId)})`,t)}
8
- `:l+=`${M("[sender]","dimgray")} \u2192 ${M(`${e?.senderName} (${P(e?.senderId)})`,t)}
9
- `,l+=`${M(`[${e?.chatType||"unknown"}]`,"dimgray")} \u2192 ${M(r+c,n?["#ff5f6d","#ffc371"]:"brown")}
10
- `,l+="\u2014",console.log(l);}call(e){if(!i.get("logs")?.ready)return;let t=h(this.getRoomColor(e)),n=M(`[${new Date(e?.date).toTimeString().split(" ")[0]}]`,"dimgray"),o=M(`${e?.roomName}`,t),s=`${n} \u2192 ${o}
11
- `;s+=`${M("[caller]","dimgray")} \u2192 ${M(`${e?.callerName} (${P(e?.callerId)})`,t)}
12
- `,s+=`${M(`[${e?.status}]`,"dimgray")} \u2192 ${M(e?.isVideo?"Video Call":"Voice Call","brown")}
13
- `,s+="\u2014",console.log(s);}};var Ae=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,n=async o=>{if(o<=t)throw "next() called multiple times";t=o;let s=this.stack[o];if(s)try{await s(e,()=>n(o+1));}catch(r){throw console.error("Middleware error:",r),r}};await n(0);}};var Ie=class{plugins=[];pluginsDir;constructor(e=Le__namespace.join(process.cwd(),"plugins")){this.pluginsDir=e;}getAllFiles(e,t=[]){if(!F__namespace.existsSync(e))return t;let n=F__namespace.readdirSync(e);for(let o of n){let s=Le__namespace.join(e,o);F__namespace.statSync(s).isDirectory()?this.getAllFiles(s,t):(o.endsWith(".ts")||o.endsWith(".js"))&&!o.endsWith(".d.ts")&&t.push(s);}return t}async load(){if(!F__namespace.existsSync(this.pluginsDir))return;let e=this.getAllFiles(this.pluginsDir);for(let t of e)try{let o=(await import(url.pathToFileURL(t).href)).default;o?.default&&(o=o.default),o?.handler&&o?.config&&this.plugins.push(o);}catch{}}async execute(e,t){let n=t.messages.text||"";for(let o of this.plugins)try{this.match(n,o.config.matcher)&&await o.handler(e,t);}catch{}}match(e,t){return t.some(n=>e===n||e.startsWith(n+" "))}getLoadedPlugins(){return this.plugins}getPluginsInfo(){return this.plugins.map(e=>({matcher:e.config.matcher,metadata:e.config.metadata}))}async reload(){this.plugins=[],await this.load();}},Ai=(a,e)=>({handler:a,config:e});var Re=class{classInjection(e,t){let n=t.length;return new Proxy(e,{get(o,s,r){if(s in o){let c=Reflect.get(o,s,r);return typeof c=="function"?c.bind(o):c}for(let c=0;c<n;c++){let l=t[c];if(s in l){let p=Reflect.get(l,s,r);return typeof p=="function"?p.bind(l):p}}},set(o,s,r,c){if(s in o)return Reflect.set(o,s,r,c);for(let l=0;l<n;l++){let p=t[l];if(s in p)return Reflect.set(p,s,r,c)}return Reflect.set(o,s,r,c)},has(o,s){if(s in e)return true;for(let r=0;r<n;r++)if(s in t[r])return true;return false},ownKeys(){let o=[];for(let s of Reflect.ownKeys(e))o.push(s);for(let s=0;s<n;s++)for(let r of Reflect.ownKeys(t[s]))o.includes(r)||o.push(r);return o},getOwnPropertyDescriptor(o,s){let r=Object.getOwnPropertyDescriptor(e,s);if(r)return r;for(let c=0;c<n;c++)if(r=Object.getOwnPropertyDescriptor(t[c],s),r)return r}})}};var Et=class{constructor(e){this.options=e;this.options=ee(St,e);let t=new Re().classInjection(this,[new we(this),new Me(this),new xe(this),new ve(this),new be(this)]);return this._ready=this.initialize(t),t}listener;_ready;health;logs;collector=new Se;middleware=new Ae;plugins=new Ie;async initialize(e){await kt(),await ut(this.options.disableFFmpeg),await nt(this),await this.plugins.load(),this.listener=new he(e||this),this.logs||(this.logs=new Ce(this)),this.health&&this.health.stop(),this.health=new Te(e||this),this.health.start();}ready(){return this._ready}db(e){return i.db(this.options.session,e)}on(e,t){i.events.on(e,t);}use(e){return this.middleware.use(e),this}get socket(){return i.get("socket")}async getRoomName(e){let t=i.get("socket"),n=e.endsWith("@g.us"),o=null;if(n){let s=i.groupCache.get(e);if(s)o=s.subject;else {let r=await t.groupMetadata(e);r&&(i.groupCache.set(e,r),o=r.subject);}}return R(o)}async getLabelName(e){let t=await this.db("messages").get(e),n=N(t,["message.protocolMessage.memberLabel"]);return R(n?.label)||null}async cleanupMessages(e=7){let t=Date.now()-e*24*60*60*1e3,n=await this.db("messages").all(),o=0;for(let[s]of n){let r=await this.db("messages").get(s);if(!Array.isArray(r))continue;let c=r.filter(l=>Number(l.messageTimestamp)*1e3<t?(o++,false):true);c.length!==r.length&&await this.db("messages").set(s,c);}o>0&&this.options.showLogs&&i.spinner.info(` Cleaned up ${o} old messages`);}};
4
+ `,c=n?"lime":"orange",l=await Zt__default.default.text(o),p=at.cristal(l);console.log(p),console.log(v(s,"dimgray")),console.log(v(r,c));};var fe=class{constructor(e){this.client=e;this.initialize();}async initialize(){i.spinner.start(" Initializing connection...");let e=i.get("socket"),t={},n=async()=>{t.status="reload",i.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},o=async()=>{await zt.delay(3e3),i.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await zt.delay(3e3),await it(this.client.options.session),await n();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){i.spinner.update(" Generating pairing code..."),await zt.delay(3500);try{t.authTimeout=Date.now()+6e4;let s=new Date(t.authTimeout).toLocaleTimeString(),r=await e.requestPairingCode(this.client.options.phoneNumber.toString());i.spinner.warn(` Pairing expired at ${at.cristal(s)}`),i.spinner.warn(` Pairing code: ${r}`),t.code=r;}catch{await o();}}e.ev.on("connection.update",async s=>{let{connection:r,lastDisconnect:c,qr:l}=s;if(t.status=r||"connecting",t.authType=this.client.options.authType,i.spinner.update(" Connection status: "+at.cristal(t.status)),this.client.options.authType==="qr"&&l){t.authTimeout=Date.now()+6e4;let p=new Date(t.authTimeout).toLocaleTimeString();i.spinner.warn(" Please scan the QR code..."),i.spinner.warn(` Qr code expired at ${at.cristal(p)}`),wt(l),t.qr=l;return}if(r==="close"){let p=h(c?.error)?.output?.statusCode,k=c?.error?.message||"",M=typeof p=="number"&&p!==zt.DisconnectReason.loggedOut,$=p===515||k.toLowerCase().includes("prekey");if(i.spinner.error(` [${p} - Closed] ${k}`),$){i.spinner.warn(" Session key mismatch detected, attempting repair..."),await oe(this.client.options.session),await zt.delay(1e3),await n();return}if(p===401||p===405){i.spinner.warn(" Session may be used by another device/instance."),i.spinner.warn(" If you want to connect here, close the other connection first."),i.spinner.warn(` Or use a different session name in your Client options.
5
+ `);return}if(p===500){i.spinner.error(" Server error occurred, attempting reconnect..."),await n();return}M&&await n();}if(r==="open")if(e.user?.id){let p=zt.jidNormalizedUser(e.user.id).split("@")[0],k=e.user.name||e.user.verifiedName;i.spinner.success(` Connected as ${at.cristal(k||p)}`);}else i.spinner.success(" Connected!");i.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:s})=>{t.status="syncing",t.syncProgress=s,i.spinner.start(" Syncing messages history..."),s&&i.spinner.update(` Syncing messages history ${s+"%"}`),s==100&&(i.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),i.events.emit("connection",t);});}};var bt={text:"text",conversation:"text",imageMessage:"image",contactMessage:"contact",locationMessage:"location",documentMessage:"document",audioMessage:"audio",videoMessage:"video",protocolMessage:"protocol",contactsArrayMessage:"contacts",highlyStructuredMessage:"highlyStructured",sendPaymentMessage:"sendPayment",liveLocationMessage:"location",requestPaymentMessage:"requestPayment",groupStatusMentionMessage:"groupStatusMention",statusMentionMessage:"statusMention",albumMessage:"album",declinePaymentRequestMessage:"declinePaymentRequest",cancelPaymentRequestMessage:"cancelPaymentRequest",templateMessage:"template",stickerMessage:"sticker",groupInviteMessage:"groupInvite",templateButtonReplyMessage:"buttons",productMessage:"product",deviceSentMessage:"deviceSent",listMessage:"lists",viewOnceMessage:"viewOnce",orderMessage:"order",listResponseMessage:"lists",ephemeralMessage:"ephemeral",invoiceMessage:"invoice",buttonsMessage:"buttons",buttonsResponseMessage:"buttons",paymentInviteMessage:"paymentInvite",interactiveMessage:"interactive",reactionMessage:"reaction",stickerSyncRmrMessage:"sticker",questionMessage:"question",nativeFlowResponseMessage:"lists",interactiveResponseMessage:"interactiveResponse",pollCreationMessage:"pollCreation",pollCreationMessageKey:"pollUpdate",pollUpdateMessage:"pollUpdate",keepInChatMessage:"keepInChat",documentWithCaptionMessage:"document",requestPhoneNumberMessage:"requestPhoneNumber",viewOnceMessageV2:"viewOnce",encReactionMessage:"reaction",editedMessage:"text",viewOnceMessageV2Extension:"viewOnce",pollCreationMessageV2:"pollCreation",scheduledCallCreationMessage:"scheduledCallCreation",groupMentionedMessage:"groupMentioned",pinInChatMessage:"pinInChat",pollCreationMessageV3:"pollCreation",scheduledCallEditMessage:"scheduledCallEdit",ptvMessage:"ptv",botInvokeMessage:"botInvoke",callLogMesssage:"callLog",encCommentMessage:"encComment",bcallMessage:"bcall",lottieStickerMessage:"lottieSticker",eventMessage:"event",commentMessage:"comment",newsletterAdminInviteMessage:"text",extendedTextMessageWithParentKey:"text",extendedTextMessage:"text",placeholderMessage:"placeholder",encEventUpdateMessage:"encEventUpdate"},Ue={whatsapp:"0@s.whatsapp.net",meta:"13135550002@s.whatsapp.net",chatgpt:"18002428478@s.whatsapp.net",copilot:"18772241042@s.whatsapp.net",instagram:"447723442971@s.whatsapp.net",tiktok:"6285574670498@s.whatsapp.net"};var ge=class{constructor(e){this.client=e;this.limiter=new rateLimiterFlexible.RateLimiterMemory({points:this.client.options.limiter?.maxMessages,duration:this.client.options.limiter?.durationMs/1e3});}limiter;async isSpam(e){try{return await this.limiter.consume(e),!1}catch{return true}}};var ye=class{constructor(e){this.client=e;this.limiter=new ge(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=i.get("socket");if(!e?.ev){console.warn("\u26A0\uFE0F [Messages] Socket or socket.ev is not available during initialization");return}e.ev.on("messages.upsert",async({messages:t,type:n})=>{try{if(n!=="notify"&&n!=="append")return;for(let o of t)try{let s=await this.parse(o);s&&(this.client.collector.push(s)||(await this.client.middleware.run({messages:s}),await this.client.plugins.execute(this.client,{messages:s}),i.set("message",s),i.events.emit("messages",s)),this.client.options.autoRead&&await e.readMessages([s.message().key]));}catch(s){console.error(`\u274C [Messages] Error processing message ${o.key?.id}:`,s);}}catch(o){console.error("\u274C [Messages] Critical error in upsert listener:",o);}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage)return;let n=e,o=i.get("socket"),s={},r=re(e.message),c=r.chain.at(-1),l=r.leaf;if(l?.message&&(r=re(l.message),c=r.chain.at(-1),l=r.leaf),s.uniqueId=null,s.channelId=null,s.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,s.chatType=bt[c],!s.chatType)return;s.receiverLid=zt.jidNormalizedUser(o?.user?.lid||""),s.receiverId=zt.jidNormalizedUser(o?.user?.id||""),s.receiverName=E(o?.user?.name||o?.user?.verifiedName),s.roomId=zt.jidNormalizedUser(e?.key?.remoteJid);let p=l?.type===0,k=l?.type===1,M=l?.type===2,$=s.roomId?.includes("@newsletter"),Ee=!!e?.message?.questionMessage,q=e?.key?.fromMe||false;if(q&&this.client.options.ignoreMe&&t!=="replied")return;let Pe=l?.key?.id;if(p||k||M){let T=await this.client.db("messages").query(s.roomId).where("key.id","=",Pe).first();if(!T)return;e=T,r=re(e.message),c=r.chain.at(-1),l=r.leaf;}if(s.roomName=await this.client.getRoomName(s.roomId),s.senderLid=zt.jidNormalizedUser(e?.key?.participant||e?.key?.remoteJid)||null,s.senderId=zt.jidNormalizedUser(e?.key?.participantAlt||e?.key?.remoteJidAlt)||null,s.senderName=E(e?.pushName||e?.verifiedBizName),s.senderDevice=zt.getDevice(s.chatId||""),s.channelId=j([s.roomId,s.senderId]),s.uniqueId=j([s.channelId,s.chatId]),s.timestamp=Number(e?.messageTimestamp)*1e3,$){let T=await o.newsletterMetadata("jid",s.roomId);s.roomName=h(T.thread_metadata.name)?.text,s.senderId=null,s.senderLid=null;}if(q&&(s.senderLid=zt.jidNormalizedUser(o.user.lid),s.senderId=s.receiverId,s.senderName=s.receiverName),s.text=l?.text||l?.caption||l?.name||l?.displayName||l?.conversation||l?.contentText||l?.selectedDisplayText||l||null,l?.name=="menu_options"&&(s.text=Ne(l?.paramsJson)?.id),s.text=E(s.text),s.mentions=lt(s.text),s.links=ct(s.text||""),s.isBot=s.chatId.startsWith("BAE5")||s.chatId.startsWith("3EB0")||s.chatId.startsWith("Z4D3FC"),s.isFromMe=q,s.isPrefix=s.text?.startsWith(this.client.options?.prefix)||false,s.isTagMe=s.mentions?.includes(s.receiverId.split("@")[0])||s.mentions?.includes(s.receiverLid.split("@")[0]),s.isStatusMention=!!e?.message?.statusMentionMessage,s.isGroupStatusMention=!!e?.message?.groupStatusMentionMessage,s.isHideTags=false,x__default.default.isEmpty(s.text)&&l?.contextInfo?.mentionedJid?.length&&(s.isHideTags=true),s.isSpam=await this.limiter.isSpam(s.channelId),s.isPrefix&&(s.text=s.text.replace(new RegExp(`^${this.client.options?.prefix}`),"")),s.isGroup=s.roomId?.includes("@g.us"),s.isNewsletter=$,s.isQuestion=Ee,s.isStory=s.roomId?.includes("@broadcast"),!s.isGroup&&!s.roomName&&(s.roomName=s.senderName),s.isViewOnce=false,s.isEdited=!!Z(H(r),"editedMessage"),s.isDeleted=p,s.isPinned=k,s.isUnPinned=M,s.isBroadcast=!!e?.broadcast,s.isEphemeral=!!Z(H(l?.contextInfo),"ephemeralSettingTimestamp"),s.isForwarded=!!Z(H(l?.contextInfo),"forwardingScore"),s.citation=null,this.client.options.citation){s.citation=s.citation||{};let T=this.client.options.citation;for(let P of Object.keys(T)){let We=T[P];s.citation[P]=async()=>{let De=await We(),ne=[W(s.roomId),W(s.senderLid),W(s.senderId)];return !!x__default.default.intersection(ne,De).length};}}s.chatType!=="text"&&(s.media={...pt(l),buffer:()=>zt.downloadMediaMessage(e,"buffer",{}),stream:()=>zt.downloadMediaMessage(e,"stream",{})}),s.isStatusMention&&(s.chatType="statusMention"),s.isGroupStatusMention&&(s.chatType="groupStatusMention"),s.message=()=>n,s.replied=null;let _=l?.contextInfo?.quotedMessage,G=Z(H(_),"viewOnce"),J=l?.contextInfo?.stanzaId,se=l?.contextInfo?.participant;if(_&&this.maxReplies){this.maxReplies--;let T=await this.client.db("messages").query(G?se:s.roomId).where("key.id","=",J).first(),P;G?P={...T,message:_}:P=T,s.replied=await this.parse(P,"replied"),s.replied&&(s.replied.isViewOnce=true),this.maxReplies=3;}return t!="replied"&&this.client.logs.message(s),s}};var he=class{constructor(e){this.client=e;this.connection=new fe(e),this.messages=new ye(e),this.calls=new ue(e),this.initialize();}connection;messages;calls;async initialize(){let e=i.get("socket");e.ev.on("groups.update",async([t])=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e.ev.on("group-participants.update",async t=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e?.ev.on("messaging-history.set",async t=>{let{chats:n,contacts:o,messages:s}=t;for(let r of n)await this.client.db("chats").set(r.id,r);for(let r of o)await this.client.db("contacts").set(r.id,r);for(let r of s){if(r?.category==="peer"||!r.message&&!r.key.isViewOnce&&(!r.message?.groupStatusMentionMessage||!r.message?.statusMentionMessage)||r.message?.protocolMessage&&!r.message?.protocolMessage?.memberLabel)continue;let c=Number(r.messageTimestamp)*1e3;Date.now()-c>1440*60*1e3||await this.client.db("messages").upsert(r.key.remoteJid,r,"key.id");}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let n of t){if(n?.category==="peer"||!n.message&&!n.key.isViewOnce||n.message?.protocolMessage&&!n.message?.protocolMessage?.memberLabel)continue;let o=Number(n.messageTimestamp)*1e3;if(Date.now()-o>1440*60*1e3)continue;O([n?.key],["participant","remoteJid"])||null;await this.client.db("messages").upsert(n.key.remoteJid,n,"key.id");}}),e?.ev.on("chats.upsert",async t=>{for(let n of t)await this.client.db("chats").upsert(n.id,n,"id");}),e?.ev.on("contacts.upsert",async t=>{for(let n of t)await this.client.db("contacts").upsert(n.id,n,"id");});}};var ee=(a,e)=>{let t=a.safeParse(e);if(t.success)return t.data;throw console.error(t.error),"Invalid data"};var ns=u__default.default.object({type:u__default.default.literal("quick_reply"),text:u__default.default.string()}),os=u__default.default.object({type:u__default.default.literal("cta_url"),url:u__default.default.url(),text:u__default.default.string()}),rs=u__default.default.object({type:u__default.default.literal("cta_copy"),copy:u__default.default.string(),text:u__default.default.string()}),is=u__default.default.object({type:u__default.default.literal("cta_call"),text:u__default.default.string(),phoneNumber:u__default.default.string()}),as=u__default.default.object({type:u__default.default.literal("single_select"),text:u__default.default.string(),section:u__default.default.object({title:u__default.default.string(),highlight_label:u__default.default.string().optional(),rows:u__default.default.object({id:u__default.default.string(),title:u__default.default.string(),header:u__default.default.string().optional(),description:u__default.default.string().optional()}).array()}).array()}),cs=u__default.default.object({type:u__default.default.literal("interactive"),footer:u__default.default.string().optional(),data:u__default.default.union([ns,os,rs,is,as]).array()}),ls=u__default.default.object({type:u__default.default.literal("simple"),footer:u__default.default.string().optional(),data:u__default.default.object({id:u__default.default.string(),text:u__default.default.string()}).array()}),xt=u__default.default.union([ls,cs]);var ps=u.z.object({maxMessages:u.z.number().default(20),durationMs:u.z.number().default(1e4)}).optional(),us=u.z.record(u.z.string(),u.z.function({output:u.z.promise(u.z.array(u.z.number()))})).optional(),ms=u.z.object({provider:u.z.enum(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]).or(u.z.number())}).optional(),ze=u.z.enum(["default","rounded","circle","oval"]).default("default"),ds=u.z.object({packageName:u.z.string().optional(),authorName:u.z.string().optional(),quality:u.z.number().optional(),shape:ze.optional()}).optional(),St=u.z.object({session:u.z.string().default("zaileys").optional(),prefix:u.z.string().optional(),ignoreMe:u.z.boolean().default(true).optional(),showLogs:u.z.boolean().default(true).optional(),syncFullHistory:u.z.boolean().default(true).optional(),disableFFmpeg:u.z.boolean().default(false).optional(),cleanupDays:u.z.number().default(7).optional(),autoMarkAI:u.z.boolean().default(true).optional(),autoMentions:u.z.boolean().default(true).optional(),autoOnline:u.z.boolean().default(true).optional(),autoRead:u.z.boolean().default(true).optional(),autoPresence:u.z.boolean().default(true).optional(),autoRejectCall:u.z.boolean().default(true).optional(),limiter:ps,citation:us,fakeReply:ms,sticker:ds}),fs=u.z.object({authType:u.z.literal("pairing"),phoneNumber:u.z.number()}),gs=u.z.object({authType:u.z.literal("qr")}),Tt=u.z.union([fs.extend(St.shape),gs.extend(St.shape)]),ar=u.z.enum(["connection","messages","calls"]);var te=u__default.default.url().or(u__default.default.base64()).or(u__default.default.instanceof(Buffer)),Ct=u__default.default.object({text:u__default.default.string()}).passthrough(),ys=u__default.default.object({image:te,caption:u__default.default.string().optional()}).passthrough(),hs=u__default.default.object({audio:te,caption:u__default.default.string().optional(),ptt:u__default.default.boolean().optional()}).passthrough(),ws=u__default.default.object({video:te,caption:u__default.default.string().optional(),ptv:u__default.default.boolean().optional()}).passthrough(),ks=u__default.default.object({sticker:te,shape:ze.optional(),caption:u__default.default.string().optional()}).passthrough(),bs=u__default.default.object({document:te,caption:u__default.default.string().optional(),fileName:u__default.default.string().optional()}).passthrough(),vs=u__default.default.object({location:u__default.default.object({latitude:u__default.default.number(),longitude:u__default.default.number(),url:u__default.default.url().optional(),title:u__default.default.string().optional(),footer:u__default.default.string().optional()}).optional()}).passthrough(),Ms=u__default.default.object({contacts:u__default.default.object({title:u__default.default.string().optional(),contacts:u__default.default.object({fullname:u__default.default.string(),phoneNumber:u__default.default.number(),organization:u__default.default.string().optional()}).array()})}).passthrough(),xs=u__default.default.object({poll:u__default.default.object({name:u__default.default.string(),answers:u__default.default.string().array(),isMultiple:u__default.default.boolean().default(false).optional()})}),At=u__default.default.object({replied:u__default.default.custom().optional(),isForwardedMany:u__default.default.boolean().optional(),isViewOnce:u__default.default.boolean().optional(),banner:u__default.default.custom().optional(),buttons:xt.optional()});u__default.default.enum(["forward","button","edit","delete"]);var Ss=u__default.default.union([Ct,ys,hs,ws,ks,bs,vs,Ms,xs]),It=u__default.default.string().or(u__default.default.intersection(Ss,At.omit({buttons:true}))),Rt=u__default.default.intersection(Ct,At.omit({banner:true}));var we=class{toNativeSimple(e){return e.map(({id:t,text:n})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:n,id:t})}))}toNativeInteractive(e){let t={quick_reply:n=>({display_text:n.text,id:n.id}),cta_url:n=>({display_text:n.text,url:n.url,merchant_url:n.url}),cta_copy:n=>({display_text:n.text,id:n.id,copy_code:n.copy}),cta_call:n=>({display_text:n.text,phone_number:n.phoneNumber}),single_select:n=>({title:n.text,sections:n.section})};return e.map(n=>({name:n.type,buttonParamsJson:JSON.stringify(t[n.type](n))}))}build(e){let t=h(e).buttons,n=t?.data||[],s=t?.type=="simple"?this.toNativeSimple(n):this.toNativeInteractive(n);return {body:{text:h(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:s}}}async send(e,t,n){let o=i.get("socket"),s=o.authState?.creds?.me?.id||o.user?.id,r=this.build(t),c=zt.generateWAMessageFromContent(e,{interactiveMessage:r},{userJid:s,messageId:zt.generateMessageIDV2(s),...n});return await o.relayMessage(e,c.message,{messageId:c.key.id,...n,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),o.config?.emitOwnEvents&&!zt.isJidGroup(e)&&process.nextTick(()=>o.upsertMessage?.(c,"append")),c}};var ke=class{constructor(e){this.client=e;}async signal(e,t,n,o){n!="delete"&&(n=="button"?t=ee(Rt,t):t=ee(It,t));let s=i.get("socket"),r={},c={},l=x__default.default.isString(t),p=this.client.options?.fakeReply?.provider,k=this.client.options?.autoMentions,M=this.client.options?.autoPresence,$=x__default.default.has(t,"replied"),Ee=x__default.default.has(t,"banner"),q=x__default.default.has(t,"isViewOnce"),Pe=n=="button",_=x__default.default.has(t,"image"),G=x__default.default.has(t,"video"),J=x__default.default.has(t,"audio"),se=x__default.default.has(t,"sticker"),T=x__default.default.has(t,"document"),P=x__default.default.has(t,"location"),We=x__default.default.has(t,"contacts"),De=x__default.default.has(t,"poll"),ne=_||G||J||se||T,K=l?t:O([t],["text","caption"]);if(M&&(J?await s.sendPresenceUpdate("recording",e):await s.sendPresenceUpdate("composing",e)),k&&(r={...r,mentions:Fe(K),contextInfo:{mentionedJid:Fe(K)}}),$&&(c.quoted=h(t).replied,p&&(c.quoted.key.remoteJid=Ue[p],c.quoted.key.participant=Ue[p])),Ee&&(r={...r,contextInfo:{externalAdReply:h(t).banner}},r.contextInfo.externalAdReply.mediaType=1),q&&(r={...r,viewOnce:h(t)?.isViewOnce}),K&&(r={...r,text:K,caption:K},ne&&delete h(r).text),ne){let b=O([t],["image","video","audio","sticker","document"]);x__default.default.isString(b)?{}:b;if(_&&(r={...r,image:await dt(b),jpegThumbnail:await je(b)}),G){let I=h(t)?.ptv;r={...r,video:await ft(b),ptv:I,jpegThumbnail:await je(b)};}if(J){let I=h(t)?.ptt;r={...r,audio:await mt(b),ptt:I,mimetype:I?"audio/ogg; codecs=opus":"audio/mpeg"};}if(se){let I=h(t)?.shape;r={...r,sticker:await gt(b,{...this.client.options?.sticker,shape:I})};}if(T){let I=await yt(b);r={...r,fileName:h(t).fileName,...I};}}if(P){let b=h(t).location;r={...r,location:{degreesLatitude:b.latitude,degreesLongitude:b.longitude,url:b.url,address:b.footer,name:b.title}};}if(We){let b=h(t)?.contacts,He=b?.contacts.map(L=>{let I=["BEGIN:VCARD","VERSION:3.0",`FN:${L.fullname}`,`ORG:${L.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${L.phoneNumber}:${L.phoneNumber}`,"END:VCARD"].join(`
6
+ `);return {displayName:L.fullname,vcard:I}});r={...r,contacts:{displayName:b?.title,contacts:He}};}if(De){let b=h(t)?.poll;r={...r,poll:{name:b.name,values:b.answers,selectableCount:b.isMultiple?1:0,toAnnouncementGroup:true}};}return n=="forward"&&(r={...r,contextInfo:{...h(r).contextInfo,isForwarded:true,forwardingScore:h(t).isForwardedMany?9999:1}}),n=="edit"&&(r={...r,edit:o?.key},await s.sendPresenceUpdate("paused",e)),n=="delete"&&(r={...r,delete:o?.key},await s.sendPresenceUpdate("paused",e)),Pe?await new we().send(e,t,c):await s.sendMessage(e,h(r),c)}async send(e,t){return await this.signal(e,t)}async forward(e,t){return await this.signal(e,t,"forward")}async button(e,t){return await this.signal(e,t,"button")}async edit(e,t){return await this.signal(e.key.remoteJid,t,"edit",e)}async delete(e){return x__default.default.isArray(e)?Promise.all(e.map(t=>this.signal(t.key.remoteJid,{},"delete",t))):await this.signal(e.key.remoteJid,{},"delete",e)}async presence(e,t){let n=i.get("socket"),o={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await n.sendPresenceUpdate(o[t],e)}async reaction(e,t){return await i.get("socket").sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}async memberLabel(e,t){return await i.get("socket").relayMessage(e,{protocolMessage:{type:30,memberLabel:{label:t,labelTimestamp:Date.now()}}},{})}};var Ve=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").communityCreate(e,t)}async createGroup(e,t,n){return await i.get("socket").communityCreateGroup(e,t,n)}async leave(e){return await i.get("socket").communityLeave(e)}async metadata(e){return await i.get("socket").communityMetadata(e)}async update(e,t,n){let o=i.get("socket");switch(t){case "subject":return await o.communityUpdateSubject(e,n);case "description":return await o.communityUpdateDescription(e,n)}}async group(e,t,n){let o=i.get("socket");switch(t){case "link":if(!n)throw "Group JID is required for linking";return await o.communityLinkGroup(e,n);case "unlink":if(!n)throw "Group JID is required for unlinking";return await o.communityUnlinkGroup(e,n);case "linked":return await o.communityFetchLinkedGroups(e)}}async participants(e,t,n,o){let s=i.get("socket");switch(t){case "list":return await s.communityRequestParticipantsList(e);case "request-update":return await s.communityRequestParticipantsUpdate(e,o,h(n));case "update":if(!n||!o)throw "Action and participants are required for update";return await s.communityParticipantsUpdate(e,o,h(n));case "all":return await s.communityFetchAllParticipating()}}async invite(e,t,...n){let o=i.get("socket");switch(t){case "code":return await o.communityInviteCode(e);case "revoke":return await o.communityRevokeInvite(e);case "accept":return await o.communityAcceptInvite(e);case "info":return await o.communityGetInviteInfo(e);case "revokeV4":return await o.communityRevokeInviteV4(e,n[0]);case "acceptV4":return await o.communityAcceptInviteV4(e,n[0])}}async settings(e,t,n){let o=i.get("socket");switch(t){case "ephemeral":return await o.communityToggleEphemeral(e,n);case "update":return await o.communitySettingUpdate(e,n);case "memberAdd":return await o.communityMemberAddMode(e,n);case "approval":return await o.communityJoinApprovalMode(e,n)}}},be=class{constructor(e){this.mlient=e;this.community=new Ve(e);}community};var qe=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").groupCreate(e,t)}async participant(e,t,n){return await i.get("socket").groupParticipantsUpdate(e,t,n)}async profile(e,t,n){let o=i.get("socket"),s=Buffer.isBuffer(t);switch(n){case "subject":if(!s)return await o.groupUpdateSubject(e,t);case "description":if(!s)return await o.groupUpdateDescription(e,t);case "picture":return await o.updateProfilePicture(e,pe(t))}}async setting(e,t){let n=i.get("socket");switch(t){case "open":return await n.groupSettingUpdate(e,"not_announcement");case "close":return await n.groupSettingUpdate(e,"announcement");case "locked":return await n.groupSettingUpdate(e,t);case "unlocked":return await n.groupSettingUpdate(e,t);case "all_member_add":return await n.groupMemberAddMode(e,t);case "admin_add":return await n.groupMemberAddMode(e,t)}}async leave(e){return await i.get("socket").groupLeave(e)}async inviteCode(e,t){let n=i.get("socket");switch(t){case "code":return await n.groupInviteCode(e);case "revoke":return await n.groupRevokeInvite(e);case "accept":return await n.groupAcceptInvite(e);case "info":return await n.groupGetInviteInfo(e)}}async metadata(e){let t=i.get("socket"),n=i.groupCache.get(e);if(n)return n;let o=await t.groupMetadata(e);return o&&i.groupCache.set(e,o),o}async requestJoin(e,t,n){let o=i.get("socket");switch(n){case "approve":return await o.groupRequestParticipantsUpdate(e,t,n);case "reject":return await o.groupRequestParticipantsUpdate(e,t,n)}}async requestJoinList(e){return await i.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await i.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let n=i.get("socket"),o={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await n.groupToggleEphemeral(e,o[t])}},ve=class{constructor(e){this.glient=e;this.group=new qe(e);}group};var Ge=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").newsletterCreate(e,t)}async action(e,t){let n=i.get("socket");switch(t){case "follow":return await n.newsletterFollow(e);case "unfollow":return await n.newsletterUnfollow(e);case "mute":return await n.newsletterMute(e);case "unmute":return await n.newsletterUnmute(e);}}async update(e,t,n){let o=i.get("socket"),s=Buffer.isBuffer(t);switch(n){case "name":if(!s)return await o.newsletterUpdateName(e,t);case "description":if(!s)return await o.newsletterUpdateDescription(e,t);case "picture":return await o.newsletterUpdatePicture(e,pe(t))}}async metadata(e,t){return await i.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await i.get("socket").newsletterSubscribers(e)}async reaction(e,t,n){return await i.get("socket").newsletterReactMessage(e,t,n)}async fetchMessages(e,t,n,o){let s=i.get("socket"),r=n.getTime()/1e3,c=o.getTime()/1e3;return await s.newsletterFetchMessages(e,t,r,c)}async adminCount(e){return await i.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await i.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await i.get("socket").newsletterDemote(e,t)}async delete(e){return await i.get("socket").newsletterDelete(e)}async removePicture(e){return await i.get("socket").newsletterRemovePicture(e)}},Me=class{constructor(e){this.nlient=e;this.newsletter=new Ge(e);}newsletter};var Je=class{constructor(e){this.client=e;}async block(e){return await i.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await i.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await i.get("socket").updateLastSeenPrivacy(e)}async online(e){return await i.get("socket").updateOnlinePrivacy(e)}async picture(e){return await i.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await i.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await i.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await i.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=i.get("socket"),n={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(n[e])}async blocklist(){return await i.get("socket").fetchBlocklist()}async getSettings(){return await i.get("socket").fetchPrivacySettings(true)}},xe=class{constructor(e){this.plient=e;this.privacy=new Je(e);}privacy};var Hr=u__default.default.object({status:u__default.default.enum(["connecting","open","close","reload","syncing"]),authType:u__default.default.enum(["pairing","qr"]),authTimeout:u__default.default.number().optional(),syncProgress:u__default.default.number().optional(),syncCompleted:u__default.default.boolean().default(false).optional(),qr:u__default.default.string().optional(),code:u__default.default.string().optional()});var Rs=u__default.default.enum(["unknown","android","ios","desktop","web"]),Es=u__default.default.enum(["text","album","image","contact","location","document","audio","video","protocol","contacts","highlyStructured","sendPayment","requestPayment","groupStatusMention","statusMention","declinePaymentRequest","cancelPaymentRequest","template","sticker","groupInvite","product","deviceSent","lists","viewOnce","order","ephemeral","invoice","buttons","paymentInvite","interactive","reaction","sticker","interactiveResponse","pollCreation","pollUpdate","keepInChat","document","requestPhoneNumber","viewOnce","reaction","text","viewOnce","pollCreation","scheduledCallCreation","groupMentioned","pinInChat","pollCreation","scheduledCallEdit","ptv","botInvoke","callLog","encComment","bcall","lottieSticker","event","comment","placeholder","encEventUpdate"]),Et=u__default.default.object({channelId:u__default.default.string(),uniqueId:u__default.default.string(),chatId:u__default.default.string(),chatType:Es,receiverLid:u__default.default.string(),receiverId:u__default.default.string(),receiverName:u__default.default.string(),roomId:u__default.default.string(),roomName:u__default.default.string(),senderLid:u__default.default.string(),senderId:u__default.default.string(),senderName:u__default.default.string(),senderDevice:Rs,timestamp:u__default.default.number(),text:u__default.default.string().nullable(),mentions:u__default.default.string().array(),links:u__default.default.string().array(),isBot:u__default.default.boolean(),isFromMe:u__default.default.boolean(),isPrefix:u__default.default.boolean(),isSpam:u__default.default.boolean(),isTagMe:u__default.default.boolean(),isStatusMention:u__default.default.boolean(),isGroupStatusMention:u__default.default.boolean(),isHideTags:u__default.default.boolean(),isGroup:u__default.default.boolean(),isNewsletter:u__default.default.boolean(),isQuestion:u__default.default.boolean(),isStory:u__default.default.boolean(),isViewOnce:u__default.default.boolean(),isEdited:u__default.default.boolean(),isDeleted:u__default.default.boolean(),isPinned:u__default.default.boolean(),isUnPinned:u__default.default.boolean(),isBroadcast:u__default.default.boolean(),isEphemeral:u__default.default.boolean(),isForwarded:u__default.default.boolean(),citation:u__default.default.record(u__default.default.string(),u__default.default.function({output:u__default.default.promise(u__default.default.boolean())})).nullable(),media:u__default.default.object({buffer:u__default.default.function({output:u__default.default.promise(u__default.default.instanceof(Buffer))}),stream:u__default.default.function({output:u__default.default.promise(u__default.default.instanceof(Is__default.default))})}).loose().nullable(),message:u__default.default.function({input:[],output:u__default.default.custom()})}),ei=Et.extend({replied:Et.nullable()});var oi=u__default.default.object({callId:u__default.default.string(),callerId:u__default.default.string(),callerName:u__default.default.string(),roomId:u__default.default.string(),roomName:u__default.default.string(),date:u__default.default.date(),offline:u__default.default.boolean(),status:u__default.default.enum(["accept","offer","reject","ringing","terminate","timeout"]),isVideo:u__default.default.boolean(),isGroup:u__default.default.boolean()});var Se=class{collect(e,t,n){let o=t.max??1/0;if(o<=0){n([]);return}let s=i.collectors.get(e);s&&(clearTimeout(s.timeoutId),s.callback(s.messages),i.collectors.delete(e));let r=setTimeout(()=>{let c=i.collectors.get(e);c&&(c.callback(c.messages),i.collectors.delete(e));},t.timeout);i.collectors.set(e,{messages:[],max:o,filter:t.filter,callback:n,timeoutId:r});}push(e){let t=i.collectors.get(e.channelId);return !t||t.filter&&!t.filter(e)?false:(t.messages.push(e),t.messages.length>=t.max&&(clearTimeout(t.timeoutId),t.callback(t.messages),i.collectors.delete(e.channelId)),true)}has(e){return i.collectors.has(e)}cancel(e){let t=i.collectors.get(e);return t?(clearTimeout(t.timeoutId),t.callback(t.messages),i.collectors.delete(e),t.messages):[]}};var Ps={checkIntervalMs:6e4,staleThresholdMs:12e4,cooldownMs:6e4,maxRetries:3},Te=class{constructor(e,t={}){this.client=e;this.options={...Ps,...t};}lastActivityTime=Date.now();lastRecoveryTime=0;checkInterval=null;cleanupInterval=null;isRecovering=false;retryCount=0;options;start(){this.stop(),this.lastActivityTime=Date.now(),this.setupActivityListeners(),this.checkInterval=setInterval(()=>this.check(),this.options.checkIntervalMs),this.cleanupInterval=setInterval(()=>this.client.cleanupMessages(this.client.options.cleanupDays),3600*1e3),this.client.cleanupMessages(this.client.options.cleanupDays),i.spinner.success(" Health manager monitoring started");}stop(){this.checkInterval&&(clearInterval(this.checkInterval),this.checkInterval=null),this.cleanupInterval&&(clearInterval(this.cleanupInterval),this.cleanupInterval=null);}touch(){this.lastActivityTime=Date.now(),this.retryCount=0;}setupActivityListeners(){let e=this.client.socket;if(!e?.ev)return;let t=["messages.upsert","message-receipt.update","presence.update","chats.update","connection.update"];for(let n of t)e.ev.on(n,()=>this.touch());}async check(){if(this.isRecovering)return;let t=Date.now()-this.lastActivityTime;t>this.options.staleThresholdMs&&(i.spinner.warn(` Connection stale for ${Math.round(t/1e3)}s. Triggering recovery...`),await this.recover());}isInCooldown(){return Date.now()-this.lastRecoveryTime<this.options.cooldownMs}async recover(){if(!this.isRecovering){if(this.isInCooldown()){i.spinner.warn(" Recovery in cooldown, skipping...");return}if(this.retryCount>=this.options.maxRetries){i.spinner.error(` Max health recovery retries (${this.options.maxRetries}) reached.`);return}this.isRecovering=true,this.lastRecoveryTime=Date.now(),this.retryCount++;try{i.spinner.warn(` Health recovery attempt ${this.retryCount}/${this.options.maxRetries}...`);let e=this.client.socket;if(e?.ws?.readyState===1)try{await e.fetchStatus(e.user?.id||""),this.touch(),i.spinner.success(" Health check passed, session is alive");return}catch{i.spinner.warn(" Health check failed, session unresponsive");}await oe(this.client.options.session),i.spinner.warn(" Re-initializing client connection..."),await this.client.initialize(),this.touch(),i.spinner.success(" Health recovery successful");}catch(e){i.spinner.error(` Health recovery failed: ${e instanceof Error?e.message:String(e)}`);}finally{this.isRecovering=false;}}}};var Ce=class{constructor(e){this.client=e;this.initialize();}logsInitialized=false;logsDisplayed=false;isReady=false;getRoomColor(e){return e?.isNewsletter?"blue":e?.isGroup?e?.isGroup?"lime":"dimgray":"orange"}initialize(){if(!this.client.options.showLogs||this.logsInitialized)return;this.logsInitialized=true;let e=async({status:t})=>{t==="open"&&(this.isReady=true,this.logsDisplayed||setTimeout(()=>{this.displayIndicator();},500));};i.events.on("connection",e);}displayIndicator(){this.logsDisplayed||(this.logsDisplayed=true,console.log(),i.spinner.info("Logs Indicator:"),console.log(v(" \u2022","orange")+" Private Chat"),console.log(v(" \u2022","lime")+" Group Chat"),console.log(v(" \u2022","blue")+" Newsletter Chat"),console.log());}message(e){if(!this.isReady)return;let t=h(this.getRoomColor(e)),n=e?.text?.toLowerCase()?.match("zaileys"),o=v(`[${new Date(e?.timestamp).toTimeString().split(" ")[0]}]`,"dimgray"),s=v(`${e?.roomName}`,t),r=e?.text?.slice(0,300)||"",c=r?.length>=300?"...":"",l=`${o} \u2192 ${s}
7
+ `;e?.isNewsletter?l+=`${v("[room]","dimgray")} \u2192 ${v(`${e?.roomName} (${W(e?.roomId)})`,t)}
8
+ `:l+=`${v("[sender]","dimgray")} \u2192 ${v(`${e?.senderName} (${W(e?.senderId)})`,t)}
9
+ `,l+=`${v(`[${e?.chatType||"unknown"}]`,"dimgray")} \u2192 ${v(r+c,n?["#ff5f6d","#ffc371"]:"brown")}
10
+ `,l+="\u2014",console.log(l);}call(e){if(!i.get("logs")?.ready)return;let t=h(this.getRoomColor(e)),n=v(`[${new Date(e?.date).toTimeString().split(" ")[0]}]`,"dimgray"),o=v(`${e?.roomName}`,t),s=`${n} \u2192 ${o}
11
+ `;s+=`${v("[caller]","dimgray")} \u2192 ${v(`${e?.callerName} (${W(e?.callerId)})`,t)}
12
+ `,s+=`${v(`[${e?.status}]`,"dimgray")} \u2192 ${v(e?.isVideo?"Video Call":"Voice Call","brown")}
13
+ `,s+="\u2014",console.log(s);}};var Ae=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,n=async o=>{if(o<=t)throw "next() called multiple times";t=o;let s=this.stack[o];if(s)try{await s(e,()=>n(o+1));}catch(r){throw console.error("Middleware error:",r),r}};await n(0);}};var Ie=class{plugins=[];pluginsDir;constructor(e=Le__namespace.join(process.cwd(),"plugins")){this.pluginsDir=e;}getAllFiles(e,t=[]){if(!F__namespace.existsSync(e))return t;let n=F__namespace.readdirSync(e);for(let o of n){let s=Le__namespace.join(e,o);F__namespace.statSync(s).isDirectory()?this.getAllFiles(s,t):(o.endsWith(".ts")||o.endsWith(".js"))&&!o.endsWith(".d.ts")&&t.push(s);}return t}async load(){if(!F__namespace.existsSync(this.pluginsDir))return;let e=this.getAllFiles(this.pluginsDir);for(let t of e)try{let o=(await import(url.pathToFileURL(t).href)).default;o?.default&&(o=o.default),o?.handler&&o?.config&&this.plugins.push(o);}catch{}}async execute(e,t){let n=t.messages.text||"";for(let o of this.plugins)try{this.match(n,o.config.matcher)&&await o.handler(e,t);}catch{}}match(e,t){return t.some(n=>e===n||e.startsWith(n+" "))}getLoadedPlugins(){return this.plugins}getPluginsInfo(){return this.plugins.map(e=>({matcher:e.config.matcher,metadata:e.config.metadata}))}async reload(){this.plugins=[],await this.load();}},Ii=(a,e)=>({handler:a,config:e});var Re=class{classInjection(e,t){let n=t.length;return new Proxy(e,{get(o,s,r){if(s in o){let c=Reflect.get(o,s,r);return typeof c=="function"?c.bind(o):c}for(let c=0;c<n;c++){let l=t[c];if(s in l){let p=Reflect.get(l,s,r);return typeof p=="function"?p.bind(l):p}}},set(o,s,r,c){if(s in o)return Reflect.set(o,s,r,c);for(let l=0;l<n;l++){let p=t[l];if(s in p)return Reflect.set(p,s,r,c)}return Reflect.set(o,s,r,c)},has(o,s){if(s in e)return true;for(let r=0;r<n;r++)if(s in t[r])return true;return false},ownKeys(){let o=[];for(let s of Reflect.ownKeys(e))o.push(s);for(let s=0;s<n;s++)for(let r of Reflect.ownKeys(t[s]))o.includes(r)||o.push(r);return o},getOwnPropertyDescriptor(o,s){let r=Object.getOwnPropertyDescriptor(e,s);if(r)return r;for(let c=0;c<n;c++)if(r=Object.getOwnPropertyDescriptor(t[c],s),r)return r}})}};var Pt=class{constructor(e){this.options=e;this.options=ee(Tt,e);let t=new Re().classInjection(this,[new ke(this),new ve(this),new xe(this),new Me(this),new be(this)]);return this._ready=this.initialize(t),t}listener;_ready;health;logs;collector=new Se;middleware=new Ae;plugins=new Ie;async initialize(e){await kt(),await ut(this.options.disableFFmpeg),await nt(this),await this.plugins.load(),this.listener=new he(e||this),this.logs||(this.logs=new Ce(this)),this.health&&this.health.stop(),this.health=new Te(e||this),this.health.start();}ready(){return this._ready}db(e){return i.db(this.options.session,e)}on(e,t){i.events.on(e,t);}use(e){return this.middleware.use(e),this}get socket(){return i.get("socket")}async getRoomName(e){let t=i.get("socket"),n=e.endsWith("@g.us"),o=null;if(n){let s=i.groupCache.get(e);if(s)o=s.subject;else {let r=await t.groupMetadata(e);r&&(i.groupCache.set(e,r),o=r.subject);}}return E(o)}async getLabelName(e){let t=await this.db("messages").get(e),n=O(t,["message.protocolMessage.memberLabel"]);return E(n?.label)||null}async cleanupMessages(e=7){let t=Date.now()-e*24*60*60*1e3,n=await this.db("messages").all(),o=0;for(let[s]of n){let r=await this.db("messages").get(s);if(!Array.isArray(r))continue;let c=r.filter(l=>Number(l.messageTimestamp)*1e3<t?(o++,false):true);c.length!==r.length&&await this.db("messages").set(s,c);}o>0&&this.options.showLogs&&i.spinner.info(` Cleaned up ${o} old messages`);}};
14
14
  /*
15
15
  * Copyright (c) 2025 zaadevofc.
16
16
  * All rights reserved.
@@ -18,7 +18,7 @@ by ${e} \xB7 v${a}`,r=`${n?"Already using latest version!":`Update available! (v
18
18
  * See LICENSE file for details.
19
19
 
20
20
  * Author: zaadevofc
21
- * Last build time: 12/19/2025 4:42:42 PM
21
+ * Last build time: 12/19/2025 8:42:35 PM
22
22
  *
23
23
  * Repository: git+https://github.com/zeative/zaileys.git
24
- */Object.defineProperty(exports,"JetDB",{enumerable:true,get:function(){return jetdb.JetDB}});Object.defineProperty(exports,"createJetDB",{enumerable:true,get:function(){return jetdb.createJetDB}});exports.AudioProcessor=ae;exports.BaseMessagesType=Rt;exports.ButtonInteractiveCallType=rs;exports.ButtonInteractiveCopyType=os;exports.ButtonInteractiveReplyType=ss;exports.ButtonInteractiveSingleSelectType=is;exports.ButtonInteractiveType=as;exports.ButtonInteractiveUrlType=ns;exports.ButtonSimpleType=cs;exports.ButtonType=vt;exports.CitationType=ps;exports.Client=Et;exports.ClientAuthPairingType=ds;exports.ClientAuthQRType=fs;exports.ClientBaseType=xt;exports.ClientOptionsType=St;exports.DEVICE_ENUM_TYPES=Is;exports.DocumentProcessor=le;exports.EventEnumType=ir;exports.FakeReplyType=us;exports.ImageProcessor=U;exports.LimiterType=ls;exports.ListenerCallsType=ni;exports.ListenerConnectionType=Kr;exports.ListenerMessagesType=Xr;exports.MESSAGE_ENUM_TYPES=Rs;exports.MediaProcessor=Y;exports.Plugins=Ie;exports.StickerMetadataType=ms;exports.StickerProcessor=ce;exports.StickerShapeType=ze;exports.VideoProcessor=W;exports.cleanJid=P;exports.cleanMediaObject=pt;exports.cleanupSocket=tt;exports.configureFFmpeg=ut;exports.definePlugins=Ai;exports.extractJids=Fe;exports.extractUrls=ct;exports.findGlobalWord=K;exports.findNestedByKeys=In;exports.generateId=L;exports.getDeepContent=re;exports.getExistingSocket=st;exports.getLatestLibVersion=rt;exports.getMediaThumbnail=je;exports.getUsersMentions=lt;exports.getVideoDuration=Hn;exports.getVideoThumbnail=Kn;exports.getWaAudio=mt;exports.getWaDocument=gt;exports.getWaImage=dt;exports.getWaSticker=ft;exports.ignoreLint=h;exports.logColor=M;exports.modifyFn=Rn;exports.normalizeText=R;exports.numbersToJids=Nn;exports.pickKeysFromArray=N;exports.randomize=An;exports.registerAuthCreds=nt;exports.removeAuthCreds=it;exports.repairSessionKeys=oe;exports.shuffleString=Cn;exports.toBuffer=pe;exports.toJson=Oe;exports.toString=J;exports.useAuthState=Ye;
24
+ */Object.defineProperty(exports,"JetDB",{enumerable:true,get:function(){return jetdb.JetDB}});Object.defineProperty(exports,"createJetDB",{enumerable:true,get:function(){return jetdb.createJetDB}});exports.AudioProcessor=ae;exports.BaseMessagesType=Et;exports.ButtonInteractiveCallType=is;exports.ButtonInteractiveCopyType=rs;exports.ButtonInteractiveReplyType=ns;exports.ButtonInteractiveSingleSelectType=as;exports.ButtonInteractiveType=cs;exports.ButtonInteractiveUrlType=os;exports.ButtonSimpleType=ls;exports.ButtonType=xt;exports.CitationType=us;exports.Client=Pt;exports.ClientAuthPairingType=fs;exports.ClientAuthQRType=gs;exports.ClientBaseType=St;exports.ClientOptionsType=Tt;exports.DEVICE_ENUM_TYPES=Rs;exports.DocumentProcessor=le;exports.EventEnumType=ar;exports.FakeReplyType=ms;exports.ImageProcessor=z;exports.LimiterType=ps;exports.ListenerCallsType=oi;exports.ListenerConnectionType=Hr;exports.ListenerMessagesType=ei;exports.MESSAGE_ENUM_TYPES=Es;exports.MediaProcessor=X;exports.Plugins=Ie;exports.StickerMetadataType=ds;exports.StickerProcessor=ce;exports.StickerShapeType=ze;exports.VideoProcessor=R;exports.cleanJid=W;exports.cleanMediaObject=pt;exports.cleanupSocket=tt;exports.configureFFmpeg=ut;exports.definePlugins=Ii;exports.extractJids=Fe;exports.extractUrls=ct;exports.findGlobalWord=Z;exports.findNestedByKeys=Rn;exports.generateId=j;exports.getDeepContent=re;exports.getExistingSocket=st;exports.getLatestLibVersion=rt;exports.getMediaThumbnail=je;exports.getUsersMentions=lt;exports.getVideoDuration=Zn;exports.getVideoThumbnail=Hn;exports.getWaAudio=mt;exports.getWaDocument=yt;exports.getWaImage=dt;exports.getWaSticker=gt;exports.getWaVideo=ft;exports.ignoreLint=h;exports.logColor=v;exports.modifyFn=En;exports.normalizeText=E;exports.numbersToJids=Nn;exports.pickKeysFromArray=O;exports.randomize=In;exports.registerAuthCreds=nt;exports.removeAuthCreds=it;exports.repairSessionKeys=oe;exports.shuffleString=An;exports.toBuffer=pe;exports.toJson=Ne;exports.toString=H;exports.useAuthState=Ye;
package/dist/index.mjs CHANGED
@@ -1,16 +1,16 @@
1
- import zt,{BufferJSON,initAuthCreds,proto,makeCacheableSignalKeyStore,URL_REGEX,extractMessageContent,getContentType,generateWAMessageFromContent,generateMessageIDV2,isJidGroup,delay,DisconnectReason,jidNormalizedUser,getDevice,downloadMediaMessage}from'baileys';import _e,{stat,mkdir}from'fs/promises';import {createJetDB}from'jetdb';export{JetDB,createJetDB}from'jetdb';import {createSpinner}from'nanospinner';import Oe from'node-cache';import {EventEmitter}from'events';import Nt from'pino';import*as $ from'fs';import {promises}from'fs';import rt from'unorm';import ct,{cristal}from'gradient-string';import S from'lodash';import {fileTypeFromBuffer}from'file-type';import Q from'fluent-ffmpeg';import Kt from'node-webpmux';import {tmpdir}from'os';import*as je from'path';import je__default from'path';import ae from'sharp';import Zt from'figlet';import Yt from'qrcode-terminal';import {RateLimiterMemory}from'rate-limiter-flexible';import u,{z as z$1}from'zod';import Is from'stream';import {pathToFileURL}from'url';var Ne=class{data=new Map;set(e,t){let n=s=>s&&typeof s=="object"&&s.constructor===Object,o=this.data.get(e);n(t)&&n(o)?this.data.set(e,{...o,...t}):this.data.set(e,t);}get(e){return this.data.get(e)||{}}update(e,t){let n=this.get(e);this.set(e,t(n));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}db(e,t){let n=`.session/${e}/store/${t}.json`;return createJetDB(n,{cacheSize:5e3,flushMode:"debounce",debounceMs:300,compression:"deflate",serialization:"json",enableIndexing:true,hotThreshold:5})}spinner=createSpinner("",{color:"green"});logger=Nt({level:"silent",enabled:false});events=new EventEmitter;groupCache=new Oe({stdTTL:300,useClones:false});collectors=new Map},i=new Ne;var Xe=async a=>{i.spinner.start(" Initializing auth state...");let e=await stat(a).catch(()=>{});if(e){if(!e.isDirectory())throw i.spinner.error(` Failed to open credentials
2
- `),`found something that is not a directory at ${a}, either delete it or specify a different location`}else await mkdir(a,{recursive:true});let t=createJetDB(`${a}/auth/creds.json`,{BufferJSON:BufferJSON,cacheSize:100,flushMode:"sync",compression:"none",enableIndexing:false}),n=createJetDB(`${a}/auth/keys.json`,{BufferJSON:BufferJSON,size:512*1024,cacheSize:1e3,flushMode:"debounce",debounceMs:500,compression:"deflate",enableIndexing:false,hotThreshold:3});await Promise.all([t.read(),n.read()]);let o=await t.get("creds")||initAuthCreds();return i.spinner.success(" Generate auth successfully"),{state:{creds:o,keys:{get:async(s,r)=>{let c={};return await Promise.all(r.map(async l=>{let p=`${s}:${l}`,w=await n.get(p);s==="app-state-sync-key"&&w&&(w=proto.Message.AppStateSyncKeyData.fromObject(w)),c[l]=w;})),c},set:async s=>{let r=[],c=[];for(let l in s)for(let p in s[l]){let w=s[l][p],x=`${l}:${p}`;w?r.push({key:x,value:w}):c.push(x);}r.length&&await n.batchSet(r),c.length&&await n.batchDelete(c),await n.flush();}}},saveCreds:async()=>{await t.set("creds",o),await t.write();}}};var Ut=new Oe,et=(a,e)=>({logger:i.logger,printQRInTerminal:false,markOnlineOnConnect:a.options.autoOnline,syncFullHistory:a.options.syncFullHistory,msgRetryCounterCache:new Oe,mediaCache:new Oe({stdTTL:60}),cachedGroupMetadata:async t=>Ut.get(t),auth:{creds:e.creds,keys:makeCacheableSignalKeyStore(e.keys,i.logger)},shouldIgnoreJid:()=>false,patchMessageBeforeSending:t=>t,getMessage:async t=>t?.remoteJid?await a.db("messages").query(t.remoteJid).where("key.id","=",t.id).first():void 0});var st=a=>{if(a)try{a.ev?.removeAllListeners(),a.end?.(new Error("Cleanup"));}catch{}},re=async a=>{let e=`.session/${a}/auth/keys.json`;try{let t=await promises.readFile(e,"utf-8"),n=JSON.parse(t),o=["sender-key:","session:"],s={},r=!1;for(let[c,l]of Object.entries(n))o.some(w=>c.startsWith(w))?r=!0:s[c]=l;r&&(await promises.writeFile(e,JSON.stringify(s,null,2)),i.spinner.success(" Session keys repaired successfully"));}catch{i.spinner.warn(" Could not repair session keys, will re-negotiate");}},nt=()=>{let a=i.get("socket");return a?.end?a:null};var ot=async a=>{let e=nt();e&&st(e);let t=`.session/${a.options.session}`;console.info=()=>{};let{state:n,saveCreds:o}=await Xe(t),s=et(a,n),r=zt(s);r.ev.on("creds.update",o),i.set("socket",r);};var k=a=>a,it=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(a){throw a}},at=async a=>{try{let e=`.session/${a}/auth/creds.json`;await _e.unlink(e);}catch(e){throw i.spinner.error(`Failed to remove auth creds for session "${a}"!`),e}},E=(a="")=>{if(!a?.length)return null;let e=a.replace(/\u202E(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/\u202D(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/gu,"").replace(/[\u200B\u200C\u200D\uFEFF]/gu,"").replace(/[\u00AD\u034F\u115F\u1160\u17B4\u17B5\u180B-\u180E]/gu,"").replace(/[\u2060-\u2064\u206A-\u206F]/gu,"").replace(/[\u2800\uFFFC\uFFFD]/gu,"").replace(/[\uFE00-\uFE0F]/gu,"").split("").map(t=>rt.nfkd(t)).join("").replace(/[\u0300-\u036F]/gu,"").replace(/[\u1AB0-\u1AFF]/gu,"").replace(/[\u1DC0-\u1DFF]/gu,"").replace(/[\u20D0-\u20FF]/gu,"").replace(/[\uFE20-\uFE2F]/gu,"").replace(/[\p{Cc}]/gu,"").replace(/[\p{Cf}]/gu,"").replace(/[\p{Co}]/gu,"").replace(/[\p{Cn}]/gu,"").replace(/[\p{Cs}]/gu,"").replace(/[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/gu," ").replace(/[\u2028\u2029]/gu," ").replace(/[\t\r\n\f\v]/g," ").split("").map(t=>rt.nfkc(t)).join("").normalize("NFC").replace(/\s+/g," ").trim();return e.length?e:null};var v=(a,e="lime")=>Array.isArray(e)?ct(e)(a):ct([e,e])(a),Fe=a=>{try{return JSON.parse(a)}catch{return S.attempt(()=>JSON.parse(JSON.stringify(a)||"{}"))}},K=a=>{try{return JSON.stringify(a)}catch{let e=S.attempt(()=>JSON.stringify(Fe(a)||"{}"));return S.isError(e)?"{}":e}},An=(a="")=>S.shuffle(a).join(""),H=(a="",e="")=>a?S.includes(a.toLowerCase(),e.toLowerCase()):null,lt=(a="")=>a?S.castArray(a.match(URL_REGEX)||[]):[],In=a=>a[Math.floor(Math.random()*a.length)],O=(a,e)=>{let t=o=>!!(o==null||typeof o=="string"&&o.trim()===""||Array.isArray(o)&&o.length===0||typeof o=="object"&&Object.keys(o).length===0),n=(o,s)=>{if(!o||typeof o!="object")return;let r=o,c=s.split(".");for(let l of c){let p=l.match(/^(.+?)\[(\d+)\]$/);if(p){let[,w,x]=p;r=r?.[w]?.[parseInt(x,10)];}else r=r?.[l];if(t(r))return}return r};if(!(!Array.isArray(a)||a.length===0)&&!(!Array.isArray(e)||e.length===0)){for(let o of a)if(!(!o||typeof o!="object"))for(let s of e){let r=n(o,s);if(!t(r))return r}}},Rn=(a,e)=>{let t=S.castArray(e),n=(r,c)=>S.every(c,(l,p)=>r?.[p]===l),o=(r,c)=>S.some(c,(l,p)=>r?.[p]===l),s=r=>S.isArray(r)?S.find(r,s)??r:S.isObject(r)?S.find(t,p=>n(r,p))||S.find(t,p=>o(r,p))?r:S.find(S.values(r),s)??r:null;return s(a)},En=(a,e,t)=>new Proxy(a,{apply(n,o,s){e?.(s);let r=Reflect.apply(n,o,s);return t?t(r,s):r}});var j=a=>{let e;Array.isArray(a)?e=a.join("|"):typeof a=="string"?e=a:e=String(a);let t=2166136261,n=e.length;for(let o=0;o<n;o++)t^=e.charCodeAt(o),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},pt=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))e.add(t[1]);return S.toArray(e)},$e=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return S.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},On=a=>S.isEmpty(a)?[]:S.map([...a],e=>`${e}@s.whatsapp.net`),ut=a=>S.omit(a,["url","contextInfo","fileSha256","fileEncSha256","mediaKey","directPath","waveform","thumbnail","jpegThumbnail","thumbnailEncSha256","thumbnailSha256","thumbnailDirectPath","firstFrameSidecar","streamingSidecar","scansSidecar","callKey","message","key","midQualityFileSha256","historySyncNotification","appStateSyncKeyShare","appStateSyncKeyRequest","initialSecurityNotificationSettingSync","appStateFatalExceptionNotification","disappearingMode","peerDataOperationRequestMessage","peerDataOperationRequestResponseMessage","botFeedbackMessage"]),ie=a=>{if(!a)return {leaf:void 0,chain:[]};let e=extractMessageContent(a)||a,t=[];for(;e&&typeof e=="object";){let n=getContentType(e);if(!n)break;t.push(n);let o=e[n];if(!o||typeof o!="object"){e=o;break}e=o;}return {leaf:e,chain:t}},W=a=>Number(a?.split("@")[0]);var mt=async(a=false)=>{if(!a)try{let e=(await import('@ffmpeg-installer/ffmpeg')).default,t=(await import('@ffprobe-installer/ffprobe')).default;Q.setFfmpegPath(e.path),Q.setFfprobePath(t.path);}catch{}},h={OPUS:{CODEC:"libopus",CHANNELS:1,FREQUENCY:48e3,BITRATE:"48k",FORMAT:"ogg"},THUMBNAIL:{SIZE:100,QUALITY:50,TIMESTAMP:"10%"},STICKER:{SIZE:512,MAX_DURATION:10,FPS:15,DEFAULT_QUALITY:80,COMPRESSION_LEVEL:6},MIME:{AUDIO:"audio/",VIDEO:"video/",IMAGE:"image/",GIF:"image/gif",MP4:"video/mp4"}},M=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return je__default.join(tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>_e.unlink(t)));}static async safeReadFile(e){try{return await _e.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await _e.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},R=class{static async toBuffer(e){if(S.isBuffer(e))return e;if(S.isArrayBuffer(e))return Buffer.from(e);if(S.isString(e))return this.fromString(e);throw new Error("Invalid input type: expected string, Buffer, or ArrayBuffer")}static async fromString(e){return e.startsWith("http://")||e.startsWith("https://")?this.fromUrl(e):Buffer.from(e,"base64")}static async fromUrl(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);let n=await t.arrayBuffer();return Buffer.from(n)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},U=class{static validate(e,t){if(!e?.mime?.startsWith(t))throw new Error(`Invalid file type: expected ${t}*, got ${e?.mime||"unknown"}`)}static isMedia(e){return e.startsWith(h.MIME.IMAGE)||e.startsWith(h.MIME.VIDEO)}static isAnimated(e){return e===h.MIME.GIF||e.startsWith(h.MIME.VIDEO)}},Y=class{static async process(e){return new Promise((t,n)=>{let o=Q(e.input).output(e.output);for(let s=0;s<e.options.length;s++){let r=e.options[s];r.startsWith("-")&&s+1<e.options.length&&!e.options[s+1].startsWith("-")?(o.outputOptions(r,e.options[s+1]),s++):o.outputOptions(r);}o.on("end",async()=>{try{await e.onEnd(),t();}catch(s){n(s);}}).on("error",async s=>{try{await e.onError(s);}finally{n(s);}}).run();})}static async getDuration(e){return new Promise((t,n)=>{Q.ffprobe(e,(o,s)=>{if(o)return n(o);t(s.format.duration||0);});})}},ce=class{static async getWaAudio(e,t="opus"){let n=await R.toBuffer(e),o=await fileTypeFromBuffer(n);U.validate(o,h.MIME.AUDIO);let s=M.createTempPath("audio_in","wav"),r=t==="opus"?"ogg":"mp3",c=M.createTempPath("audio_out",r);await M.safeWriteFile(s,n);let l;try{let p=t==="opus"?["-vn","-c:a","libopus","-b:a","48k","-ac","1","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","opus"]:["-vn","-c:a","libmp3lame","-b:a","128k","-ac","2","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","mp3"];return await Y.process({input:s,output:c,options:p,onEnd:async()=>{l=await M.safeReadFile(c);},onError:async()=>{await M.cleanup([s,c]);}}),await M.cleanup([s,c]),l}catch(p){throw await M.cleanup([s,c]),new Error(`${t.toUpperCase()} conversion failed: ${p.message}`)}}},D=class{static async getThumbnail(e){let t=await R.toBuffer(e),n=await fileTypeFromBuffer(t);U.validate(n,h.MIME.VIDEO);let o=M.createTempPath("video","mp4"),s=M.createTempPath("thumb","jpg");await M.safeWriteFile(o,t);let r;try{return await new Promise((c,l)=>{Q(o).screenshots({timestamps:[h.THUMBNAIL.TIMESTAMP],filename:je__default.basename(s),folder:je__default.dirname(s),size:`${h.THUMBNAIL.SIZE}x${h.THUMBNAIL.SIZE}`,quality:h.THUMBNAIL.QUALITY}).on("end",async()=>{try{r=(await M.safeReadFile(s)).toString("base64"),c();}catch(p){l(p);}}).on("error",l);}),await M.cleanup([o,s]),r}catch(c){throw await M.cleanup([o,s]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return Y.getDuration(e)}},z=class{static async getThumbnail(e){return (await((await fileTypeFromBuffer(e)).mime===h.MIME.GIF?ae(e,{animated:false}):ae(e)).resize(h.THUMBNAIL.SIZE,h.THUMBNAIL.SIZE,{fit:"cover"}).jpeg({quality:h.THUMBNAIL.QUALITY}).toBuffer()).toString("base64")}static async resizeForSticker(e,t,n="default"){let o=ae(e).resize(h.STICKER.SIZE,h.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}});if(n!=="default"){let s=h.STICKER.SIZE,r;switch(n){case "rounded":r=`<svg width="${s}" height="${s}"><rect x="0" y="0" width="${s}" height="${s}" rx="${s/10}" ry="${s/10}" fill="white"/></svg>`;break;case "circle":r=`<svg width="${s}" height="${s}"><circle cx="${s/2}" cy="${s/2}" r="${s/2}" fill="white"/></svg>`;break;case "oval":r=`<svg width="${s}" height="${s}"><ellipse cx="${s/2}" cy="${s/2}" rx="${s/2}" ry="${s/3}" fill="white"/></svg>`;break;default:r="";}r&&(o=o.composite([{input:Buffer.from(r),blend:"dest-in"}]));}return o.webp({quality:t}).toBuffer()}static async getWaImage(e){let t=await R.toBuffer(e),n=await fileTypeFromBuffer(t);if(!n||!n.mime.startsWith(h.MIME.IMAGE))throw new Error("Invalid image type");return n.mime==="image/webp"?await ae(t).jpeg().toBuffer():t}},X=class{static async getThumbnail(e){let t=await R.toBuffer(e),n=await fileTypeFromBuffer(t);if(!n||!U.isMedia(n.mime))throw new Error("Invalid media type: expected image or video");return n.mime.startsWith(h.MIME.VIDEO)?D.getThumbnail(e):z.getThumbnail(t)}},le=class{static createExifMetadata(e){let t={"sticker-pack-id":j(Date.now().toString()),"sticker-pack-name":e?.packageName||"Zaileys Library","sticker-pack-publisher":e?.authorName||"https://github.com/zeative/zaileys",emojis:["\u{1F913}"],"android-app-store-link":"https://play.google.com/store/apps/details?id=com.marsvard.stickermakerforwhatsapp","ios-app-store-link":"https://itunes.apple.com/app/sticker-maker-studio/id1443326857"},n=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),o=Buffer.from(JSON.stringify(t),"utf8"),s=Buffer.concat([n,o]);return s.writeUIntLE(o.length,14,4),s}static async processAnimated(e,t,n){let o=this.getExtension(t),s=M.createTempPath("sticker_in",o),r=M.createTempPath("sticker_out","webp");await M.safeWriteFile(s,e);let c=h.STICKER.MAX_DURATION;try{let x=await D.getDuration(s);c=k(Math.min(x,h.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",h.STICKER.MAX_DURATION);}let l=`scale=${h.STICKER.SIZE}:${h.STICKER.SIZE}:force_original_aspect_ratio=increase,crop=${h.STICKER.SIZE}:${h.STICKER.SIZE},fps=${h.STICKER.FPS},format=rgba`,p=Math.max(1,Math.min(100,100-n)),w;try{return await Y.process({input:s,output:r,options:["-vcodec libwebp",`-vf ${l}`,`-q:v ${p}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${h.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{w=await M.safeReadFile(r);},onError:async()=>{await M.cleanup([s,r]);}}),await M.cleanup([s,r]),w}catch(x){throw await M.cleanup([s,r]),new Error(`Animated sticker processing failed: ${x.message}`)}}static getExtension(e){return e===h.MIME.GIF?"gif":e.startsWith(h.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let n=await R.toBuffer(e),o=await fileTypeFromBuffer(n);if(!o)throw new Error("Unable to detect file type");let s=t?.quality||h.STICKER.DEFAULT_QUALITY,r=U.isAnimated(o.mime),c=t?.shape||"default",l=r?await this.processAnimated(n,o.mime,s):await z.resizeForSticker(n,s,c),p=this.createExifMetadata(t),w=new Kt.Image;await w.load(l),w.exif=p;let x=await w.save(null);return Buffer.isBuffer(x)?x:Buffer.from(x)}catch(n){throw new Error(`Sticker creation failed: ${n.message||n}`)}}},pe=class{static async create(e){try{let t=await R.toBuffer(e),n=await fileTypeFromBuffer(t);if(!n)throw new Error("Unable to detect file type");return {document:t,mimetype:n.mime,fileName:j(Date.now().toString()),jpegThumbnail:await X.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},ue=R.toBuffer.bind(R),dt=ce.getWaAudio.bind(ce),ft=z.getWaImage.bind(z),Hn=D.getThumbnail.bind(D),Zn=D.getDuration.bind(D),Ue=X.getThumbnail.bind(X),gt=le.create.bind(le),yt=pe.create.bind(pe);var me=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=i.get("socket");e.ev.on("call",async t=>{for(let n of t){let o=await this.parse(n);o&&(await this.client.middleware.run({calls:o}),await this.client.plugins.execute(this.client,{messages:o}),i.events.emit("calls",o),this.client.options?.autoRejectCall&&await e.rejectCall(o.callId,o.callerId));}});}async parse(e){let t=i.get("socket"),n={};return n.callId=e.id,n.callerId=jidNormalizedUser(e.from),n.callerName=await this.client.getRoomName(n.callerId),n.roomId=jidNormalizedUser(e.chatId),n.roomName=E(t?.user?.name||t?.user?.verifiedName),n.date=e.date,n.offline=e.offline,n.status=e.status,n.isVideo=!!e.isVideo,n.isGroup=!!e.isGroup,this.client.logs.call(n),n}};var kt=a=>{Yt.generate(a,{small:true},e=>{console.log(e);});},wt=async()=>{console.clear(),i.spinner.start(" Checking for updates...");let a="2.1.5",e="zaadevofc",t=await it(),n=a===t;i.spinner.stop();let o="Zaileys",s=`
1
+ import Vt,{BufferJSON,initAuthCreds,proto,makeCacheableSignalKeyStore,URL_REGEX,extractMessageContent,getContentType,generateWAMessageFromContent,generateMessageIDV2,isJidGroup,delay,DisconnectReason,jidNormalizedUser,getDevice,downloadMediaMessage}from'baileys';import _e,{stat,mkdir}from'fs/promises';import {createJetDB}from'jetdb';export{JetDB,createJetDB}from'jetdb';import {createSpinner}from'nanospinner';import Ne from'node-cache';import {EventEmitter}from'events';import Nt from'pino';import*as $ from'fs';import {promises}from'fs';import rt from'unorm';import ct,{cristal}from'gradient-string';import S from'lodash';import {fileTypeFromBuffer}from'file-type';import X from'fluent-ffmpeg';import Ht from'node-webpmux';import {tmpdir}from'os';import*as je from'path';import je__default from'path';import ae from'sharp';import Qt from'figlet';import Xt from'qrcode-terminal';import {RateLimiterMemory}from'rate-limiter-flexible';import u,{z as z$1}from'zod';import Rs from'stream';import {pathToFileURL}from'url';var Oe=class{data=new Map;set(e,t){let n=s=>s&&typeof s=="object"&&s.constructor===Object,o=this.data.get(e);n(t)&&n(o)?this.data.set(e,{...o,...t}):this.data.set(e,t);}get(e){return this.data.get(e)||{}}update(e,t){let n=this.get(e);this.set(e,t(n));}delete(e){this.data.delete(e);}has(e){return this.data.has(e)}db(e,t){let n=`.session/${e}/store/${t}.json`;return createJetDB(n,{cacheSize:5e3,flushMode:"debounce",debounceMs:300,compression:"deflate",serialization:"json",enableIndexing:true,hotThreshold:5})}spinner=createSpinner("",{color:"green"});logger=Nt({level:"silent",enabled:false});events=new EventEmitter;groupCache=new Ne({stdTTL:300,useClones:false});collectors=new Map},i=new Oe;var Xe=async a=>{i.spinner.start(" Initializing auth state...");let e=await stat(a).catch(()=>{});if(e){if(!e.isDirectory())throw i.spinner.error(` Failed to open credentials
2
+ `),`found something that is not a directory at ${a}, either delete it or specify a different location`}else await mkdir(a,{recursive:true});let t=createJetDB(`${a}/auth/creds.json`,{BufferJSON:BufferJSON,cacheSize:100,flushMode:"sync",compression:"none",enableIndexing:false}),n=createJetDB(`${a}/auth/keys.json`,{BufferJSON:BufferJSON,size:512*1024,cacheSize:1e3,flushMode:"debounce",debounceMs:500,compression:"deflate",enableIndexing:false,hotThreshold:3});await Promise.all([t.read(),n.read()]);let o=await t.get("creds")||initAuthCreds();return i.spinner.success(" Generate auth successfully"),{state:{creds:o,keys:{get:async(s,r)=>{let c={};return await Promise.all(r.map(async l=>{let p=`${s}:${l}`,b=await n.get(p);s==="app-state-sync-key"&&b&&(b=proto.Message.AppStateSyncKeyData.fromObject(b)),c[l]=b;})),c},set:async s=>{let r=[],c=[];for(let l in s)for(let p in s[l]){let b=s[l][p],x=`${l}:${p}`;b?r.push({key:x,value:b}):c.push(x);}r.length&&await n.batchSet(r),c.length&&await n.batchDelete(c),await n.flush();}}},saveCreds:async()=>{await t.set("creds",o),await t.write();}}};var zt=new Ne,et=(a,e)=>({logger:i.logger,printQRInTerminal:false,markOnlineOnConnect:a.options.autoOnline,syncFullHistory:a.options.syncFullHistory,msgRetryCounterCache:new Ne,mediaCache:new Ne({stdTTL:60}),cachedGroupMetadata:async t=>zt.get(t),auth:{creds:e.creds,keys:makeCacheableSignalKeyStore(e.keys,i.logger)},shouldIgnoreJid:()=>false,patchMessageBeforeSending:t=>t,getMessage:async t=>t?.remoteJid?await a.db("messages").query(t.remoteJid).where("key.id","=",t.id).first():void 0});var st=a=>{if(a)try{a.ev?.removeAllListeners(),a.end?.(new Error("Cleanup"));}catch{}},re=async a=>{let e=`.session/${a}/auth/keys.json`;try{let t=await promises.readFile(e,"utf-8"),n=JSON.parse(t),o=["sender-key:","session:"],s={},r=!1;for(let[c,l]of Object.entries(n))o.some(b=>c.startsWith(b))?r=!0:s[c]=l;r&&(await promises.writeFile(e,JSON.stringify(s,null,2)),i.spinner.success(" Session keys repaired successfully"));}catch{i.spinner.warn(" Could not repair session keys, will re-negotiate");}},nt=()=>{let a=i.get("socket");return a?.end?a:null};var ot=async a=>{let e=nt();e&&st(e);let t=`.session/${a.options.session}`;console.info=()=>{};let{state:n,saveCreds:o}=await Xe(t),s=et(a,n),r=Vt(s);r.ev.on("creds.update",o),i.set("socket",r);};var w=a=>a,it=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(a){throw a}},at=async a=>{try{let e=`.session/${a}/auth/creds.json`;await _e.unlink(e);}catch(e){throw i.spinner.error(`Failed to remove auth creds for session "${a}"!`),e}},P=(a="")=>{if(!a?.length)return null;let e=a.replace(/\u202E(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/\u202D(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/gu,"").replace(/[\u200B\u200C\u200D\uFEFF]/gu,"").replace(/[\u00AD\u034F\u115F\u1160\u17B4\u17B5\u180B-\u180E]/gu,"").replace(/[\u2060-\u2064\u206A-\u206F]/gu,"").replace(/[\u2800\uFFFC\uFFFD]/gu,"").replace(/[\uFE00-\uFE0F]/gu,"").split("").map(t=>rt.nfkd(t)).join("").replace(/[\u0300-\u036F]/gu,"").replace(/[\u1AB0-\u1AFF]/gu,"").replace(/[\u1DC0-\u1DFF]/gu,"").replace(/[\u20D0-\u20FF]/gu,"").replace(/[\uFE20-\uFE2F]/gu,"").replace(/[\p{Cc}]/gu,"").replace(/[\p{Cf}]/gu,"").replace(/[\p{Co}]/gu,"").replace(/[\p{Cn}]/gu,"").replace(/[\p{Cs}]/gu,"").replace(/[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/gu," ").replace(/[\u2028\u2029]/gu," ").replace(/[\t\r\n\f\v]/g," ").split("").map(t=>rt.nfkc(t)).join("").normalize("NFC").replace(/\s+/g," ").trim();return e.length?e:null};var M=(a,e="lime")=>Array.isArray(e)?ct(e)(a):ct([e,e])(a),Fe=a=>{try{return JSON.parse(a)}catch{return S.attempt(()=>JSON.parse(JSON.stringify(a)||"{}"))}},Z=a=>{try{return JSON.stringify(a)}catch{let e=S.attempt(()=>JSON.stringify(Fe(a)||"{}"));return S.isError(e)?"{}":e}},In=(a="")=>S.shuffle(a).join(""),Q=(a="",e="")=>a?S.includes(a.toLowerCase(),e.toLowerCase()):null,lt=(a="")=>a?S.castArray(a.match(URL_REGEX)||[]):[],Rn=a=>a[Math.floor(Math.random()*a.length)],N=(a,e)=>{let t=o=>!!(o==null||typeof o=="string"&&o.trim()===""||Array.isArray(o)&&o.length===0||typeof o=="object"&&Object.keys(o).length===0),n=(o,s)=>{if(!o||typeof o!="object")return;let r=o,c=s.split(".");for(let l of c){let p=l.match(/^(.+?)\[(\d+)\]$/);if(p){let[,b,x]=p;r=r?.[b]?.[parseInt(x,10)];}else r=r?.[l];if(t(r))return}return r};if(!(!Array.isArray(a)||a.length===0)&&!(!Array.isArray(e)||e.length===0)){for(let o of a)if(!(!o||typeof o!="object"))for(let s of e){let r=n(o,s);if(!t(r))return r}}},En=(a,e)=>{let t=S.castArray(e),n=(r,c)=>S.every(c,(l,p)=>r?.[p]===l),o=(r,c)=>S.some(c,(l,p)=>r?.[p]===l),s=r=>S.isArray(r)?S.find(r,s)??r:S.isObject(r)?S.find(t,p=>n(r,p))||S.find(t,p=>o(r,p))?r:S.find(S.values(r),s)??r:null;return s(a)},Pn=(a,e,t)=>new Proxy(a,{apply(n,o,s){e?.(s);let r=Reflect.apply(n,o,s);return t?t(r,s):r}});var U=a=>{let e;Array.isArray(a)?e=a.join("|"):typeof a=="string"?e=a:e=String(a);let t=2166136261,n=e.length;for(let o=0;o<n;o++)t^=e.charCodeAt(o),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},pt=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))e.add(t[1]);return S.toArray(e)},$e=(a="")=>{if(!a)return [];let e=new Set;for(let t of a.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return S.flatMap([...e],t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},Fn=a=>S.isEmpty(a)?[]:S.map([...a],e=>`${e}@s.whatsapp.net`),ut=a=>S.omit(a,["url","contextInfo","fileSha256","fileEncSha256","mediaKey","directPath","waveform","thumbnail","jpegThumbnail","thumbnailEncSha256","thumbnailSha256","thumbnailDirectPath","firstFrameSidecar","streamingSidecar","scansSidecar","callKey","message","key","midQualityFileSha256","historySyncNotification","appStateSyncKeyShare","appStateSyncKeyRequest","initialSecurityNotificationSettingSync","appStateFatalExceptionNotification","disappearingMode","peerDataOperationRequestMessage","peerDataOperationRequestResponseMessage","botFeedbackMessage"]),ie=a=>{if(!a)return {leaf:void 0,chain:[]};let e=extractMessageContent(a)||a,t=[];for(;e&&typeof e=="object";){let n=getContentType(e);if(!n)break;t.push(n);let o=e[n];if(!o||typeof o!="object"){e=o;break}e=o;}return {leaf:e,chain:t}},D=a=>Number(a?.split("@")[0]);var mt=async(a=false)=>{if(!a)try{let e=(await import('@ffmpeg-installer/ffmpeg')).default,t=(await import('@ffprobe-installer/ffprobe')).default;X.setFfmpegPath(e.path),X.setFfprobePath(t.path);}catch{}},h={OPUS:{CODEC:"libopus",CHANNELS:1,FREQUENCY:48e3,BITRATE:"48k",FORMAT:"ogg"},THUMBNAIL:{SIZE:100,QUALITY:50,TIMESTAMP:"10%"},STICKER:{SIZE:512,MAX_DURATION:10,FPS:15,DEFAULT_QUALITY:80,COMPRESSION_LEVEL:6},MIME:{AUDIO:"audio/",VIDEO:"video/",IMAGE:"image/",GIF:"image/gif",MP4:"video/mp4"}},k=class{static generateUniqueId(){return `${Date.now()}_${Math.random().toString(36).slice(2,11)}`}static createTempPath(e,t){return je__default.join(tmpdir(),`${e}_${this.generateUniqueId()}.${t}`)}static async cleanup(e){await Promise.allSettled(e.map(t=>_e.unlink(t)));}static async safeReadFile(e){try{return await _e.readFile(e)}catch{throw new Error(`Failed to read file: ${e}`)}}static async safeWriteFile(e,t){try{await _e.writeFile(e,t);}catch{throw new Error(`Failed to write file: ${e}`)}}},A=class{static async toBuffer(e){if(S.isBuffer(e))return e;if(S.isArrayBuffer(e))return Buffer.from(e);if(S.isString(e))return this.fromString(e);throw new Error("Invalid input type: expected string, Buffer, or ArrayBuffer")}static async fromString(e){return e.startsWith("http://")||e.startsWith("https://")?this.fromUrl(e):Buffer.from(e,"base64")}static async fromUrl(e){try{let t=await fetch(e);if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);let n=await t.arrayBuffer();return Buffer.from(n)}catch(t){throw new Error(`Failed to fetch URL: ${t.message}`)}}},F=class{static validate(e,t){if(!e?.mime?.startsWith(t))throw new Error(`Invalid file type: expected ${t}*, got ${e?.mime||"unknown"}`)}static isMedia(e){return e.startsWith(h.MIME.IMAGE)||e.startsWith(h.MIME.VIDEO)}static isAnimated(e){return e===h.MIME.GIF||e.startsWith(h.MIME.VIDEO)}},z=class{static async process(e){return new Promise((t,n)=>{let o=X(e.input).output(e.output);for(let s=0;s<e.options.length;s++){let r=e.options[s];r.startsWith("-")&&s+1<e.options.length&&!e.options[s+1].startsWith("-")?(o.outputOptions(r,e.options[s+1]),s++):o.outputOptions(r);}o.on("end",async()=>{try{await e.onEnd(),t();}catch(s){n(s);}}).on("error",async s=>{try{await e.onError(s);}finally{n(s);}}).run();})}static async getDuration(e){return new Promise((t,n)=>{X.ffprobe(e,(o,s)=>{if(o)return n(o);t(s.format.duration||0);});})}},ce=class{static async getWaAudio(e,t="opus"){let n=await A.toBuffer(e),o=await fileTypeFromBuffer(n);F.validate(o,h.MIME.AUDIO);let s=k.createTempPath("audio_in","wav"),r=t==="opus"?"ogg":"mp3",c=k.createTempPath("audio_out",r);await k.safeWriteFile(s,n);let l;try{let p=t==="opus"?["-vn","-c:a","libopus","-b:a","48k","-ac","1","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","opus"]:["-vn","-c:a","libmp3lame","-b:a","128k","-ac","2","-avoid_negative_ts","make_zero","-map_metadata","-1","-f","mp3"];return await z.process({input:s,output:c,options:p,onEnd:async()=>{l=await k.safeReadFile(c);},onError:async()=>{await k.cleanup([s,c]);}}),await k.cleanup([s,c]),l}catch(p){throw await k.cleanup([s,c]),new Error(`${t.toUpperCase()} conversion failed: ${p.message}`)}}},E=class{static async getThumbnail(e){let t=await A.toBuffer(e),n=await fileTypeFromBuffer(t);F.validate(n,h.MIME.VIDEO);let o=k.createTempPath("video","mp4"),s=k.createTempPath("thumb","jpg");await k.safeWriteFile(o,t);let r;try{return await new Promise((c,l)=>{X(o).screenshots({timestamps:[h.THUMBNAIL.TIMESTAMP],filename:je__default.basename(s),folder:je__default.dirname(s),size:`${h.THUMBNAIL.SIZE}x${h.THUMBNAIL.SIZE}`,quality:h.THUMBNAIL.QUALITY}).on("end",async()=>{try{r=(await k.safeReadFile(s)).toString("base64"),c();}catch(p){l(p);}}).on("error",l);}),await k.cleanup([o,s]),r}catch(c){throw await k.cleanup([o,s]),new Error(`Thumbnail generation failed: ${c.message}`)}}static async getDuration(e){return z.getDuration(e)}static async getWaVideo(e){let t=await A.toBuffer(e),n=await fileTypeFromBuffer(t);F.validate(n,h.MIME.VIDEO);let o=k.createTempPath("video_in","mp4"),s=k.createTempPath("video_out","mp4");await k.safeWriteFile(o,t);let r;try{let c=["-c:v","libx264","-preset","ultrafast","-crf","28","-c:a","aac","-b:a","128k","-movflags","+faststart","-pix_fmt","yuv420p","-f","mp4"];return await z.process({input:o,output:s,options:c,onEnd:async()=>{r=await k.safeReadFile(s);},onError:async()=>{await k.cleanup([o,s]);}}),await k.cleanup([o,s]),r}catch(c){throw await k.cleanup([o,s]),new Error(`Video re-encoding failed: ${c.message}`)}}},V=class{static async getThumbnail(e){return (await((await fileTypeFromBuffer(e)).mime===h.MIME.GIF?ae(e,{animated:false}):ae(e)).resize(h.THUMBNAIL.SIZE,h.THUMBNAIL.SIZE,{fit:"cover"}).jpeg({quality:h.THUMBNAIL.QUALITY}).toBuffer()).toString("base64")}static async resizeForSticker(e,t,n="default"){let o=ae(e).resize(h.STICKER.SIZE,h.STICKER.SIZE,{fit:"cover",background:{r:0,g:0,b:0,alpha:0}});if(n!=="default"){let s=h.STICKER.SIZE,r;switch(n){case "rounded":r=`<svg width="${s}" height="${s}"><rect x="0" y="0" width="${s}" height="${s}" rx="${s/10}" ry="${s/10}" fill="white"/></svg>`;break;case "circle":r=`<svg width="${s}" height="${s}"><circle cx="${s/2}" cy="${s/2}" r="${s/2}" fill="white"/></svg>`;break;case "oval":r=`<svg width="${s}" height="${s}"><ellipse cx="${s/2}" cy="${s/2}" rx="${s/2}" ry="${s/3}" fill="white"/></svg>`;break;default:r="";}r&&(o=o.composite([{input:Buffer.from(r),blend:"dest-in"}]));}return o.webp({quality:t}).toBuffer()}static async getWaImage(e){let t=await A.toBuffer(e),n=await fileTypeFromBuffer(t);if(!n||!n.mime.startsWith(h.MIME.IMAGE))throw new Error("Invalid image type");return n.mime==="image/webp"?await ae(t).jpeg().toBuffer():t}},ee=class{static async getThumbnail(e){let t=await A.toBuffer(e),n=await fileTypeFromBuffer(t);if(!n||!F.isMedia(n.mime))throw new Error("Invalid media type: expected image or video");return n.mime.startsWith(h.MIME.VIDEO)?E.getThumbnail(e):V.getThumbnail(t)}},le=class{static createExifMetadata(e){let t={"sticker-pack-id":U(Date.now().toString()),"sticker-pack-name":e?.packageName||"Zaileys Library","sticker-pack-publisher":e?.authorName||"https://github.com/zeative/zaileys",emojis:["\u{1F913}"],"android-app-store-link":"https://play.google.com/store/apps/details?id=com.marsvard.stickermakerforwhatsapp","ios-app-store-link":"https://itunes.apple.com/app/sticker-maker-studio/id1443326857"},n=Buffer.from([73,73,42,0,8,0,0,0,1,0,65,87,7,0,0,0,0,0,22,0,0,0]),o=Buffer.from(JSON.stringify(t),"utf8"),s=Buffer.concat([n,o]);return s.writeUIntLE(o.length,14,4),s}static async processAnimated(e,t,n){let o=this.getExtension(t),s=k.createTempPath("sticker_in",o),r=k.createTempPath("sticker_out","webp");await k.safeWriteFile(s,e);let c=h.STICKER.MAX_DURATION;try{let x=await E.getDuration(s);c=w(Math.min(x,h.STICKER.MAX_DURATION));}catch{console.warn("Using default duration:",h.STICKER.MAX_DURATION);}let l=`scale=${h.STICKER.SIZE}:${h.STICKER.SIZE}:force_original_aspect_ratio=increase,crop=${h.STICKER.SIZE}:${h.STICKER.SIZE},fps=${h.STICKER.FPS},format=rgba`,p=Math.max(1,Math.min(100,100-n)),b;try{return await z.process({input:s,output:r,options:["-vcodec libwebp",`-vf ${l}`,`-q:v ${p}`,"-loop 0","-preset default","-an","-vsync 0",`-t ${c}`,`-compression_level ${h.STICKER.COMPRESSION_LEVEL}`],onEnd:async()=>{b=await k.safeReadFile(r);},onError:async()=>{await k.cleanup([s,r]);}}),await k.cleanup([s,r]),b}catch(x){throw await k.cleanup([s,r]),new Error(`Animated sticker processing failed: ${x.message}`)}}static getExtension(e){return e===h.MIME.GIF?"gif":e.startsWith(h.MIME.VIDEO)?"mp4":"tmp"}static async create(e,t){try{let n=await A.toBuffer(e),o=await fileTypeFromBuffer(n);if(!o)throw new Error("Unable to detect file type");let s=t?.quality||h.STICKER.DEFAULT_QUALITY,r=F.isAnimated(o.mime),c=t?.shape||"default",l=r?await this.processAnimated(n,o.mime,s):await V.resizeForSticker(n,s,c),p=this.createExifMetadata(t),b=new Ht.Image;await b.load(l),b.exif=p;let x=await b.save(null);return Buffer.isBuffer(x)?x:Buffer.from(x)}catch(n){throw new Error(`Sticker creation failed: ${n.message||n}`)}}},pe=class{static async create(e){try{let t=await A.toBuffer(e),n=await fileTypeFromBuffer(t);if(!n)throw new Error("Unable to detect file type");return {document:t,mimetype:n.mime,fileName:U(Date.now().toString()),jpegThumbnail:await ee.getThumbnail(t)}}catch(t){throw new Error(`Document creation failed: ${t.message||t}`)}}},ue=A.toBuffer.bind(A),dt=ce.getWaAudio.bind(ce),ft=V.getWaImage.bind(V),gt=E.getWaVideo.bind(E),Zn=E.getThumbnail.bind(E),Qn=E.getDuration.bind(E),Ue=ee.getThumbnail.bind(ee),yt=le.create.bind(le),ht=pe.create.bind(pe);var me=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=i.get("socket");e.ev.on("call",async t=>{for(let n of t){let o=await this.parse(n);o&&(await this.client.middleware.run({calls:o}),await this.client.plugins.execute(this.client,{messages:o}),i.events.emit("calls",o),this.client.options?.autoRejectCall&&await e.rejectCall(o.callId,o.callerId));}});}async parse(e){let t=i.get("socket"),n={};return n.callId=e.id,n.callerId=jidNormalizedUser(e.from),n.callerName=await this.client.getRoomName(n.callerId),n.roomId=jidNormalizedUser(e.chatId),n.roomName=P(t?.user?.name||t?.user?.verifiedName),n.date=e.date,n.offline=e.offline,n.status=e.status,n.isVideo=!!e.isVideo,n.isGroup=!!e.isGroup,this.client.logs.call(n),n}};var kt=a=>{Xt.generate(a,{small:true},e=>{console.log(e);});},bt=async()=>{console.clear(),i.spinner.start(" Checking for updates...");let a="2.1.7",e="zaadevofc",t=await it(),n=a===t;i.spinner.stop();let o="Zaileys",s=`
3
3
  by ${e} \xB7 v${a}`,r=`${n?"Already using latest version!":`Update available! (v${t})`}
4
- `,c=n?"lime":"orange",l=await Zt.text(o),p=cristal(l);console.log(p),console.log(v(s,"dimgray")),console.log(v(r,c));};var ge=class{constructor(e){this.client=e;this.initialize();}async initialize(){i.spinner.start(" Initializing connection...");let e=i.get("socket"),t={},n=async()=>{t.status="reload",i.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},o=async()=>{await delay(3e3),i.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await delay(3e3),await at(this.client.options.session),await n();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){i.spinner.update(" Generating pairing code..."),await delay(3500);try{t.authTimeout=Date.now()+6e4;let s=new Date(t.authTimeout).toLocaleTimeString(),r=await e.requestPairingCode(this.client.options.phoneNumber.toString());i.spinner.warn(` Pairing expired at ${cristal(s)}`),i.spinner.warn(` Pairing code: ${r}`),t.code=r;}catch{await o();}}e.ev.on("connection.update",async s=>{let{connection:r,lastDisconnect:c,qr:l}=s;if(t.status=r||"connecting",t.authType=this.client.options.authType,i.spinner.update(" Connection status: "+cristal(t.status)),this.client.options.authType==="qr"&&l){t.authTimeout=Date.now()+6e4;let p=new Date(t.authTimeout).toLocaleTimeString();i.spinner.warn(" Please scan the QR code..."),i.spinner.warn(` Qr code expired at ${cristal(p)}`),kt(l),t.qr=l;return}if(r==="close"){let p=k(c?.error)?.output?.statusCode,w=c?.error?.message||"",x=typeof p=="number"&&p!==DisconnectReason.loggedOut,_=p===515||w.toLowerCase().includes("prekey");if(i.spinner.error(` [${p} - Closed] ${w}`),_){i.spinner.warn(" Session key mismatch detected, attempting repair..."),await re(this.client.options.session),await delay(1e3),await n();return}if(p===401||p===405){i.spinner.warn(" Session may be used by another device/instance."),i.spinner.warn(" If you want to connect here, close the other connection first."),i.spinner.warn(` Or use a different session name in your Client options.
5
- `);return}if(p===500){i.spinner.error(" Server error occurred, attempting reconnect..."),await n();return}x&&await n();}if(r==="open")if(e.user?.id){let p=jidNormalizedUser(e.user.id).split("@")[0],w=e.user.name||e.user.verifiedName;i.spinner.success(` Connected as ${cristal(w||p)}`);}else i.spinner.success(" Connected!");i.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:s})=>{t.status="syncing",t.syncProgress=s,i.spinner.start(" Syncing messages history..."),s&&i.spinner.update(` Syncing messages history ${s+"%"}`),s==100&&(i.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),i.events.emit("connection",t);});}};var bt={text:"text",conversation:"text",imageMessage:"image",contactMessage:"contact",locationMessage:"location",documentMessage:"document",audioMessage:"audio",videoMessage:"video",protocolMessage:"protocol",contactsArrayMessage:"contacts",highlyStructuredMessage:"highlyStructured",sendPaymentMessage:"sendPayment",liveLocationMessage:"location",requestPaymentMessage:"requestPayment",groupStatusMentionMessage:"groupStatusMention",statusMentionMessage:"statusMention",albumMessage:"album",declinePaymentRequestMessage:"declinePaymentRequest",cancelPaymentRequestMessage:"cancelPaymentRequest",templateMessage:"template",stickerMessage:"sticker",groupInviteMessage:"groupInvite",templateButtonReplyMessage:"buttons",productMessage:"product",deviceSentMessage:"deviceSent",listMessage:"lists",viewOnceMessage:"viewOnce",orderMessage:"order",listResponseMessage:"lists",ephemeralMessage:"ephemeral",invoiceMessage:"invoice",buttonsMessage:"buttons",buttonsResponseMessage:"buttons",paymentInviteMessage:"paymentInvite",interactiveMessage:"interactive",reactionMessage:"reaction",stickerSyncRmrMessage:"sticker",questionMessage:"question",nativeFlowResponseMessage:"lists",interactiveResponseMessage:"interactiveResponse",pollCreationMessage:"pollCreation",pollCreationMessageKey:"pollUpdate",pollUpdateMessage:"pollUpdate",keepInChatMessage:"keepInChat",documentWithCaptionMessage:"document",requestPhoneNumberMessage:"requestPhoneNumber",viewOnceMessageV2:"viewOnce",encReactionMessage:"reaction",editedMessage:"text",viewOnceMessageV2Extension:"viewOnce",pollCreationMessageV2:"pollCreation",scheduledCallCreationMessage:"scheduledCallCreation",groupMentionedMessage:"groupMentioned",pinInChatMessage:"pinInChat",pollCreationMessageV3:"pollCreation",scheduledCallEditMessage:"scheduledCallEdit",ptvMessage:"ptv",botInvokeMessage:"botInvoke",callLogMesssage:"callLog",encCommentMessage:"encComment",bcallMessage:"bcall",lottieStickerMessage:"lottieSticker",eventMessage:"event",commentMessage:"comment",newsletterAdminInviteMessage:"text",extendedTextMessageWithParentKey:"text",extendedTextMessage:"text",placeholderMessage:"placeholder",encEventUpdateMessage:"encEventUpdate"},ze={whatsapp:"0@s.whatsapp.net",meta:"13135550002@s.whatsapp.net",chatgpt:"18002428478@s.whatsapp.net",copilot:"18772241042@s.whatsapp.net",instagram:"447723442971@s.whatsapp.net",tiktok:"6285574670498@s.whatsapp.net"};var ye=class{constructor(e){this.client=e;this.limiter=new RateLimiterMemory({points:this.client.options.limiter?.maxMessages,duration:this.client.options.limiter?.durationMs/1e3});}limiter;async isSpam(e){try{return await this.limiter.consume(e),!1}catch{return true}}};var he=class{constructor(e){this.client=e;this.limiter=new ye(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=i.get("socket");if(!e?.ev){console.warn("\u26A0\uFE0F [Messages] Socket or socket.ev is not available during initialization");return}e.ev.on("messages.upsert",async({messages:t,type:n})=>{try{if(n!=="notify"&&n!=="append")return;for(let o of t)try{let s=await this.parse(o);s&&(this.client.collector.push(s)||(await this.client.middleware.run({messages:s}),await this.client.plugins.execute(this.client,{messages:s}),i.set("message",s),i.events.emit("messages",s)),this.client.options.autoRead&&await e.readMessages([s.message().key]));}catch(s){console.error(`\u274C [Messages] Error processing message ${o.key?.id}:`,s);}}catch(o){console.error("\u274C [Messages] Critical error in upsert listener:",o);}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage)return;let n=e,o=i.get("socket"),s={},r=ie(e.message),c=r.chain.at(-1),l=r.leaf;if(l?.message&&(r=ie(l.message),c=r.chain.at(-1),l=r.leaf),s.uniqueId=null,s.channelId=null,s.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,s.chatType=bt[c],!s.chatType)return;s.receiverId=jidNormalizedUser(o?.user?.id||""),s.receiverName=E(o?.user?.name||o?.user?.verifiedName),s.roomId=jidNormalizedUser(e?.key?.remoteJid);let p=l?.type===0,w=l?.type===1,x=l?.type===2,_=s.roomId?.includes("@newsletter"),Pe=!!e?.message?.questionMessage,q=e?.key?.fromMe||false;if(q&&this.client.options.ignoreMe&&t!=="replied")return;let We=l?.key?.id;if(p||w||x){let C=await this.client.db("messages").query(s.roomId).where("key.id","=",We).first();if(!C)return;e=C,r=ie(e.message),c=r.chain.at(-1),l=r.leaf;}if(s.roomName=await this.client.getRoomName(s.roomId),s.senderLid=jidNormalizedUser(e?.key?.participant||e?.key?.remoteJid)||null,s.senderId=jidNormalizedUser(e?.key?.participantAlt||e?.key?.remoteJidAlt)||null,s.senderName=E(e?.pushName||e?.verifiedBizName),s.senderDevice=getDevice(s.chatId||""),s.channelId=j([s.roomId,s.senderId]),s.uniqueId=j([s.channelId,s.chatId]),s.timestamp=Number(e?.messageTimestamp)*1e3,_){let C=await o.newsletterMetadata("jid",s.roomId);s.roomName=k(C.thread_metadata.name)?.text,s.senderId=null,s.senderLid=null;}if(q&&(s.senderLid=jidNormalizedUser(o.user.lid),s.senderId=s.receiverId,s.senderName=s.receiverName),s.text=l?.text||l?.caption||l?.name||l?.displayName||l?.conversation||l?.contentText||l?.selectedDisplayText||l||null,l?.name=="menu_options"&&(s.text=Fe(l?.paramsJson)?.id),s.text=E(s.text),s.mentions=pt(s.text),s.links=lt(s.text||""),s.isBot=s.chatId.startsWith("BAE5")||s.chatId.startsWith("3EB0")||s.chatId.startsWith("Z4D3FC"),s.isFromMe=q,s.isPrefix=s.text?.startsWith(this.client.options?.prefix)||false,s.isTagMe=s.mentions?.includes(s.receiverId.split("@")[0]),s.isStatusMention=!!e?.message?.statusMentionMessage,s.isGroupStatusMention=!!e?.message?.groupStatusMentionMessage,s.isHideTags=false,S.isEmpty(s.text)&&l?.contextInfo?.mentionedJid?.length&&(s.isHideTags=true),s.isSpam=await this.limiter.isSpam(s.channelId),s.isPrefix&&(s.text=s.text.replace(new RegExp(`^${this.client.options?.prefix}`),"")),s.isGroup=s.roomId?.includes("@g.us"),s.isNewsletter=_,s.isQuestion=Pe,s.isStory=s.roomId?.includes("@broadcast"),!s.isGroup&&!s.roomName&&(s.roomName=s.senderName),s.isViewOnce=false,s.isEdited=!!H(K(r),"editedMessage"),s.isDeleted=p,s.isPinned=w,s.isUnPinned=x,s.isBroadcast=!!e?.broadcast,s.isEphemeral=!!H(K(l?.contextInfo),"ephemeralSettingTimestamp"),s.isForwarded=!!H(K(l?.contextInfo),"forwardingScore"),s.citation=null,this.client.options.citation){s.citation=s.citation||{};let C=this.client.options.citation;for(let P of Object.keys(C)){let De=C[P];s.citation[P]=async()=>{let Be=await De(),oe=[W(s.roomId),W(s.senderLid),W(s.senderId)];return !!S.intersection(oe,Be).length};}}s.chatType!=="text"&&(s.media={...ut(l),buffer:()=>downloadMediaMessage(e,"buffer",{}),stream:()=>downloadMediaMessage(e,"stream",{})}),s.isStatusMention&&(s.chatType="statusMention"),s.isGroupStatusMention&&(s.chatType="groupStatusMention"),s.message=()=>n,s.replied=null;let L=l?.contextInfo?.quotedMessage,V=H(K(L),"viewOnce"),G=l?.contextInfo?.stanzaId,ne=l?.contextInfo?.participant;if(L&&this.maxReplies){this.maxReplies--;let C=await this.client.db("messages").query(V?ne:s.roomId).where("key.id","=",G).first(),P;V?P={...C,message:L}:P=C,s.replied=await this.parse(P,"replied"),s.replied&&(s.replied.isViewOnce=true),this.maxReplies=3;}return t!="replied"&&this.client.logs.message(s),s}};var ke=class{constructor(e){this.client=e;this.connection=new ge(e),this.messages=new he(e),this.calls=new me(e),this.initialize();}connection;messages;calls;async initialize(){let e=i.get("socket");e.ev.on("groups.update",async([t])=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e.ev.on("group-participants.update",async t=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e?.ev.on("messaging-history.set",async t=>{let{chats:n,contacts:o,messages:s}=t;for(let r of n)await this.client.db("chats").set(r.id,r);for(let r of o)await this.client.db("contacts").set(r.id,r);for(let r of s){if(r?.category==="peer"||!r.message&&!r.key.isViewOnce&&(!r.message?.groupStatusMentionMessage||!r.message?.statusMentionMessage)||r.message?.protocolMessage&&!r.message?.protocolMessage?.memberLabel)continue;let c=Number(r.messageTimestamp)*1e3;Date.now()-c>1440*60*1e3||await this.client.db("messages").upsert(r.key.remoteJid,r,"key.id");}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let n of t){if(n?.category==="peer"||!n.message&&!n.key.isViewOnce||n.message?.protocolMessage&&!n.message?.protocolMessage?.memberLabel)continue;let o=Number(n.messageTimestamp)*1e3;if(Date.now()-o>1440*60*1e3)continue;O([n?.key],["participant","remoteJid"])||null;await this.client.db("messages").upsert(n.key.remoteJid,n,"key.id");}}),e?.ev.on("chats.upsert",async t=>{for(let n of t)await this.client.db("chats").upsert(n.id,n,"id");}),e?.ev.on("contacts.upsert",async t=>{for(let n of t)await this.client.db("contacts").upsert(n.id,n,"id");});}};var te=(a,e)=>{let t=a.safeParse(e);if(t.success)return t.data;throw console.error(t.error),"Invalid data"};var ns=u.object({type:u.literal("quick_reply"),text:u.string()}),os=u.object({type:u.literal("cta_url"),url:u.url(),text:u.string()}),rs=u.object({type:u.literal("cta_copy"),copy:u.string(),text:u.string()}),is=u.object({type:u.literal("cta_call"),text:u.string(),phoneNumber:u.string()}),as=u.object({type:u.literal("single_select"),text:u.string(),section:u.object({title:u.string(),highlight_label:u.string().optional(),rows:u.object({id:u.string(),title:u.string(),header:u.string().optional(),description:u.string().optional()}).array()}).array()}),cs=u.object({type:u.literal("interactive"),footer:u.string().optional(),data:u.union([ns,os,rs,is,as]).array()}),ls=u.object({type:u.literal("simple"),footer:u.string().optional(),data:u.object({id:u.string(),text:u.string()}).array()}),xt=u.union([ls,cs]);var ps=z$1.object({maxMessages:z$1.number().default(20),durationMs:z$1.number().default(1e4)}).optional(),us=z$1.record(z$1.string(),z$1.function({output:z$1.promise(z$1.array(z$1.number()))})).optional(),ms=z$1.object({provider:z$1.enum(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]).or(z$1.number())}).optional(),qe=z$1.enum(["default","rounded","circle","oval"]).default("default"),ds=z$1.object({packageName:z$1.string().optional(),authorName:z$1.string().optional(),quality:z$1.number().optional(),shape:qe.optional()}).optional(),St=z$1.object({session:z$1.string().default("zaileys").optional(),prefix:z$1.string().optional(),ignoreMe:z$1.boolean().default(true).optional(),showLogs:z$1.boolean().default(true).optional(),syncFullHistory:z$1.boolean().default(true).optional(),disableFFmpeg:z$1.boolean().default(false).optional(),cleanupDays:z$1.number().default(7).optional(),autoMarkAI:z$1.boolean().default(true).optional(),autoMentions:z$1.boolean().default(true).optional(),autoOnline:z$1.boolean().default(true).optional(),autoRead:z$1.boolean().default(true).optional(),autoPresence:z$1.boolean().default(true).optional(),autoRejectCall:z$1.boolean().default(true).optional(),limiter:ps,citation:us,fakeReply:ms,sticker:ds}),fs=z$1.object({authType:z$1.literal("pairing"),phoneNumber:z$1.number()}),gs=z$1.object({authType:z$1.literal("qr")}),Tt=z$1.union([fs.extend(St.shape),gs.extend(St.shape)]),ar=z$1.enum(["connection","messages","calls"]);var se=u.url().or(u.base64()).or(u.instanceof(Buffer)),Ct=u.object({text:u.string()}).passthrough(),ys=u.object({image:se,caption:u.string().optional()}).passthrough(),hs=u.object({audio:se,caption:u.string().optional(),ptt:u.boolean().optional()}).passthrough(),ks=u.object({video:se,caption:u.string().optional(),ptv:u.boolean().optional()}).passthrough(),ws=u.object({sticker:se,shape:qe.optional(),caption:u.string().optional()}).passthrough(),bs=u.object({document:se,caption:u.string().optional(),fileName:u.string().optional()}).passthrough(),Ms=u.object({location:u.object({latitude:u.number(),longitude:u.number(),url:u.url().optional(),title:u.string().optional(),footer:u.string().optional()}).optional()}).passthrough(),vs=u.object({contacts:u.object({title:u.string().optional(),contacts:u.object({fullname:u.string(),phoneNumber:u.number(),organization:u.string().optional()}).array()})}).passthrough(),xs=u.object({poll:u.object({name:u.string(),answers:u.string().array(),isMultiple:u.boolean().default(false).optional()})}),At=u.object({replied:u.custom().optional(),isForwardedMany:u.boolean().optional(),isViewOnce:u.boolean().optional(),banner:u.custom().optional(),buttons:xt.optional()});u.enum(["forward","button","edit","delete"]);var Ss=u.union([Ct,ys,hs,ks,ws,bs,Ms,vs,xs]),It=u.string().or(u.intersection(Ss,At.omit({buttons:true}))),Rt=u.intersection(Ct,At.omit({banner:true}));var we=class{toNativeSimple(e){return e.map(({id:t,text:n})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:n,id:t})}))}toNativeInteractive(e){let t={quick_reply:n=>({display_text:n.text,id:n.id}),cta_url:n=>({display_text:n.text,url:n.url,merchant_url:n.url}),cta_copy:n=>({display_text:n.text,id:n.id,copy_code:n.copy}),cta_call:n=>({display_text:n.text,phone_number:n.phoneNumber}),single_select:n=>({title:n.text,sections:n.section})};return e.map(n=>({name:n.type,buttonParamsJson:JSON.stringify(t[n.type](n))}))}build(e){let t=k(e).buttons,n=t?.data||[],s=t?.type=="simple"?this.toNativeSimple(n):this.toNativeInteractive(n);return {body:{text:k(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:s}}}async send(e,t,n){let o=i.get("socket"),s=o.authState?.creds?.me?.id||o.user?.id,r=this.build(t),c=generateWAMessageFromContent(e,{interactiveMessage:r},{userJid:s,messageId:generateMessageIDV2(s),...n});return await o.relayMessage(e,c.message,{messageId:c.key.id,...n,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),o.config?.emitOwnEvents&&!isJidGroup(e)&&process.nextTick(()=>o.upsertMessage?.(c,"append")),c}};var be=class{constructor(e){this.client=e;}async signal(e,t,n,o){n!="delete"&&(n=="button"?t=te(Rt,t):t=te(It,t));let s=i.get("socket"),r={},c={},l=S.isString(t),p=this.client.options?.fakeReply?.provider,w=this.client.options?.autoMentions,x=this.client.options?.autoPresence,_=S.has(t,"replied"),Pe=S.has(t,"banner"),q=S.has(t,"isViewOnce"),We=n=="button",L=S.has(t,"image"),V=S.has(t,"video"),G=S.has(t,"audio"),ne=S.has(t,"sticker"),C=S.has(t,"document"),P=S.has(t,"location"),De=S.has(t,"contacts"),Be=S.has(t,"poll"),oe=L||V||G||ne||C,J=l?t:O([t],["text","caption"]);if(x&&(G?await s.sendPresenceUpdate("recording",e):await s.sendPresenceUpdate("composing",e)),w&&(r={...r,mentions:$e(J),contextInfo:{mentionedJid:$e(J)}}),_&&(c.quoted=k(t).replied,p&&(c.quoted.key.remoteJid=ze[p],c.quoted.key.participant=ze[p])),Pe&&(r={...r,contextInfo:{externalAdReply:k(t).banner}},r.contextInfo.externalAdReply.mediaType=1),q&&(r={...r,viewOnce:k(t)?.isViewOnce}),J&&(r={...r,text:J,caption:J},oe&&delete k(r).text),oe){let b=O([t],["image","video","audio","sticker","document"]),N=S.isString(b)?{url:b}:b;if(L&&(r={...r,image:await ft(b),jpegThumbnail:await Ue(b)}),V){let I=k(t)?.ptv;r={...r,video:N,ptv:I,jpegThumbnail:await Ue(b)};}if(G){let I=k(t)?.ptt;r={...r,audio:await dt(b),ptt:I,mimetype:I?"audio/ogg; codecs=opus":"audio/mpeg"};}if(ne){let I=k(t)?.shape;r={...r,sticker:await gt(b,{...this.client.options?.sticker,shape:I})};}if(C){let I=await yt(b);r={...r,fileName:k(t).fileName,...I};}}if(P){let b=k(t).location;r={...r,location:{degreesLatitude:b.latitude,degreesLongitude:b.longitude,url:b.url,address:b.footer,name:b.title}};}if(De){let b=k(t)?.contacts,Ze=b?.contacts.map(N=>{let I=["BEGIN:VCARD","VERSION:3.0",`FN:${N.fullname}`,`ORG:${N.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${N.phoneNumber}:${N.phoneNumber}`,"END:VCARD"].join(`
6
- `);return {displayName:N.fullname,vcard:I}});r={...r,contacts:{displayName:b?.title,contacts:Ze}};}if(Be){let b=k(t)?.poll;r={...r,poll:{name:b.name,values:b.answers,selectableCount:b.isMultiple?1:0,toAnnouncementGroup:true}};}return n=="forward"&&(r={...r,contextInfo:{...k(r).contextInfo,isForwarded:true,forwardingScore:k(t).isForwardedMany?9999:1}}),n=="edit"&&(r={...r,edit:o?.key},await s.sendPresenceUpdate("paused",e)),n=="delete"&&(r={...r,delete:o?.key},await s.sendPresenceUpdate("paused",e)),We?await new we().send(e,t,c):await s.sendMessage(e,k(r),c)}async send(e,t){return await this.signal(e,t)}async forward(e,t){return await this.signal(e,t,"forward")}async button(e,t){return await this.signal(e,t,"button")}async edit(e,t){return await this.signal(e.key.remoteJid,t,"edit",e)}async delete(e){return S.isArray(e)?Promise.all(e.map(t=>this.signal(t.key.remoteJid,{},"delete",t))):await this.signal(e.key.remoteJid,{},"delete",e)}async presence(e,t){let n=i.get("socket"),o={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await n.sendPresenceUpdate(o[t],e)}async reaction(e,t){return await i.get("socket").sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}async memberLabel(e,t){return await i.get("socket").relayMessage(e,{protocolMessage:{type:30,memberLabel:{label:t,labelTimestamp:Date.now()}}},{})}};var Ve=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").communityCreate(e,t)}async createGroup(e,t,n){return await i.get("socket").communityCreateGroup(e,t,n)}async leave(e){return await i.get("socket").communityLeave(e)}async metadata(e){return await i.get("socket").communityMetadata(e)}async update(e,t,n){let o=i.get("socket");switch(t){case "subject":return await o.communityUpdateSubject(e,n);case "description":return await o.communityUpdateDescription(e,n)}}async group(e,t,n){let o=i.get("socket");switch(t){case "link":if(!n)throw "Group JID is required for linking";return await o.communityLinkGroup(e,n);case "unlink":if(!n)throw "Group JID is required for unlinking";return await o.communityUnlinkGroup(e,n);case "linked":return await o.communityFetchLinkedGroups(e)}}async participants(e,t,n,o){let s=i.get("socket");switch(t){case "list":return await s.communityRequestParticipantsList(e);case "request-update":return await s.communityRequestParticipantsUpdate(e,o,k(n));case "update":if(!n||!o)throw "Action and participants are required for update";return await s.communityParticipantsUpdate(e,o,k(n));case "all":return await s.communityFetchAllParticipating()}}async invite(e,t,...n){let o=i.get("socket");switch(t){case "code":return await o.communityInviteCode(e);case "revoke":return await o.communityRevokeInvite(e);case "accept":return await o.communityAcceptInvite(e);case "info":return await o.communityGetInviteInfo(e);case "revokeV4":return await o.communityRevokeInviteV4(e,n[0]);case "acceptV4":return await o.communityAcceptInviteV4(e,n[0])}}async settings(e,t,n){let o=i.get("socket");switch(t){case "ephemeral":return await o.communityToggleEphemeral(e,n);case "update":return await o.communitySettingUpdate(e,n);case "memberAdd":return await o.communityMemberAddMode(e,n);case "approval":return await o.communityJoinApprovalMode(e,n)}}},Me=class{constructor(e){this.mlient=e;this.community=new Ve(e);}community};var Ge=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").groupCreate(e,t)}async participant(e,t,n){return await i.get("socket").groupParticipantsUpdate(e,t,n)}async profile(e,t,n){let o=i.get("socket"),s=Buffer.isBuffer(t);switch(n){case "subject":if(!s)return await o.groupUpdateSubject(e,t);case "description":if(!s)return await o.groupUpdateDescription(e,t);case "picture":return await o.updateProfilePicture(e,ue(t))}}async setting(e,t){let n=i.get("socket");switch(t){case "open":return await n.groupSettingUpdate(e,"not_announcement");case "close":return await n.groupSettingUpdate(e,"announcement");case "locked":return await n.groupSettingUpdate(e,t);case "unlocked":return await n.groupSettingUpdate(e,t);case "all_member_add":return await n.groupMemberAddMode(e,t);case "admin_add":return await n.groupMemberAddMode(e,t)}}async leave(e){return await i.get("socket").groupLeave(e)}async inviteCode(e,t){let n=i.get("socket");switch(t){case "code":return await n.groupInviteCode(e);case "revoke":return await n.groupRevokeInvite(e);case "accept":return await n.groupAcceptInvite(e);case "info":return await n.groupGetInviteInfo(e)}}async metadata(e){let t=i.get("socket"),n=i.groupCache.get(e);if(n)return n;let o=await t.groupMetadata(e);return o&&i.groupCache.set(e,o),o}async requestJoin(e,t,n){let o=i.get("socket");switch(n){case "approve":return await o.groupRequestParticipantsUpdate(e,t,n);case "reject":return await o.groupRequestParticipantsUpdate(e,t,n)}}async requestJoinList(e){return await i.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await i.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let n=i.get("socket"),o={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await n.groupToggleEphemeral(e,o[t])}},ve=class{constructor(e){this.glient=e;this.group=new Ge(e);}group};var Je=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").newsletterCreate(e,t)}async action(e,t){let n=i.get("socket");switch(t){case "follow":return await n.newsletterFollow(e);case "unfollow":return await n.newsletterUnfollow(e);case "mute":return await n.newsletterMute(e);case "unmute":return await n.newsletterUnmute(e);}}async update(e,t,n){let o=i.get("socket"),s=Buffer.isBuffer(t);switch(n){case "name":if(!s)return await o.newsletterUpdateName(e,t);case "description":if(!s)return await o.newsletterUpdateDescription(e,t);case "picture":return await o.newsletterUpdatePicture(e,ue(t))}}async metadata(e,t){return await i.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await i.get("socket").newsletterSubscribers(e)}async reaction(e,t,n){return await i.get("socket").newsletterReactMessage(e,t,n)}async fetchMessages(e,t,n,o){let s=i.get("socket"),r=n.getTime()/1e3,c=o.getTime()/1e3;return await s.newsletterFetchMessages(e,t,r,c)}async adminCount(e){return await i.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await i.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await i.get("socket").newsletterDemote(e,t)}async delete(e){return await i.get("socket").newsletterDelete(e)}async removePicture(e){return await i.get("socket").newsletterRemovePicture(e)}},xe=class{constructor(e){this.nlient=e;this.newsletter=new Je(e);}newsletter};var Ke=class{constructor(e){this.client=e;}async block(e){return await i.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await i.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await i.get("socket").updateLastSeenPrivacy(e)}async online(e){return await i.get("socket").updateOnlinePrivacy(e)}async picture(e){return await i.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await i.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await i.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await i.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=i.get("socket"),n={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(n[e])}async blocklist(){return await i.get("socket").fetchBlocklist()}async getSettings(){return await i.get("socket").fetchPrivacySettings(true)}},Se=class{constructor(e){this.plient=e;this.privacy=new Ke(e);}privacy};var Hr=u.object({status:u.enum(["connecting","open","close","reload","syncing"]),authType:u.enum(["pairing","qr"]),authTimeout:u.number().optional(),syncProgress:u.number().optional(),syncCompleted:u.boolean().default(false).optional(),qr:u.string().optional(),code:u.string().optional()});var Rs=u.enum(["unknown","android","ios","desktop","web"]),Es=u.enum(["text","album","image","contact","location","document","audio","video","protocol","contacts","highlyStructured","sendPayment","requestPayment","groupStatusMention","statusMention","declinePaymentRequest","cancelPaymentRequest","template","sticker","groupInvite","product","deviceSent","lists","viewOnce","order","ephemeral","invoice","buttons","paymentInvite","interactive","reaction","sticker","interactiveResponse","pollCreation","pollUpdate","keepInChat","document","requestPhoneNumber","viewOnce","reaction","text","viewOnce","pollCreation","scheduledCallCreation","groupMentioned","pinInChat","pollCreation","scheduledCallEdit","ptv","botInvoke","callLog","encComment","bcall","lottieSticker","event","comment","placeholder","encEventUpdate"]),Et=u.object({channelId:u.string(),uniqueId:u.string(),chatId:u.string(),chatType:Es,receiverId:u.string(),receiverName:u.string(),roomId:u.string(),roomName:u.string(),senderLid:u.string(),senderId:u.string(),senderName:u.string(),senderDevice:Rs,timestamp:u.number(),text:u.string().nullable(),mentions:u.string().array(),links:u.string().array(),isBot:u.boolean(),isFromMe:u.boolean(),isPrefix:u.boolean(),isSpam:u.boolean(),isTagMe:u.boolean(),isStatusMention:u.boolean(),isGroupStatusMention:u.boolean(),isHideTags:u.boolean(),isGroup:u.boolean(),isNewsletter:u.boolean(),isQuestion:u.boolean(),isStory:u.boolean(),isViewOnce:u.boolean(),isEdited:u.boolean(),isDeleted:u.boolean(),isPinned:u.boolean(),isUnPinned:u.boolean(),isBroadcast:u.boolean(),isEphemeral:u.boolean(),isForwarded:u.boolean(),citation:u.record(u.string(),u.function({output:u.promise(u.boolean())})).nullable(),media:u.object({buffer:u.function({output:u.promise(u.instanceof(Buffer))}),stream:u.function({output:u.promise(u.instanceof(Is))})}).loose().nullable(),message:u.function({input:[],output:u.custom()})}),ei=Et.extend({replied:Et.nullable()});var oi=u.object({callId:u.string(),callerId:u.string(),callerName:u.string(),roomId:u.string(),roomName:u.string(),date:u.date(),offline:u.boolean(),status:u.enum(["accept","offer","reject","ringing","terminate","timeout"]),isVideo:u.boolean(),isGroup:u.boolean()});var Te=class{collect(e,t,n){let o=t.max??1/0;if(o<=0){n([]);return}let s=i.collectors.get(e);s&&(clearTimeout(s.timeoutId),s.callback(s.messages),i.collectors.delete(e));let r=setTimeout(()=>{let c=i.collectors.get(e);c&&(c.callback(c.messages),i.collectors.delete(e));},t.timeout);i.collectors.set(e,{messages:[],max:o,filter:t.filter,callback:n,timeoutId:r});}push(e){let t=i.collectors.get(e.channelId);return !t||t.filter&&!t.filter(e)?false:(t.messages.push(e),t.messages.length>=t.max&&(clearTimeout(t.timeoutId),t.callback(t.messages),i.collectors.delete(e.channelId)),true)}has(e){return i.collectors.has(e)}cancel(e){let t=i.collectors.get(e);return t?(clearTimeout(t.timeoutId),t.callback(t.messages),i.collectors.delete(e),t.messages):[]}};var Ps={checkIntervalMs:6e4,staleThresholdMs:12e4,cooldownMs:6e4,maxRetries:3},Ce=class{constructor(e,t={}){this.client=e;this.options={...Ps,...t};}lastActivityTime=Date.now();lastRecoveryTime=0;checkInterval=null;cleanupInterval=null;isRecovering=false;retryCount=0;options;start(){this.stop(),this.lastActivityTime=Date.now(),this.setupActivityListeners(),this.checkInterval=setInterval(()=>this.check(),this.options.checkIntervalMs),this.cleanupInterval=setInterval(()=>this.client.cleanupMessages(this.client.options.cleanupDays),3600*1e3),this.client.cleanupMessages(this.client.options.cleanupDays),i.spinner.success(" Health manager monitoring started");}stop(){this.checkInterval&&(clearInterval(this.checkInterval),this.checkInterval=null),this.cleanupInterval&&(clearInterval(this.cleanupInterval),this.cleanupInterval=null);}touch(){this.lastActivityTime=Date.now(),this.retryCount=0;}setupActivityListeners(){let e=this.client.socket;if(!e?.ev)return;let t=["messages.upsert","message-receipt.update","presence.update","chats.update","connection.update"];for(let n of t)e.ev.on(n,()=>this.touch());}async check(){if(this.isRecovering)return;let t=Date.now()-this.lastActivityTime;t>this.options.staleThresholdMs&&(i.spinner.warn(` Connection stale for ${Math.round(t/1e3)}s. Triggering recovery...`),await this.recover());}isInCooldown(){return Date.now()-this.lastRecoveryTime<this.options.cooldownMs}async recover(){if(!this.isRecovering){if(this.isInCooldown()){i.spinner.warn(" Recovery in cooldown, skipping...");return}if(this.retryCount>=this.options.maxRetries){i.spinner.error(` Max health recovery retries (${this.options.maxRetries}) reached.`);return}this.isRecovering=true,this.lastRecoveryTime=Date.now(),this.retryCount++;try{i.spinner.warn(` Health recovery attempt ${this.retryCount}/${this.options.maxRetries}...`);let e=this.client.socket;if(e?.ws?.readyState===1)try{await e.fetchStatus(e.user?.id||""),this.touch(),i.spinner.success(" Health check passed, session is alive");return}catch{i.spinner.warn(" Health check failed, session unresponsive");}await re(this.client.options.session),i.spinner.warn(" Re-initializing client connection..."),await this.client.initialize(),this.touch(),i.spinner.success(" Health recovery successful");}catch(e){i.spinner.error(` Health recovery failed: ${e instanceof Error?e.message:String(e)}`);}finally{this.isRecovering=false;}}}};var Ae=class{constructor(e){this.client=e;this.initialize();}logsInitialized=false;logsDisplayed=false;isReady=false;getRoomColor(e){return e?.isNewsletter?"blue":e?.isGroup?e?.isGroup?"lime":"dimgray":"orange"}initialize(){if(!this.client.options.showLogs||this.logsInitialized)return;this.logsInitialized=true;let e=async({status:t})=>{t==="open"&&(this.isReady=true,this.logsDisplayed||setTimeout(()=>{this.displayIndicator();},500));};i.events.on("connection",e);}displayIndicator(){this.logsDisplayed||(this.logsDisplayed=true,console.log(),i.spinner.info("Logs Indicator:"),console.log(v(" \u2022","orange")+" Private Chat"),console.log(v(" \u2022","lime")+" Group Chat"),console.log(v(" \u2022","blue")+" Newsletter Chat"),console.log());}message(e){if(!this.isReady)return;let t=k(this.getRoomColor(e)),n=e?.text?.toLowerCase()?.match("zaileys"),o=v(`[${new Date(e?.timestamp).toTimeString().split(" ")[0]}]`,"dimgray"),s=v(`${e?.roomName}`,t),r=e?.text?.slice(0,300)||"",c=r?.length>=300?"...":"",l=`${o} \u2192 ${s}
7
- `;e?.isNewsletter?l+=`${v("[room]","dimgray")} \u2192 ${v(`${e?.roomName} (${W(e?.roomId)})`,t)}
8
- `:l+=`${v("[sender]","dimgray")} \u2192 ${v(`${e?.senderName} (${W(e?.senderId)})`,t)}
9
- `,l+=`${v(`[${e?.chatType||"unknown"}]`,"dimgray")} \u2192 ${v(r+c,n?["#ff5f6d","#ffc371"]:"brown")}
10
- `,l+="\u2014",console.log(l);}call(e){if(!i.get("logs")?.ready)return;let t=k(this.getRoomColor(e)),n=v(`[${new Date(e?.date).toTimeString().split(" ")[0]}]`,"dimgray"),o=v(`${e?.roomName}`,t),s=`${n} \u2192 ${o}
11
- `;s+=`${v("[caller]","dimgray")} \u2192 ${v(`${e?.callerName} (${W(e?.callerId)})`,t)}
12
- `,s+=`${v(`[${e?.status}]`,"dimgray")} \u2192 ${v(e?.isVideo?"Video Call":"Voice Call","brown")}
13
- `,s+="\u2014",console.log(s);}};var Ie=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,n=async o=>{if(o<=t)throw "next() called multiple times";t=o;let s=this.stack[o];if(s)try{await s(e,()=>n(o+1));}catch(r){throw console.error("Middleware error:",r),r}};await n(0);}};var Re=class{plugins=[];pluginsDir;constructor(e=je.join(process.cwd(),"plugins")){this.pluginsDir=e;}getAllFiles(e,t=[]){if(!$.existsSync(e))return t;let n=$.readdirSync(e);for(let o of n){let s=je.join(e,o);$.statSync(s).isDirectory()?this.getAllFiles(s,t):(o.endsWith(".ts")||o.endsWith(".js"))&&!o.endsWith(".d.ts")&&t.push(s);}return t}async load(){if(!$.existsSync(this.pluginsDir))return;let e=this.getAllFiles(this.pluginsDir);for(let t of e)try{let o=(await import(pathToFileURL(t).href)).default;o?.default&&(o=o.default),o?.handler&&o?.config&&this.plugins.push(o);}catch{}}async execute(e,t){let n=t.messages.text||"";for(let o of this.plugins)try{this.match(n,o.config.matcher)&&await o.handler(e,t);}catch{}}match(e,t){return t.some(n=>e===n||e.startsWith(n+" "))}getLoadedPlugins(){return this.plugins}getPluginsInfo(){return this.plugins.map(e=>({matcher:e.config.matcher,metadata:e.config.metadata}))}async reload(){this.plugins=[],await this.load();}},Ii=(a,e)=>({handler:a,config:e});var Ee=class{classInjection(e,t){let n=t.length;return new Proxy(e,{get(o,s,r){if(s in o){let c=Reflect.get(o,s,r);return typeof c=="function"?c.bind(o):c}for(let c=0;c<n;c++){let l=t[c];if(s in l){let p=Reflect.get(l,s,r);return typeof p=="function"?p.bind(l):p}}},set(o,s,r,c){if(s in o)return Reflect.set(o,s,r,c);for(let l=0;l<n;l++){let p=t[l];if(s in p)return Reflect.set(p,s,r,c)}return Reflect.set(o,s,r,c)},has(o,s){if(s in e)return true;for(let r=0;r<n;r++)if(s in t[r])return true;return false},ownKeys(){let o=[];for(let s of Reflect.ownKeys(e))o.push(s);for(let s=0;s<n;s++)for(let r of Reflect.ownKeys(t[s]))o.includes(r)||o.push(r);return o},getOwnPropertyDescriptor(o,s){let r=Object.getOwnPropertyDescriptor(e,s);if(r)return r;for(let c=0;c<n;c++)if(r=Object.getOwnPropertyDescriptor(t[c],s),r)return r}})}};var Pt=class{constructor(e){this.options=e;this.options=te(Tt,e);let t=new Ee().classInjection(this,[new be(this),new ve(this),new Se(this),new xe(this),new Me(this)]);return this._ready=this.initialize(t),t}listener;_ready;health;logs;collector=new Te;middleware=new Ie;plugins=new Re;async initialize(e){await wt(),await mt(this.options.disableFFmpeg),await ot(this),await this.plugins.load(),this.listener=new ke(e||this),this.logs||(this.logs=new Ae(this)),this.health&&this.health.stop(),this.health=new Ce(e||this),this.health.start();}ready(){return this._ready}db(e){return i.db(this.options.session,e)}on(e,t){i.events.on(e,t);}use(e){return this.middleware.use(e),this}get socket(){return i.get("socket")}async getRoomName(e){let t=i.get("socket"),n=e.endsWith("@g.us"),o=null;if(n){let s=i.groupCache.get(e);if(s)o=s.subject;else {let r=await t.groupMetadata(e);r&&(i.groupCache.set(e,r),o=r.subject);}}return E(o)}async getLabelName(e){let t=await this.db("messages").get(e),n=O(t,["message.protocolMessage.memberLabel"]);return E(n?.label)||null}async cleanupMessages(e=7){let t=Date.now()-e*24*60*60*1e3,n=await this.db("messages").all(),o=0;for(let[s]of n){let r=await this.db("messages").get(s);if(!Array.isArray(r))continue;let c=r.filter(l=>Number(l.messageTimestamp)*1e3<t?(o++,false):true);c.length!==r.length&&await this.db("messages").set(s,c);}o>0&&this.options.showLogs&&i.spinner.info(` Cleaned up ${o} old messages`);}};
4
+ `,c=n?"lime":"orange",l=await Qt.text(o),p=cristal(l);console.log(p),console.log(M(s,"dimgray")),console.log(M(r,c));};var ge=class{constructor(e){this.client=e;this.initialize();}async initialize(){i.spinner.start(" Initializing connection...");let e=i.get("socket"),t={},n=async()=>{t.status="reload",i.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},o=async()=>{await delay(3e3),i.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await delay(3e3),await at(this.client.options.session),await n();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){i.spinner.update(" Generating pairing code..."),await delay(3500);try{t.authTimeout=Date.now()+6e4;let s=new Date(t.authTimeout).toLocaleTimeString(),r=await e.requestPairingCode(this.client.options.phoneNumber.toString());i.spinner.warn(` Pairing expired at ${cristal(s)}`),i.spinner.warn(` Pairing code: ${r}`),t.code=r;}catch{await o();}}e.ev.on("connection.update",async s=>{let{connection:r,lastDisconnect:c,qr:l}=s;if(t.status=r||"connecting",t.authType=this.client.options.authType,i.spinner.update(" Connection status: "+cristal(t.status)),this.client.options.authType==="qr"&&l){t.authTimeout=Date.now()+6e4;let p=new Date(t.authTimeout).toLocaleTimeString();i.spinner.warn(" Please scan the QR code..."),i.spinner.warn(` Qr code expired at ${cristal(p)}`),kt(l),t.qr=l;return}if(r==="close"){let p=w(c?.error)?.output?.statusCode,b=c?.error?.message||"",x=typeof p=="number"&&p!==DisconnectReason.loggedOut,_=p===515||b.toLowerCase().includes("prekey");if(i.spinner.error(` [${p} - Closed] ${b}`),_){i.spinner.warn(" Session key mismatch detected, attempting repair..."),await re(this.client.options.session),await delay(1e3),await n();return}if(p===401||p===405){i.spinner.warn(" Session may be used by another device/instance."),i.spinner.warn(" If you want to connect here, close the other connection first."),i.spinner.warn(` Or use a different session name in your Client options.
5
+ `);return}if(p===500){i.spinner.error(" Server error occurred, attempting reconnect..."),await n();return}x&&await n();}if(r==="open")if(e.user?.id){let p=jidNormalizedUser(e.user.id).split("@")[0],b=e.user.name||e.user.verifiedName;i.spinner.success(` Connected as ${cristal(b||p)}`);}else i.spinner.success(" Connected!");i.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:s})=>{t.status="syncing",t.syncProgress=s,i.spinner.start(" Syncing messages history..."),s&&i.spinner.update(` Syncing messages history ${s+"%"}`),s==100&&(i.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),i.events.emit("connection",t);});}};var vt={text:"text",conversation:"text",imageMessage:"image",contactMessage:"contact",locationMessage:"location",documentMessage:"document",audioMessage:"audio",videoMessage:"video",protocolMessage:"protocol",contactsArrayMessage:"contacts",highlyStructuredMessage:"highlyStructured",sendPaymentMessage:"sendPayment",liveLocationMessage:"location",requestPaymentMessage:"requestPayment",groupStatusMentionMessage:"groupStatusMention",statusMentionMessage:"statusMention",albumMessage:"album",declinePaymentRequestMessage:"declinePaymentRequest",cancelPaymentRequestMessage:"cancelPaymentRequest",templateMessage:"template",stickerMessage:"sticker",groupInviteMessage:"groupInvite",templateButtonReplyMessage:"buttons",productMessage:"product",deviceSentMessage:"deviceSent",listMessage:"lists",viewOnceMessage:"viewOnce",orderMessage:"order",listResponseMessage:"lists",ephemeralMessage:"ephemeral",invoiceMessage:"invoice",buttonsMessage:"buttons",buttonsResponseMessage:"buttons",paymentInviteMessage:"paymentInvite",interactiveMessage:"interactive",reactionMessage:"reaction",stickerSyncRmrMessage:"sticker",questionMessage:"question",nativeFlowResponseMessage:"lists",interactiveResponseMessage:"interactiveResponse",pollCreationMessage:"pollCreation",pollCreationMessageKey:"pollUpdate",pollUpdateMessage:"pollUpdate",keepInChatMessage:"keepInChat",documentWithCaptionMessage:"document",requestPhoneNumberMessage:"requestPhoneNumber",viewOnceMessageV2:"viewOnce",encReactionMessage:"reaction",editedMessage:"text",viewOnceMessageV2Extension:"viewOnce",pollCreationMessageV2:"pollCreation",scheduledCallCreationMessage:"scheduledCallCreation",groupMentionedMessage:"groupMentioned",pinInChatMessage:"pinInChat",pollCreationMessageV3:"pollCreation",scheduledCallEditMessage:"scheduledCallEdit",ptvMessage:"ptv",botInvokeMessage:"botInvoke",callLogMesssage:"callLog",encCommentMessage:"encComment",bcallMessage:"bcall",lottieStickerMessage:"lottieSticker",eventMessage:"event",commentMessage:"comment",newsletterAdminInviteMessage:"text",extendedTextMessageWithParentKey:"text",extendedTextMessage:"text",placeholderMessage:"placeholder",encEventUpdateMessage:"encEventUpdate"},ze={whatsapp:"0@s.whatsapp.net",meta:"13135550002@s.whatsapp.net",chatgpt:"18002428478@s.whatsapp.net",copilot:"18772241042@s.whatsapp.net",instagram:"447723442971@s.whatsapp.net",tiktok:"6285574670498@s.whatsapp.net"};var ye=class{constructor(e){this.client=e;this.limiter=new RateLimiterMemory({points:this.client.options.limiter?.maxMessages,duration:this.client.options.limiter?.durationMs/1e3});}limiter;async isSpam(e){try{return await this.limiter.consume(e),!1}catch{return true}}};var he=class{constructor(e){this.client=e;this.limiter=new ye(e),this.initialize();}limiter;maxReplies=3;async initialize(){let e=i.get("socket");if(!e?.ev){console.warn("\u26A0\uFE0F [Messages] Socket or socket.ev is not available during initialization");return}e.ev.on("messages.upsert",async({messages:t,type:n})=>{try{if(n!=="notify"&&n!=="append")return;for(let o of t)try{let s=await this.parse(o);s&&(this.client.collector.push(s)||(await this.client.middleware.run({messages:s}),await this.client.plugins.execute(this.client,{messages:s}),i.set("message",s),i.events.emit("messages",s)),this.client.options.autoRead&&await e.readMessages([s.message().key]));}catch(s){console.error(`\u274C [Messages] Error processing message ${o.key?.id}:`,s);}}catch(o){console.error("\u274C [Messages] Critical error in upsert listener:",o);}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage)return;let n=e,o=i.get("socket"),s={},r=ie(e.message),c=r.chain.at(-1),l=r.leaf;if(l?.message&&(r=ie(l.message),c=r.chain.at(-1),l=r.leaf),s.uniqueId=null,s.channelId=null,s.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,s.chatType=vt[c],!s.chatType)return;s.receiverLid=jidNormalizedUser(o?.user?.lid||""),s.receiverId=jidNormalizedUser(o?.user?.id||""),s.receiverName=P(o?.user?.name||o?.user?.verifiedName),s.roomId=jidNormalizedUser(e?.key?.remoteJid);let p=l?.type===0,b=l?.type===1,x=l?.type===2,_=s.roomId?.includes("@newsletter"),Pe=!!e?.message?.questionMessage,G=e?.key?.fromMe||false;if(G&&this.client.options.ignoreMe&&t!=="replied")return;let We=l?.key?.id;if(p||b||x){let C=await this.client.db("messages").query(s.roomId).where("key.id","=",We).first();if(!C)return;e=C,r=ie(e.message),c=r.chain.at(-1),l=r.leaf;}if(s.roomName=await this.client.getRoomName(s.roomId),s.senderLid=jidNormalizedUser(e?.key?.participant||e?.key?.remoteJid)||null,s.senderId=jidNormalizedUser(e?.key?.participantAlt||e?.key?.remoteJidAlt)||null,s.senderName=P(e?.pushName||e?.verifiedBizName),s.senderDevice=getDevice(s.chatId||""),s.channelId=U([s.roomId,s.senderId]),s.uniqueId=U([s.channelId,s.chatId]),s.timestamp=Number(e?.messageTimestamp)*1e3,_){let C=await o.newsletterMetadata("jid",s.roomId);s.roomName=w(C.thread_metadata.name)?.text,s.senderId=null,s.senderLid=null;}if(G&&(s.senderLid=jidNormalizedUser(o.user.lid),s.senderId=s.receiverId,s.senderName=s.receiverName),s.text=l?.text||l?.caption||l?.name||l?.displayName||l?.conversation||l?.contentText||l?.selectedDisplayText||l||null,l?.name=="menu_options"&&(s.text=Fe(l?.paramsJson)?.id),s.text=P(s.text),s.mentions=pt(s.text),s.links=lt(s.text||""),s.isBot=s.chatId.startsWith("BAE5")||s.chatId.startsWith("3EB0")||s.chatId.startsWith("Z4D3FC"),s.isFromMe=G,s.isPrefix=s.text?.startsWith(this.client.options?.prefix)||false,s.isTagMe=s.mentions?.includes(s.receiverId.split("@")[0])||s.mentions?.includes(s.receiverLid.split("@")[0]),s.isStatusMention=!!e?.message?.statusMentionMessage,s.isGroupStatusMention=!!e?.message?.groupStatusMentionMessage,s.isHideTags=false,S.isEmpty(s.text)&&l?.contextInfo?.mentionedJid?.length&&(s.isHideTags=true),s.isSpam=await this.limiter.isSpam(s.channelId),s.isPrefix&&(s.text=s.text.replace(new RegExp(`^${this.client.options?.prefix}`),"")),s.isGroup=s.roomId?.includes("@g.us"),s.isNewsletter=_,s.isQuestion=Pe,s.isStory=s.roomId?.includes("@broadcast"),!s.isGroup&&!s.roomName&&(s.roomName=s.senderName),s.isViewOnce=false,s.isEdited=!!Q(Z(r),"editedMessage"),s.isDeleted=p,s.isPinned=b,s.isUnPinned=x,s.isBroadcast=!!e?.broadcast,s.isEphemeral=!!Q(Z(l?.contextInfo),"ephemeralSettingTimestamp"),s.isForwarded=!!Q(Z(l?.contextInfo),"forwardingScore"),s.citation=null,this.client.options.citation){s.citation=s.citation||{};let C=this.client.options.citation;for(let W of Object.keys(C)){let De=C[W];s.citation[W]=async()=>{let Be=await De(),oe=[D(s.roomId),D(s.senderLid),D(s.senderId)];return !!S.intersection(oe,Be).length};}}s.chatType!=="text"&&(s.media={...ut(l),buffer:()=>downloadMediaMessage(e,"buffer",{}),stream:()=>downloadMediaMessage(e,"stream",{})}),s.isStatusMention&&(s.chatType="statusMention"),s.isGroupStatusMention&&(s.chatType="groupStatusMention"),s.message=()=>n,s.replied=null;let L=l?.contextInfo?.quotedMessage,J=Q(Z(L),"viewOnce"),K=l?.contextInfo?.stanzaId,ne=l?.contextInfo?.participant;if(L&&this.maxReplies){this.maxReplies--;let C=await this.client.db("messages").query(J?ne:s.roomId).where("key.id","=",K).first(),W;J?W={...C,message:L}:W=C,s.replied=await this.parse(W,"replied"),s.replied&&(s.replied.isViewOnce=true),this.maxReplies=3;}return t!="replied"&&this.client.logs.message(s),s}};var we=class{constructor(e){this.client=e;this.connection=new ge(e),this.messages=new he(e),this.calls=new me(e),this.initialize();}connection;messages;calls;async initialize(){let e=i.get("socket");e.ev.on("groups.update",async([t])=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e.ev.on("group-participants.update",async t=>{let n=await e.groupMetadata(t.id);i.groupCache.set(t.id,n);}),e?.ev.on("messaging-history.set",async t=>{let{chats:n,contacts:o,messages:s}=t;for(let r of n)await this.client.db("chats").set(r.id,r);for(let r of o)await this.client.db("contacts").set(r.id,r);for(let r of s){if(r?.category==="peer"||!r.message&&!r.key.isViewOnce&&(!r.message?.groupStatusMentionMessage||!r.message?.statusMentionMessage)||r.message?.protocolMessage&&!r.message?.protocolMessage?.memberLabel)continue;let c=Number(r.messageTimestamp)*1e3;Date.now()-c>1440*60*1e3||await this.client.db("messages").upsert(r.key.remoteJid,r,"key.id");}}),e?.ev.on("messages.upsert",async({messages:t})=>{for(let n of t){if(n?.category==="peer"||!n.message&&!n.key.isViewOnce||n.message?.protocolMessage&&!n.message?.protocolMessage?.memberLabel)continue;let o=Number(n.messageTimestamp)*1e3;if(Date.now()-o>1440*60*1e3)continue;N([n?.key],["participant","remoteJid"])||null;await this.client.db("messages").upsert(n.key.remoteJid,n,"key.id");}}),e?.ev.on("chats.upsert",async t=>{for(let n of t)await this.client.db("chats").upsert(n.id,n,"id");}),e?.ev.on("contacts.upsert",async t=>{for(let n of t)await this.client.db("contacts").upsert(n.id,n,"id");});}};var te=(a,e)=>{let t=a.safeParse(e);if(t.success)return t.data;throw console.error(t.error),"Invalid data"};var os=u.object({type:u.literal("quick_reply"),text:u.string()}),rs=u.object({type:u.literal("cta_url"),url:u.url(),text:u.string()}),is=u.object({type:u.literal("cta_copy"),copy:u.string(),text:u.string()}),as=u.object({type:u.literal("cta_call"),text:u.string(),phoneNumber:u.string()}),cs=u.object({type:u.literal("single_select"),text:u.string(),section:u.object({title:u.string(),highlight_label:u.string().optional(),rows:u.object({id:u.string(),title:u.string(),header:u.string().optional(),description:u.string().optional()}).array()}).array()}),ls=u.object({type:u.literal("interactive"),footer:u.string().optional(),data:u.union([os,rs,is,as,cs]).array()}),ps=u.object({type:u.literal("simple"),footer:u.string().optional(),data:u.object({id:u.string(),text:u.string()}).array()}),St=u.union([ps,ls]);var us=z$1.object({maxMessages:z$1.number().default(20),durationMs:z$1.number().default(1e4)}).optional(),ms=z$1.record(z$1.string(),z$1.function({output:z$1.promise(z$1.array(z$1.number()))})).optional(),ds=z$1.object({provider:z$1.enum(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]).or(z$1.number())}).optional(),Ve=z$1.enum(["default","rounded","circle","oval"]).default("default"),fs=z$1.object({packageName:z$1.string().optional(),authorName:z$1.string().optional(),quality:z$1.number().optional(),shape:Ve.optional()}).optional(),Tt=z$1.object({session:z$1.string().default("zaileys").optional(),prefix:z$1.string().optional(),ignoreMe:z$1.boolean().default(true).optional(),showLogs:z$1.boolean().default(true).optional(),syncFullHistory:z$1.boolean().default(true).optional(),disableFFmpeg:z$1.boolean().default(false).optional(),cleanupDays:z$1.number().default(7).optional(),autoMarkAI:z$1.boolean().default(true).optional(),autoMentions:z$1.boolean().default(true).optional(),autoOnline:z$1.boolean().default(true).optional(),autoRead:z$1.boolean().default(true).optional(),autoPresence:z$1.boolean().default(true).optional(),autoRejectCall:z$1.boolean().default(true).optional(),limiter:us,citation:ms,fakeReply:ds,sticker:fs}),gs=z$1.object({authType:z$1.literal("pairing"),phoneNumber:z$1.number()}),ys=z$1.object({authType:z$1.literal("qr")}),Ct=z$1.union([gs.extend(Tt.shape),ys.extend(Tt.shape)]),cr=z$1.enum(["connection","messages","calls"]);var se=u.url().or(u.base64()).or(u.instanceof(Buffer)),At=u.object({text:u.string()}).passthrough(),hs=u.object({image:se,caption:u.string().optional()}).passthrough(),ws=u.object({audio:se,caption:u.string().optional(),ptt:u.boolean().optional()}).passthrough(),ks=u.object({video:se,caption:u.string().optional(),ptv:u.boolean().optional()}).passthrough(),bs=u.object({sticker:se,shape:Ve.optional(),caption:u.string().optional()}).passthrough(),vs=u.object({document:se,caption:u.string().optional(),fileName:u.string().optional()}).passthrough(),Ms=u.object({location:u.object({latitude:u.number(),longitude:u.number(),url:u.url().optional(),title:u.string().optional(),footer:u.string().optional()}).optional()}).passthrough(),xs=u.object({contacts:u.object({title:u.string().optional(),contacts:u.object({fullname:u.string(),phoneNumber:u.number(),organization:u.string().optional()}).array()})}).passthrough(),Ss=u.object({poll:u.object({name:u.string(),answers:u.string().array(),isMultiple:u.boolean().default(false).optional()})}),It=u.object({replied:u.custom().optional(),isForwardedMany:u.boolean().optional(),isViewOnce:u.boolean().optional(),banner:u.custom().optional(),buttons:St.optional()});u.enum(["forward","button","edit","delete"]);var Ts=u.union([At,hs,ws,ks,bs,vs,Ms,xs,Ss]),Rt=u.string().or(u.intersection(Ts,It.omit({buttons:true}))),Et=u.intersection(At,It.omit({banner:true}));var ke=class{toNativeSimple(e){return e.map(({id:t,text:n})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:n,id:t})}))}toNativeInteractive(e){let t={quick_reply:n=>({display_text:n.text,id:n.id}),cta_url:n=>({display_text:n.text,url:n.url,merchant_url:n.url}),cta_copy:n=>({display_text:n.text,id:n.id,copy_code:n.copy}),cta_call:n=>({display_text:n.text,phone_number:n.phoneNumber}),single_select:n=>({title:n.text,sections:n.section})};return e.map(n=>({name:n.type,buttonParamsJson:JSON.stringify(t[n.type](n))}))}build(e){let t=w(e).buttons,n=t?.data||[],s=t?.type=="simple"?this.toNativeSimple(n):this.toNativeInteractive(n);return {body:{text:w(e).text},footer:t.footer?{text:t.footer}:void 0,nativeFlowMessage:{buttons:s}}}async send(e,t,n){let o=i.get("socket"),s=o.authState?.creds?.me?.id||o.user?.id,r=this.build(t),c=generateWAMessageFromContent(e,{interactiveMessage:r},{userJid:s,messageId:generateMessageIDV2(s),...n});return await o.relayMessage(e,c.message,{messageId:c.key.id,...n,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),o.config?.emitOwnEvents&&!isJidGroup(e)&&process.nextTick(()=>o.upsertMessage?.(c,"append")),c}};var be=class{constructor(e){this.client=e;}async signal(e,t,n,o){n!="delete"&&(n=="button"?t=te(Et,t):t=te(Rt,t));let s=i.get("socket"),r={},c={},l=S.isString(t),p=this.client.options?.fakeReply?.provider,b=this.client.options?.autoMentions,x=this.client.options?.autoPresence,_=S.has(t,"replied"),Pe=S.has(t,"banner"),G=S.has(t,"isViewOnce"),We=n=="button",L=S.has(t,"image"),J=S.has(t,"video"),K=S.has(t,"audio"),ne=S.has(t,"sticker"),C=S.has(t,"document"),W=S.has(t,"location"),De=S.has(t,"contacts"),Be=S.has(t,"poll"),oe=L||J||K||ne||C,H=l?t:N([t],["text","caption"]);if(x&&(K?await s.sendPresenceUpdate("recording",e):await s.sendPresenceUpdate("composing",e)),b&&(r={...r,mentions:$e(H),contextInfo:{mentionedJid:$e(H)}}),_&&(c.quoted=w(t).replied,p&&(c.quoted.key.remoteJid=ze[p],c.quoted.key.participant=ze[p])),Pe&&(r={...r,contextInfo:{externalAdReply:w(t).banner}},r.contextInfo.externalAdReply.mediaType=1),G&&(r={...r,viewOnce:w(t)?.isViewOnce}),H&&(r={...r,text:H,caption:H},oe&&delete w(r).text),oe){let v=N([t],["image","video","audio","sticker","document"]);S.isString(v)?{}:v;if(L&&(r={...r,image:await ft(v),jpegThumbnail:await Ue(v)}),J){let R=w(t)?.ptv;r={...r,video:await gt(v),ptv:R,jpegThumbnail:await Ue(v)};}if(K){let R=w(t)?.ptt;r={...r,audio:await dt(v),ptt:R,mimetype:R?"audio/ogg; codecs=opus":"audio/mpeg"};}if(ne){let R=w(t)?.shape;r={...r,sticker:await yt(v,{...this.client.options?.sticker,shape:R})};}if(C){let R=await ht(v);r={...r,fileName:w(t).fileName,...R};}}if(W){let v=w(t).location;r={...r,location:{degreesLatitude:v.latitude,degreesLongitude:v.longitude,url:v.url,address:v.footer,name:v.title}};}if(De){let v=w(t)?.contacts,Ze=v?.contacts.map(j=>{let R=["BEGIN:VCARD","VERSION:3.0",`FN:${j.fullname}`,`ORG:${j.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${j.phoneNumber}:${j.phoneNumber}`,"END:VCARD"].join(`
6
+ `);return {displayName:j.fullname,vcard:R}});r={...r,contacts:{displayName:v?.title,contacts:Ze}};}if(Be){let v=w(t)?.poll;r={...r,poll:{name:v.name,values:v.answers,selectableCount:v.isMultiple?1:0,toAnnouncementGroup:true}};}return n=="forward"&&(r={...r,contextInfo:{...w(r).contextInfo,isForwarded:true,forwardingScore:w(t).isForwardedMany?9999:1}}),n=="edit"&&(r={...r,edit:o?.key},await s.sendPresenceUpdate("paused",e)),n=="delete"&&(r={...r,delete:o?.key},await s.sendPresenceUpdate("paused",e)),We?await new ke().send(e,t,c):await s.sendMessage(e,w(r),c)}async send(e,t){return await this.signal(e,t)}async forward(e,t){return await this.signal(e,t,"forward")}async button(e,t){return await this.signal(e,t,"button")}async edit(e,t){return await this.signal(e.key.remoteJid,t,"edit",e)}async delete(e){return S.isArray(e)?Promise.all(e.map(t=>this.signal(t.key.remoteJid,{},"delete",t))):await this.signal(e.key.remoteJid,{},"delete",e)}async presence(e,t){let n=i.get("socket"),o={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await n.sendPresenceUpdate(o[t],e)}async reaction(e,t){return await i.get("socket").sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}async memberLabel(e,t){return await i.get("socket").relayMessage(e,{protocolMessage:{type:30,memberLabel:{label:t,labelTimestamp:Date.now()}}},{})}};var qe=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").communityCreate(e,t)}async createGroup(e,t,n){return await i.get("socket").communityCreateGroup(e,t,n)}async leave(e){return await i.get("socket").communityLeave(e)}async metadata(e){return await i.get("socket").communityMetadata(e)}async update(e,t,n){let o=i.get("socket");switch(t){case "subject":return await o.communityUpdateSubject(e,n);case "description":return await o.communityUpdateDescription(e,n)}}async group(e,t,n){let o=i.get("socket");switch(t){case "link":if(!n)throw "Group JID is required for linking";return await o.communityLinkGroup(e,n);case "unlink":if(!n)throw "Group JID is required for unlinking";return await o.communityUnlinkGroup(e,n);case "linked":return await o.communityFetchLinkedGroups(e)}}async participants(e,t,n,o){let s=i.get("socket");switch(t){case "list":return await s.communityRequestParticipantsList(e);case "request-update":return await s.communityRequestParticipantsUpdate(e,o,w(n));case "update":if(!n||!o)throw "Action and participants are required for update";return await s.communityParticipantsUpdate(e,o,w(n));case "all":return await s.communityFetchAllParticipating()}}async invite(e,t,...n){let o=i.get("socket");switch(t){case "code":return await o.communityInviteCode(e);case "revoke":return await o.communityRevokeInvite(e);case "accept":return await o.communityAcceptInvite(e);case "info":return await o.communityGetInviteInfo(e);case "revokeV4":return await o.communityRevokeInviteV4(e,n[0]);case "acceptV4":return await o.communityAcceptInviteV4(e,n[0])}}async settings(e,t,n){let o=i.get("socket");switch(t){case "ephemeral":return await o.communityToggleEphemeral(e,n);case "update":return await o.communitySettingUpdate(e,n);case "memberAdd":return await o.communityMemberAddMode(e,n);case "approval":return await o.communityJoinApprovalMode(e,n)}}},ve=class{constructor(e){this.mlient=e;this.community=new qe(e);}community};var Ge=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").groupCreate(e,t)}async participant(e,t,n){return await i.get("socket").groupParticipantsUpdate(e,t,n)}async profile(e,t,n){let o=i.get("socket"),s=Buffer.isBuffer(t);switch(n){case "subject":if(!s)return await o.groupUpdateSubject(e,t);case "description":if(!s)return await o.groupUpdateDescription(e,t);case "picture":return await o.updateProfilePicture(e,ue(t))}}async setting(e,t){let n=i.get("socket");switch(t){case "open":return await n.groupSettingUpdate(e,"not_announcement");case "close":return await n.groupSettingUpdate(e,"announcement");case "locked":return await n.groupSettingUpdate(e,t);case "unlocked":return await n.groupSettingUpdate(e,t);case "all_member_add":return await n.groupMemberAddMode(e,t);case "admin_add":return await n.groupMemberAddMode(e,t)}}async leave(e){return await i.get("socket").groupLeave(e)}async inviteCode(e,t){let n=i.get("socket");switch(t){case "code":return await n.groupInviteCode(e);case "revoke":return await n.groupRevokeInvite(e);case "accept":return await n.groupAcceptInvite(e);case "info":return await n.groupGetInviteInfo(e)}}async metadata(e){let t=i.get("socket"),n=i.groupCache.get(e);if(n)return n;let o=await t.groupMetadata(e);return o&&i.groupCache.set(e,o),o}async requestJoin(e,t,n){let o=i.get("socket");switch(n){case "approve":return await o.groupRequestParticipantsUpdate(e,t,n);case "reject":return await o.groupRequestParticipantsUpdate(e,t,n)}}async requestJoinList(e){return await i.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await i.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let n=i.get("socket"),o={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await n.groupToggleEphemeral(e,o[t])}},Me=class{constructor(e){this.glient=e;this.group=new Ge(e);}group};var Je=class{constructor(e){this.client=e;}async create(e,t){return await i.get("socket").newsletterCreate(e,t)}async action(e,t){let n=i.get("socket");switch(t){case "follow":return await n.newsletterFollow(e);case "unfollow":return await n.newsletterUnfollow(e);case "mute":return await n.newsletterMute(e);case "unmute":return await n.newsletterUnmute(e);}}async update(e,t,n){let o=i.get("socket"),s=Buffer.isBuffer(t);switch(n){case "name":if(!s)return await o.newsletterUpdateName(e,t);case "description":if(!s)return await o.newsletterUpdateDescription(e,t);case "picture":return await o.newsletterUpdatePicture(e,ue(t))}}async metadata(e,t){return await i.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await i.get("socket").newsletterSubscribers(e)}async reaction(e,t,n){return await i.get("socket").newsletterReactMessage(e,t,n)}async fetchMessages(e,t,n,o){let s=i.get("socket"),r=n.getTime()/1e3,c=o.getTime()/1e3;return await s.newsletterFetchMessages(e,t,r,c)}async adminCount(e){return await i.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await i.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await i.get("socket").newsletterDemote(e,t)}async delete(e){return await i.get("socket").newsletterDelete(e)}async removePicture(e){return await i.get("socket").newsletterRemovePicture(e)}},xe=class{constructor(e){this.nlient=e;this.newsletter=new Je(e);}newsletter};var Ke=class{constructor(e){this.client=e;}async block(e){return await i.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await i.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await i.get("socket").updateLastSeenPrivacy(e)}async online(e){return await i.get("socket").updateOnlinePrivacy(e)}async picture(e){return await i.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await i.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await i.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await i.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=i.get("socket"),n={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(n[e])}async blocklist(){return await i.get("socket").fetchBlocklist()}async getSettings(){return await i.get("socket").fetchPrivacySettings(true)}},Se=class{constructor(e){this.plient=e;this.privacy=new Ke(e);}privacy};var Zr=u.object({status:u.enum(["connecting","open","close","reload","syncing"]),authType:u.enum(["pairing","qr"]),authTimeout:u.number().optional(),syncProgress:u.number().optional(),syncCompleted:u.boolean().default(false).optional(),qr:u.string().optional(),code:u.string().optional()});var Es=u.enum(["unknown","android","ios","desktop","web"]),Ps=u.enum(["text","album","image","contact","location","document","audio","video","protocol","contacts","highlyStructured","sendPayment","requestPayment","groupStatusMention","statusMention","declinePaymentRequest","cancelPaymentRequest","template","sticker","groupInvite","product","deviceSent","lists","viewOnce","order","ephemeral","invoice","buttons","paymentInvite","interactive","reaction","sticker","interactiveResponse","pollCreation","pollUpdate","keepInChat","document","requestPhoneNumber","viewOnce","reaction","text","viewOnce","pollCreation","scheduledCallCreation","groupMentioned","pinInChat","pollCreation","scheduledCallEdit","ptv","botInvoke","callLog","encComment","bcall","lottieSticker","event","comment","placeholder","encEventUpdate"]),Pt=u.object({channelId:u.string(),uniqueId:u.string(),chatId:u.string(),chatType:Ps,receiverLid:u.string(),receiverId:u.string(),receiverName:u.string(),roomId:u.string(),roomName:u.string(),senderLid:u.string(),senderId:u.string(),senderName:u.string(),senderDevice:Es,timestamp:u.number(),text:u.string().nullable(),mentions:u.string().array(),links:u.string().array(),isBot:u.boolean(),isFromMe:u.boolean(),isPrefix:u.boolean(),isSpam:u.boolean(),isTagMe:u.boolean(),isStatusMention:u.boolean(),isGroupStatusMention:u.boolean(),isHideTags:u.boolean(),isGroup:u.boolean(),isNewsletter:u.boolean(),isQuestion:u.boolean(),isStory:u.boolean(),isViewOnce:u.boolean(),isEdited:u.boolean(),isDeleted:u.boolean(),isPinned:u.boolean(),isUnPinned:u.boolean(),isBroadcast:u.boolean(),isEphemeral:u.boolean(),isForwarded:u.boolean(),citation:u.record(u.string(),u.function({output:u.promise(u.boolean())})).nullable(),media:u.object({buffer:u.function({output:u.promise(u.instanceof(Buffer))}),stream:u.function({output:u.promise(u.instanceof(Rs))})}).loose().nullable(),message:u.function({input:[],output:u.custom()})}),ti=Pt.extend({replied:Pt.nullable()});var ri=u.object({callId:u.string(),callerId:u.string(),callerName:u.string(),roomId:u.string(),roomName:u.string(),date:u.date(),offline:u.boolean(),status:u.enum(["accept","offer","reject","ringing","terminate","timeout"]),isVideo:u.boolean(),isGroup:u.boolean()});var Te=class{collect(e,t,n){let o=t.max??1/0;if(o<=0){n([]);return}let s=i.collectors.get(e);s&&(clearTimeout(s.timeoutId),s.callback(s.messages),i.collectors.delete(e));let r=setTimeout(()=>{let c=i.collectors.get(e);c&&(c.callback(c.messages),i.collectors.delete(e));},t.timeout);i.collectors.set(e,{messages:[],max:o,filter:t.filter,callback:n,timeoutId:r});}push(e){let t=i.collectors.get(e.channelId);return !t||t.filter&&!t.filter(e)?false:(t.messages.push(e),t.messages.length>=t.max&&(clearTimeout(t.timeoutId),t.callback(t.messages),i.collectors.delete(e.channelId)),true)}has(e){return i.collectors.has(e)}cancel(e){let t=i.collectors.get(e);return t?(clearTimeout(t.timeoutId),t.callback(t.messages),i.collectors.delete(e),t.messages):[]}};var Ws={checkIntervalMs:6e4,staleThresholdMs:12e4,cooldownMs:6e4,maxRetries:3},Ce=class{constructor(e,t={}){this.client=e;this.options={...Ws,...t};}lastActivityTime=Date.now();lastRecoveryTime=0;checkInterval=null;cleanupInterval=null;isRecovering=false;retryCount=0;options;start(){this.stop(),this.lastActivityTime=Date.now(),this.setupActivityListeners(),this.checkInterval=setInterval(()=>this.check(),this.options.checkIntervalMs),this.cleanupInterval=setInterval(()=>this.client.cleanupMessages(this.client.options.cleanupDays),3600*1e3),this.client.cleanupMessages(this.client.options.cleanupDays),i.spinner.success(" Health manager monitoring started");}stop(){this.checkInterval&&(clearInterval(this.checkInterval),this.checkInterval=null),this.cleanupInterval&&(clearInterval(this.cleanupInterval),this.cleanupInterval=null);}touch(){this.lastActivityTime=Date.now(),this.retryCount=0;}setupActivityListeners(){let e=this.client.socket;if(!e?.ev)return;let t=["messages.upsert","message-receipt.update","presence.update","chats.update","connection.update"];for(let n of t)e.ev.on(n,()=>this.touch());}async check(){if(this.isRecovering)return;let t=Date.now()-this.lastActivityTime;t>this.options.staleThresholdMs&&(i.spinner.warn(` Connection stale for ${Math.round(t/1e3)}s. Triggering recovery...`),await this.recover());}isInCooldown(){return Date.now()-this.lastRecoveryTime<this.options.cooldownMs}async recover(){if(!this.isRecovering){if(this.isInCooldown()){i.spinner.warn(" Recovery in cooldown, skipping...");return}if(this.retryCount>=this.options.maxRetries){i.spinner.error(` Max health recovery retries (${this.options.maxRetries}) reached.`);return}this.isRecovering=true,this.lastRecoveryTime=Date.now(),this.retryCount++;try{i.spinner.warn(` Health recovery attempt ${this.retryCount}/${this.options.maxRetries}...`);let e=this.client.socket;if(e?.ws?.readyState===1)try{await e.fetchStatus(e.user?.id||""),this.touch(),i.spinner.success(" Health check passed, session is alive");return}catch{i.spinner.warn(" Health check failed, session unresponsive");}await re(this.client.options.session),i.spinner.warn(" Re-initializing client connection..."),await this.client.initialize(),this.touch(),i.spinner.success(" Health recovery successful");}catch(e){i.spinner.error(` Health recovery failed: ${e instanceof Error?e.message:String(e)}`);}finally{this.isRecovering=false;}}}};var Ae=class{constructor(e){this.client=e;this.initialize();}logsInitialized=false;logsDisplayed=false;isReady=false;getRoomColor(e){return e?.isNewsletter?"blue":e?.isGroup?e?.isGroup?"lime":"dimgray":"orange"}initialize(){if(!this.client.options.showLogs||this.logsInitialized)return;this.logsInitialized=true;let e=async({status:t})=>{t==="open"&&(this.isReady=true,this.logsDisplayed||setTimeout(()=>{this.displayIndicator();},500));};i.events.on("connection",e);}displayIndicator(){this.logsDisplayed||(this.logsDisplayed=true,console.log(),i.spinner.info("Logs Indicator:"),console.log(M(" \u2022","orange")+" Private Chat"),console.log(M(" \u2022","lime")+" Group Chat"),console.log(M(" \u2022","blue")+" Newsletter Chat"),console.log());}message(e){if(!this.isReady)return;let t=w(this.getRoomColor(e)),n=e?.text?.toLowerCase()?.match("zaileys"),o=M(`[${new Date(e?.timestamp).toTimeString().split(" ")[0]}]`,"dimgray"),s=M(`${e?.roomName}`,t),r=e?.text?.slice(0,300)||"",c=r?.length>=300?"...":"",l=`${o} \u2192 ${s}
7
+ `;e?.isNewsletter?l+=`${M("[room]","dimgray")} \u2192 ${M(`${e?.roomName} (${D(e?.roomId)})`,t)}
8
+ `:l+=`${M("[sender]","dimgray")} \u2192 ${M(`${e?.senderName} (${D(e?.senderId)})`,t)}
9
+ `,l+=`${M(`[${e?.chatType||"unknown"}]`,"dimgray")} \u2192 ${M(r+c,n?["#ff5f6d","#ffc371"]:"brown")}
10
+ `,l+="\u2014",console.log(l);}call(e){if(!i.get("logs")?.ready)return;let t=w(this.getRoomColor(e)),n=M(`[${new Date(e?.date).toTimeString().split(" ")[0]}]`,"dimgray"),o=M(`${e?.roomName}`,t),s=`${n} \u2192 ${o}
11
+ `;s+=`${M("[caller]","dimgray")} \u2192 ${M(`${e?.callerName} (${D(e?.callerId)})`,t)}
12
+ `,s+=`${M(`[${e?.status}]`,"dimgray")} \u2192 ${M(e?.isVideo?"Video Call":"Voice Call","brown")}
13
+ `,s+="\u2014",console.log(s);}};var Ie=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,n=async o=>{if(o<=t)throw "next() called multiple times";t=o;let s=this.stack[o];if(s)try{await s(e,()=>n(o+1));}catch(r){throw console.error("Middleware error:",r),r}};await n(0);}};var Re=class{plugins=[];pluginsDir;constructor(e=je.join(process.cwd(),"plugins")){this.pluginsDir=e;}getAllFiles(e,t=[]){if(!$.existsSync(e))return t;let n=$.readdirSync(e);for(let o of n){let s=je.join(e,o);$.statSync(s).isDirectory()?this.getAllFiles(s,t):(o.endsWith(".ts")||o.endsWith(".js"))&&!o.endsWith(".d.ts")&&t.push(s);}return t}async load(){if(!$.existsSync(this.pluginsDir))return;let e=this.getAllFiles(this.pluginsDir);for(let t of e)try{let o=(await import(pathToFileURL(t).href)).default;o?.default&&(o=o.default),o?.handler&&o?.config&&this.plugins.push(o);}catch{}}async execute(e,t){let n=t.messages.text||"";for(let o of this.plugins)try{this.match(n,o.config.matcher)&&await o.handler(e,t);}catch{}}match(e,t){return t.some(n=>e===n||e.startsWith(n+" "))}getLoadedPlugins(){return this.plugins}getPluginsInfo(){return this.plugins.map(e=>({matcher:e.config.matcher,metadata:e.config.metadata}))}async reload(){this.plugins=[],await this.load();}},Ri=(a,e)=>({handler:a,config:e});var Ee=class{classInjection(e,t){let n=t.length;return new Proxy(e,{get(o,s,r){if(s in o){let c=Reflect.get(o,s,r);return typeof c=="function"?c.bind(o):c}for(let c=0;c<n;c++){let l=t[c];if(s in l){let p=Reflect.get(l,s,r);return typeof p=="function"?p.bind(l):p}}},set(o,s,r,c){if(s in o)return Reflect.set(o,s,r,c);for(let l=0;l<n;l++){let p=t[l];if(s in p)return Reflect.set(p,s,r,c)}return Reflect.set(o,s,r,c)},has(o,s){if(s in e)return true;for(let r=0;r<n;r++)if(s in t[r])return true;return false},ownKeys(){let o=[];for(let s of Reflect.ownKeys(e))o.push(s);for(let s=0;s<n;s++)for(let r of Reflect.ownKeys(t[s]))o.includes(r)||o.push(r);return o},getOwnPropertyDescriptor(o,s){let r=Object.getOwnPropertyDescriptor(e,s);if(r)return r;for(let c=0;c<n;c++)if(r=Object.getOwnPropertyDescriptor(t[c],s),r)return r}})}};var Wt=class{constructor(e){this.options=e;this.options=te(Ct,e);let t=new Ee().classInjection(this,[new be(this),new Me(this),new Se(this),new xe(this),new ve(this)]);return this._ready=this.initialize(t),t}listener;_ready;health;logs;collector=new Te;middleware=new Ie;plugins=new Re;async initialize(e){await bt(),await mt(this.options.disableFFmpeg),await ot(this),await this.plugins.load(),this.listener=new we(e||this),this.logs||(this.logs=new Ae(this)),this.health&&this.health.stop(),this.health=new Ce(e||this),this.health.start();}ready(){return this._ready}db(e){return i.db(this.options.session,e)}on(e,t){i.events.on(e,t);}use(e){return this.middleware.use(e),this}get socket(){return i.get("socket")}async getRoomName(e){let t=i.get("socket"),n=e.endsWith("@g.us"),o=null;if(n){let s=i.groupCache.get(e);if(s)o=s.subject;else {let r=await t.groupMetadata(e);r&&(i.groupCache.set(e,r),o=r.subject);}}return P(o)}async getLabelName(e){let t=await this.db("messages").get(e),n=N(t,["message.protocolMessage.memberLabel"]);return P(n?.label)||null}async cleanupMessages(e=7){let t=Date.now()-e*24*60*60*1e3,n=await this.db("messages").all(),o=0;for(let[s]of n){let r=await this.db("messages").get(s);if(!Array.isArray(r))continue;let c=r.filter(l=>Number(l.messageTimestamp)*1e3<t?(o++,false):true);c.length!==r.length&&await this.db("messages").set(s,c);}o>0&&this.options.showLogs&&i.spinner.info(` Cleaned up ${o} old messages`);}};
14
14
  /*
15
15
  * Copyright (c) 2025 zaadevofc.
16
16
  * All rights reserved.
@@ -18,7 +18,7 @@ by ${e} \xB7 v${a}`,r=`${n?"Already using latest version!":`Update available! (v
18
18
  * See LICENSE file for details.
19
19
 
20
20
  * Author: zaadevofc
21
- * Last build time: 12/19/2025 4:42:42 PM
21
+ * Last build time: 12/19/2025 8:42:35 PM
22
22
  *
23
23
  * Repository: git+https://github.com/zeative/zaileys.git
24
- */export{ce as AudioProcessor,Et as BaseMessagesType,is as ButtonInteractiveCallType,rs as ButtonInteractiveCopyType,ns as ButtonInteractiveReplyType,as as ButtonInteractiveSingleSelectType,cs as ButtonInteractiveType,os as ButtonInteractiveUrlType,ls as ButtonSimpleType,xt as ButtonType,us as CitationType,Pt as Client,fs as ClientAuthPairingType,gs as ClientAuthQRType,St as ClientBaseType,Tt as ClientOptionsType,Rs as DEVICE_ENUM_TYPES,pe as DocumentProcessor,ar as EventEnumType,ms as FakeReplyType,z as ImageProcessor,ps as LimiterType,oi as ListenerCallsType,Hr as ListenerConnectionType,ei as ListenerMessagesType,Es as MESSAGE_ENUM_TYPES,X as MediaProcessor,Re as Plugins,ds as StickerMetadataType,le as StickerProcessor,qe as StickerShapeType,D as VideoProcessor,W as cleanJid,ut as cleanMediaObject,st as cleanupSocket,mt as configureFFmpeg,Ii as definePlugins,$e as extractJids,lt as extractUrls,H as findGlobalWord,Rn as findNestedByKeys,j as generateId,ie as getDeepContent,nt as getExistingSocket,it as getLatestLibVersion,Ue as getMediaThumbnail,pt as getUsersMentions,Zn as getVideoDuration,Hn as getVideoThumbnail,dt as getWaAudio,yt as getWaDocument,ft as getWaImage,gt as getWaSticker,k as ignoreLint,v as logColor,En as modifyFn,E as normalizeText,On as numbersToJids,O as pickKeysFromArray,In as randomize,ot as registerAuthCreds,at as removeAuthCreds,re as repairSessionKeys,An as shuffleString,ue as toBuffer,Fe as toJson,K as toString,Xe as useAuthState};
24
+ */export{ce as AudioProcessor,Pt as BaseMessagesType,as as ButtonInteractiveCallType,is as ButtonInteractiveCopyType,os as ButtonInteractiveReplyType,cs as ButtonInteractiveSingleSelectType,ls as ButtonInteractiveType,rs as ButtonInteractiveUrlType,ps as ButtonSimpleType,St as ButtonType,ms as CitationType,Wt as Client,gs as ClientAuthPairingType,ys as ClientAuthQRType,Tt as ClientBaseType,Ct as ClientOptionsType,Es as DEVICE_ENUM_TYPES,pe as DocumentProcessor,cr as EventEnumType,ds as FakeReplyType,V as ImageProcessor,us as LimiterType,ri as ListenerCallsType,Zr as ListenerConnectionType,ti as ListenerMessagesType,Ps as MESSAGE_ENUM_TYPES,ee as MediaProcessor,Re as Plugins,fs as StickerMetadataType,le as StickerProcessor,Ve as StickerShapeType,E as VideoProcessor,D as cleanJid,ut as cleanMediaObject,st as cleanupSocket,mt as configureFFmpeg,Ri as definePlugins,$e as extractJids,lt as extractUrls,Q as findGlobalWord,En as findNestedByKeys,U as generateId,ie as getDeepContent,nt as getExistingSocket,it as getLatestLibVersion,Ue as getMediaThumbnail,pt as getUsersMentions,Qn as getVideoDuration,Zn as getVideoThumbnail,dt as getWaAudio,ht as getWaDocument,ft as getWaImage,yt as getWaSticker,gt as getWaVideo,w as ignoreLint,M as logColor,Pn as modifyFn,P as normalizeText,Fn as numbersToJids,N as pickKeysFromArray,Rn as randomize,ot as registerAuthCreds,at as removeAuthCreds,re as repairSessionKeys,In as shuffleString,ue as toBuffer,Fe as toJson,Z as toString,Xe as useAuthState};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "zaileys",
3
3
  "description": "Zaileys - Simplified WhatsApp Node.js TypeScript/JavaScript API",
4
- "version": "2.1.6",
4
+ "version": "2.1.8",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.mjs",