zaileys
Version:
Zaileys - Simplified WhatsApp Node.js TypeScript/JavaScript API
6 lines • 57.8 kB
JavaScript
import Ft,{initAuthCreds,proto,fetchLatestBaileysVersion,URL_REGEX,jidNormalizedUser,extractMessageContent,getContentType,makeCacheableSignalKeyStore,Browsers,delay,DisconnectReason,getDevice,downloadMediaMessage,prepareWAMessageMedia,generateWAMessageFromContent,generateMessageIDV2,isJidGroup,BufferJSON}from'baileys';import*as N from'radashi';import Rt from'@seald-io/nedb';import {Mutex}from'async-mutex';import {LRUCache}from'lru-cache';import {createSpinner}from'nanospinner';import Nt from'pino';import {EventEmitter}from'events';import {initializeFFmpeg,Media}from'@zaileys/media-process';export*from'@zaileys/media-process';import Ut from'crypto';import*as a from'valibot';import st,{cristal}from'gradient-string';import Jt from'fs/promises';import Ht from'figlet';import Qt from'qrcode-terminal';import*as V from'fs';import*as W from'path';import {pathToFileURL}from'url';var ie=class{db;mutex=new Mutex;encoder;constructor(e,t){this.encoder=t?.encoder,this.db=new Rt({filename:e,autoload:true,corruptAlertThreshold:.2,...t});}decode(e){if(!this.encoder||e===void 0||e===null)return e;if(typeof e=="string")return this.encoder.decode(e);try{return this.encoder.decode(JSON.stringify(e))}catch{return e}}encode(e){return !this.encoder||e===void 0||e===null?e:this.encoder.encode(e)}async get(e){let t=await this.db.findOneAsync({_id:e});return t?this.decode(t.value):void 0}async set(e,t){let n=this.encode(t);await this.mutex.runExclusive(async()=>{await this.db.updateAsync({_id:e},{_id:e,value:n},{upsert:true});});}async del(e){await this.mutex.runExclusive(async()=>{await this.db.removeAsync({_id:e},{});});}async clear(){await this.mutex.runExclusive(async()=>{await this.db.removeAsync({},{multi:true});});}async keys(e){let t=e?{_id:new RegExp("^"+this.escapeRegExp(e))}:{};return (await this.db.findAsync(t)).map(o=>o._id)}async getMany(e){let t=await this.db.findAsync({_id:{$in:e}}),n={};for(let o of t)n[o._id]=this.decode(o.value);return n}async setMany(e){let t=Object.entries(e);await this.mutex.runExclusive(async()=>{await Promise.all(t.map(([n,o])=>this.db.updateAsync({_id:n},{_id:n,value:this.encode(o)},{upsert:true})));});}async compact(){await this.mutex.runExclusive(async()=>{await this.db.compactDatafileAsync();});}async close(){await this.mutex.runExclusive(async()=>{});}escapeRegExp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}};var Ae={encode:i=>JSON.stringify(i,BufferJSON.replacer),decode:i=>JSON.parse(i,BufferJSON.reviver)},Ce=new Map,Pe=(i,e)=>(Ce.has(i)||Ce.set(i,new ie(i,e)),Ce.get(i)),Ge=i=>Pe(`.session/${i}/auth/creds`,{compression:false,encoder:Ae}),re=i=>Pe(`.session/${i}/auth/keys`,{compression:false,encoder:Ae}),Ve=(i,e)=>Pe(`.session/${i}/store/${e}`,{compression:true,encoder:Ae});var Re=class{cache;pendingPromises=new Map;namespace;constructor(e,t){this.namespace=e,this.cache=new LRUCache({max:t?.max??500,ttl:t?.ttl});}key(e){return `${this.namespace}:${e}`}set(e,t){this.cache.set(this.key(e),t);}get(e){return this.cache.get(this.key(e))}has(e){return this.cache.has(this.key(e))}delete(e){return this.cache.delete(this.key(e))}getOrSet(e,t){if(this.has(e))return this.get(e);let n=t();return this.set(e,n),n}async getOrCreate(e,t){if(this.has(e))return this.get(e);let n=this.key(e);if(this.pendingPromises.has(n))return this.pendingPromises.get(n);let o=(async()=>{try{let s=await t();return this.set(e,s),s}finally{this.pendingPromises.delete(n);}})();return this.pendingPromises.set(n,o),o}clear(){this.cache.clear();}keys(){return Array.from(this.cache.keys()).filter(e=>e.startsWith(`${this.namespace}:`)).map(e=>e.slice(this.namespace.length+1))}getAll(){let e={};for(let t of this.keys())e[t]=this.get(t);return e}get size(){return this.keys().length}},Ie=class{namespaces=new Map;spinner=createSpinner("",{color:"green"});logger=Nt({level:"silent",enabled:false});events=new EventEmitter;ns(e,t){return this.namespaces.has(e)||this.namespaces.set(e,new Re(e,t)),this.namespaces.get(e)}drop(e){let t=this.namespaces.get(e);return t?(t.clear(),this.namespaces.delete(e),true):false}snapshot(){let e={};for(let[t,n]of this.namespaces)e[t]=n.getAll();return e}get namespaceNames(){return Array.from(this.namespaces.keys())}},f=new Ie;var B=f.ns("context",{max:500}),Je=f.ns("cache",{max:2e3,ttl:1e3*60*5}),u=f.ns("center",{max:500}),Oe=f.ns("rate",{max:5e3,ttl:1e3*10}),E=f.ns("group",{max:500,ttl:1e3*60*5}),He=f.ns("msg",{max:1e3});var Qe=async i=>{f.spinner.start(" Initializing auth state...");let e=Ge(i),t=re(i),n=await e.get("creds"),o=n||initAuthCreds();return n?f.spinner.success(" Auth credentials loaded successfully"):f.spinner.success(" Initialized new auth session"),{state:{creds:o,keys:{get:async(s,r)=>{let m={};return await Promise.all(r.map(async c=>{let g=`${s}:${c}`,b=await t.get(g);s==="app-state-sync-key"&&b&&(b=proto.Message.AppStateSyncKeyData.fromObject(b)),m[c]=b;})),m},set:async s=>{let r=[];for(let m in s)for(let c in s[m]){let g=s[m][c],b=`${m}:${c}`;r.push({key:b,value:g});}for(let m of N.cluster(r,500)){let c={},g=[];m.forEach(({key:b,value:I})=>{I?c[b]=I:g.push(b);}),Object.keys(c).length>0&&await t.setMany(c),g.length>0&&await Promise.all(g.map(b=>t.del(b)));}}}},saveCreds:async()=>{await e.set("creds",o);}}};var Y=class{constructor(e){this.cache=e;}get(e){return this.cache.get(e)}set(e,t){this.cache.set(e,t);}del(e){this.cache.delete(e);}flushAll(){this.cache.clear();}};var Ye=(i,e)=>({logger:i.health.logger,printQRInTerminal:false,enableRecentMessageCache:true,emitOwnEvents:true,keepAliveIntervalMs:3e4,browser:Browsers.macOS("Desktop"),markOnlineOnConnect:i.options.autoOnline,syncFullHistory:i.options.syncFullHistory,msgRetryCounterCache:new Y(He),mediaCache:new Y(Je),auth:{creds:e.creds,keys:makeCacheableSignalKeyStore(e.keys,f.logger)},cachedGroupMetadata:async t=>E.get(t),shouldIgnoreJid:()=>false,shouldSyncHistoryMessage:()=>i.options.syncFullHistory,patchMessageBeforeSending:t=>t,getMessage:async t=>{if(!t?.remoteJid||!t?.id)return proto.Message.fromObject({});let n=await i.db("messages").get(t.id);return proto.Message.fromObject(n||{})}});var Xe=async i=>{let e=i.options.session||"zaileys",{state:t,saveCreds:n}=await Qe(e),{version:o}=await fetchLatestBaileysVersion(),s=Ye(i,t),r=Ft({...s,version:o});r.ev.on("creds.update",n),u.set("socket",r);};function et(i,e){let t=e.length;return new Proxy(i,{get(n,o,s){if(o in n){let r=Reflect.get(n,o,s);return typeof r=="function"?r.bind(s):r}for(let r=0;r<t;r++){let m=e[r];if(o in m){let c=Reflect.get(m,o,m);return typeof c=="function"?c.bind(m):c}}},set(n,o,s,r){if(o in n)return Reflect.set(n,o,s,r);for(let m=0;m<t;m++){let c=e[m];if(o in c)return Reflect.set(c,o,s,c)}return Reflect.set(n,o,s,r)},has(n,o){if(o in i)return true;for(let s=0;s<t;s++)if(o in e[s])return true;return false},ownKeys(){let n=new Set(Reflect.ownKeys(i)),o=[...n];for(let s=0;s<t;s++)for(let r of Reflect.ownKeys(e[s]))n.has(r)||(n.add(r),o.push(r));return o},getOwnPropertyDescriptor(n,o){let s=Object.getOwnPropertyDescriptor(i,o);if(s)return s;for(let r=0;r<t;r++)if(s=Object.getOwnPropertyDescriptor(e[r],o),s)return {...s,configurable:true}}})}var ae=class{constructor(e){this.client=e;}interval=null;start(){let e=this.client.options.autoCleanUp;e?.enabled&&(this.interval=setInterval(()=>{this.run();},e.intervalMs),this.run());}stop(){this.interval&&(clearInterval(this.interval),this.interval=null);}async run(){let e=this.client.options.autoCleanUp;if(!e?.enabled)return;let t=Date.now()-e.maxAgeMs;for(let n of e.scopes)try{let o=this.client.db(n),s=await o.keys(),r=[];for(let m of s){let c=await o.get(m);c&&c.timestamp!==void 0&&c.timestamp<t&&r.push(m);}if(r.length>0){for(let m of N.cluster(r,500))await Promise.all(m.map(c=>o.del(c)));f.spinner.info(`[CleanUpManager] Cleaned up ${r.length} items from ${n}`);}}catch{}}};var C={CRITICAL:20,HIGH:10,NORMAL:0,LOW:-10},Ee=class{concurrency;timeout;onError;queue;running;completed;failed;isClosing;closeResolve;_idleResolvers=[];constructor(e){this.concurrency=e?.concurrency||20,this.timeout=e?.timeout||3e4,this.onError=e?.onError||this._defaultErrorHandler,this.queue=[],this.running=new Set,this.completed=0,this.failed=0,this.isClosing=false,this.closeResolve=null;}add(e,t){if(this.isClosing)throw new Error("Queue is closing, cannot add new tasks");let n={id:this._generateId(),fn:e,priority:t?.priority||0,timeout:t?.timeout||this.timeout,retries:0,maxRetries:t?.maxRetries||0,createdAt:Date.now()},o=this.queue.findIndex(s=>s.priority<n.priority);return o===-1?this.queue.push(n):this.queue.splice(o,0,n),this._process(),n.id}addBulk(e){return e.map(({fn:t,options:n})=>this.add(t,n))}async _process(){for(;this.running.size<this.concurrency&&this.queue.length>0;){let e=this.queue.shift();this.running.add(e),this._executeTask(e);}this.isClosing&&this.running.size===0&&this.queue.length===0&&this.closeResolve?.(),this.isIdle()&&(this._idleResolvers.forEach(e=>e()),this._idleResolvers=[]);}async _executeTask(e){try{await this._withTimeout(e.fn(),e.timeout),this.completed++;}catch(t){if(e.retries<e.maxRetries){e.retries++;let n=Math.min(500*2**e.retries,3e4);setTimeout(()=>{this.isClosing||(this.queue.unshift(e),this._process());},n);}else this.failed++,this.onError(t,e);}finally{this.running.delete(e),this._process();}}_withTimeout(e,t){let n,o=new Promise((s,r)=>{n=setTimeout(()=>r(new Error("Task timeout")),t);});return Promise.race([e,o]).finally(()=>clearTimeout(n))}async close(e=0){if(this.isClosing=true,this.running.size===0&&this.queue.length===0)return;let t=new Promise(n=>{this.closeResolve=n;});if(e>0){let n=new Promise(o=>setTimeout(o,e));await Promise.race([t,n]);}else await t;}forceClose(){this.queue=[],this.running.clear(),this.isClosing=true,this.closeResolve?.();}getStats(){return {queued:this.queue.length,running:this.running.size,completed:this.completed,failed:this.failed,total:this.completed+this.failed}}isIdle(){return this.queue.length===0&&this.running.size===0}async waitUntilIdle(){if(!this.isIdle())return new Promise(e=>{this._idleResolvers.push(e);})}_defaultErrorHandler(e,t){console.error(`[FireForget] Task ${t.id} failed:`,e.message);}_generateId(){return Ut.randomUUID()}},S=new Ee;var ce=class{constructor(e){this.client=e;this.keysDb=re(e.options.session);}keysDb;async repair(e){if(e)try{let t=this.client.socket;t&&t.authState&&(await t.authState.keys.set({session:{[e]:null},"sender-key":{[e]:null}}),f.spinner.warn(` [HealthManager] Repaired session for ${e} due to Bad MAC by clearing auth cache`));}catch(t){this.logger.error({err:t},"Failed to repair session");}}get logger(){return Nt({level:"silent"},{write:e=>{try{let t=JSON.parse(e),n=t.msg||"",o=["Bad MAC","Session error:","Closing open session in favor of incoming prekey bundle","Error: Bad MAC"];if(n.includes("Bad MAC")){let s=t.jid||t.remoteJid;s&&this.repair(s);}o.some(s=>n.includes(s))||t.level>=50&&t.err&&console.error(t.err);}catch{}}})}};var X=(i,e)=>{let t=a.safeParse(i,e);if(t.issues){let n=[],o=r=>{for(let m of r)if(m.issues&&m.issues.length>0)o(m.issues);else {let c=m.path?.map(g=>g.key).join(".")||"root";n.push(`${c}: ${m.message}`);}};o(t.issues);let s=Array.from(new Set(n));throw new Error(`Validation Error:
- ${s.join(`
- `)}`)}return t.output};var k=(i,e="lime")=>Array.isArray(e)?st(e)(i):st([e,e])(i),Ne=i=>{try{return JSON.parse(i)}catch{return N.tryit(()=>JSON.parse(JSON.stringify(i)||"{}"))()[1]}},ee=i=>{try{return JSON.stringify(i)}catch{let e=N.tryit(()=>JSON.stringify(Ne(i)||"{}"))();return e[0]?"{}":e[1]}},$s=(i="")=>N.shuffle(i.split("")).join(""),te=(i="",e="")=>i?i.toLowerCase().includes(e.toLowerCase()):null,ot=(i="")=>{if(!i)return [];let e=i.match(URL_REGEX)||[];return Array.isArray(e)?e:[e]},Us=i=>i[Math.floor(Math.random()*i.length)],it=(i,e)=>{if(!(!Array.isArray(i)||i.length===0)&&!(!Array.isArray(e)||e.length===0)){for(let t of i)if(!(!t||typeof t!="object"))for(let n of e){let o=N.get(t,n);if(!N.isEmpty(o)||typeof o=="number"||typeof o=="boolean"){if(typeof o=="string"&&o.trim()==="")continue;return o}}}},Bs=(i,e)=>{let t=Array.isArray(e)?e:[e],n=(r,m)=>Object.entries(m).every(([c,g])=>r?.[c]===g),o=(r,m)=>Object.entries(m).some(([c,g])=>r?.[c]===g),s=r=>Array.isArray(r)?r.find(s)??r:N.isObject(r)?t.find(g=>n(r,g))||t.find(g=>o(r,g))?r:Object.values(r).find(s)??r:null;return s(i)},qs=(i,e,t)=>new Proxy(i,{apply(n,o,s){e?.(s);let r=Reflect.apply(n,o,s);return t?t(r,s):r}}),rt=i=>i.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");var We=i=>{let e;Array.isArray(i)?e=i.join("|"):typeof i=="string"?e=i:e=String(i);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()},ct=(i="")=>{if(!i)return [];let e=new Set;for(let t of i.matchAll(/@(\d+)/g))e.add(t[1]);return Array.from(e)},_e=(i="")=>{if(!i)return [];let e=new Set;for(let t of i.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return [...e].flatMap(t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},le=i=>{let e=i.filter(Boolean).map(o=>jidNormalizedUser(o)),t=e.find(o=>!o.includes("@lid")),n=e.find(o=>o.includes("@lid"));return {id:t||n||null,lid:n||null}},Hs=i=>i?.length?[...i].map(e=>`${e}@s.whatsapp.net`):[],lt=i=>N.omit(i,["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"]),pe=i=>{if(!i)return {leaf:void 0,chain:[]};let e=extractMessageContent(i)||i,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}},q=i=>Number(i?.split("@")[0]);var v=i=>i,pt=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(i){throw i}},De=async i=>{try{let e=`.session/${i}`;await Jt.rm(e,{recursive:!0,force:!0});}catch{f.spinner.error(`Failed to remove auth creds for session "${i}"!`);}},D=(i="")=>{if(!i?.length)return null;let e=i.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,"").normalize("NFKD").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," ").normalize("NFKC").normalize("NFC").replace(/\s+/g," ").trim();return e.length?e:null};var ue=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=u.get("socket");e.ev.on("call",async t=>{for(let n of t){let o=await this.parse(n);o&&(S.add(async()=>{await Promise.all([this.client.middleware.run({calls:o}),this.client.plugins.execute(this.client,{messages:o})]);},{priority:C.NORMAL,timeout:5e3}),f.events.emit("calls",o),this.client.options?.autoRejectCall&&S.add(async()=>e.rejectCall(o.callId,o.callerId),{priority:C.CRITICAL,timeout:3e3}));}});}async parse(e){let t=u.get("socket"),n={};return n.callId=e.id,n.callerId=jidNormalizedUser(e.from),n.roomId=jidNormalizedUser(e.chatId),n.roomName=D(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 dt=i=>{Qt.generate(i,{small:true},e=>{console.log(e);});},mt=async()=>{console.clear(),f.spinner.start(" Checking for updates...");let i="3.3.0",e="zaadevofc",t=await pt(),n=i===t;f.spinner.stop();let o="Zaileys",s=`
by ${e} \xB7 v${i}`,r="\u2014 discord.gg/KBHhTTVUc5",m="\u2014 chat.whatsapp.com/GlQfvc83mSH3F6ov06vuCt",c=`${n?"\u2714 Already using latest version!":`\u2714 Update available! (v${t})`}
`,g=n?"blue":"orange",b=await Ht.text(o),I=cristal(b);console.log(I),console.log(k(s,"dimgray")),console.log(k(r,"purple")),console.log(k(m,"green")),console.log(k(c,g));};var me=class{constructor(e){this.client=e;this.initialize();}async initialize(){f.spinner.start(" Initializing connection...");let e=u.get("socket"),t={},n=async()=>{t.status="reload",f.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},o=async()=>{await delay(3e3),f.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await delay(3e3),await De(this.client.options.session),await n();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){f.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());f.spinner.warn(` Pairing expired at ${cristal(s)}`),f.spinner.warn(` Pairing code: ${r}`),t.code=r;}catch{await o();}}e.ev.on("connection.update",async s=>{let{connection:r,lastDisconnect:m,qr:c}=s;if(t.status=r||"connecting",t.authType=this.client.options.authType,f.spinner.update(" Connection status: "+cristal(t.status)),this.client.options.authType==="qr"&&c){t.authTimeout=Date.now()+6e4;let g=new Date(t.authTimeout).toLocaleTimeString();f.spinner.warn(" Please scan the QR code..."),f.spinner.warn(` Qr code expired at ${cristal(g)}`),dt(c),t.qr=c;return}if(r==="close"){let g=v(m?.error)?.output?.statusCode,b=m?.error?.message||"Unknown Error",I=g??"Internal";if(f.spinner.error(` [${I} - Closed] ${b}`),g===DisconnectReason.loggedOut){this.client.options.deleteSessionOnLogout?(f.spinner.warn(" Session logged out or invalidated. Self-healing..."),await De(this.client.options.session),setTimeout(()=>n(),3e3)):f.spinner.warn(" Session logged out or invalidated. Automatic session deletion is disabled.");return}if(g===405){f.spinner.warn(" Session invalid/stale or used by another device (405)."),f.spinner.warn(" Automatic reconnecting..."),setTimeout(()=>n(),3e3);return}if(g===500){f.spinner.error(" Server error occurred, attempting reconnect..."),setTimeout(()=>n(),3e3);return}typeof g=="number"&&(f.spinner.warn(` Connection marked for reconnect (${g}). Wait a moment...`),setTimeout(()=>n(),3e3));}if(r==="open")if(e.user?.id){let g=jidNormalizedUser(e.user.id).split("@")[0],b=e.user.name||e.user.verifiedName;f.spinner.success(` Connected as ${cristal(b||g)}`);}else f.spinner.success(" Connected!");f.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:s})=>{t.status="syncing",t.syncProgress=s,f.spinner.start(" Syncing messages history (bot is active and responding)..."),s&&f.spinner.update(` Syncing messages history ${s+"%"} (bot is active)`),s==100&&(f.spinner.success(" Syncing completed! All systems ready."),t.syncCompleted=true),f.events.emit("connection",t);});}};var gt={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"},Le={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.maxMessages=this.client.options.limiter?.maxMessages||20;}maxMessages;async isSpam(e){let t=Oe.get(e)||0;return t>=this.maxMessages?true:(Oe.set(e,t+1),false)}};var fe=class{constructor(e){this.client=e;this.limiter=new ge(e),this.maxReplies=this.client.options?.maxReplies??3,this.initialize();}limiter;maxReplies;async initialize(){let e=u.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;let o=u.get("bootTime");for(let s of t)try{if(n==="append"&&o&&Number(s?.messageTimestamp)*1e3<o)continue;let r=await this.parse(s);r&&(S.add(async()=>{await Promise.all([this.client.middleware.run({messages:r}),this.client.plugins.execute(this.client,{messages:r})]);},{priority:C.NORMAL,timeout:5e3}),u.set("message",r),f.events.emit("messages",r),this.client.options.autoRead&&S.add(async()=>e.readMessages([r.message().key]),{priority:C.NORMAL,timeout:5e3}));}catch{}}catch{}});}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=u.get("socket"),s={},r=pe(e.message),m=r.chain.at(-1),c=r.leaf;if(c?.message&&(r=pe(c.message),m=r.chain.at(-1),c=r.leaf),s.uniqueId=null,s.channelId=null,s.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,s.chatType=gt[m],!s.chatType)return;let g=le([o?.user?.id,o?.user?.lid]);s.receiverId=g.id||g.lid||"",s.receiverLid=g.lid||g.id||"",s.receiverName=D(o?.user?.name||o?.user?.verifiedName);let b=le([e?.key?.remoteJid]);s.roomId=b.id,s.roomLid=b.lid;let I=c?.type===0,j=c?.type===1,L=c?.type===2,P=s.roomId?.includes("@newsletter"),O=!!e?.message?.questionMessage,F=e?.key?.fromMe||false;if(F&&this.client.options.ignoreMe&&t!=="replied")return;let H=c?.key?.id;if(I||j||L){if(!H)return;let T=await this.client.db("messages").get(H);if(!T)return;e=T,r=pe(e.message),m=r.chain.at(-1),c=r.leaf;}s.roomName=await this.client.getRoomName(s.roomId);let K=le([e?.key?.participant,e?.key?.remoteJid,e?.key?.participantAlt,e?.key?.remoteJidAlt]);if(s.senderId=K.id,s.senderLid=K.lid,s.senderName=D(e?.pushName||e?.verifiedBizName),s.senderDevice=getDevice(s.chatId||""),s.channelId=We([s.roomId,s.senderId]),s.uniqueId=We([s.channelId,s.chatId]),s.timestamp=Number(e?.messageTimestamp)*1e3,P){let T=await o.newsletterMetadata("jid",s.roomId);s.roomName=v(T.thread_metadata.name)?.text,s.senderId=null,s.senderLid=null;}F&&(s.senderLid=s.receiverLid,s.senderId=s.receiverId,s.senderName=s.receiverName),s.text=c?.text||c?.caption||c?.name||c?.displayName||c?.conversation||c?.contentText||c?.selectedDisplayText||c||null,c?.name=="menu_options"&&(s.text=Ne(c?.paramsJson)?.id),s.text=D(s.text),s.mentions=ct(s.text),s.links=ot(s.text||""),s.isBot=s.chatId.startsWith("BAE5")||s.chatId.startsWith("3EB0"),s.isFromMe=F;let $=this.client.options?.prefix,Q=Array.isArray($)?$:[$];if(s.isPrefix=!!Q.find(T=>s.text?.startsWith(T)),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.text?.trim()&&c?.contextInfo?.mentionedJid?.length&&(s.isHideTags=true),s.isSpam=await this.limiter.isSpam(s.channelId),s.isPrefix&&(s.text=s.text.replace(new RegExp(`^${rt(Q.find(T=>s.text?.startsWith(T))||"")}`),"")),s.isGroup=s.roomId?.includes("@g.us"),s.isNewsletter=P,s.isQuestion=O,s.isStory=s.roomId?.includes("@broadcast"),!s.isGroup&&!s.roomName&&(s.roomName=s.senderName),s.isViewOnce=false,s.isEdited=!!te(ee(r),"editedMessage"),s.isDeleted=I,s.isPinned=j,s.isUnPinned=L,s.isBroadcast=!!e?.broadcast,s.isEphemeral=!!te(ee(c?.contextInfo),"ephemeralSettingTimestamp"),s.isForwarded=!!te(ee(c?.contextInfo),"forwardingScore"),s.citation=null,this.client.options.citation){s.citation=s.citation||{};let T=this.client.options.citation;for(let _ of Object.keys(T)){let U=T[_];s.citation[_]=async()=>{let w=await U();return !![q(s.roomId),q(s.senderLid),q(s.senderId)].some(R=>w.includes(R))};}}s.chatType!=="text"&&(s.media={...lt(c),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 J=c?.contextInfo?.quotedMessage,Me=te(ee(J),"viewOnce"),oe=c?.contextInfo?.stanzaId;if(J&&this.maxReplies){if(this.maxReplies--,!oe)return s;let T=await this.client.db("messages").get(oe),_;Me?_={...T,message:J}:_=T,s.replied=await this.parse(_,"replied"),s.replied&&(s.replied.isViewOnce=true),this.maxReplies=this.client.options?.maxReplies??3;}return t!="replied"&&this.client.logs.message(s),s.injection=B.getAll(),s}};var ye=class{constructor(e){this.client=e;this.connection=new me(e),this.messages=new fe(e),this.calls=new ue(e),this.initialize();}connection;messages;calls;async initialize(){let e=u.get("socket");e.ev.on("groups.update",async([n])=>{S.add(async()=>{let o=await e.groupMetadata(n.id);E.set(n.id,o);},{priority:C.LOW,timeout:1e4});}),e.ev.on("group-participants.update",async n=>{S.add(async()=>{let o=await e.groupMetadata(n.id);E.set(n.id,o);},{priority:C.LOW,timeout:1e4});});let t=async(n,o)=>{for(let r=0;r<n.length;r+=500){let m=n.slice(r,r+500);await Promise.all(m.map(o));}};e?.ev.on("messaging-history.set",async n=>{let{chats:o,contacts:s,messages:r,progress:m}=n;u.set("syncStatus",{isSyncing:(m??0)<100,progress:m??0}),S.add(async()=>{await t(o,c=>this.client.db("chats").set(c.id,c));},{priority:C.LOW,timeout:3e4}),S.add(async()=>{await t(s,c=>this.client.db("contacts").set(c.id,c));},{priority:C.LOW,timeout:3e4}),S.add(async()=>{await t(r,c=>this.client.db("messages").set(c.key.id,c));},{priority:C.LOW,timeout:3e4});}),e?.ev.on("messages.upsert",async({messages:n})=>{S.add(async()=>{await t(n,o=>this.client.db("messages").set(o.key.id,o));},{priority:C.LOW,timeout:3e4});}),e?.ev.on("chats.upsert",async n=>{S.add(async()=>{await t(n,o=>this.client.db("chats").set(o.id,o));},{priority:C.LOW,timeout:3e4});}),e?.ev.on("contacts.upsert",async n=>{S.add(async()=>{await t(n,o=>this.client.db("contacts").set(o.id,o));},{priority:C.LOW,timeout:3e4});});}};var yt=a.object({type:a.literal("quick_reply"),id:a.string(),text:a.string()}),ht=a.object({type:a.literal("cta_url"),url:a.pipe(a.string(),a.url()),text:a.string()}),vt=a.object({type:a.literal("cta_copy"),id:a.string(),copy:a.string(),text:a.string()}),kt=a.object({type:a.literal("cta_call"),text:a.string(),phoneNumber:a.string()}),en=a.object({type:a.literal("single_select"),text:a.string(),section:a.array(a.object({title:a.string(),highlight_label:a.optional(a.string()),rows:a.array(a.object({id:a.string(),title:a.string(),header:a.optional(a.string()),description:a.optional(a.string())}))}))}),tn=a.object({type:a.literal("interactive"),footer:a.optional(a.string()),data:a.array(a.union([yt,ht,vt,kt,en]))}),nn=a.object({type:a.literal("simple"),footer:a.optional(a.string()),data:a.array(a.object({id:a.string(),text:a.string()}))}),sn=a.object({body:a.string(),footer:a.optional(a.string()),header:a.optional(a.object({title:a.optional(a.string()),subtitle:a.optional(a.string()),hasMediaAttachment:a.optional(a.boolean()),image:a.optional(a.string()),video:a.optional(a.string())})),nativeFlow:a.array(a.union([yt,ht,vt,kt]))}),on=a.object({type:a.literal("carousel"),data:a.array(sn)}),wt=a.union([nn,tn,on]);var rn=a.optional(a.object({maxMessages:a.optional(a.number(),20),durationMs:a.optional(a.number(),1e4)})),an=a.optional(a.record(a.string(),a.custom(i=>typeof i=="function"))),cn=a.optional(a.object({provider:a.union([a.picklist(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]),a.number()])})),Fe=a.optional(a.picklist(["default","rounded","circle","oval"]),"default"),ln=a.optional(a.object({packageName:a.optional(a.string()),authorName:a.optional(a.string()),quality:a.optional(a.number()),shape:a.optional(Fe)})),pn=a.optional(a.object({enabled:a.optional(a.boolean(),false),intervalMs:a.optional(a.number(),3600*1e3),maxAgeMs:a.optional(a.number(),1440*60*1e3),scopes:a.optional(a.array(a.string()),["messages"])})),bt=a.object({session:a.optional(a.string(),"zaileys"),prefix:a.optional(a.union([a.string(),a.array(a.string())])),ignoreMe:a.optional(a.boolean(),true),showLogs:a.optional(a.boolean(),true),fancyLogs:a.optional(a.boolean(),false),syncFullHistory:a.optional(a.boolean(),true),disableFFmpeg:a.optional(a.boolean(),false),autoMarkAI:a.optional(a.boolean(),true),autoMentions:a.optional(a.boolean(),true),autoOnline:a.optional(a.boolean(),true),autoRead:a.optional(a.boolean(),true),autoPresence:a.optional(a.boolean(),true),autoRejectCall:a.optional(a.boolean(),true),showSpinner:a.optional(a.boolean(),true),maxReplies:a.optional(a.number(),3),deleteSessionOnLogout:a.optional(a.boolean(),false),pluginsDir:a.optional(a.string(),"plugins"),pluginsHmr:a.optional(a.boolean(),true),autoCleanUp:pn,limiter:rn,citation:an,fakeReply:cn,sticker:ln}),un=a.object({authType:a.literal("pairing"),phoneNumber:a.number()}),dn=a.object({authType:a.literal("qr")}),xt=a.union([a.object({...un.entries,...bt.entries}),a.object({...dn.entries,...bt.entries})]),ri=a.picklist(["connection","messages","calls"]);var ne=a.union([a.pipe(a.string(),a.url()),a.pipe(a.string(),a.base64()),a.custom(i=>i instanceof Buffer)]),St=a.looseObject({text:a.string()}),mn=a.looseObject({image:ne,caption:a.optional(a.string())}),gn=a.looseObject({audio:ne,caption:a.optional(a.string()),ptt:a.optional(a.boolean())}),fn=a.looseObject({video:ne,caption:a.optional(a.string()),ptv:a.optional(a.boolean())}),yn=a.looseObject({sticker:ne,shape:a.optional(Fe),caption:a.optional(a.string())}),hn=a.looseObject({document:ne,caption:a.optional(a.string()),fileName:a.optional(a.string())}),vn=a.looseObject({location:a.optional(a.object({latitude:a.number(),longitude:a.number(),url:a.optional(a.pipe(a.string(),a.url())),title:a.optional(a.string()),footer:a.optional(a.string())}))}),kn=a.looseObject({contacts:a.object({title:a.optional(a.string()),contacts:a.array(a.object({fullname:a.string(),phoneNumber:a.number(),organization:a.optional(a.string())}))})}),wn=a.object({poll:a.object({name:a.string(),answers:a.array(a.string()),isMultiple:a.optional(a.boolean(),false)})}),Tt=a.object({replied:a.optional(a.custom(i=>typeof i=="object"&&i!==null)),isForwardedMany:a.optional(a.boolean()),isViewOnce:a.optional(a.boolean()),banner:a.optional(a.custom(i=>typeof i=="object"&&i!==null)),buttons:a.optional(wt)});a.picklist(["forward","button","edit","delete"]);var bn=a.union([St,mn,gn,fn,yn,hn,vn,kn,wn]),Mt=a.union([a.string(),a.intersect([bn,a.omit(Tt,["buttons"])])]),Ct=a.intersect([St,a.omit(Tt,["banner"])]);var he=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))}))}async build(e,t){let n=v(e).buttons,o=n?.data||[],s=n?.type;if(s==="carousel"){let m=[];for(let c of o){let g={};(c.header?.image||c.header?.video)&&(g=await prepareWAMessageMedia(c.header.image?{image:{url:c.header.image}}:{video:{url:c.header.video}},{upload:t.waUploadToServer})),m.push({body:proto.Message.InteractiveMessage.Body.fromObject({text:c.body}),footer:c.footer?proto.Message.InteractiveMessage.Footer.fromObject({text:c.footer}):void 0,header:proto.Message.InteractiveMessage.Header.fromObject({title:c.header?.title||"",subtitle:c.header?.subtitle||"",hasMediaAttachment:!!(c.header?.image||c.header?.video||c.header?.hasMediaAttachment),...g}),nativeFlowMessage:proto.Message.InteractiveMessage.NativeFlowMessage.fromObject({buttons:this.toNativeInteractive(c.nativeFlow)})});}return {body:proto.Message.InteractiveMessage.Body.fromObject({text:v(e).text}),footer:n.footer?proto.Message.InteractiveMessage.Footer.fromObject({text:n.footer}):void 0,carouselMessage:proto.Message.InteractiveMessage.CarouselMessage.fromObject({cards:m})}}let r=s=="simple"?this.toNativeSimple(o):this.toNativeInteractive(o);return {body:{text:v(e).text},footer:n.footer?{text:n.footer}:void 0,nativeFlowMessage:{buttons:r}}}async send(e,t,n){let o=u.get("socket"),s=o?.authState?.creds?.me?.id||o?.user?.id,r=await this.build(t,o),m=v(t).buttons?.type==="carousel",c=generateWAMessageFromContent(e,m?{viewOnceMessage:{message:{messageContextInfo:{deviceListMetadata:{},deviceListMetadataVersion:2},interactiveMessage:r}}}:{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 ve=class{constructor(e){this.client=e;}async signal(e,t,n,o){n!="delete"&&(n=="button"?t=X(Ct,t):t=X(Mt,t));let s=u.get("socket");if(!s)throw new Error("[Zaileys] Socket is not initialized or has been lost from centerStore. Please ensure Client is properly initialized.");let r={},m={},c=typeof t=="string",g=(w,M)=>typeof w=="object"&&w!==null&&M in w,b=this.client.options?.fakeReply?.provider,I=this.client.options?.autoMentions,j=this.client.options?.autoPresence,L=g(t,"replied"),P=g(t,"banner"),O=g(t,"isViewOnce"),F=n=="button",H=g(t,"image"),K=g(t,"video"),$=g(t,"audio"),Q=g(t,"sticker"),J=g(t,"document"),Me=g(t,"location"),oe=g(t,"contacts"),T=g(t,"poll"),_=H||K||$||Q||J,U=c?t:it([t],["text","caption"]);if(j&&($?await s.sendPresenceUpdate("recording",e):await s.sendPresenceUpdate("composing",e)),I&&(r={...r,mentions:_e(U),contextInfo:{mentionedJid:_e(U)}}),L&&(m.quoted=v(t).replied,b&&(m.quoted.key.remoteJid=Le[b],m.quoted.key.participant=Le[b])),P&&(r={...r,contextInfo:{externalAdReply:v(t).banner}},r.contextInfo.externalAdReply.mediaType=1),O&&(r={...r,viewOnce:v(t)?.isViewOnce}),U&&(r={...r,text:U,caption:U},_&&delete v(r).text),_){if(H){let w=v(t).image;r={...r,image:await new Media(w).image.toJpeg(),jpegThumbnail:await new Media(w).thumbnail.get()};}if(K){let w=v(t)?.ptv,M=v(t).video;r={...r,video:await new Media(M).video.toMp4(),ptv:w,jpegThumbnail:await new Media(M).thumbnail.get()};}if($){let w=v(t)?.ptt,M=v(t).audio;r={...r,audio:await new Media(M).audio.toOpus(),ptt:w,mimetype:w?"audio/ogg; codecs=opus":"audio/mpeg"};}if(Q){let w=v(t)?.shape,M=v(t).sticker,R=w==="rounded"?"default":w,Z={...this.client.options?.sticker,shape:R};r={...r,sticker:await new Media(M).sticker.create(Z)};}if(J){let w=v(t).document,M=await new Media(w).document.create(),R=v(t).fileName||`Document_${M.fileName.slice(-6)}`,Z=R.includes(".")?R.substring(0,R.lastIndexOf(".")):R;r={...r,...M,fileName:`${Z}.${M.ext} - Zaileys`};}}if(Me){let w=v(t).location;r={...r,location:{degreesLatitude:w.latitude,degreesLongitude:w.longitude,url:w.url,address:w.footer,name:w.title}};}if(oe){let w=v(t)?.contacts,M=w?.contacts.map(R=>{let Z=["BEGIN:VCARD","VERSION:3.0",`FN:${R.fullname}`,`ORG:${R.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${R.phoneNumber}:${R.phoneNumber}`,"END:VCARD"].join(`
`);return {displayName:R.fullname,vcard:Z}});r={...r,contacts:{displayName:w?.title,contacts:M}};}if(T){let w=v(t)?.poll;r={...r,poll:{name:w.name,values:w.answers,selectableCount:w.isMultiple?1:0,toAnnouncementGroup:true}};}return n=="forward"&&(r={...r,contextInfo:{...v(r).contextInfo,isForwarded:true,forwardingScore:v(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)),F?await new he().send(e,t,m):await s.sendMessage(e,v(r),m)}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 Array.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=u.get("socket");if(!n)throw new Error("[Zaileys] Socket is not initialized or has been lost from centerStore. Please ensure Client is properly initialized.");let o={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await n.sendPresenceUpdate(o[t],e)}async reaction(e,t){let n=u.get("socket");if(!n)throw new Error("[Zaileys] Socket is not initialized or has been lost from centerStore. Please ensure Client is properly initialized.");return await n.sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}async memberLabel(e,t){let n=u.get("socket");if(!n)throw new Error("[Zaileys] Socket is not initialized or has been lost from centerStore. Please ensure Client is properly initialized.");return await n.relayMessage(e,{protocolMessage:{type:30,memberLabel:{label:t,labelTimestamp:Date.now()}}},{})}};var $e=class{constructor(e){this.client=e;}async create(e,t){return await u.get("socket").communityCreate(e,t)}async createGroup(e,t,n){return await u.get("socket").communityCreateGroup(e,t,n)}async leave(e){return await u.get("socket").communityLeave(e)}async metadata(e){return await u.get("socket").communityMetadata(e)}async update(e,t,n){let o=u.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=u.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=u.get("socket");switch(t){case "list":return await s.communityRequestParticipantsList(e);case "request-update":return await s.communityRequestParticipantsUpdate(e,o,v(n));case "update":if(!n||!o)throw "Action and participants are required for update";return await s.communityParticipantsUpdate(e,o,v(n));case "all":return await s.communityFetchAllParticipating()}}async invite(e,t,...n){let o=u.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=u.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)}}},ke=class{constructor(e){this.mlient=e;this.community=new $e(e);}community};var Ue=class{constructor(e){this.client=e;}async create(e,t){return await u.get("socket").groupCreate(e,t)}async participant(e,t,n){return await u.get("socket").groupParticipantsUpdate(e,t,n)}async profile(e,t,n){let o=u.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,await new Media(t).toBuffer())}}async setting(e,t){let n=u.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 u.get("socket").groupLeave(e)}async inviteCode(e,t){let n=u.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=u.get("socket"),n=E.get(e);if(n)return n;let o=await t.groupMetadata(e);return o&&E.set(e,o),o}async requestJoin(e,t,n){let o=u.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 u.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await u.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let n=u.get("socket"),o={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await n.groupToggleEphemeral(e,o[t])}},we=class{constructor(e){this.glient=e;this.group=new Ue(e);}group};var Be=class{constructor(e){this.client=e;}async create(e,t){return await u.get("socket").newsletterCreate(e,t)}async action(e,t){let n=u.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=u.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,await new Media(t).toBuffer())}}async metadata(e,t){return await u.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await u.get("socket").newsletterSubscribers(e)}async reaction(e,t,n){return await u.get("socket").newsletterReactMessage(e,t,n)}async fetchMessages(e,t,n,o){let s=u.get("socket"),r=n.getTime()/1e3,m=o.getTime()/1e3;return await s.newsletterFetchMessages(e,t,r,m)}async adminCount(e){return await u.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await u.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await u.get("socket").newsletterDemote(e,t)}async delete(e){return await u.get("socket").newsletterDelete(e)}async removePicture(e){return await u.get("socket").newsletterRemovePicture(e)}},be=class{constructor(e){this.nlient=e;this.newsletter=new Be(e);}newsletter};var qe=class{constructor(e){this.client=e;}async block(e){return await u.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await u.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await u.get("socket").updateLastSeenPrivacy(e)}async online(e){return await u.get("socket").updateOnlinePrivacy(e)}async picture(e){return await u.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await u.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await u.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await u.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=u.get("socket"),n={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(n[e])}async blocklist(){return await u.get("socket").fetchBlocklist()}async getSettings(){return await u.get("socket").fetchPrivacySettings(true)}},xe=class{constructor(e){this.plient=e;this.privacy=new qe(e);}privacy};var Ji=a.object({status:a.picklist(["connecting","open","close","reload","syncing"]),authType:a.picklist(["pairing","qr"]),authTimeout:a.optional(a.number()),syncProgress:a.optional(a.number()),syncCompleted:a.optional(a.boolean(),false),qr:a.optional(a.string()),code:a.optional(a.string())});var Pn=a.picklist(["unknown","android","ios","desktop","web"]),Rn=a.picklist(["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","interactiveResponse","pollCreation","pollUpdate","keepInChat","requestPhoneNumber","scheduledCallCreation","groupMentioned","pinInChat","scheduledCallEdit","ptv","botInvoke","callLog","encComment","bcall","lottieSticker","event","comment","placeholder","encEventUpdate"]),At=a.object({channelId:a.string(),uniqueId:a.string(),chatId:a.string(),chatType:Rn,receiverLid:a.string(),receiverId:a.string(),receiverName:a.string(),roomId:a.string(),roomLid:a.nullable(a.string()),roomName:a.nullable(a.string()),senderLid:a.string(),senderId:a.string(),senderName:a.string(),senderDevice:Pn,timestamp:a.number(),text:a.nullable(a.string()),mentions:a.array(a.string()),links:a.array(a.string()),isBot:a.boolean(),isFromMe:a.boolean(),isPrefix:a.boolean(),isSpam:a.boolean(),isTagMe:a.boolean(),isStatusMention:a.boolean(),isGroupStatusMention:a.boolean(),isHideTags:a.boolean(),isGroup:a.boolean(),isNewsletter:a.boolean(),isQuestion:a.boolean(),isStory:a.boolean(),isViewOnce:a.boolean(),isEdited:a.boolean(),isDeleted:a.boolean(),isPinned:a.boolean(),isUnPinned:a.boolean(),isBroadcast:a.boolean(),isEphemeral:a.boolean(),isForwarded:a.boolean(),citation:a.nullable(a.record(a.string(),a.custom(i=>typeof i=="function"))),media:a.nullable(a.looseObject({buffer:a.custom(i=>typeof i=="function"),stream:a.custom(i=>typeof i=="function")})),injection:a.optional(a.record(a.string(),a.any()),{}),message:a.custom(i=>typeof i=="function")}),Qi=a.object({...At.entries,replied:a.nullable(At)});var Xi=a.object({callId:a.string(),callerId:a.string(),roomId:a.string(),roomName:a.string(),date:a.date(),offline:a.boolean(),status:a.picklist(["accept","offer","reject","ringing","terminate","timeout"]),isVideo:a.boolean(),isGroup:a.boolean()});var Se=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));};f.events.on("connection",e);}displayIndicator(){this.logsDisplayed||(this.logsDisplayed=true,console.log(),f.spinner.info("Logs Indicator:"),console.log(k(" \u2022","orange")+" Private Chat"),console.log(k(" \u2022","lime")+" Group Chat"),console.log(k(" \u2022","blue")+" Newsletter Chat"),console.log());}message(e){if(!this.isReady)return;let t=v(this.getRoomColor(e)),n=e?.text?.toLowerCase()?.match("zaileys"),o=this.client.options?.fancyLogs,s=new Date(e?.timestamp||Date.now()).toTimeString().split(" ")[0],r=k(`[${s}]`,"dimgray"),m=e?.chatType||"text",c=e?.text||"",g=c.replace(/\\n/g," ").slice(0,150),b=c.length>150?g+"...":g,j=n?n?["#ff5f6d","#ffc371"]:"white":"gray",L=k(b||`<${m}>`,j);if(o){let P="",O=[];e?.isNewsletter?(P=`${k("\u{1F4E2} NEWS","blue")} ${k(e?.roomName,t)}`,O.push(`${k("ID:","dimgray")} ${q(e?.roomId)}`)):e?.isGroup?(P=`${k("\u{1F465} GROUP","lime")} ${k(e?.roomName,t)}`,O.push(`${k("By:","dimgray")} ${e?.senderName}`)):P=`${k("\u{1F464} PRIVATE","orange")} ${k(e?.senderName||"Unknown",t)}`,e?.isSpam&&O.push(k("\u26A0\uFE0F Spam","red")),e?.isForwarded&&O.push(k("\u21AA\uFE0F Forwarded","yellow")),e?.isEdited&&O.push(k("\u270F\uFE0F Edited","yellow"));let F=O.length?` ${k("\u2022","dimgray")} ${O.join(` $