zaileys 3.1.1 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';var Lt=require('baileys'),E=require('radashi'),Pt=require('@seald-io/nedb'),asyncMutex=require('async-mutex'),lruCache=require('lru-cache'),nanospinner=require('nanospinner'),Et=require('pino'),events=require('events'),mediaProcess=require('@zaileys/media-process'),$t=require('crypto'),a=require('valibot'),nt=require('gradient-string'),Vt=require('fs/promises'),Jt=require('figlet'),Kt=require('qrcode-terminal'),G=require('fs'),N=require('path'),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 Lt__default=/*#__PURE__*/_interopDefault(Lt);var E__namespace=/*#__PURE__*/_interopNamespace(E);var Pt__default=/*#__PURE__*/_interopDefault(Pt);var Et__default=/*#__PURE__*/_interopDefault(Et);var $t__default=/*#__PURE__*/_interopDefault($t);var a__namespace=/*#__PURE__*/_interopNamespace(a);var nt__default=/*#__PURE__*/_interopDefault(nt);var Vt__default=/*#__PURE__*/_interopDefault(Vt);var Jt__default=/*#__PURE__*/_interopDefault(Jt);var Kt__default=/*#__PURE__*/_interopDefault(Kt);var G__namespace=/*#__PURE__*/_interopNamespace(G);var N__namespace=/*#__PURE__*/_interopNamespace(N);var oe=class{db;mutex=new asyncMutex.Mutex;encoder;constructor(e,t){this.encoder=t?.encoder,this.db=new Pt__default.default({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 Ce={encode:i=>JSON.stringify(i,Lt.BufferJSON.replacer),decode:i=>JSON.parse(i,Lt.BufferJSON.reviver)},Me=new Map,Ae=(i,e)=>(Me.has(i)||Me.set(i,new oe(i,e)),Me.get(i)),ze=i=>Ae(`.session/${i}/auth/creds`,{compression:false,encoder:Ce}),ie=i=>Ae(`.session/${i}/auth/keys`,{compression:false,encoder:Ce}),Ge=(i,e)=>Ae(`.session/${i}/store/${e}`,{compression:true,encoder:Ce});var Pe=class{cache;pendingPromises=new Map;namespace;constructor(e,t){this.namespace=e,this.cache=new lruCache.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}},Re=class{namespaces=new Map;spinner=nanospinner.createSpinner("",{color:"green"});logger=Et__default.default({level:"silent",enabled:false});events=new events.EventEmitter;ns(e,t){return this.namespaces.has(e)||this.namespaces.set(e,new Pe(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 Re;var U=f.ns("context",{max:500}),Ve=f.ns("cache",{max:2e3,ttl:1e3*60*5}),u=f.ns("center",{max:500}),Ie=f.ns("rate",{max:5e3,ttl:1e3*10}),O=f.ns("group",{max:500,ttl:1e3*60*5}),Je=f.ns("msg",{max:1e3});var Ke=async i=>{f.spinner.start(" Initializing auth state...");let e=ze(i),t=ie(i),n=await e.get("creds"),o=n||Lt.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}`,w=await t.get(g);s==="app-state-sync-key"&&w&&(w=Lt.proto.Message.AppStateSyncKeyData.fromObject(w)),m[c]=w;})),m},set:async s=>{let r=[];for(let m in s)for(let c in s[m]){let g=s[m][c],w=`${m}:${c}`;r.push({key:w,value:g});}for(let m of E__namespace.cluster(r,500)){let c={},g=[];m.forEach(({key:w,value:R})=>{R?c[w]=R:g.push(w);}),Object.keys(c).length>0&&await t.setMany(c),g.length>0&&await Promise.all(g.map(w=>t.del(w)));}}}},saveCreds:async()=>{await e.set("creds",o);}}};var Z=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 Ze=(i,e)=>({logger:i.health.logger,printQRInTerminal:false,enableRecentMessageCache:true,emitOwnEvents:true,keepAliveIntervalMs:3e4,browser:Lt.Browsers.macOS("Desktop"),markOnlineOnConnect:i.options.autoOnline,syncFullHistory:i.options.syncFullHistory,msgRetryCounterCache:new Z(Je),mediaCache:new Z(Ve),auth:{creds:e.creds,keys:Lt.makeCacheableSignalKeyStore(e.keys,f.logger)},cachedGroupMetadata:async t=>O.get(t),shouldIgnoreJid:()=>false,shouldSyncHistoryMessage:()=>i.options.syncFullHistory,patchMessageBeforeSending:t=>t,getMessage:async t=>{if(!t?.remoteJid||!t?.id)return Lt.proto.Message.fromObject({});let n=await i.db("messages").get(t.id);return Lt.proto.Message.fromObject(n||{})}});var Ye=async i=>{let e=i.options.session||"zaileys",{state:t,saveCreds:n}=await Ke(e),{version:o}=await Lt.fetchLatestBaileysVersion(),s=Ze(i,t),r=Lt__default.default({...s,version:o});r.ev.on("creds.update",n),u.set("socket",r);};function Xe(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 re=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 E__namespace.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 M={CRITICAL:20,HIGH:10,NORMAL:0,LOW:-10},Oe=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 $t__default.default.randomUUID()}},x=new Oe;var ae=class{constructor(e){this.client=e;this.keysDb=ie(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 Et__default.default({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 Y=(i,e)=>{let t=a__namespace.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:
2
2
  - ${s.join(`
3
- - `)}`)}return t.output};var v=(i,e="lime")=>Array.isArray(e)?nt__default.default(e)(i):nt__default.default([e,e])(i),Ee=i=>{try{return JSON.parse(i)}catch{return E__namespace.tryit(()=>JSON.parse(JSON.stringify(i)||"{}"))()[1]}},X=i=>{try{return JSON.stringify(i)}catch{let e=E__namespace.tryit(()=>JSON.stringify(Ee(i)||"{}"))();return e[0]?"{}":e[1]}},Fs=(i="")=>E__namespace.shuffle(i.split("")).join(""),ee=(i="",e="")=>i?i.toLowerCase().includes(e.toLowerCase()):null,st=(i="")=>{if(!i)return [];let e=i.match(Lt.URL_REGEX)||[];return Array.isArray(e)?e:[e]},$s=i=>i[Math.floor(Math.random()*i.length)],ot=(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=E__namespace.get(t,n);if(!E__namespace.isEmpty(o)||typeof o=="number"||typeof o=="boolean"){if(typeof o=="string"&&o.trim()==="")continue;return o}}}},Us=(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:E__namespace.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)},Bs=(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}}),it=i=>i.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");var Ne=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()},at=(i="")=>{if(!i)return [];let e=new Set;for(let t of i.matchAll(/@(\d+)/g))e.add(t[1]);return Array.from(e)},We=(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`])},ce=i=>{let e=i.filter(Boolean).map(o=>Lt.jidNormalizedUser(o)),t=e.find(o=>!o.includes("@lid")),n=e.find(o=>o.includes("@lid"));return {id:t||n||null,lid:n||null}},Js=i=>i?.length?[...i].map(e=>`${e}@s.whatsapp.net`):[],ct=i=>E__namespace.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"]),le=i=>{if(!i)return {leaf:void 0,chain:[]};let e=Lt.extractMessageContent(i)||i,t=[];for(;e&&typeof e=="object";){let n=Lt.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}},B=i=>Number(i?.split("@")[0]);var h=i=>i,lt=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(i){throw i}},_e=async i=>{try{let e=`.session/${i}`;await Vt__default.default.rm(e,{recursive:!0,force:!0});}catch{f.spinner.error(`Failed to remove auth creds for session "${i}"!`);}},_=(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 pe=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&&(x.add(async()=>{await Promise.all([this.client.middleware.run({calls:o}),this.client.plugins.execute(this.client,{messages:o})]);},{priority:M.NORMAL,timeout:5e3}),f.events.emit("calls",o),this.client.options?.autoRejectCall&&x.add(async()=>e.rejectCall(o.callId,o.callerId),{priority:M.CRITICAL,timeout:3e3}));}});}async parse(e){let t=u.get("socket"),n={};return n.callId=e.id,n.callerId=Lt.jidNormalizedUser(e.from),n.roomId=Lt.jidNormalizedUser(e.chatId),n.roomName=_(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 ut=i=>{Kt__default.default.generate(i,{small:true},e=>{console.log(e);});},dt=async()=>{console.clear(),f.spinner.start(" Checking for updates...");let i="3.1.1",e="zaadevofc",t=await lt(),n=i===t;f.spinner.stop();let o="Zaileys",s=`
3
+ - `)}`)}return t.output};var v=(i,e="lime")=>Array.isArray(e)?nt__default.default(e)(i):nt__default.default([e,e])(i),Ee=i=>{try{return JSON.parse(i)}catch{return E__namespace.tryit(()=>JSON.parse(JSON.stringify(i)||"{}"))()[1]}},X=i=>{try{return JSON.stringify(i)}catch{let e=E__namespace.tryit(()=>JSON.stringify(Ee(i)||"{}"))();return e[0]?"{}":e[1]}},Fs=(i="")=>E__namespace.shuffle(i.split("")).join(""),ee=(i="",e="")=>i?i.toLowerCase().includes(e.toLowerCase()):null,st=(i="")=>{if(!i)return [];let e=i.match(Lt.URL_REGEX)||[];return Array.isArray(e)?e:[e]},$s=i=>i[Math.floor(Math.random()*i.length)],ot=(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=E__namespace.get(t,n);if(!E__namespace.isEmpty(o)||typeof o=="number"||typeof o=="boolean"){if(typeof o=="string"&&o.trim()==="")continue;return o}}}},Us=(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:E__namespace.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)},Bs=(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}}),it=i=>i.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");var Ne=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()},at=(i="")=>{if(!i)return [];let e=new Set;for(let t of i.matchAll(/@(\d+)/g))e.add(t[1]);return Array.from(e)},We=(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`])},ce=i=>{let e=i.filter(Boolean).map(o=>Lt.jidNormalizedUser(o)),t=e.find(o=>!o.includes("@lid")),n=e.find(o=>o.includes("@lid"));return {id:t||n||null,lid:n||null}},Js=i=>i?.length?[...i].map(e=>`${e}@s.whatsapp.net`):[],ct=i=>E__namespace.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"]),le=i=>{if(!i)return {leaf:void 0,chain:[]};let e=Lt.extractMessageContent(i)||i,t=[];for(;e&&typeof e=="object";){let n=Lt.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}},B=i=>Number(i?.split("@")[0]);var h=i=>i,lt=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(i){throw i}},_e=async i=>{try{let e=`.session/${i}`;await Vt__default.default.rm(e,{recursive:!0,force:!0});}catch{f.spinner.error(`Failed to remove auth creds for session "${i}"!`);}},_=(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 pe=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&&(x.add(async()=>{await Promise.all([this.client.middleware.run({calls:o}),this.client.plugins.execute(this.client,{messages:o})]);},{priority:M.NORMAL,timeout:5e3}),f.events.emit("calls",o),this.client.options?.autoRejectCall&&x.add(async()=>e.rejectCall(o.callId,o.callerId),{priority:M.CRITICAL,timeout:3e3}));}});}async parse(e){let t=u.get("socket"),n={};return n.callId=e.id,n.callerId=Lt.jidNormalizedUser(e.from),n.roomId=Lt.jidNormalizedUser(e.chatId),n.roomName=_(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 ut=i=>{Kt__default.default.generate(i,{small:true},e=>{console.log(e);});},dt=async()=>{console.clear(),f.spinner.start(" Checking for updates...");let i="3.2.0",e="zaadevofc",t=await lt(),n=i===t;f.spinner.stop();let o="Zaileys",s=`
4
4
  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})`}
5
5
  `,g=n?"blue":"orange",w=await Jt__default.default.text(o),R=nt.cristal(w);console.log(R),console.log(v(s,"dimgray")),console.log(v(r,"purple")),console.log(v(m,"green")),console.log(v(c,g));};var de=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 Lt.delay(3e3),f.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await Lt.delay(3e3),await _e(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 Lt.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 ${nt.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: "+nt.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 ${nt.cristal(g)}`),ut(c),t.qr=c;return}if(r==="close"){let g=h(m?.error)?.output?.statusCode,w=m?.error?.message||"Unknown Error",R=g??"Internal";if(f.spinner.error(` [${R} - Closed] ${w}`),g===Lt.DisconnectReason.loggedOut){this.client.options.deleteSessionOnLogout?(f.spinner.warn(" Session logged out or invalidated. Self-healing..."),await _e(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=Lt.jidNormalizedUser(e.user.id).split("@")[0],w=e.user.name||e.user.verifiedName;f.spinner.success(` Connected as ${nt.cristal(w||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 mt={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"},je={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 me=class{constructor(e){this.client=e;this.maxMessages=this.client.options.limiter?.maxMessages||20;}maxMessages;async isSpam(e){let t=Ie.get(e)||0;return t>=this.maxMessages?true:(Ie.set(e,t+1),false)}};var ge=class{constructor(e){this.client=e;this.limiter=new me(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&&(x.add(async()=>{await Promise.all([this.client.middleware.run({messages:r}),this.client.plugins.execute(this.client,{messages:r})]);},{priority:M.NORMAL,timeout:5e3}),u.set("message",r),f.events.emit("messages",r),this.client.options.autoRead&&x.add(async()=>e.readMessages([r.message().key]),{priority:M.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=le(e.message),m=r.chain.at(-1),c=r.leaf;if(c?.message&&(r=le(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=mt[m],!s.chatType)return;let g=ce([o?.user?.id,o?.user?.lid]);s.receiverId=g.id||g.lid||"",s.receiverLid=g.lid||g.id||"",s.receiverName=_(o?.user?.name||o?.user?.verifiedName);let w=ce([e?.key?.remoteJid]);s.roomId=w.id,s.roomLid=w.lid;let R=c?.type===0,D=c?.type===1,j=c?.type===2,A=s.roomId?.includes("@newsletter"),I=!!e?.message?.questionMessage,L=e?.key?.fromMe||false;if(L&&this.client.options.ignoreMe&&t!=="replied")return;let J=c?.key?.id;if(R||D||j){if(!J)return;let S=await this.client.db("messages").get(J);if(!S)return;e=S,r=le(e.message),m=r.chain.at(-1),c=r.leaf;}s.roomName=await this.client.getRoomName(s.roomId);let H=ce([e?.key?.participant,e?.key?.remoteJid,e?.key?.participantAlt,e?.key?.remoteJidAlt]);if(s.senderId=H.id,s.senderLid=H.lid,s.senderName=_(e?.pushName||e?.verifiedBizName),s.senderDevice=Lt.getDevice(s.chatId||""),s.channelId=Ne([s.roomId,s.senderId]),s.uniqueId=Ne([s.channelId,s.chatId]),s.timestamp=Number(e?.messageTimestamp)*1e3,A){let S=await o.newsletterMetadata("jid",s.roomId);s.roomName=h(S.thread_metadata.name)?.text,s.senderId=null,s.senderLid=null;}L&&(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=Ee(c?.paramsJson)?.id),s.text=_(s.text),s.mentions=at(s.text),s.links=st(s.text||""),s.isBot=s.chatId.startsWith("BAE5")||s.chatId.startsWith("3EB0"),s.isFromMe=L;let F=this.client.options?.prefix,K=Array.isArray(F)?F:[F];if(s.isPrefix=!!K.find(S=>s.text?.startsWith(S)),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(`^${it(K.find(S=>s.text?.startsWith(S))||"")}`),"")),s.isGroup=s.roomId?.includes("@g.us"),s.isNewsletter=A,s.isQuestion=I,s.isStory=s.roomId?.includes("@broadcast"),!s.isGroup&&!s.roomName&&(s.roomName=s.senderName),s.isViewOnce=false,s.isEdited=!!ee(X(r),"editedMessage"),s.isDeleted=R,s.isPinned=D,s.isUnPinned=j,s.isBroadcast=!!e?.broadcast,s.isEphemeral=!!ee(X(c?.contextInfo),"ephemeralSettingTimestamp"),s.isForwarded=!!ee(X(c?.contextInfo),"forwardingScore"),s.citation=null,this.client.options.citation){s.citation=s.citation||{};let S=this.client.options.citation;for(let W of Object.keys(S)){let $=S[W];s.citation[W]=async()=>{let k=await $();return !![B(s.roomId),B(s.senderLid),B(s.senderId)].some(P=>k.includes(P))};}}s.chatType!=="text"&&(s.media={...ct(c),buffer:()=>Lt.downloadMediaMessage(e,"buffer",{}),stream:()=>Lt.downloadMediaMessage(e,"stream",{})}),s.isStatusMention&&(s.chatType="statusMention"),s.isGroupStatusMention&&(s.chatType="groupStatusMention"),s.message=()=>n,s.replied=null;let V=c?.contextInfo?.quotedMessage,Te=ee(X(V),"viewOnce"),se=c?.contextInfo?.stanzaId;if(V&&this.maxReplies){if(this.maxReplies--,!se)return s;let S=await this.client.db("messages").get(se),W;Te?W={...S,message:V}:W=S,s.replied=await this.parse(W,"replied"),s.replied&&(s.replied.isViewOnce=true),this.maxReplies=this.client.options?.maxReplies??3;}return t!="replied"&&this.client.logs.message(s),s.injection=U.getAll(),s}};var fe=class{constructor(e){this.client=e;this.connection=new de(e),this.messages=new ge(e),this.calls=new pe(e),this.initialize();}connection;messages;calls;async initialize(){let e=u.get("socket");e.ev.on("groups.update",async([n])=>{x.add(async()=>{let o=await e.groupMetadata(n.id);O.set(n.id,o);},{priority:M.LOW,timeout:1e4});}),e.ev.on("group-participants.update",async n=>{x.add(async()=>{let o=await e.groupMetadata(n.id);O.set(n.id,o);},{priority:M.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}),x.add(async()=>{await t(o,c=>this.client.db("chats").set(c.id,c));},{priority:M.LOW,timeout:3e4}),x.add(async()=>{await t(s,c=>this.client.db("contacts").set(c.id,c));},{priority:M.LOW,timeout:3e4}),x.add(async()=>{await t(r,c=>this.client.db("messages").set(c.key.id,c));},{priority:M.LOW,timeout:3e4});}),e?.ev.on("messages.upsert",async({messages:n})=>{x.add(async()=>{await t(n,o=>this.client.db("messages").set(o.key.id,o));},{priority:M.LOW,timeout:3e4});}),e?.ev.on("chats.upsert",async n=>{x.add(async()=>{await t(n,o=>this.client.db("chats").set(o.id,o));},{priority:M.LOW,timeout:3e4});}),e?.ev.on("contacts.upsert",async n=>{x.add(async()=>{await t(n,o=>this.client.db("contacts").set(o.id,o));},{priority:M.LOW,timeout:3e4});});}};var ft=a__namespace.object({type:a__namespace.literal("quick_reply"),id:a__namespace.string(),text:a__namespace.string()}),yt=a__namespace.object({type:a__namespace.literal("cta_url"),url:a__namespace.pipe(a__namespace.string(),a__namespace.url()),text:a__namespace.string()}),ht=a__namespace.object({type:a__namespace.literal("cta_copy"),id:a__namespace.string(),copy:a__namespace.string(),text:a__namespace.string()}),vt=a__namespace.object({type:a__namespace.literal("cta_call"),text:a__namespace.string(),phoneNumber:a__namespace.string()}),Xt=a__namespace.object({type:a__namespace.literal("single_select"),text:a__namespace.string(),section:a__namespace.array(a__namespace.object({title:a__namespace.string(),highlight_label:a__namespace.optional(a__namespace.string()),rows:a__namespace.array(a__namespace.object({id:a__namespace.string(),title:a__namespace.string(),header:a__namespace.optional(a__namespace.string()),description:a__namespace.optional(a__namespace.string())}))}))}),en=a__namespace.object({type:a__namespace.literal("interactive"),footer:a__namespace.optional(a__namespace.string()),data:a__namespace.array(a__namespace.union([ft,yt,ht,vt,Xt]))}),tn=a__namespace.object({type:a__namespace.literal("simple"),footer:a__namespace.optional(a__namespace.string()),data:a__namespace.array(a__namespace.object({id:a__namespace.string(),text:a__namespace.string()}))}),nn=a__namespace.object({body:a__namespace.string(),footer:a__namespace.optional(a__namespace.string()),header:a__namespace.optional(a__namespace.object({title:a__namespace.optional(a__namespace.string()),subtitle:a__namespace.optional(a__namespace.string()),hasMediaAttachment:a__namespace.optional(a__namespace.boolean()),image:a__namespace.optional(a__namespace.string()),video:a__namespace.optional(a__namespace.string())})),nativeFlow:a__namespace.array(a__namespace.union([ft,yt,ht,vt]))}),sn=a__namespace.object({type:a__namespace.literal("carousel"),data:a__namespace.array(nn)}),kt=a__namespace.union([tn,en,sn]);var on=a__namespace.optional(a__namespace.object({maxMessages:a__namespace.optional(a__namespace.number(),20),durationMs:a__namespace.optional(a__namespace.number(),1e4)})),rn=a__namespace.optional(a__namespace.record(a__namespace.string(),a__namespace.custom(i=>typeof i=="function"))),an=a__namespace.optional(a__namespace.object({provider:a__namespace.union([a__namespace.picklist(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]),a__namespace.number()])})),Le=a__namespace.optional(a__namespace.picklist(["default","rounded","circle","oval"]),"default"),cn=a__namespace.optional(a__namespace.object({packageName:a__namespace.optional(a__namespace.string()),authorName:a__namespace.optional(a__namespace.string()),quality:a__namespace.optional(a__namespace.number()),shape:a__namespace.optional(Le)})),ln=a__namespace.optional(a__namespace.object({enabled:a__namespace.optional(a__namespace.boolean(),false),intervalMs:a__namespace.optional(a__namespace.number(),3600*1e3),maxAgeMs:a__namespace.optional(a__namespace.number(),1440*60*1e3),scopes:a__namespace.optional(a__namespace.array(a__namespace.string()),["messages"])})),wt=a__namespace.object({session:a__namespace.optional(a__namespace.string(),"zaileys"),prefix:a__namespace.optional(a__namespace.union([a__namespace.string(),a__namespace.array(a__namespace.string())])),ignoreMe:a__namespace.optional(a__namespace.boolean(),true),showLogs:a__namespace.optional(a__namespace.boolean(),true),fancyLogs:a__namespace.optional(a__namespace.boolean(),false),syncFullHistory:a__namespace.optional(a__namespace.boolean(),true),disableFFmpeg:a__namespace.optional(a__namespace.boolean(),false),autoMarkAI:a__namespace.optional(a__namespace.boolean(),true),autoMentions:a__namespace.optional(a__namespace.boolean(),true),autoOnline:a__namespace.optional(a__namespace.boolean(),true),autoRead:a__namespace.optional(a__namespace.boolean(),true),autoPresence:a__namespace.optional(a__namespace.boolean(),true),autoRejectCall:a__namespace.optional(a__namespace.boolean(),true),showSpinner:a__namespace.optional(a__namespace.boolean(),true),maxReplies:a__namespace.optional(a__namespace.number(),3),deleteSessionOnLogout:a__namespace.optional(a__namespace.boolean(),false),pluginsDir:a__namespace.optional(a__namespace.string(),"plugins"),pluginsHmr:a__namespace.optional(a__namespace.boolean(),true),autoCleanUp:ln,limiter:on,citation:rn,fakeReply:an,sticker:cn}),pn=a__namespace.object({authType:a__namespace.literal("pairing"),phoneNumber:a__namespace.number()}),un=a__namespace.object({authType:a__namespace.literal("qr")}),bt=a__namespace.union([a__namespace.object({...pn.entries,...wt.entries}),a__namespace.object({...un.entries,...wt.entries})]),ii=a__namespace.picklist(["connection","messages","calls"]);var te=a__namespace.union([a__namespace.pipe(a__namespace.string(),a__namespace.url()),a__namespace.pipe(a__namespace.string(),a__namespace.base64()),a__namespace.custom(i=>i instanceof Buffer)]),xt=a__namespace.looseObject({text:a__namespace.string()}),dn=a__namespace.looseObject({image:te,caption:a__namespace.optional(a__namespace.string())}),mn=a__namespace.looseObject({audio:te,caption:a__namespace.optional(a__namespace.string()),ptt:a__namespace.optional(a__namespace.boolean())}),gn=a__namespace.looseObject({video:te,caption:a__namespace.optional(a__namespace.string()),ptv:a__namespace.optional(a__namespace.boolean())}),fn=a__namespace.looseObject({sticker:te,shape:a__namespace.optional(Le),caption:a__namespace.optional(a__namespace.string())}),yn=a__namespace.looseObject({document:te,caption:a__namespace.optional(a__namespace.string()),fileName:a__namespace.optional(a__namespace.string())}),hn=a__namespace.looseObject({location:a__namespace.optional(a__namespace.object({latitude:a__namespace.number(),longitude:a__namespace.number(),url:a__namespace.optional(a__namespace.pipe(a__namespace.string(),a__namespace.url())),title:a__namespace.optional(a__namespace.string()),footer:a__namespace.optional(a__namespace.string())}))}),vn=a__namespace.looseObject({contacts:a__namespace.object({title:a__namespace.optional(a__namespace.string()),contacts:a__namespace.array(a__namespace.object({fullname:a__namespace.string(),phoneNumber:a__namespace.number(),organization:a__namespace.optional(a__namespace.string())}))})}),kn=a__namespace.object({poll:a__namespace.object({name:a__namespace.string(),answers:a__namespace.array(a__namespace.string()),isMultiple:a__namespace.optional(a__namespace.boolean(),false)})}),St=a__namespace.object({replied:a__namespace.optional(a__namespace.custom(i=>typeof i=="object"&&i!==null)),isForwardedMany:a__namespace.optional(a__namespace.boolean()),isViewOnce:a__namespace.optional(a__namespace.boolean()),banner:a__namespace.optional(a__namespace.custom(i=>typeof i=="object"&&i!==null)),buttons:a__namespace.optional(kt)});a__namespace.picklist(["forward","button","edit","delete"]);var wn=a__namespace.union([xt,dn,mn,gn,fn,yn,hn,vn,kn]),Tt=a__namespace.union([a__namespace.string(),a__namespace.intersect([wn,a__namespace.omit(St,["buttons"])])]),Mt=a__namespace.intersect([xt,a__namespace.omit(St,["banner"])]);var ye=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=h(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 Lt.prepareWAMessageMedia(c.header.image?{image:{url:c.header.image}}:{video:{url:c.header.video}},{upload:t.waUploadToServer})),m.push({body:Lt.proto.Message.InteractiveMessage.Body.fromObject({text:c.body}),footer:c.footer?Lt.proto.Message.InteractiveMessage.Footer.fromObject({text:c.footer}):void 0,header:Lt.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:Lt.proto.Message.InteractiveMessage.NativeFlowMessage.fromObject({buttons:this.toNativeInteractive(c.nativeFlow)})});}return {body:Lt.proto.Message.InteractiveMessage.Body.fromObject({text:h(e).text}),footer:n.footer?Lt.proto.Message.InteractiveMessage.Footer.fromObject({text:n.footer}):void 0,carouselMessage:Lt.proto.Message.InteractiveMessage.CarouselMessage.fromObject({cards:m})}}let r=s=="simple"?this.toNativeSimple(o):this.toNativeInteractive(o);return {body:{text:h(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=h(t).buttons?.type==="carousel",c=Lt.generateWAMessageFromContent(e,m?{viewOnceMessage:{message:{messageContextInfo:{deviceListMetadata:{},deviceListMetadataVersion:2},interactiveMessage:r}}}:{interactiveMessage:r},{userJid:s,messageId:Lt.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&&!Lt.isJidGroup(e)&&process.nextTick(()=>o.upsertMessage?.(c,"append")),c}};var he=class{constructor(e){this.client=e;}async signal(e,t,n,o){n!="delete"&&(n=="button"?t=Y(Mt,t):t=Y(Tt,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=(k,T)=>typeof k=="object"&&k!==null&&T in k,w=this.client.options?.fakeReply?.provider,R=this.client.options?.autoMentions,D=this.client.options?.autoPresence,j=g(t,"replied"),A=g(t,"banner"),I=g(t,"isViewOnce"),L=n=="button",J=g(t,"image"),H=g(t,"video"),F=g(t,"audio"),K=g(t,"sticker"),V=g(t,"document"),Te=g(t,"location"),se=g(t,"contacts"),S=g(t,"poll"),W=J||H||F||K||V,$=c?t:ot([t],["text","caption"]);if(D&&(F?await s.sendPresenceUpdate("recording",e):await s.sendPresenceUpdate("composing",e)),R&&(r={...r,mentions:We($),contextInfo:{mentionedJid:We($)}}),j&&(m.quoted=h(t).replied,w&&(m.quoted.key.remoteJid=je[w],m.quoted.key.participant=je[w])),A&&(r={...r,contextInfo:{externalAdReply:h(t).banner}},r.contextInfo.externalAdReply.mediaType=1),I&&(r={...r,viewOnce:h(t)?.isViewOnce}),$&&(r={...r,text:$,caption:$},W&&delete h(r).text),W){if(J){let k=h(t).image;r={...r,image:await new mediaProcess.Media(k).image.toJpeg(),jpegThumbnail:await new mediaProcess.Media(k).thumbnail.get()};}if(H){let k=h(t)?.ptv,T=h(t).video;r={...r,video:await new mediaProcess.Media(T).video.toMp4(),ptv:k,jpegThumbnail:await new mediaProcess.Media(T).thumbnail.get()};}if(F){let k=h(t)?.ptt,T=h(t).audio;r={...r,audio:await new mediaProcess.Media(T).audio.toOpus(),ptt:k,mimetype:k?"audio/ogg; codecs=opus":"audio/mpeg"};}if(K){let k=h(t)?.shape,T=h(t).sticker,P=k==="rounded"?"default":k,Q={...this.client.options?.sticker,shape:P};r={...r,sticker:await new mediaProcess.Media(T).sticker.create(Q)};}if(V){let k=h(t).document,T=await new mediaProcess.Media(k).document.create(),P=h(t).fileName||`Document_${T.fileName.slice(-6)}`,Q=P.includes(".")?P.substring(0,P.lastIndexOf(".")):P;r={...r,...T,fileName:`${Q}.${T.ext} - Zaileys`};}}if(Te){let k=h(t).location;r={...r,location:{degreesLatitude:k.latitude,degreesLongitude:k.longitude,url:k.url,address:k.footer,name:k.title}};}if(se){let k=h(t)?.contacts,T=k?.contacts.map(P=>{let Q=["BEGIN:VCARD","VERSION:3.0",`FN:${P.fullname}`,`ORG:${P.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${P.phoneNumber}:${P.phoneNumber}`,"END:VCARD"].join(`
6
6
  `);return {displayName:P.fullname,vcard:Q}});r={...r,contacts:{displayName:k?.title,contacts:T}};}if(S){let k=h(t)?.poll;r={...r,poll:{name:k.name,values:k.answers,selectableCount:k.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)),L?await new ye().send(e,t,m):await s.sendMessage(e,h(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 Fe=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,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=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)}}},ve=class{constructor(e){this.mlient=e;this.community=new Fe(e);}community};var $e=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 mediaProcess.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=O.get(e);if(n)return n;let o=await t.groupMetadata(e);return o&&O.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])}},ke=class{constructor(e){this.glient=e;this.group=new $e(e);}group};var Ue=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 mediaProcess.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)}},we=class{constructor(e){this.nlient=e;this.newsletter=new Ue(e);}newsletter};var Be=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)}},be=class{constructor(e){this.plient=e;this.privacy=new Be(e);}privacy};var Vi=a__namespace.object({status:a__namespace.picklist(["connecting","open","close","reload","syncing"]),authType:a__namespace.picklist(["pairing","qr"]),authTimeout:a__namespace.optional(a__namespace.number()),syncProgress:a__namespace.optional(a__namespace.number()),syncCompleted:a__namespace.optional(a__namespace.boolean(),false),qr:a__namespace.optional(a__namespace.string()),code:a__namespace.optional(a__namespace.string())});var An=a__namespace.picklist(["unknown","android","ios","desktop","web"]),Pn=a__namespace.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"]),Ct=a__namespace.object({channelId:a__namespace.string(),uniqueId:a__namespace.string(),chatId:a__namespace.string(),chatType:Pn,receiverLid:a__namespace.string(),receiverId:a__namespace.string(),receiverName:a__namespace.string(),roomId:a__namespace.string(),roomLid:a__namespace.nullable(a__namespace.string()),roomName:a__namespace.nullable(a__namespace.string()),senderLid:a__namespace.string(),senderId:a__namespace.string(),senderName:a__namespace.string(),senderDevice:An,timestamp:a__namespace.number(),text:a__namespace.nullable(a__namespace.string()),mentions:a__namespace.array(a__namespace.string()),links:a__namespace.array(a__namespace.string()),isBot:a__namespace.boolean(),isFromMe:a__namespace.boolean(),isPrefix:a__namespace.boolean(),isSpam:a__namespace.boolean(),isTagMe:a__namespace.boolean(),isStatusMention:a__namespace.boolean(),isGroupStatusMention:a__namespace.boolean(),isHideTags:a__namespace.boolean(),isGroup:a__namespace.boolean(),isNewsletter:a__namespace.boolean(),isQuestion:a__namespace.boolean(),isStory:a__namespace.boolean(),isViewOnce:a__namespace.boolean(),isEdited:a__namespace.boolean(),isDeleted:a__namespace.boolean(),isPinned:a__namespace.boolean(),isUnPinned:a__namespace.boolean(),isBroadcast:a__namespace.boolean(),isEphemeral:a__namespace.boolean(),isForwarded:a__namespace.boolean(),citation:a__namespace.nullable(a__namespace.record(a__namespace.string(),a__namespace.custom(i=>typeof i=="function"))),media:a__namespace.nullable(a__namespace.looseObject({buffer:a__namespace.custom(i=>typeof i=="function"),stream:a__namespace.custom(i=>typeof i=="function")})),injection:a__namespace.optional(a__namespace.record(a__namespace.string(),a__namespace.any()),{}),message:a__namespace.custom(i=>typeof i=="function")}),Ki=a__namespace.object({...Ct.entries,replied:a__namespace.nullable(Ct)});var Yi=a__namespace.object({callId:a__namespace.string(),callerId:a__namespace.string(),roomId:a__namespace.string(),roomName:a__namespace.string(),date:a__namespace.date(),offline:a__namespace.boolean(),status:a__namespace.picklist(["accept","offer","reject","ringing","terminate","timeout"]),isVideo:a__namespace.boolean(),isGroup:a__namespace.boolean()});var xe=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(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=this.client.options?.fancyLogs,s=new Date(e?.timestamp||Date.now()).toTimeString().split(" ")[0],r=v(`[${s}]`,"dimgray"),m=e?.chatType||"text",c=e?.text||"",g=c.replace(/\\n/g," ").slice(0,150),w=c.length>150?g+"...":g,D=n?n?["#ff5f6d","#ffc371"]:"white":"gray",j=v(w||`<${m}>`,D);if(o){let A="",I=[];e?.isNewsletter?(A=`${v("\u{1F4E2} NEWS","blue")} ${v(e?.roomName,t)}`,I.push(`${v("ID:","dimgray")} ${B(e?.roomId)}`)):e?.isGroup?(A=`${v("\u{1F465} GROUP","lime")} ${v(e?.roomName,t)}`,I.push(`${v("By:","dimgray")} ${e?.senderName}`)):A=`${v("\u{1F464} PRIVATE","orange")} ${v(e?.senderName||"Unknown",t)}`,e?.isSpam&&I.push(v("\u26A0\uFE0F Spam","red")),e?.isForwarded&&I.push(v("\u21AA\uFE0F Forwarded","yellow")),e?.isEdited&&I.push(v("\u270F\uFE0F Edited","yellow"));let L=I.length?` ${v("\u2022","dimgray")} ${I.join(` ${v("|","dimgray")} `)}`:"";console.log(`
@@ -13,7 +13,7 @@ ${o} ${v(`\u{1F4DE} INCOMING ${s?"VIDEO":"VOICE"} CALL`,t)}`),console.log(` ${v
13
13
  * See LICENSE file for details.
14
14
 
15
15
  * Author: zaadevofc
16
- * Last build time: 3/25/2026 6:42:24 AM
16
+ * Last build time: 3/25/2026 6:48:23 AM
17
17
  *
18
18
  * Repository: git+https://github.com/zeative/zaileys.git
19
19
  */exports.BaseMessagesType=Ct;exports.ButtonCarouselCardType=nn;exports.ButtonCarouselType=sn;exports.ButtonInteractiveCallType=vt;exports.ButtonInteractiveCopyType=ht;exports.ButtonInteractiveReplyType=ft;exports.ButtonInteractiveSingleSelectType=Xt;exports.ButtonInteractiveType=en;exports.ButtonInteractiveUrlType=yt;exports.ButtonSimpleType=tn;exports.ButtonType=kt;exports.CitationType=rn;exports.Client=At;exports.ClientAuthPairingType=pn;exports.ClientAuthQRType=un;exports.ClientBaseType=wt;exports.ClientOptionsType=bt;exports.ClientStickerOptionsType=cn;exports.ClientStickerShapeType=Le;exports.DEVICE_ENUM_TYPES=An;exports.EventEnumType=ii;exports.FakeReplyType=an;exports.LimiterType=on;exports.ListenerCallsType=Yi;exports.ListenerConnectionType=Vi;exports.ListenerMessagesType=Ki;exports.MESSAGE_ENUM_TYPES=Pn;exports.Plugins=ne;exports.autoCleanUp=ln;exports.cleanJid=B;exports.cleanMediaObject=ct;exports.definePlugins=yr;exports.escapeRegExp=it;exports.extractJids=We;exports.extractUrls=st;exports.findGlobalWord=ee;exports.findNestedByKeys=Us;exports.generateId=Ne;exports.getDeepContent=le;exports.getLatestLibVersion=lt;exports.getUsersMentions=at;exports.ignoreLint=h;exports.logColor=v;exports.modifyFn=Bs;exports.normalizeText=_;exports.numbersToJids=Js;exports.pickKeysFromArray=ot;exports.randomize=$s;exports.registerAuthCreds=Ye;exports.removeAuthCreds=_e;exports.resolveJids=ce;exports.shuffleString=Fs;exports.toJson=Ee;exports.toString=X;exports.useAuthState=Ke;Object.keys(mediaProcess).forEach(function(k){if(k!=='default'&&!Object.prototype.hasOwnProperty.call(exports,k))Object.defineProperty(exports,k,{enumerable:true,get:function(){return mediaProcess[k]}})});
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  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:
2
2
  - ${s.join(`
3
- - `)}`)}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.1.1",e="zaadevofc",t=await pt(),n=i===t;f.spinner.stop();let o="Zaileys",s=`
3
+ - `)}`)}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.2.0",e="zaadevofc",t=await pt(),n=i===t;f.spinner.stop();let o="Zaileys",s=`
4
4
  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})`}
5
5
  `,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(`
6
6
  `);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(` ${k("|","dimgray")} `)}`:"";console.log(`
@@ -13,7 +13,7 @@ ${o} ${k(`\u{1F4DE} INCOMING ${s?"VIDEO":"VOICE"} CALL`,t)}`),console.log(` ${k
13
13
  * See LICENSE file for details.
14
14
 
15
15
  * Author: zaadevofc
16
- * Last build time: 3/25/2026 6:42:24 AM
16
+ * Last build time: 3/25/2026 6:48:23 AM
17
17
  *
18
18
  * Repository: git+https://github.com/zeative/zaileys.git
19
19
  */export{At as BaseMessagesType,sn as ButtonCarouselCardType,on as ButtonCarouselType,kt as ButtonInteractiveCallType,vt as ButtonInteractiveCopyType,yt as ButtonInteractiveReplyType,en as ButtonInteractiveSingleSelectType,tn as ButtonInteractiveType,ht as ButtonInteractiveUrlType,nn as ButtonSimpleType,wt as ButtonType,an as CitationType,Pt as Client,un as ClientAuthPairingType,dn as ClientAuthQRType,bt as ClientBaseType,xt as ClientOptionsType,ln as ClientStickerOptionsType,Fe as ClientStickerShapeType,Pn as DEVICE_ENUM_TYPES,ri as EventEnumType,cn as FakeReplyType,rn as LimiterType,Xi as ListenerCallsType,Ji as ListenerConnectionType,Qi as ListenerMessagesType,Rn as MESSAGE_ENUM_TYPES,se as Plugins,pn as autoCleanUp,q as cleanJid,lt as cleanMediaObject,hr as definePlugins,rt as escapeRegExp,_e as extractJids,ot as extractUrls,te as findGlobalWord,Bs as findNestedByKeys,We as generateId,pe as getDeepContent,pt as getLatestLibVersion,ct as getUsersMentions,v as ignoreLint,k as logColor,qs as modifyFn,D as normalizeText,Hs as numbersToJids,it as pickKeysFromArray,Us as randomize,Xe as registerAuthCreds,De as removeAuthCreds,le as resolveJids,$s as shuffleString,Ne as toJson,ee as toString,Qe 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": "3.1.1",
4
+ "version": "3.2.0",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.mjs",
@@ -13,6 +13,9 @@
13
13
  "import": "./dist/index.mjs"
14
14
  }
15
15
  },
16
+ "files": [
17
+ "dist"
18
+ ],
16
19
  "author": "zaadevofc",
17
20
  "repository": {
18
21
  "url": "git+https://github.com/zeative/zaileys.git"
@@ -55,7 +58,7 @@
55
58
  "qrcode-terminal": "^0.12.0",
56
59
  "radashi": "^12.7.2",
57
60
  "valibot": "^1.2.0",
58
- "@zaileys/media-process": "2.3.0"
61
+ "@zaileys/media-process": "2.4.0"
59
62
  },
60
63
  "optionalDependencies": {
61
64
  "lmdb": "^3.5.2"
@@ -1,8 +0,0 @@
1
- # Changesets
2
-
3
- Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
4
- with multi-package repos, or single-package repos to help you version and publish your code. You can
5
- find the full documentation for it [in our repository](https://github.com/changesets/changesets).
6
-
7
- We have a quick list of common questions to get you started engaging with this project in
8
- [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md).
@@ -1,11 +0,0 @@
1
- {
2
- "$schema": "https://unpkg.com/@changesets/config@3.1.3/schema.json",
3
- "changelog": "@changesets/cli/changelog",
4
- "commit": true,
5
- "fixed": [],
6
- "linked": [],
7
- "access": "public",
8
- "baseBranch": "staging",
9
- "updateInternalDependencies": "patch",
10
- "ignore": []
11
- }
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 zaadevofc
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,142 +0,0 @@
1
- type StickerShapeType = 'circle' | 'rounded' | 'oval' | 'default';
2
- interface StickerMetadataType {
3
- packageName?: string;
4
- authorName?: string;
5
- quality?: number;
6
- shape?: StickerShapeType;
7
- }
8
-
9
- declare const FFMPEG_CONSTANTS: {
10
- readonly OPUS: {
11
- readonly CODEC: "libopus";
12
- readonly CHANNELS: 1;
13
- readonly FREQUENCY: 48000;
14
- readonly BITRATE: "48k";
15
- readonly FORMAT: "ogg";
16
- };
17
- readonly THUMBNAIL: {
18
- readonly SIZE: 100;
19
- readonly QUALITY: 50;
20
- readonly TIMESTAMP: "10%";
21
- };
22
- readonly STICKER: {
23
- readonly SIZE: 512;
24
- readonly MAX_DURATION: 6;
25
- readonly FPS: 10;
26
- readonly DEFAULT_QUALITY: 60;
27
- readonly COMPRESSION_LEVEL: 6;
28
- };
29
- readonly MIME: {
30
- readonly AUDIO: "audio/";
31
- readonly VIDEO: "video/";
32
- readonly IMAGE: "image/";
33
- readonly GIF: "image/gif";
34
- readonly MP4: "video/mp4";
35
- };
36
- };
37
- type MediaInput = string | ArrayBuffer | Buffer;
38
- type FileExtension = 'wav' | 'ogg' | 'mp4' | 'gif' | 'jpg' | 'webp' | 'tmp' | 'mp3' | 'png';
39
- interface FFmpegConfig {
40
- input: string;
41
- output: string;
42
- options: string[];
43
- onEnd: () => Promise<void>;
44
- onError: (err: Error) => Promise<void>;
45
- }
46
- declare const initializeFFmpeg: (disable?: boolean) => Promise<void>;
47
- declare class FileManager {
48
- private static generateUniqueId;
49
- static createTempPath(prefix: string, ext: FileExtension): string;
50
- static cleanup(files: string[]): Promise<void>;
51
- static safeReadFile(filePath: string): Promise<Buffer>;
52
- static safeWriteFile(filePath: string, data: Buffer): Promise<void>;
53
- }
54
- declare class BufferConverter {
55
- static toBuffer(input: MediaInput): Promise<Buffer>;
56
- private static fromString;
57
- private static fromUrl;
58
- static getExtension(buffer: Buffer): Promise<FileExtension>;
59
- }
60
- declare class MimeValidator {
61
- static validate(fileType: any, expectedPrefix: string): void;
62
- static isMedia(mime: string): boolean;
63
- static isAnimated(mime: string): boolean;
64
- }
65
- declare class FFmpegProcessor {
66
- static process(config: FFmpegConfig): Promise<void>;
67
- static getDuration(filePath: string): Promise<number>;
68
- }
69
-
70
- type AudioType = 'opus' | 'mp3';
71
- declare class AudioProcessor {
72
- static toOpus(input: MediaInput): Promise<Buffer>;
73
- static toMp3(input: MediaInput): Promise<Buffer>;
74
- static convert(input: MediaInput, type?: AudioType): Promise<Buffer>;
75
- }
76
-
77
- declare class VideoProcessor {
78
- static toMp4(input: MediaInput): Promise<Buffer>;
79
- static thumbnail(input: MediaInput): Promise<string>;
80
- static duration(filePath: string): Promise<number>;
81
- }
82
-
83
- declare class ImageProcessor {
84
- static thumbnail(buffer: Buffer): Promise<string>;
85
- static resize(buffer: Buffer, width: number, height: number): Promise<Buffer>;
86
- static toJpeg(input: MediaInput): Promise<Buffer>;
87
- static resizeForSticker(buffer: Buffer, quality: number, shape?: string): Promise<Buffer>;
88
- }
89
-
90
- declare class StickerProcessor {
91
- static create(input: MediaInput, metadata?: StickerMetadataType): Promise<Buffer>;
92
- private static createExifMetadata;
93
- private static processAnimated;
94
- private static getExtension;
95
- }
96
-
97
- declare class DocumentProcessor {
98
- static create(input: MediaInput): Promise<{
99
- document: Buffer<ArrayBufferLike>;
100
- mimetype: string;
101
- ext: string;
102
- fileName: string;
103
- jpegThumbnail: string;
104
- }>;
105
- }
106
-
107
- declare class Media {
108
- private input;
109
- constructor(input: MediaInput);
110
- get audio(): {
111
- toOpus: () => Promise<Buffer<ArrayBufferLike>>;
112
- toMp3: () => Promise<Buffer<ArrayBufferLike>>;
113
- convert: (type?: AudioType) => Promise<Buffer<ArrayBufferLike>>;
114
- };
115
- get video(): {
116
- toMp4: () => Promise<Buffer<ArrayBufferLike>>;
117
- thumbnail: () => Promise<string>;
118
- };
119
- get image(): {
120
- toJpeg: () => Promise<Buffer<ArrayBufferLike>>;
121
- thumbnail: () => Promise<string>;
122
- resize: (width: number, height: number) => Promise<Buffer<ArrayBufferLike>>;
123
- };
124
- get sticker(): {
125
- create: (metadata?: StickerMetadataType) => Promise<Buffer<ArrayBufferLike>>;
126
- };
127
- get document(): {
128
- create: () => Promise<{
129
- document: Buffer<ArrayBufferLike>;
130
- mimetype: string;
131
- ext: string;
132
- fileName: string;
133
- jpegThumbnail: string;
134
- }>;
135
- };
136
- get thumbnail(): {
137
- get: () => Promise<string>;
138
- };
139
- toBuffer(): Promise<Buffer>;
140
- }
141
-
142
- export { AudioProcessor, type AudioType, BufferConverter, DocumentProcessor, FFMPEG_CONSTANTS, type FFmpegConfig, FFmpegProcessor, type FileExtension, FileManager, ImageProcessor, Media, type MediaInput, MimeValidator, type StickerMetadataType, StickerProcessor, type StickerShapeType, VideoProcessor, initializeFFmpeg };