zaileys 1.1.40-tx.0 โ 1.1.40-tx.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -2
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +7 -1
- package/tsconfig.json +0 -19
package/dist/index.d.ts
CHANGED
|
@@ -274,8 +274,8 @@ export { Client, Lowdb, createLowdb, extractUrls, findGlobalWord, getLatestLibVe
|
|
|
274
274
|
* See LICENSE file for details.
|
|
275
275
|
|
|
276
276
|
* Author: zaadevofc
|
|
277
|
-
* Last build time: 12/5/2025 9:
|
|
277
|
+
* Last build time: 12/5/2025 9:11:34 AM
|
|
278
278
|
*
|
|
279
|
-
* Repository: https://github.com/zeative/zaileys
|
|
279
|
+
* Repository: git+https://github.com/zeative/zaileys.git
|
|
280
280
|
*/
|
|
281
281
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import e,{BufferJSON as t,DisconnectReason as n,URL_REGEX as r,delay as i,downloadMediaMessage as a,extractMessageContent as o,getAggregateVotesInPollMessage as s,getContentType as c,getDevice as ee,initAuthCreds as l,isJidBroadcast as u,jidNormalizedUser as d,makeCacheableSignalKeyStore as f,proto as p}from"baileys";import m,{mkdir as te,stat as ne}from"node:fs/promises";import{Mutex as h}from"async-mutex";import{mkdir as g,readFile as _,readdir as re,rmdir as ie,unlink as v,writeFile as y}from"fs/promises";import{dirname as ae,join as b}from"path";import{createSpinner as oe}from"nanospinner";import x from"node-cache";import{EventEmitter as S}from"node:stream";import C from"pino";import w,{z as T}from"zod";import se from"figlet";import E,{cristal as D}from"gradient-string";import ce from"qrcode-terminal";import O from"lodash";var le=class e{static inst;fLocks=new Map;kLocks=new Map;maxSize=100;static get(){return this.inst||=new e}getFile(e){let t=this.fLocks.get(e);if(!t){if(this.fLocks.size>=this.maxSize){let e=this.fLocks.keys().next().value;this.fLocks.delete(e)}t=new h,this.fLocks.set(e,t)}return t}getKey(e){let t=this.kLocks.get(e);if(!t){if(this.kLocks.size>=this.maxSize){let e=this.kLocks.keys().next().value;this.kLocks.delete(e)}t=new h,this.kLocks.set(e,t)}return t}},k=class{data;path;pool;size;chunkDir;replacer;reviver;loaded=!1;flushMode;debounceMs;flushTimer=null;dirty=!1;constructor(e,t,n=2*1024*1024,r=`debounce`,i=200){this.data=new Map,this.path=e,this.pool=le.get(),this.size=n,this.chunkDir=`${e}.c`,this.replacer=t?.replacer||null,this.reviver=t?.reviver||null,this.flushMode=r,this.debounceMs=i}async ensureLoaded(){this.loaded||=(await this.read(),!0)}scheduleFlush(){if(this.flushMode!==`manual`){if(this.flushMode===`sync`){this.write();return}this.dirty=!0,!this.flushTimer&&(this.flushTimer=setTimeout(()=>{this.flushTimer=null,this.dirty&&(this.dirty=!1,this.write())},this.debounceMs))}}async read(){return this.pool.getFile(this.path).runExclusive(async()=>{try{let e=await _(this.path,`utf-8`),t=JSON.parse(e,this.reviver);this.data.clear();let n=[];for(let[e,r]of Object.entries(t))this.isMeta(r)?n.push(this.loadChunk(e,r)):this.data.set(e,r);return await Promise.all(n),this.loaded=!0,this.data}catch{return await g(ae(this.path),{recursive:!0}),this.data.clear(),this.loaded=!0,this.data}})}async write(){return this.pool.getFile(this.path).runExclusive(async()=>{let e={},t=[];for(let[n,r]of this.data){if(this.isMeta(r)){e[n]=r;continue}JSON.stringify(r,this.replacer).length>this.size?t.push(this.saveChunk(n,r).then(t=>{e[n]=t})):e[n]=r}await Promise.all(t);let n=JSON.stringify(e,this.replacer,2);await y(this.path,n,`utf-8`)})}async set(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{this.data.set(e,t),this.scheduleFlush()})}async push(e,t){await this.ensureLoaded(),await this.pool.getKey(e).runExclusive(async()=>{let n=this.data.get(e),r;r=Array.isArray(n)?n:n===void 0?[]:[n],r.push(t),this.data.set(e,r),this.scheduleFlush()})}async get(e){return await this.ensureLoaded(),this.data.get(e)}async delete(e){return await this.ensureLoaded(),this.pool.getKey(e).runExclusive(async()=>{let t=this.data.get(e);this.isMeta(t)&&await this.delChunk(e,t);let n=this.data.delete(e);return this.scheduleFlush(),n})}async saveChunk(e,t){let n=JSON.stringify(t,this.replacer),r=Buffer.from(n,`utf-8`),i=Math.ceil(r.length/this.size);await g(this.chunkDir,{recursive:!0});let a={v:1,k:e,t:i,s:this.size,c:r.length,m:Date.now().toString(36)},o=[];for(let t=0;t<i;t++){let n=t*this.size,i=Math.min(n+this.size,r.length),a=r.subarray(n,i);o.push(y(b(this.chunkDir,`${e}.${t}.json`),JSON.stringify({i:t,d:a.toString(`base64`)})))}return o.push(y(b(this.chunkDir,`${e}.manifest.json`),JSON.stringify(a))),await Promise.all(o),{t:i,s:this.size,k:e}}async loadChunk(e,t){let n=b(this.chunkDir,`${e}.manifest.json`),r=JSON.parse(await _(n,`utf-8`)),i=[];for(let t=0;t<r.t;t++)i.push(_(b(this.chunkDir,`${e}.${t}.json`),`utf-8`).then(e=>Buffer.from(JSON.parse(e).d,`base64`)));let a=await Promise.all(i),o=Buffer.concat(a),s=JSON.parse(o.toString(`utf-8`),this.reviver);this.data.set(e,s)}async delChunk(e,t){let n=[];for(let r=0;r<t.t;r++)n.push(v(b(this.chunkDir,`${e}.${r}.json`)).catch(()=>{}));n.push(v(b(this.chunkDir,`${e}.manifest.json`)).catch(()=>{})),await Promise.all(n);try{(await re(this.chunkDir)).length===0&&await ie(this.chunkDir)}catch{}}isMeta(e){return e?.t&&e?.s&&e?.k}};const A=(e,t)=>new k(e,t?.BufferJSON,t?.size,t?.flushMode,t?.debounceMs),j=new class{data=new Map;set(e,t){this.data.set(e,{...this.data.get(e),...t})}get(e){return this.data.get(e)||{}}update(e,t){let n=this.get(e);this.set(e,t(n))}delete(e){this.data.delete(e)}has(e){return this.data.has(e)}dbCache=new Map;lowdb(e,t){let n=`.session/${e}/${t}`;if(this.dbCache.has(n))return this.dbCache.get(n);let r=A(n);return this.dbCache.set(n,r),r}spinner=oe(``,{color:`green`});logger=C({level:`silent`,enabled:!1});events=new S;groupCache=new x({stdTTL:300,useClones:!1})},M=async e=>{j.spinner.start(` Initializing auth state...`);let n=await ne(e).catch(()=>{});if(n){if(!n.isDirectory())throw j.spinner.error(` Failed to open credentials
|
|
2
|
+
`),`found something that is not a directory at ${e}, either delete it or specify a different location`}else await te(e,{recursive:!0});let r=A(`${e}/auth/creds.json`,{BufferJSON:t}),i=A(`${e}/auth/keys.json`,{BufferJSON:t,size:512*1024});await Promise.all([r.read(),i.read()]);let a=await r.get(`creds`)||l();return j.spinner.success(` Generate auth successfully`),{state:{creds:a,keys:{get:async(e,t)=>{let n={};return await Promise.all(t.map(async t=>{let r=`${e}:${t}`,a=await i.get(r);e===`app-state-sync-key`&&a&&(a=p.Message.AppStateSyncKeyData.fromObject(a)),n[t]=a})),n},set:async e=>{let t=[];for(let n in e)for(let r in e[n]){let a=e[n][r],o=`${n}:${r}`;t.push(a?i.set(o,a):i.delete(o).then(()=>{}))}await Promise.all(t),await i.write()}}},saveCreds:async()=>{await r.set(`creds`,a),await r.write()}}},N=new x,P=(e,t)=>({logger:j.logger,printQRInTerminal:!1,defaultQueryTimeoutMs:void 0,markOnlineOnConnect:e.options.autoOnline,syncFullHistory:e.options.syncFullHistory,msgRetryCounterCache:new x,mediaCache:new x({stdTTL:60}),cachedGroupMetadata:async e=>N.get(e),shouldIgnoreJid:e=>u(e),auth:{creds:t.creds,keys:f(t.keys,j.logger)},getMessage:async t=>{if(t?.id)return await e.db(`messages`).get(t.id)}}),F=async t=>{let{state:n,saveCreds:r}=await M(`.session/${t.options.session}`),i=e(P(t,n));i.ev.on(`creds.update`,r),j.set(`socket`,i)},I=(e,t)=>{let n=e.safeParse(t);if(n.success)return n.data;throw console.error(w.treeifyError(n.error)),`Invalid data`},L=T.object({session:T.string().default(`zaileys`).optional(),prefix:T.string().optional(),ignoreMe:T.boolean().default(!0).optional(),showLogs:T.boolean().default(!0).optional(),syncFullHistory:T.boolean().default(!0).optional(),autoMentions:T.boolean().default(!0).optional(),autoOnline:T.boolean().default(!0).optional(),autoRead:T.boolean().default(!0).optional(),autoPresence:T.boolean().default(!0).optional(),autoRejectCall:T.boolean().default(!0).optional()}),R=T.object({authType:T.literal(`pairing`),phoneNumber:T.number()}),z=T.object({authType:T.literal(`qr`)}),B=T.union([R.extend(L.shape),z.extend(L.shape)]);T.enum([`connection`,`messages`,`calls`]);var V=`1.1.40-tx.0`,H=`zaadevofc`;const U=async()=>{try{return(await(await fetch(`https://registry.npmjs.org/zaileys`)).json())[`dist-tags`].latest}catch(e){throw e}},W=async e=>{try{let t=`.session/${e}/creds.json`;await m.unlink(t)}catch(t){throw j.spinner.error(`Failed to remove auth creds for session "${e}"!`),t}},G=(e=``)=>e?e.normalize(`NFKD`).replace(/[\u0000-\u001F\u007F-\u009F\u200B-\u200F\u2028-\u202F\u2060-\u206F\uFEFF\uFFF9-\uFFFB]/gu,``).replace(/[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u20D0-\u20FF\uFE20-\uFE2F]/gu,``).replace(/[\u202A-\u202E\u2066-\u2069]/gu,``).replace(/\u202E([\s\S]*?)\u202C?/gu,(e,t)=>[...t].reverse().join(``)):null,ue=e=>{ce.generate(e,{small:!0},e=>{console.log(e)})},de=async()=>{console.clear(),j.spinner.start(` Checking for updates...`);let e=await U(),t=V===e;j.spinner.stop();let n=`\nby ${H} ยท v${V}`,r=`${t?`Already using latest version!`:`Update available! (v${e})`} \n`,i=t?[`#04ba25ff`,`#04ba25ff`]:[`#ffaf00ff`,`#ffaf00ff`],a=D(await se.text(`Zaileys`));console.log(a),console.log(E([`#383838ff`,`#383838ff`])(n)),console.log(E(i)(r))};var fe=class{constructor(e){this.client=e,this.initialize()}async initialize(){j.get(`socket`).ev.on(`call`,async e=>{for(let t of e){let e=await this.parse(t);e&&(await this.client.middleware.run({calls:e}),j.events.emit(`calls`,e))}})}async parse(e){let t={};return t.callId=e.id,t.callerId=e.from,t.roomId=e.chatId,t.date=e.date,t.offline=e.offline,t.status=e.status,t.isVideo=!!e.isVideo,t.isGroup=!!e.isGroup,t}};const K=e=>e,q=e=>{try{return JSON.parse(e)}catch{return O.attempt(()=>JSON.parse(JSON.stringify(e)||`{}`))}},J=e=>{try{return JSON.stringify(e)}catch{let t=O.attempt(()=>JSON.stringify(q(e)||`{}`));return O.isError(t)?`{}`:t}},pe=(e=``)=>O.shuffle(e).join(``),Y=(e=``,t=``)=>e?O.includes(e.toLowerCase(),t.toLowerCase()):null,X=(e=``)=>e?O.castArray(e.match(r)||[]):[],me=e=>e[Math.floor(Math.random()*e.length)],Z=(e,t)=>{for(let n of e)for(let e of t)if(e in n&&n[e]!==void 0&&n[e]!==null)return n[e]};var he=class{constructor(e){this.client=e,this.initialize()}async initialize(){j.spinner.start(` Initializing connection...`);let e=j.get(`socket`),t={},r=async()=>{t.status=`reload`,j.spinner.warn(` Connection lost. Attempting auto-reload...`),await this.client.initialize()},a=async()=>{await i(3e3),j.spinner.warn(` Invalid session. Attempting auto cleaning creds...`),await i(3e3),await W(this.client.options.session),await r()};if(this.client.options.authType===`pairing`&&this.client.options.phoneNumber&&!e.authState.creds.registered){j.spinner.update(` Generating pairing code...`),await i(3500);try{t.authTimeout=Date.now()+6e4;let n=new Date(t.authTimeout).toLocaleTimeString(),r=await e.requestPairingCode(this.client.options.phoneNumber.toString());j.spinner.warn(` Pairing expired at ${D(n)}`),j.spinner.warn(` Pairing code: ${r}`),t.code=r}catch{await a()}}e.ev.on(`connection.update`,async i=>{let{connection:o,lastDisconnect:s,qr:c}=i;if(t.status=o||`connecting`,t.authType=this.client.options.authType,j.spinner.update(` Connection status: `+D(t.status)),this.client.options.authType===`qr`&&c){t.authTimeout=Date.now()+6e4;let e=new Date(t.authTimeout).toLocaleTimeString();j.spinner.warn(` Please scan the QR code...`),j.spinner.warn(` Qr code expired at ${D(e)}`),ue(c),t.qr=c;return}if(o===`close`){let e=K(s?.error)?.output?.statusCode,t=s?.error?.message||``,i=typeof e==`number`&&e!==n.loggedOut;j.spinner.error(`[${e} - Closed] ${t}`),(e===401||e===405||e===500)&&(j.spinner.error(` Invalid session, please delete manually!`),j.spinner.error(` Session "${this.client.options.session}" has not valid, please delete it!\n`),await a()),i&&await r()}if(o===`open`)if(e.user?.id){let t=d(e.user.id).split(`@`)[0];j.spinner.success(` Connected as ${D(e.user.name||e.user.verifiedName||t)}`)}else j.spinner.success(` Connected!`);j.events.emit(`connection`,t)}),e.ev.on(`messaging-history.set`,({progress:e})=>{t.status=`syncing`,t.syncProgress=e,j.spinner.start(` Syncing messages history...`),e&&j.spinner.update(` Syncing messages history ${e+`%`}`),e==100&&(j.spinner.success(` Syncing messages history completed!`),t.syncCompleted=!0),j.set(`connection`,t),j.events.emit(`connection`,t)})}};const ge={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`,declinePaymentRequestMessage:`declinePaymentRequest`,cancelPaymentRequestMessage:`cancelPaymentRequest`,templateMessage:`template`,stickerMessage:`sticker`,groupInviteMessage:`groupInvite`,templateButtonReplyMessage:`buttons`,productMessage:`product`,deviceSentMessage:`deviceSent`,listMessage:`list`,viewOnceMessage:`viewOnce`,orderMessage:`order`,listResponseMessage:`list`,ephemeralMessage:`ephemeral`,invoiceMessage:`invoice`,buttonsMessage:`buttons`,buttonsResponseMessage:`buttons`,paymentInviteMessage:`paymentInvite`,interactiveMessage:`interactive`,reactionMessage:`reaction`,stickerSyncRmrMessage:`sticker`,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`},Q=e=>{let t;t=Array.isArray(e)?e.join(`|`):typeof e==`string`?e:String(e);let n=2166136261,r=t.length;for(let e=0;e<r;e++)n^=t.charCodeAt(e),n+=(n<<1)+(n<<4)+(n<<7)+(n<<8)+(n<<24);return`Z4CD`+(n>>>0).toString(16).padStart(8,`0`).toUpperCase()},$=(e=``)=>{if(!e)return[];let t=new Set;for(let n of e.matchAll(/@(\d+)/g))t.add(n[1]);return O.toArray(t)},_e=e=>O.omit(e,[`url`,`contextInfo`,`fileSha256`,`fileEncSha256`,`mediaKey`,`directPath`,`waveform`,`thumbnail`,`jpegThumbnail`,`thumbnailEncSha256`,`thumbnailSha256`,`thumbnailDirectPath`,`firstFrameSidecar`,`streamingSidecar`,`scansSidecar`,`callKey`,`message`,`key`,`midQualityFileSha256`]),ve=e=>{if(!e)return{leaf:void 0,chain:[]};let t=o(e)||e,n=[];for(;t&&typeof t==`object`;){let e=c(t);if(!e)break;n.push(e);let r=t[e];if(!r||typeof r!=`object`){t=r;break}t=r}return{leaf:t,chain:n}};var ye=class{constructor(e){this.client=e,j.get(`connection`)?.status!=`syncing`&&this.initialize()}async initialize(){j.get(`socket`).ev.on(`messages.upsert`,async({messages:e,type:t})=>{if(t===`notify`)for(let t of e){let e=await this.parse(t);e&&(await this.client.middleware.run({messages:e}),j.events.emit(`messages`,e))}})}async parse(e){if(console.log(JSON.stringify(e,null,2)),e?.category===`peer`||!e.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters||e?.message?.botInvokeMessage||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage)return;let t=e,n=j.get(`socket`),r={},i=ve(e.message),o=i.chain.at(-1),s=i.leaf;r.uniqueId=null,r.channelId=null,r.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,r.chatAddress=e?.key?.addressingMode,r.chatType=ge[o],r.receiverId=d(n?.user?.id||``),r.receiverName=G(n?.user?.name||n?.user?.verifiedName),r.roomId=d(e?.key?.remoteJid);let c=await this.client.db(`chats`).get(r.roomId),l=await this.client.db(`contacts`).get(r.roomId),u=Z(c,[`name`,`verifiedName`]),f=Z(l,[`notify`,`name`]);return r.roomName=u||f||null,r.senderLid=Z([e?.key],[`remoteJidAlt`,`participant`]),r.senderId=d(e?.participant||e?.key?.participant||e?.key?.remoteJid),r.senderName=G(e?.pushName||e?.verifiedBizName),r.senderDevice=ee(r.chatId),r.channelId=Q([r.roomId,r.senderId]),r.uniqueId=Q([r.channelId,r.chatId]),r.timestamp=Number(e?.messageTimestamp),r.text=s?.text||s?.caption||s?.name||s?.displayName||s?.conversation||s?.contentText||s?.selectedDisplayText||s||null,r.text=G(r.text),r.mentions=$(r.text),r.links=X(r.text||``),r.isFromMe=e?.key?.fromMe||!1,r.isTagMe=r.mentions?.includes(r.receiverId.split(`@`)[0]),r.isPrefix=r.text?.startsWith(this.client.options?.prefix),r.isSpam=!1,r.isGroup=r.roomId?.includes(`@g.us`),r.isNewsletter=r.roomId?.includes(`@newsletter`),r.isStory=r.roomId?.includes(`@broadcast`),r.isViewOnce=!1,r.isEdited=!1,r.isDeleted=!1,r.isPinned=!1,r.isUnPinned=!1,r.isBroadcast=!!e?.broadcast,r.isEphemeral=!!Y(J(e.message),`ephemeralSettingTimestamp`),r.isForwarded=!!Y(J(e.message),`forwardingScore`),r.citation={},r.chatType!==`text`&&(r.media={..._e(s),buffer:()=>a(e,`buffer`,{}),stream:()=>a(e,`stream`,{})}),r.message=()=>t,r.replied=null,r}},be=class{constructor(e){this.client=e,new he(e),new ye(e),new fe(e),this.initialize()}async initialize(){let e=j.get(`socket`);e.ev.on(`groups.update`,async([t])=>{let n=await e.groupMetadata(t.id);j.groupCache.set(t.id,n)}),e.ev.on(`group-participants.update`,async t=>{let n=await e.groupMetadata(t.id);j.groupCache.set(t.id,n)}),e?.ev.on(`messaging-history.set`,async e=>{let{chats:t,contacts:n,messages:r}=e;for(let e of t)await this.client.db(`chats`).push(e.id,e);for(let e of n)await this.client.db(`contacts`).push(e.id,e);for(let e of r){if(!e.message||e?.category===`peer`||e.message?.protocolMessage)return;await this.client.db(`messages`).push(e.key.remoteJid,e)}}),e?.ev.on(`messages.upsert`,async({messages:e})=>{for(let t of e){if(!t.message||t?.category===`peer`||t.message?.protocolMessage)return;await this.client.db(`messages`).push(t.key.remoteJid,t)}}),e?.ev.on(`chats.upsert`,async e=>{for(let t of e)await this.client.db(`chats`).push(t.id,t)}),e?.ev.on(`contacts.upsert`,async e=>{for(let t of e)await this.client.db(`contacts`).push(t.id,t)}),e?.ev.on(`messages.update`,async e=>{console.log(`๐ ~ initialize ~ src/Listener/index.ts:72 ~ events:`,e);for(let{key:t,update:n}of e){if(!n.pollUpdates)continue;let e=await this.client.db(`messages`).get(t.remoteJid);if(!e)continue;let r=s({message:e,pollUpdates:n.pollUpdates});console.log(`poll aggregation:`,r)}})}},xe=class{stack=[];use(e){return this.stack.push(e),this}async run(e){let t=-1,n=async r=>{if(r<=t)throw`next() called multiple times`;t=r;let i=this.stack[r];if(i)try{await i(e,()=>n(r+1))}catch(e){throw console.error(`Middleware error:`,e),e}};await n(0)}},Se=class{middleware=new xe;constructor(e){this.options=e,this.options=I(B,e),this.initialize()}async initialize(){await de(),await F(this),new be(this)}db(e){return j.lowdb(this.options.session,`stores/${e}.json`)}on(e,t){j.events.on(e,t)}use(e){return this.middleware.use(e),this}};export{Se as Client,k as Lowdb,A as createLowdb,X as extractUrls,Y as findGlobalWord,U as getLatestLibVersion,K as ignoreLint,G as normalizeText,Z as pickKeysFromArray,me as randomize,F as registerAuthCreds,W as removeAuthCreds,pe as shuffleString,q as toJson,J as toString,M as useAuthState};
|
|
3
|
+
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["promises: Promise<void>[]","mkdir","obj: Record<string, any>","chunks: Promise<void>[]","list: any[]","manifest: ChunkManifest","writes: Promise<void>[]","reads: Promise<Buffer>[]","dels: Promise<void>[]","creds: AuthenticationCreds","data: { [_: string]: SignalDataTypeMap[typeof type] }","tasks: Promise<void>[]","z","code","pkg.version","pkg.author","client: Client","output: Partial<z.infer<typeof ListenerCallsType>>","client: Client","output: Partial<z.infer<typeof ListenerConnectionType>>","current: any","chain: string[]","client: Client","output: Partial<z.infer<typeof ListenerMessagesType>>","client: Client","options: z.infer<typeof ClientOptionsType>"],"sources":["../src/Modules/lowdb.ts","../src/Modules/store.ts","../src/Auth/state.ts","../src/Config/socket.ts","../src/Auth/creds.ts","../src/Modules/zod.ts","../src/Types/client.ts","../package.json","../src/Utils/validate.ts","../src/Utils/banner.ts","../src/Listener/calls.ts","../src/Utils/helper.ts","../src/Listener/connection.ts","../src/Config/media.ts","../src/Utils/message.ts","../src/Listener/messages.ts","../src/Listener/index.ts","../src/Classes/middleware.ts","../src/Classes/client.ts"],"sourcesContent":["import { Mutex } from 'async-mutex';\r\nimport { readFile, writeFile, unlink, mkdir, readdir, rmdir } from 'fs/promises';\r\nimport { join, dirname } from 'path';\r\n\r\ninterface ChunkManifest {\r\n v: 1;\r\n k: string;\r\n t: number;\r\n s: number;\r\n c: number;\r\n m: string;\r\n}\r\n\r\ninterface ChunkMeta {\r\n t: number;\r\n s: number;\r\n k: string;\r\n}\r\n\r\nclass MutexPool {\r\n private static inst: MutexPool;\r\n private fLocks = new Map<string, Mutex>();\r\n private kLocks = new Map<string, Mutex>();\r\n private maxSize = 100;\r\n\r\n static get(): MutexPool {\r\n return this.inst || (this.inst = new MutexPool());\r\n }\r\n\r\n getFile(p: string): Mutex {\r\n let m = this.fLocks.get(p);\r\n if (!m) {\r\n if (this.fLocks.size >= this.maxSize) {\r\n const f = this.fLocks.keys().next().value;\r\n this.fLocks.delete(f);\r\n }\r\n m = new Mutex();\r\n this.fLocks.set(p, m);\r\n }\r\n return m;\r\n }\r\n\r\n getKey(k: string): Mutex {\r\n let m = this.kLocks.get(k);\r\n if (!m) {\r\n if (this.kLocks.size >= this.maxSize) {\r\n const f = this.kLocks.keys().next().value;\r\n this.kLocks.delete(f);\r\n }\r\n m = new Mutex();\r\n this.kLocks.set(k, m);\r\n }\r\n return m;\r\n }\r\n}\r\n\r\ntype FlushMode = 'manual' | 'sync' | 'debounce';\r\n\r\nexport class Lowdb {\r\n private data: Map<string, any>;\r\n private path: string;\r\n private pool: MutexPool;\r\n private size: number;\r\n private chunkDir: string;\r\n private replacer: any;\r\n private reviver: any;\r\n\r\n private loaded = false;\r\n private flushMode: FlushMode;\r\n private debounceMs: number;\r\n private flushTimer: NodeJS.Timeout | null = null;\r\n private dirty = false;\r\n\r\n constructor(path: string, bufferJSON?: any, size: number = 2 * 1024 * 1024, flushMode: FlushMode = 'debounce', debounceMs = 200) {\r\n this.data = new Map();\r\n this.path = path;\r\n this.pool = MutexPool.get();\r\n this.size = size;\r\n this.chunkDir = `${path}.c`;\r\n this.replacer = bufferJSON?.replacer || null;\r\n this.reviver = bufferJSON?.reviver || null;\r\n this.flushMode = flushMode;\r\n this.debounceMs = debounceMs;\r\n }\r\n\r\n private async ensureLoaded(): Promise<void> {\r\n if (!this.loaded) {\r\n await this.read();\r\n this.loaded = true;\r\n }\r\n }\r\n\r\n private scheduleFlush(): void {\r\n if (this.flushMode === 'manual') return;\r\n if (this.flushMode === 'sync') {\r\n void this.write();\r\n return;\r\n }\r\n this.dirty = true;\r\n if (this.flushTimer) return;\r\n this.flushTimer = setTimeout(() => {\r\n this.flushTimer = null;\r\n if (!this.dirty) return;\r\n this.dirty = false;\r\n void this.write();\r\n }, this.debounceMs);\r\n }\r\n\r\n async read(): Promise<Map<string, any>> {\r\n const m = this.pool.getFile(this.path);\r\n return m.runExclusive(async () => {\r\n try {\r\n const buf = await readFile(this.path, 'utf-8');\r\n const parsed = JSON.parse(buf, this.reviver);\r\n this.data.clear();\r\n\r\n const promises: Promise<void>[] = [];\r\n for (const [k, v] of Object.entries(parsed)) {\r\n if (this.isMeta(v)) {\r\n promises.push(this.loadChunk(k, v as ChunkMeta));\r\n } else {\r\n this.data.set(k, v);\r\n }\r\n }\r\n\r\n await Promise.all(promises);\r\n this.loaded = true;\r\n return this.data;\r\n } catch {\r\n await mkdir(dirname(this.path), { recursive: true });\r\n this.data.clear();\r\n this.loaded = true;\r\n return this.data;\r\n }\r\n });\r\n }\r\n\r\n async write(): Promise<void> {\r\n const m = this.pool.getFile(this.path);\r\n return m.runExclusive(async () => {\r\n const obj: Record<string, any> = {};\r\n const chunks: Promise<void>[] = [];\r\n\r\n for (const [k, v] of this.data) {\r\n if (this.isMeta(v)) {\r\n obj[k] = v;\r\n continue;\r\n }\r\n\r\n const str = JSON.stringify(v, this.replacer);\r\n if (str.length > this.size) {\r\n chunks.push(\r\n this.saveChunk(k, v).then((meta) => {\r\n obj[k] = meta;\r\n }),\r\n );\r\n } else {\r\n obj[k] = v;\r\n }\r\n }\r\n\r\n await Promise.all(chunks);\r\n const jsonStr = JSON.stringify(obj, this.replacer, 2);\r\n await writeFile(this.path, jsonStr, 'utf-8');\r\n });\r\n }\r\n\r\n async set<T>(key: string, value: T): Promise<void> {\r\n await this.ensureLoaded();\r\n const keyMutex = this.pool.getKey(key);\r\n await keyMutex.runExclusive(async () => {\r\n this.data.set(key, value);\r\n this.scheduleFlush();\r\n });\r\n }\r\n\r\n async push<T>(key: string, value: T): Promise<void> {\r\n await this.ensureLoaded();\r\n const keyMutex = this.pool.getKey(key);\r\n await keyMutex.runExclusive(async () => {\r\n const current = this.data.get(key);\r\n let list: any[];\r\n if (Array.isArray(current)) {\r\n list = current;\r\n } else if (current === undefined) {\r\n list = [];\r\n } else {\r\n list = [current];\r\n }\r\n list.push(value);\r\n this.data.set(key, list);\r\n this.scheduleFlush();\r\n });\r\n }\r\n\r\n async get<T>(key: string): Promise<any> {\r\n await this.ensureLoaded();\r\n return this.data.get(key);\r\n }\r\n\r\n async delete(key: string): Promise<boolean> {\r\n await this.ensureLoaded();\r\n const keyMutex = this.pool.getKey(key);\r\n return keyMutex.runExclusive(async () => {\r\n const v = this.data.get(key);\r\n if (this.isMeta(v)) {\r\n await this.delChunk(key, v as ChunkMeta);\r\n }\r\n const res = this.data.delete(key);\r\n this.scheduleFlush();\r\n return res;\r\n });\r\n }\r\n\r\n private async saveChunk(key: string, value: any): Promise<ChunkMeta> {\r\n const str = JSON.stringify(value, this.replacer);\r\n const buf = Buffer.from(str, 'utf-8');\r\n const total = Math.ceil(buf.length / this.size);\r\n await mkdir(this.chunkDir, { recursive: true });\r\n\r\n const manifest: ChunkManifest = {\r\n v: 1,\r\n k: key,\r\n t: total,\r\n s: this.size,\r\n c: buf.length,\r\n m: Date.now().toString(36),\r\n };\r\n\r\n const writes: Promise<void>[] = [];\r\n for (let i = 0; i < total; i++) {\r\n const start = i * this.size;\r\n const end = Math.min(start + this.size, buf.length);\r\n const chunk = buf.subarray(start, end);\r\n writes.push(writeFile(join(this.chunkDir, `${key}.${i}.json`), JSON.stringify({ i, d: chunk.toString('base64') })));\r\n }\r\n writes.push(writeFile(join(this.chunkDir, `${key}.manifest.json`), JSON.stringify(manifest)));\r\n\r\n await Promise.all(writes);\r\n\r\n return { t: total, s: this.size, k: key } as ChunkMeta;\r\n }\r\n\r\n private async loadChunk(key: string, meta: ChunkMeta): Promise<void> {\r\n const manifestPath = join(this.chunkDir, `${key}.manifest.json`);\r\n const manifest: ChunkManifest = JSON.parse(await readFile(manifestPath, 'utf-8'));\r\n const reads: Promise<Buffer>[] = [];\r\n for (let i = 0; i < manifest.t; i++) {\r\n reads.push(readFile(join(this.chunkDir, `${key}.${i}.json`), 'utf-8').then((d) => Buffer.from(JSON.parse(d).d, 'base64')));\r\n }\r\n\r\n const chunks = await Promise.all(reads);\r\n const fullBuf = Buffer.concat(chunks);\r\n const data = JSON.parse(fullBuf.toString('utf-8'), this.reviver);\r\n this.data.set(key, data);\r\n }\r\n\r\n private async delChunk(key: string, meta: ChunkMeta): Promise<void> {\r\n const dels: Promise<void>[] = [];\r\n for (let i = 0; i < meta.t; i++) {\r\n dels.push(unlink(join(this.chunkDir, `${key}.${i}.json`)).catch(() => {}));\r\n }\r\n dels.push(unlink(join(this.chunkDir, `${key}.manifest.json`)).catch(() => {}));\r\n await Promise.all(dels);\r\n\r\n try {\r\n const files = await readdir(this.chunkDir);\r\n if (files.length === 0) await rmdir(this.chunkDir);\r\n } catch {}\r\n }\r\n\r\n private isMeta(v: any): v is ChunkMeta {\r\n return v?.t && v?.s && v?.k;\r\n }\r\n}\r\n\r\nexport const createLowdb = (\r\n path: string,\r\n options?: {\r\n BufferJSON?: any;\r\n size?: number;\r\n flushMode?: FlushMode;\r\n debounceMs?: number;\r\n },\r\n): Lowdb => new Lowdb(path, options?.BufferJSON, options?.size, options?.flushMode, options?.debounceMs);\r\n","import { createSpinner } from 'nanospinner';\r\nimport NodeCache from 'node-cache';\r\nimport { EventEmitter } from 'node:stream';\r\nimport pino from 'pino';\r\nimport { createLowdb, Lowdb } from './lowdb';\r\n\r\nexport type StoreData = Record<string, any>;\r\n\r\nexport class NanoStore {\r\n private data = new Map<string, StoreData>();\r\n\r\n set(key: string, value: any) {\r\n this.data.set(key, { ...this.data.get(key), ...value });\r\n }\r\n\r\n get(key: string) {\r\n return this.data.get(key) || {};\r\n }\r\n\r\n update(key: string, updater: (current: StoreData) => any) {\r\n const current = this.get(key);\r\n this.set(key, updater(current));\r\n }\r\n\r\n delete(key: string) {\r\n this.data.delete(key);\r\n }\r\n\r\n has(key: string) {\r\n return this.data.has(key);\r\n }\r\n\r\n private dbCache = new Map<string, Lowdb>();\r\n\r\n lowdb(session: string, dir: string): Lowdb {\r\n const path = `.session/${session}/${dir}`;\r\n if (this.dbCache.has(path)) {\r\n return this.dbCache.get(path)!;\r\n }\r\n const db = createLowdb(path);\r\n this.dbCache.set(path, db);\r\n return db;\r\n }\r\n\r\n spinner = createSpinner('', { color: 'green' });\r\n logger = pino({ level: 'silent', enabled: false });\r\n\r\n events = new EventEmitter();\r\n\r\n groupCache = new NodeCache({ stdTTL: 5 * 60, useClones: false });\r\n}\r\n\r\nexport const store = new NanoStore();\r\n","import { AuthenticationCreds, AuthenticationState, BufferJSON, initAuthCreds, proto, SignalDataTypeMap } from 'baileys';\r\nimport { mkdir, stat } from 'node:fs/promises';\r\nimport { createLowdb } from '../Modules/lowdb';\r\nimport { store } from '../Modules/store';\r\n\r\nexport const useAuthState = async (folder: string): Promise<{ state: AuthenticationState; saveCreds: () => Promise<void> }> => {\r\n store.spinner.start(' Initializing auth state...');\r\n\r\n const folderInfo = await stat(folder).catch(() => {});\r\n\r\n if (folderInfo) {\r\n if (!folderInfo.isDirectory()) {\r\n store.spinner.error(' Failed to open credentials\\n');\r\n throw `found something that is not a directory at ${folder}, either delete it or specify a different location`;\r\n }\r\n } else {\r\n await mkdir(folder, { recursive: true });\r\n }\r\n\r\n const credsDb = createLowdb(`${folder}/auth/creds.json`, { BufferJSON });\r\n const keysDb = createLowdb(`${folder}/auth/keys.json`, { BufferJSON, size: 512 * 1024 });\r\n\r\n await Promise.all([credsDb.read(), keysDb.read()]);\r\n\r\n const creds: AuthenticationCreds = (await credsDb.get('creds')) || initAuthCreds();\r\n\r\n store.spinner.success(' Generate auth successfully');\r\n\r\n return {\r\n state: {\r\n creds,\r\n keys: {\r\n get: async (type, ids) => {\r\n const data: { [_: string]: SignalDataTypeMap[typeof type] } = {};\r\n\r\n await Promise.all(\r\n ids.map(async (id) => {\r\n const key = `${type}:${id}`;\r\n let value = await keysDb.get(key);\r\n\r\n if (type === 'app-state-sync-key' && value) {\r\n value = proto.Message.AppStateSyncKeyData.fromObject(value);\r\n }\r\n\r\n data[id] = value as SignalDataTypeMap[typeof type];\r\n }),\r\n );\r\n\r\n return data;\r\n },\r\n set: async (data) => {\r\n const tasks: Promise<void>[] = [];\r\n\r\n for (const category in data) {\r\n for (const id in data[category as keyof SignalDataTypeMap]) {\r\n const value = data[category as keyof SignalDataTypeMap]![id];\r\n const key = `${category}:${id}`;\r\n\r\n if (value) {\r\n tasks.push(keysDb.set(key, value));\r\n } else {\r\n tasks.push(keysDb.delete(key).then(() => {}));\r\n }\r\n }\r\n }\r\n\r\n await Promise.all(tasks);\r\n await keysDb.write();\r\n },\r\n },\r\n },\r\n saveCreds: async () => {\r\n await credsDb.set('creds', creds);\r\n await credsDb.write();\r\n },\r\n };\r\n};\r\n","import makeWASocket, { AuthenticationState, isJidBroadcast, makeCacheableSignalKeyStore } from 'baileys';\r\nimport NodeCache from 'node-cache';\r\nimport { Client } from '../Classes';\r\nimport { store } from '../Modules/store';\r\n\r\nconst cache = new NodeCache();\r\n\r\nexport const socketConfig = (client: Client, state: AuthenticationState): Parameters<typeof makeWASocket>[0] => {\r\n return {\r\n logger: store.logger,\r\n printQRInTerminal: false,\r\n defaultQueryTimeoutMs: undefined,\r\n\r\n markOnlineOnConnect: client.options.autoOnline,\r\n syncFullHistory: client.options.syncFullHistory,\r\n\r\n msgRetryCounterCache: new NodeCache(),\r\n mediaCache: new NodeCache({ stdTTL: 60 }),\r\n\r\n cachedGroupMetadata: async (jid: string) => cache.get(jid),\r\n shouldIgnoreJid: (jid) => isJidBroadcast(jid),\r\n\r\n auth: {\r\n creds: state.creds,\r\n keys: makeCacheableSignalKeyStore(state.keys, store.logger),\r\n },\r\n\r\n getMessage: async (key) => {\r\n if (!key?.id) return undefined;\r\n return await client.db('messages').get(key.id);\r\n },\r\n };\r\n};\r\n","import makeWASocket from 'baileys';\r\nimport { Client } from '../Classes';\r\nimport { socketConfig } from '../Config/socket';\r\nimport { store } from '../Modules/store';\r\nimport { useAuthState } from './state';\r\n\r\nexport const registerAuthCreds = async (client: Client) => {\r\n const SESSION_PATH = `.session/${client.options.session}`;\r\n\r\n const { state, saveCreds } = await useAuthState(SESSION_PATH);\r\n\r\n const config = socketConfig(client, state);\r\n const socket = makeWASocket(config);\r\n\r\n socket.ev.on('creds.update', saveCreds);\r\n\r\n store.set('socket', socket);\r\n};\r\n","import z from 'zod';\r\n\r\nexport const parseZod = <T>(schema: z.ZodSchema<T>, data: unknown) => {\r\n const result = schema.safeParse(data);\r\n\r\n if (result.success) return result.data;\r\n\r\n console.error(z.treeifyError(result.error));\r\n\r\n throw 'Invalid data';\r\n};\r\n","import { z } from 'zod';\r\nimport { ListenerCallsType } from './calls';\r\nimport { ListenerConnectionType } from './connection';\r\nimport { ListenerMessagesType } from './messages';\r\n\r\nexport const ClientBaseType = z.object({\r\n session: z.string().default('zaileys').optional(),\r\n prefix: z.string().optional(),\r\n\r\n ignoreMe: z.boolean().default(true).optional(),\r\n showLogs: z.boolean().default(true).optional(),\r\n\r\n syncFullHistory: z.boolean().default(true).optional(),\r\n\r\n autoMentions: z.boolean().default(true).optional(),\r\n autoOnline: z.boolean().default(true).optional(),\r\n autoRead: z.boolean().default(true).optional(),\r\n autoPresence: z.boolean().default(true).optional(),\r\n autoRejectCall: z.boolean().default(true).optional(),\r\n});\r\n\r\nexport const ClientAuthPairingType = z.object({\r\n authType: z.literal('pairing'),\r\n phoneNumber: z.number(),\r\n});\r\n\r\nexport const ClientAuthQRType = z.object({\r\n authType: z.literal('qr'),\r\n});\r\n\r\nexport const ClientOptionsType = z.union([ClientAuthPairingType.extend(ClientBaseType.shape), ClientAuthQRType.extend(ClientBaseType.shape)]);\r\n\r\nexport const EventEnumType = z.enum(['connection', 'messages', 'calls']);\r\n\r\nexport type EventCallbackType = {\r\n connection: (ctx: z.infer<typeof ListenerConnectionType>) => void;\r\n messages: (ctx: z.infer<typeof ListenerMessagesType>) => void;\r\n calls: (ctx: z.infer<typeof ListenerCallsType>) => void;\r\n};\r\n","{\n \"name\": \"zaileys\",\n \"version\": \"1.1.40-tx.0\",\n \"license\": \"MIT\",\n \"author\": \"zaadevofc\",\n \"repository\": {\n \"url\": \"https://github.com/zeative/zaileys\"\n },\n \"scripts\": {\n \"test\": \"tsx --watch examples/test.ts\",\n \"build\": \"rolldown -c rolldown.config.ts\",\n \"r:patch\": \"npm run build && npm version patch && npm publish\",\n \"r:minor\": \"npm run build && npm version minor && npm publish\",\n \"r:major\": \"npm run build && npm version major && npm publish\"\n },\n \"devDependencies\": {\n \"@types/qrcode-terminal\": \"^0.12.2\",\n \"rolldown\": \"1.0.0-beta.52\",\n \"rolldown-plugin-dts\": \"^0.18.1\",\n \"tsx\": \"^4.21.0\",\n \"typescript\": \"^5.9.3\",\n \"zod\": \"^4.1.13\"\n },\n \"dependencies\": {\n \"async-mutex\": \"^0.5.0\",\n \"baileys\": \"7.0.0-rc.9\",\n \"figlet\": \"^1.9.4\",\n \"gradient-string\": \"^3.0.0\",\n \"lodash\": \"^4.17.21\",\n \"lowdb\": \"^7.0.1\",\n \"nanospinner\": \"^1.2.2\",\n \"node-cache\": \"^5.1.2\",\n \"pino\": \"^10.1.0\",\n \"qrcode-terminal\": \"^0.12.0\",\n \"rate-limiter-flexible\": \"^9.0.0\"\n }\n}\n","import _ from 'lodash';\r\nimport fs from 'node:fs/promises';\r\nimport { store } from '../Modules/store';\r\n\r\nexport const getLatestLibVersion = async () => {\r\n try {\r\n const res = await fetch('https://registry.npmjs.org/zaileys');\r\n const data = await res.json();\r\n\r\n return data['dist-tags'].latest;\r\n } catch (error) {\r\n throw error;\r\n }\r\n};\r\n\r\nexport const removeAuthCreds = async (session: string) => {\r\n try {\r\n const SESSION_PATH = `.session/${session}/creds.json`;\r\n await fs.unlink(SESSION_PATH);\r\n } catch (error) {\r\n store.spinner.error(`Failed to remove auth creds for session \"${session}\"!`);\r\n throw error;\r\n }\r\n};\r\n\r\nexport const normalizeText = (text = '') => {\r\n if (!text) return null;\r\n\r\n let clean = text\r\n .normalize('NFKD')\r\n .replace(/[\\u0000-\\u001F\\u007F-\\u009F\\u200B-\\u200F\\u2028-\\u202F\\u2060-\\u206F\\uFEFF\\uFFF9-\\uFFFB]/gu, '')\r\n .replace(\r\n /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1-\\u05C2\\u05C4-\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7-\\u06E8\\u06EA-\\u06ED\\u20D0-\\u20FF\\uFE20-\\uFE2F]/gu,\r\n '',\r\n )\r\n .replace(/[\\u202A-\\u202E\\u2066-\\u2069]/gu, '')\r\n .replace(/\\u202E([\\s\\S]*?)\\u202C?/gu, (_, s) => [...s].reverse().join(''));\r\n\r\n return clean;\r\n};\r\n","import figlet from 'figlet';\r\nimport gradient, { cristal, mind, morning } from 'gradient-string';\r\nimport pkg from '../../package.json' assert { type: 'json' };\r\nimport { store } from '../Modules/store';\r\nimport { getLatestLibVersion } from './validate';\r\nimport qrcode from 'qrcode-terminal';\r\n\r\nexport const autoDisplayQRCode = (code: string) => {\r\n qrcode.generate(code, { small: true }, (code) => {\r\n console.log(code);\r\n });\r\n};\r\n\r\nexport const autoDisplayBanner = async () => {\r\n console.clear();\r\n store.spinner.start(' Checking for updates...');\r\n\r\n const latestVersion = await getLatestLibVersion();\r\n const isLatest = pkg.version === latestVersion;\r\n\r\n store.spinner.stop();\r\n\r\n const logoLabel = 'Zaileys';\r\n const copyright = `\\nby ${pkg.author} ยท v${pkg.version}`;\r\n\r\n const updateLabel = `${isLatest ? 'Already using latest version!' : `Update available! (v${latestVersion})`} \\n`;\r\n const updateColor = isLatest ? ['#04ba25ff', '#04ba25ff'] : ['#ffaf00ff', '#ffaf00ff'];\r\n\r\n const logo = await figlet.text(logoLabel);\r\n const fancy = cristal(logo);\r\n\r\n console.log(fancy);\r\n console.log(gradient(['#383838ff', '#383838ff'])(copyright));\r\n console.log(gradient(updateColor)(updateLabel));\r\n};\r\n","import makeWASocket, { WACallEvent } from 'baileys';\r\nimport { Client } from '../Classes';\r\nimport { store } from '../Modules/store';\r\nimport z from 'zod';\r\nimport { ListenerCallsType } from '../Types/calls';\r\n\r\nexport class Calls {\r\n constructor(private client: Client) {\r\n this.initialize();\r\n }\r\n\r\n async initialize() {\r\n const socket = store.get('socket') as ReturnType<typeof makeWASocket>;\r\n\r\n socket.ev.on('call', async (calls) => {\r\n for (const call of calls) {\r\n const parsed = await this.parse(call);\r\n if (!parsed) continue;\r\n\r\n await this.client.middleware.run({ calls: parsed });\r\n store.events.emit('calls', parsed);\r\n }\r\n });\r\n }\r\n\r\n async parse(caller: WACallEvent) {\r\n const output: Partial<z.infer<typeof ListenerCallsType>> = {};\r\n\r\n output.callId = caller.id;\r\n output.callerId = caller.from;\r\n output.roomId = caller.chatId;\r\n\r\n output.date = caller.date;\r\n output.offline = caller.offline;\r\n output.status = caller.status;\r\n\r\n output.isVideo = !!caller.isVideo;\r\n output.isGroup = !!caller.isGroup;\r\n\r\n return output;\r\n }\r\n}\r\n","import { URL_REGEX } from 'baileys';\r\nimport _ from 'lodash';\r\n\r\nexport const ignoreLint = (data: any) => data;\r\n\r\nexport const toJson = (object: unknown) => {\r\n try {\r\n return JSON.parse(object as string);\r\n } catch {\r\n return _.attempt(() => JSON.parse(JSON.stringify(object) || '{}'));\r\n }\r\n};\r\n\r\nexport const toString = (object: unknown) => {\r\n try {\r\n return JSON.stringify(object);\r\n } catch {\r\n const result = _.attempt(() => JSON.stringify(toJson(object) || '{}'));\r\n return _.isError(result) ? '{}' : result;\r\n }\r\n};\r\n\r\nexport const shuffleString = (str = '') => {\r\n return _.shuffle(str).join('');\r\n};\r\n\r\nexport const findGlobalWord = (text = '', word = '') => {\r\n if (!text) return null;\r\n return _.includes(text.toLowerCase(), word.toLowerCase());\r\n};\r\n\r\nexport const extractUrls = (text = '') => {\r\n if (!text) return [];\r\n return _.castArray(text.match(URL_REGEX) || []);\r\n};\r\n\r\nexport const randomize = (arr: string[]) => {\r\n return arr[Math.floor(Math.random() * arr.length)];\r\n};\r\n\r\nexport const pickKeysFromArray = (arr: any[], keys: string[]) => {\r\n for (const obj of arr) {\r\n for (const key of keys) {\r\n if (key in obj && obj[key] !== undefined && obj[key] !== null) {\r\n return obj[key];\r\n }\r\n }\r\n }\r\n return undefined;\r\n};\r\n","import makeWASocket, { delay, DisconnectReason, jidNormalizedUser } from 'baileys';\r\nimport { cristal } from 'gradient-string';\r\nimport z from 'zod';\r\nimport { Client } from '../Classes';\r\nimport { store } from '../Modules/store';\r\nimport { ListenerConnectionType } from '../Types/connection';\r\nimport { ignoreLint, removeAuthCreds } from '../Utils';\r\nimport { autoDisplayQRCode } from '../Utils/banner';\r\n\r\nexport class Connection {\r\n constructor(private client: Client) {\r\n this.initialize();\r\n }\r\n\r\n async initialize() {\r\n store.spinner.start(' Initializing connection...');\r\n\r\n const socket = store.get('socket') as ReturnType<typeof makeWASocket>;\r\n\r\n const output: Partial<z.infer<typeof ListenerConnectionType>> = {};\r\n\r\n // Reload client\r\n const reload = async () => {\r\n output.status = 'reload';\r\n store.spinner.warn(' Connection lost. Attempting auto-reload...');\r\n\r\n await this.client.initialize();\r\n };\r\n\r\n // Retry handler\r\n const retry = async () => {\r\n await delay(3000);\r\n\r\n store.spinner.warn(` Invalid session. Attempting auto cleaning creds...`);\r\n await delay(3000);\r\n\r\n await removeAuthCreds(this.client.options.session);\r\n await reload();\r\n };\r\n\r\n // Pairing handler\r\n if (this.client.options.authType === 'pairing' && this.client.options.phoneNumber && !socket.authState.creds.registered) {\r\n store.spinner.update(' Generating pairing code...');\r\n\r\n await delay(3500);\r\n\r\n try {\r\n output.authTimeout = Date.now() + 60_000;\r\n\r\n const expired = new Date(output.authTimeout).toLocaleTimeString();\r\n const code = await socket.requestPairingCode(this.client.options.phoneNumber.toString());\r\n\r\n store.spinner.warn(` Pairing expired at ${cristal(expired)}`);\r\n store.spinner.warn(` Pairing code: ${code}`);\r\n\r\n output.code = code;\r\n } catch {\r\n await retry();\r\n }\r\n }\r\n\r\n socket.ev.on('connection.update', async (ctx) => {\r\n const { connection, lastDisconnect, qr } = ctx;\r\n\r\n output.status = connection || 'connecting';\r\n output.authType = this.client.options.authType;\r\n\r\n store.spinner.update(' Connection status: ' + cristal(output.status));\r\n\r\n // QR handler\r\n if (this.client.options.authType === 'qr' && qr) {\r\n output.authTimeout = Date.now() + 60_000;\r\n\r\n const expired = new Date(output.authTimeout).toLocaleTimeString();\r\n\r\n store.spinner.warn(` Please scan the QR code...`);\r\n store.spinner.warn(` Qr code expired at ${cristal(expired)}`);\r\n\r\n autoDisplayQRCode(qr);\r\n\r\n output.qr = qr;\r\n return;\r\n }\r\n\r\n if (connection === 'close') {\r\n const code = ignoreLint(lastDisconnect?.error)?.output?.statusCode;\r\n const error = lastDisconnect?.error?.message || '';\r\n\r\n const isReconnect = typeof code === 'number' && code !== DisconnectReason.loggedOut;\r\n\r\n store.spinner.error(`[${code} - Closed] ${error}`);\r\n\r\n if (code === 401 || code === 405 || code === 500) {\r\n store.spinner.error(' Invalid session, please delete manually!');\r\n store.spinner.error(` Session \"${this.client.options.session}\" has not valid, please delete it!\\n`);\r\n\r\n await retry();\r\n }\r\n\r\n if (isReconnect) {\r\n await reload();\r\n }\r\n }\r\n\r\n if (connection === 'open') {\r\n if (socket.user?.id) {\r\n const id = jidNormalizedUser(socket.user.id).split('@')[0];\r\n const name = socket.user.name || socket.user.verifiedName;\r\n\r\n store.spinner.success(` Connected as ${cristal(name || id)}`);\r\n } else {\r\n store.spinner.success(` Connected!`);\r\n }\r\n }\r\n\r\n store.events.emit('connection', output);\r\n });\r\n\r\n socket.ev.on('messaging-history.set', ({ progress }) => {\r\n output.status = 'syncing';\r\n output.syncProgress = progress;\r\n\r\n store.spinner.start(` Syncing messages history...`);\r\n\r\n if (progress) {\r\n store.spinner.update(` Syncing messages history ${progress + '%'}`);\r\n }\r\n\r\n if (progress == 100) {\r\n store.spinner.success(` Syncing messages history completed!`);\r\n output.syncCompleted = true;\r\n }\r\n\r\n store.set('connection', output);\r\n store.events.emit('connection', output);\r\n });\r\n }\r\n}\r\n","export const MESSAGE_MEDIA_TYPES = {\r\n text: 'text',\r\n conversation: 'text',\r\n imageMessage: 'image',\r\n contactMessage: 'contact',\r\n locationMessage: 'location',\r\n documentMessage: 'document',\r\n audioMessage: 'audio',\r\n videoMessage: 'video',\r\n protocolMessage: 'protocol',\r\n contactsArrayMessage: 'contacts',\r\n highlyStructuredMessage: 'highlyStructured',\r\n sendPaymentMessage: 'sendPayment',\r\n liveLocationMessage: 'location',\r\n requestPaymentMessage: 'requestPayment',\r\n declinePaymentRequestMessage: 'declinePaymentRequest',\r\n cancelPaymentRequestMessage: 'cancelPaymentRequest',\r\n templateMessage: 'template',\r\n stickerMessage: 'sticker',\r\n groupInviteMessage: 'groupInvite',\r\n templateButtonReplyMessage: 'buttons',\r\n productMessage: 'product',\r\n deviceSentMessage: 'deviceSent',\r\n listMessage: 'list',\r\n viewOnceMessage: 'viewOnce',\r\n orderMessage: 'order',\r\n listResponseMessage: 'list',\r\n ephemeralMessage: 'ephemeral',\r\n invoiceMessage: 'invoice',\r\n buttonsMessage: 'buttons',\r\n buttonsResponseMessage: 'buttons',\r\n paymentInviteMessage: 'paymentInvite',\r\n interactiveMessage: 'interactive',\r\n reactionMessage: 'reaction',\r\n stickerSyncRmrMessage: 'sticker',\r\n interactiveResponseMessage: 'interactiveResponse',\r\n pollCreationMessage: 'pollCreation',\r\n pollCreationMessageKey: 'pollUpdate',\r\n pollUpdateMessage: 'pollUpdate',\r\n keepInChatMessage: 'keepInChat',\r\n documentWithCaptionMessage: 'document',\r\n requestPhoneNumberMessage: 'requestPhoneNumber',\r\n viewOnceMessageV2: 'viewOnce',\r\n encReactionMessage: 'reaction',\r\n editedMessage: 'text',\r\n viewOnceMessageV2Extension: 'viewOnce',\r\n pollCreationMessageV2: 'pollCreation',\r\n scheduledCallCreationMessage: 'scheduledCallCreation',\r\n groupMentionedMessage: 'groupMentioned',\r\n pinInChatMessage: 'pinInChat',\r\n pollCreationMessageV3: 'pollCreation',\r\n scheduledCallEditMessage: 'scheduledCallEdit',\r\n ptvMessage: 'ptv',\r\n botInvokeMessage: 'botInvoke',\r\n callLogMesssage: 'callLog',\r\n encCommentMessage: 'encComment',\r\n bcallMessage: 'bcall',\r\n lottieStickerMessage: 'lottieSticker',\r\n eventMessage: 'event',\r\n commentMessage: 'comment',\r\n newsletterAdminInviteMessage: 'text',\r\n extendedTextMessageWithParentKey: 'text',\r\n extendedTextMessage: 'text',\r\n placeholderMessage: 'placeholder',\r\n encEventUpdateMessage: 'encEventUpdate',\r\n} as const;\r\n\r\nexport const MESSAGES_VERIFIED_TYPE = {\r\n whatsapp: '0@s.whatsapp.net',\r\n meta: '13135550002@s.whatsapp.net',\r\n chatgpt: '18002428478@s.whatsapp.net',\r\n copilot: '18772241042@s.whatsapp.net',\r\n instagram: '447723442971@s.whatsapp.net',\r\n tiktok: '6285574670498@s.whatsapp.net',\r\n} as const;\r\n","import { extractMessageContent, getContentType, proto } from 'baileys';\r\nimport _ from 'lodash';\r\n\r\nexport const generateId = (input: string | string[]) => {\r\n let combinedString;\r\n\r\n if (Array.isArray(input)) {\r\n combinedString = input.join('|');\r\n } else if (typeof input === 'string') {\r\n combinedString = input;\r\n } else {\r\n combinedString = String(input);\r\n }\r\n\r\n let hash = 2166136261;\r\n const len = combinedString.length;\r\n\r\n for (let i = 0; i < len; i++) {\r\n hash ^= combinedString.charCodeAt(i);\r\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\r\n }\r\n\r\n return 'Z4CD' + (hash >>> 0).toString(16).padStart(8, '0').toUpperCase();\r\n};\r\n\r\nexport const getUsersMentions = (text = '') => {\r\n if (!text) return [];\r\n const ids = new Set();\r\n for (const match of text.matchAll(/@(\\d+)/g)) {\r\n ids.add(match[1]);\r\n }\r\n return _.toArray(ids) as string[];\r\n};\r\n\r\nexport const extractJids = (text = '') => {\r\n if (!text) return [];\r\n const ids = new Set();\r\n for (const match of text.matchAll(/@(\\d+)/g)) {\r\n ids.add(match[1]);\r\n }\r\n return _.flatMap([...ids], (id) => [`${id}@s.whatsapp.net`, `${id}@g.us`]);\r\n};\r\n\r\nexport const cleanMediaObject = (object: any) => {\r\n return _.omit(object, [\r\n 'url',\r\n 'contextInfo',\r\n 'fileSha256',\r\n 'fileEncSha256',\r\n 'mediaKey',\r\n 'directPath',\r\n 'waveform',\r\n 'thumbnail',\r\n 'jpegThumbnail',\r\n 'thumbnailEncSha256',\r\n 'thumbnailSha256',\r\n 'thumbnailDirectPath',\r\n 'firstFrameSidecar',\r\n 'streamingSidecar',\r\n 'scansSidecar',\r\n 'callKey',\r\n 'message',\r\n 'key',\r\n 'midQualityFileSha256',\r\n ]);\r\n};\r\n\r\nexport const getDeepContent = (raw?: proto.IMessage | null) => {\r\n if (!raw) return { leaf: undefined, chain: [] as string[] };\r\n\r\n let current: any = extractMessageContent(raw) || raw;\r\n const chain: string[] = [];\r\n\r\n while (current && typeof current === 'object') {\r\n const type = getContentType(current);\r\n if (!type) break;\r\n\r\n chain.push(type);\r\n const next = current[type];\r\n\r\n if (!next || typeof next !== 'object') {\r\n current = next;\r\n break;\r\n }\r\n\r\n current = next;\r\n }\r\n\r\n return { leaf: current, chain };\r\n};\r\n","import makeWASocket, { downloadMediaMessage, getDevice, jidNormalizedUser, WAMessage, WAMessageAddressingMode } from 'baileys';\r\nimport z from 'zod';\r\nimport { Client } from '../Classes';\r\nimport { MESSAGE_MEDIA_TYPES } from '../Config/media';\r\nimport { store } from '../Modules/store';\r\nimport { ListenerMessagesType } from '../Types/messages';\r\nimport { extractUrls, findGlobalWord, normalizeText, pickKeysFromArray, toString } from '../Utils';\r\nimport { cleanMediaObject, generateId, getDeepContent, getUsersMentions } from '../Utils/message';\r\n\r\nexport class Messages {\r\n constructor(private client: Client) {\r\n if (store.get('connection')?.status != 'syncing') {\r\n this.initialize();\r\n }\r\n }\r\n\r\n async initialize() {\r\n const socket = store.get('socket') as ReturnType<typeof makeWASocket>;\r\n\r\n socket.ev.on('messages.upsert', async ({ messages, type }) => {\r\n if (type !== 'notify') return;\r\n\r\n for (const message of messages) {\r\n const parsed = await this.parse(message);\r\n\r\n if (parsed) {\r\n await this.client.middleware.run({ messages: parsed });\r\n store.events.emit('messages', parsed);\r\n }\r\n }\r\n });\r\n }\r\n\r\n async parse(message: WAMessage) {\r\n console.log(JSON.stringify(message, null, 2));\r\n\r\n if (message?.category === 'peer') return;\r\n if (!message.message || !message?.key?.id) return;\r\n if (message?.messageStubType || !!message?.messageStubParameters) return;\r\n if (message?.message?.botInvokeMessage || message.message?.protocolMessage?.peerDataOperationRequestResponseMessage) return;\r\n\r\n const original = message;\r\n\r\n const socket = store.get('socket') as ReturnType<typeof makeWASocket>;\r\n const output: Partial<z.infer<typeof ListenerMessagesType>> = {};\r\n\r\n const contentExtract = getDeepContent(message.message);\r\n const contentType = contentExtract.chain.at(-1);\r\n const content = contentExtract.leaf;\r\n\r\n // console.log(content);\r\n\r\n output.uniqueId = null;\r\n output.channelId = null;\r\n\r\n output.chatId = message?.message?.protocolMessage?.key?.id || message?.key?.id || null;\r\n output.chatAddress = message?.key?.addressingMode as WAMessageAddressingMode;\r\n output.chatType = MESSAGE_MEDIA_TYPES[contentType];\r\n\r\n output.receiverId = jidNormalizedUser(socket?.user?.id || '');\r\n output.receiverName = normalizeText(socket?.user?.name || socket?.user?.verifiedName);\r\n\r\n output.roomId = jidNormalizedUser(message?.key?.remoteJid);\r\n\r\n const chat = await this.client.db('chats').get(output.roomId);\r\n const contact = await this.client.db('contacts').get(output.roomId);\r\n\r\n const chatName = pickKeysFromArray(chat, ['name', 'verifiedName']);\r\n const contactName = pickKeysFromArray(contact, ['notify', 'name']);\r\n\r\n output.roomName = chatName || contactName || null;\r\n\r\n output.senderLid = pickKeysFromArray([message?.key], ['remoteJidAlt', 'participant']);\r\n output.senderId = jidNormalizedUser(message?.participant || message?.key?.participant || message?.key?.remoteJid);\r\n output.senderName = normalizeText(message?.pushName || message?.verifiedBizName);\r\n output.senderDevice = getDevice(output.chatId);\r\n\r\n output.channelId = generateId([output.roomId, output.senderId]);\r\n output.uniqueId = generateId([output.channelId, output.chatId]);\r\n\r\n output.timestamp = Number(message?.messageTimestamp);\r\n\r\n output.text =\r\n content?.text ||\r\n content?.caption ||\r\n content?.name ||\r\n content?.displayName ||\r\n content?.conversation ||\r\n content?.contentText ||\r\n content?.selectedDisplayText ||\r\n content ||\r\n null;\r\n\r\n output.text = normalizeText(output.text);\r\n output.mentions = getUsersMentions(output.text);\r\n output.links = extractUrls(output.text || '');\r\n\r\n output.isFromMe = message?.key?.fromMe || false;\r\n output.isTagMe = output.mentions?.includes(output.receiverId.split('@')[0]);\r\n output.isPrefix = output.text?.startsWith(this.client.options?.prefix);\r\n\r\n output.isSpam = false;\r\n\r\n output.isGroup = output.roomId?.includes('@g.us');\r\n output.isNewsletter = output.roomId?.includes('@newsletter');\r\n output.isStory = output.roomId?.includes('@broadcast');\r\n\r\n output.isViewOnce = false;\r\n output.isEdited = false;\r\n output.isDeleted = false;\r\n output.isPinned = false;\r\n output.isUnPinned = false;\r\n\r\n output.isBroadcast = !!message?.broadcast;\r\n\r\n output.isEphemeral = !!findGlobalWord(toString(message.message), 'ephemeralSettingTimestamp');\r\n output.isForwarded = !!findGlobalWord(toString(message.message), 'forwardingScore');\r\n\r\n output.citation = {};\r\n\r\n if (output.chatType !== 'text') {\r\n output.media = {\r\n ...cleanMediaObject(content),\r\n buffer: () => downloadMediaMessage(message, 'buffer', {}) as Promise<Buffer>,\r\n stream: () => downloadMediaMessage(message, 'stream', {}) as Promise<NodeJS.ReadableStream>,\r\n };\r\n }\r\n\r\n output.message = () => original;\r\n output.replied = null;\r\n\r\n return output;\r\n }\r\n}\r\n","import makeWASocket, { getAggregateVotesInPollMessage } from 'baileys';\r\nimport { Client } from '../Classes';\r\nimport { store } from '../Modules/store';\r\nimport { Calls } from './calls';\r\nimport { Connection } from './connection';\r\nimport { Messages } from './messages';\r\n\r\nexport class Listener {\r\n constructor(private client: Client) {\r\n new Connection(client);\r\n new Messages(client);\r\n new Calls(client);\r\n\r\n this.initialize();\r\n }\r\n\r\n async initialize() {\r\n const socket = store.get('socket') as ReturnType<typeof makeWASocket>;\r\n\r\n socket.ev.on('groups.update', async ([event]) => {\r\n const metadata = await socket.groupMetadata(event.id);\r\n store.groupCache.set(event.id, metadata);\r\n });\r\n\r\n socket.ev.on('group-participants.update', async (event) => {\r\n const metadata = await socket.groupMetadata(event.id);\r\n store.groupCache.set(event.id, metadata);\r\n });\r\n\r\n socket?.ev.on('messaging-history.set', async (update) => {\r\n const { chats, contacts, messages } = update;\r\n\r\n for (const chat of chats) {\r\n await this.client.db('chats').push(chat.id, chat);\r\n }\r\n\r\n for (const contact of contacts) {\r\n await this.client.db('contacts').push(contact.id, contact);\r\n }\r\n\r\n for (const message of messages) {\r\n if (!message.message) return;\r\n if (message?.category === 'peer') return;\r\n if (message.message?.protocolMessage) return;\r\n\r\n await this.client.db('messages').push(message.key.remoteJid, message);\r\n }\r\n });\r\n\r\n socket?.ev.on('messages.upsert', async ({ messages }) => {\r\n for (const message of messages) {\r\n if (!message.message) return;\r\n if (message?.category === 'peer') return;\r\n if (message.message?.protocolMessage) return;\r\n\r\n await this.client.db('messages').push(message.key.remoteJid, message);\r\n }\r\n });\r\n\r\n socket?.ev.on('chats.upsert', async (chats) => {\r\n for (const chat of chats) {\r\n await this.client.db('chats').push(chat.id, chat);\r\n }\r\n });\r\n\r\n socket?.ev.on('contacts.upsert', async (contacts) => {\r\n for (const contact of contacts) {\r\n await this.client.db('contacts').push(contact.id, contact);\r\n }\r\n });\r\n\r\n socket?.ev.on('messages.update', async (events) => {\r\n console.log('๐ ~ initialize ~ src/Listener/index.ts:72 ~ events:', events);\r\n for (const { key, update } of events) {\r\n if (!update.pollUpdates) continue;\r\n\r\n const pollCreation = await this.client.db('messages').get(key.remoteJid);\r\n if (!pollCreation) continue;\r\n\r\n const aggregation = getAggregateVotesInPollMessage({\r\n message: pollCreation,\r\n pollUpdates: update.pollUpdates,\r\n });\r\n\r\n console.log('poll aggregation:', aggregation);\r\n }\r\n });\r\n }\r\n}\r\n","import { MiddlewareContextType } from '../Types/middleware';\r\n\r\nexport type MiddlewareNext = () => Promise<void> | void;\r\nexport type MiddlewareHandler<T> = (ctx: MiddlewareContextType, next: MiddlewareNext) => Promise<void> | void;\r\n\r\nexport class Middleware<T> {\r\n private stack: MiddlewareHandler<T>[] = [];\r\n\r\n use(handler: MiddlewareHandler<T>) {\r\n this.stack.push(handler);\r\n return this;\r\n }\r\n\r\n async run(ctx: MiddlewareContextType) {\r\n let index = -1;\r\n\r\n const dispatch = async (i: number): Promise<void> => {\r\n if (i <= index) throw 'next() called multiple times';\r\n index = i;\r\n\r\n const fn = this.stack[i];\r\n if (!fn) return;\r\n\r\n try {\r\n await fn(ctx, () => dispatch(i + 1));\r\n } catch (err) {\r\n console.error('Middleware error:', err);\r\n throw err;\r\n }\r\n };\r\n\r\n await dispatch(0);\r\n }\r\n}\r\n","import makeWASocket from 'baileys';\r\nimport z from 'zod';\r\nimport { registerAuthCreds } from '../Auth';\r\nimport { store } from '../Modules/store';\r\nimport { parseZod } from '../Modules/zod';\r\nimport { ClientOptionsType, EventCallbackType, EventEnumType } from '../Types';\r\nimport { autoDisplayBanner } from '../Utils/banner';\r\nimport { Listener } from '../Listener';\r\n\r\nimport { Middleware, MiddlewareHandler } from './middleware';\r\n\r\nexport class Client {\r\n middleware = new Middleware<any>();\r\n\r\n constructor(public options: z.infer<typeof ClientOptionsType>) {\r\n this.options = parseZod(ClientOptionsType, options);\r\n this.initialize();\r\n }\r\n\r\n async initialize() {\r\n await autoDisplayBanner();\r\n await registerAuthCreds(this);\r\n\r\n new Listener(this);\r\n }\r\n\r\n db(path: string) {\r\n return store.lowdb(this.options.session, `stores/${path}.json`);\r\n }\r\n\r\n on<T extends z.infer<typeof EventEnumType>>(event: T, handler: EventCallbackType[T]): void {\r\n store.events.on(event, handler);\r\n }\r\n\r\n use<T>(handler: MiddlewareHandler<T>) {\r\n this.middleware.use(handler);\r\n return this;\r\n }\r\n}\r\n"],"mappings":"u0BAmBA,IAAM,GAAN,MAAM,CAAU,CACd,OAAe,KACf,OAAiB,IAAI,IACrB,OAAiB,IAAI,IACrB,QAAkB,IAElB,OAAO,KAAiB,CACtB,MAAO,CAAc,KAAK,OAAO,IAAI,EAGvC,QAAQ,EAAkB,CACxB,IAAI,EAAI,KAAK,OAAO,IAAI,EAAE,CAC1B,GAAI,CAAC,EAAG,CACN,GAAI,KAAK,OAAO,MAAQ,KAAK,QAAS,CACpC,IAAM,EAAI,KAAK,OAAO,MAAM,CAAC,MAAM,CAAC,MACpC,KAAK,OAAO,OAAO,EAAE,CAEvB,EAAI,IAAI,EACR,KAAK,OAAO,IAAI,EAAG,EAAE,CAEvB,OAAO,EAGT,OAAO,EAAkB,CACvB,IAAI,EAAI,KAAK,OAAO,IAAI,EAAE,CAC1B,GAAI,CAAC,EAAG,CACN,GAAI,KAAK,OAAO,MAAQ,KAAK,QAAS,CACpC,IAAM,EAAI,KAAK,OAAO,MAAM,CAAC,MAAM,CAAC,MACpC,KAAK,OAAO,OAAO,EAAE,CAEvB,EAAI,IAAI,EACR,KAAK,OAAO,IAAI,EAAG,EAAE,CAEvB,OAAO,IAME,EAAb,KAAmB,CACjB,KACA,KACA,KACA,KACA,SACA,SACA,QAEA,OAAiB,GACjB,UACA,WACA,WAA4C,KAC5C,MAAgB,GAEhB,YAAY,EAAc,EAAkB,EAAe,EAAI,KAAO,KAAM,EAAuB,WAAY,EAAa,IAAK,CAC/H,KAAK,KAAO,IAAI,IAChB,KAAK,KAAO,EACZ,KAAK,KAAO,GAAU,KAAK,CAC3B,KAAK,KAAO,EACZ,KAAK,SAAW,GAAG,EAAK,IACxB,KAAK,SAAW,GAAY,UAAY,KACxC,KAAK,QAAU,GAAY,SAAW,KACtC,KAAK,UAAY,EACjB,KAAK,WAAa,EAGpB,MAAc,cAA8B,CAC1C,AAEE,KAAK,UADL,MAAM,KAAK,MAAM,CACH,IAIlB,eAA8B,CACxB,QAAK,YAAc,SACvB,IAAI,KAAK,YAAc,OAAQ,CACxB,KAAK,OAAO,CACjB,OAEF,KAAK,MAAQ,GACT,MAAK,aACT,KAAK,WAAa,eAAiB,CACjC,KAAK,WAAa,KACb,KAAK,QACV,KAAK,MAAQ,GACR,KAAK,OAAO,GAChB,KAAK,WAAW,GAGrB,MAAM,MAAkC,CAEtC,OADU,KAAK,KAAK,QAAQ,KAAK,KAAK,CAC7B,aAAa,SAAY,CAChC,GAAI,CACF,IAAM,EAAM,MAAM,EAAS,KAAK,KAAM,QAAQ,CACxC,EAAS,KAAK,MAAM,EAAK,KAAK,QAAQ,CAC5C,KAAK,KAAK,OAAO,CAEjB,IAAMA,EAA4B,EAAE,CACpC,IAAK,GAAM,CAAC,EAAG,KAAM,OAAO,QAAQ,EAAO,CACrC,KAAK,OAAO,EAAE,CAChB,EAAS,KAAK,KAAK,UAAU,EAAG,EAAe,CAAC,CAEhD,KAAK,KAAK,IAAI,EAAG,EAAE,CAMvB,OAFA,MAAM,QAAQ,IAAI,EAAS,CAC3B,KAAK,OAAS,GACP,KAAK,UACN,CAIN,OAHA,MAAMC,EAAM,GAAQ,KAAK,KAAK,CAAE,CAAE,UAAW,GAAM,CAAC,CACpD,KAAK,KAAK,OAAO,CACjB,KAAK,OAAS,GACP,KAAK,OAEd,CAGJ,MAAM,OAAuB,CAE3B,OADU,KAAK,KAAK,QAAQ,KAAK,KAAK,CAC7B,aAAa,SAAY,CAChC,IAAMC,EAA2B,EAAE,CAC7BC,EAA0B,EAAE,CAElC,IAAK,GAAM,CAAC,EAAG,KAAM,KAAK,KAAM,CAC9B,GAAI,KAAK,OAAO,EAAE,CAAE,CAClB,EAAI,GAAK,EACT,SAGU,KAAK,UAAU,EAAG,KAAK,SAAS,CACpC,OAAS,KAAK,KACpB,EAAO,KACL,KAAK,UAAU,EAAG,EAAE,CAAC,KAAM,GAAS,CAClC,EAAI,GAAK,GACT,CACH,CAED,EAAI,GAAK,EAIb,MAAM,QAAQ,IAAI,EAAO,CACzB,IAAM,EAAU,KAAK,UAAU,EAAK,KAAK,SAAU,EAAE,CACrD,MAAM,EAAU,KAAK,KAAM,EAAS,QAAQ,EAC5C,CAGJ,MAAM,IAAO,EAAa,EAAyB,CACjD,MAAM,KAAK,cAAc,CAEzB,MADiB,KAAK,KAAK,OAAO,EAAI,CACvB,aAAa,SAAY,CACtC,KAAK,KAAK,IAAI,EAAK,EAAM,CACzB,KAAK,eAAe,EACpB,CAGJ,MAAM,KAAQ,EAAa,EAAyB,CAClD,MAAM,KAAK,cAAc,CAEzB,MADiB,KAAK,KAAK,OAAO,EAAI,CACvB,aAAa,SAAY,CACtC,IAAM,EAAU,KAAK,KAAK,IAAI,EAAI,CAC9BC,EACJ,AAKE,EALE,MAAM,QAAQ,EAAQ,CACjB,EACE,IAAY,IAAA,GACd,EAAE,CAEF,CAAC,EAAQ,CAElB,EAAK,KAAK,EAAM,CAChB,KAAK,KAAK,IAAI,EAAK,EAAK,CACxB,KAAK,eAAe,EACpB,CAGJ,MAAM,IAAO,EAA2B,CAEtC,OADA,MAAM,KAAK,cAAc,CAClB,KAAK,KAAK,IAAI,EAAI,CAG3B,MAAM,OAAO,EAA+B,CAG1C,OAFA,MAAM,KAAK,cAAc,CACR,KAAK,KAAK,OAAO,EAAI,CACtB,aAAa,SAAY,CACvC,IAAM,EAAI,KAAK,KAAK,IAAI,EAAI,CACxB,KAAK,OAAO,EAAE,EAChB,MAAM,KAAK,SAAS,EAAK,EAAe,CAE1C,IAAM,EAAM,KAAK,KAAK,OAAO,EAAI,CAEjC,OADA,KAAK,eAAe,CACb,GACP,CAGJ,MAAc,UAAU,EAAa,EAAgC,CACnE,IAAM,EAAM,KAAK,UAAU,EAAO,KAAK,SAAS,CAC1C,EAAM,OAAO,KAAK,EAAK,QAAQ,CAC/B,EAAQ,KAAK,KAAK,EAAI,OAAS,KAAK,KAAK,CAC/C,MAAMH,EAAM,KAAK,SAAU,CAAE,UAAW,GAAM,CAAC,CAE/C,IAAMI,EAA0B,CAC9B,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,KAAK,KACR,EAAG,EAAI,OACP,EAAG,KAAK,KAAK,CAAC,SAAS,GAAG,CAC3B,CAEKC,EAA0B,EAAE,CAClC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,IAAM,EAAQ,EAAI,KAAK,KACjB,EAAM,KAAK,IAAI,EAAQ,KAAK,KAAM,EAAI,OAAO,CAC7C,EAAQ,EAAI,SAAS,EAAO,EAAI,CACtC,EAAO,KAAK,EAAU,EAAK,KAAK,SAAU,GAAG,EAAI,GAAG,EAAE,OAAO,CAAE,KAAK,UAAU,CAAE,IAAG,EAAG,EAAM,SAAS,SAAS,CAAE,CAAC,CAAC,CAAC,CAMrH,OAJA,EAAO,KAAK,EAAU,EAAK,KAAK,SAAU,GAAG,EAAI,gBAAgB,CAAE,KAAK,UAAU,EAAS,CAAC,CAAC,CAE7F,MAAM,QAAQ,IAAI,EAAO,CAElB,CAAE,EAAG,EAAO,EAAG,KAAK,KAAM,EAAG,EAAK,CAG3C,MAAc,UAAU,EAAa,EAAgC,CACnE,IAAM,EAAe,EAAK,KAAK,SAAU,GAAG,EAAI,gBAAgB,CAC1DD,EAA0B,KAAK,MAAM,MAAM,EAAS,EAAc,QAAQ,CAAC,CAC3EE,EAA2B,EAAE,CACnC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAS,EAAG,IAC9B,EAAM,KAAK,EAAS,EAAK,KAAK,SAAU,GAAG,EAAI,GAAG,EAAE,OAAO,CAAE,QAAQ,CAAC,KAAM,GAAM,OAAO,KAAK,KAAK,MAAM,EAAE,CAAC,EAAG,SAAS,CAAC,CAAC,CAG5H,IAAM,EAAS,MAAM,QAAQ,IAAI,EAAM,CACjC,EAAU,OAAO,OAAO,EAAO,CAC/B,EAAO,KAAK,MAAM,EAAQ,SAAS,QAAQ,CAAE,KAAK,QAAQ,CAChE,KAAK,KAAK,IAAI,EAAK,EAAK,CAG1B,MAAc,SAAS,EAAa,EAAgC,CAClE,IAAMC,EAAwB,EAAE,CAChC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,EAAG,IAC1B,EAAK,KAAK,EAAO,EAAK,KAAK,SAAU,GAAG,EAAI,GAAG,EAAE,OAAO,CAAC,CAAC,UAAY,GAAG,CAAC,CAE5E,EAAK,KAAK,EAAO,EAAK,KAAK,SAAU,GAAG,EAAI,gBAAgB,CAAC,CAAC,UAAY,GAAG,CAAC,CAC9E,MAAM,QAAQ,IAAI,EAAK,CAEvB,GAAI,EACY,MAAM,GAAQ,KAAK,SAAS,EAChC,SAAW,GAAG,MAAM,GAAM,KAAK,SAAS,MAC5C,GAGV,OAAe,EAAwB,CACrC,OAAO,GAAG,GAAK,GAAG,GAAK,GAAG,IAI9B,MAAa,GACX,EACA,IAMU,IAAI,EAAM,EAAM,GAAS,WAAY,GAAS,KAAM,GAAS,UAAW,GAAS,WAAW,CCxO3F,EAAQ,IA5CrB,KAAuB,CACrB,KAAe,IAAI,IAEnB,IAAI,EAAa,EAAY,CAC3B,KAAK,KAAK,IAAI,EAAK,CAAE,GAAG,KAAK,KAAK,IAAI,EAAI,CAAE,GAAG,EAAO,CAAC,CAGzD,IAAI,EAAa,CACf,OAAO,KAAK,KAAK,IAAI,EAAI,EAAI,EAAE,CAGjC,OAAO,EAAa,EAAsC,CACxD,IAAM,EAAU,KAAK,IAAI,EAAI,CAC7B,KAAK,IAAI,EAAK,EAAQ,EAAQ,CAAC,CAGjC,OAAO,EAAa,CAClB,KAAK,KAAK,OAAO,EAAI,CAGvB,IAAI,EAAa,CACf,OAAO,KAAK,KAAK,IAAI,EAAI,CAG3B,QAAkB,IAAI,IAEtB,MAAM,EAAiB,EAAoB,CACzC,IAAM,EAAO,YAAY,EAAQ,GAAG,IACpC,GAAI,KAAK,QAAQ,IAAI,EAAK,CACxB,OAAO,KAAK,QAAQ,IAAI,EAAK,CAE/B,IAAM,EAAK,EAAY,EAAK,CAE5B,OADA,KAAK,QAAQ,IAAI,EAAM,EAAG,CACnB,EAGT,QAAU,GAAc,GAAI,CAAE,MAAO,QAAS,CAAC,CAC/C,OAAS,EAAK,CAAE,MAAO,SAAU,QAAS,GAAO,CAAC,CAElD,OAAS,IAAI,EAEb,WAAa,IAAI,EAAU,CAAE,OAAQ,IAAQ,UAAW,GAAO,CAAC,EC5CrD,EAAe,KAAO,IAA4F,CAC7H,EAAM,QAAQ,MAAM,8BAA8B,CAElD,IAAM,EAAa,MAAM,GAAK,EAAO,CAAC,UAAY,GAAG,CAErD,GAAI,MACE,CAAC,EAAW,aAAa,CAE3B,MADA,EAAM,QAAQ,MAAM;EAAgC,CAC9C,8CAA8C,EAAO,yDAG7D,MAAM,GAAM,EAAQ,CAAE,UAAW,GAAM,CAAC,CAG1C,IAAM,EAAU,EAAY,GAAG,EAAO,kBAAmB,CAAE,aAAY,CAAC,CAClE,EAAS,EAAY,GAAG,EAAO,iBAAkB,CAAE,aAAY,KAAM,IAAM,KAAM,CAAC,CAExF,MAAM,QAAQ,IAAI,CAAC,EAAQ,MAAM,CAAE,EAAO,MAAM,CAAC,CAAC,CAElD,IAAMC,EAA8B,MAAM,EAAQ,IAAI,QAAQ,EAAK,GAAe,CAIlF,OAFA,EAAM,QAAQ,QAAQ,8BAA8B,CAE7C,CACL,MAAO,CACL,QACA,KAAM,CACJ,IAAK,MAAO,EAAM,IAAQ,CACxB,IAAMC,EAAwD,EAAE,CAehE,OAbA,MAAM,QAAQ,IACZ,EAAI,IAAI,KAAO,IAAO,CACpB,IAAM,EAAM,GAAG,EAAK,GAAG,IACnB,EAAQ,MAAM,EAAO,IAAI,EAAI,CAE7B,IAAS,sBAAwB,IACnC,EAAQ,EAAM,QAAQ,oBAAoB,WAAW,EAAM,EAG7D,EAAK,GAAM,GACX,CACH,CAEM,GAET,IAAK,KAAO,IAAS,CACnB,IAAMC,EAAyB,EAAE,CAEjC,IAAK,IAAM,KAAY,EACrB,IAAK,IAAM,KAAM,EAAK,GAAsC,CAC1D,IAAM,EAAQ,EAAK,GAAsC,GACnD,EAAM,GAAG,EAAS,GAAG,IAGzB,EAAM,KADJ,EACS,EAAO,IAAI,EAAK,EAAM,CAEtB,EAAO,OAAO,EAAI,CAAC,SAAW,GAAG,CAAC,CAKnD,MAAM,QAAQ,IAAI,EAAM,CACxB,MAAM,EAAO,OAAO,EAEvB,CACF,CACD,UAAW,SAAY,CACrB,MAAM,EAAQ,IAAI,QAAS,EAAM,CACjC,MAAM,EAAQ,OAAO,EAExB,ECtEG,EAAQ,IAAI,EAEL,GAAgB,EAAgB,KACpC,CACL,OAAQ,EAAM,OACd,kBAAmB,GACnB,sBAAuB,IAAA,GAEvB,oBAAqB,EAAO,QAAQ,WACpC,gBAAiB,EAAO,QAAQ,gBAEhC,qBAAsB,IAAI,EAC1B,WAAY,IAAI,EAAU,CAAE,OAAQ,GAAI,CAAC,CAEzC,oBAAqB,KAAO,IAAgB,EAAM,IAAI,EAAI,CAC1D,gBAAkB,GAAQ,EAAe,EAAI,CAE7C,KAAM,CACJ,MAAO,EAAM,MACb,KAAM,EAA4B,EAAM,KAAM,EAAM,OAAO,CAC5D,CAED,WAAY,KAAO,IAAQ,CACpB,MAAK,GACV,OAAO,MAAM,EAAO,GAAG,WAAW,CAAC,IAAI,EAAI,GAAG,EAEjD,ECzBU,EAAoB,KAAO,IAAmB,CAGzD,GAAM,CAAE,QAAO,aAAc,MAAM,EAFd,YAAY,EAAO,QAAQ,UAEa,CAGvD,EAAS,EADA,EAAa,EAAQ,EAAM,CACP,CAEnC,EAAO,GAAG,GAAG,eAAgB,EAAU,CAEvC,EAAM,IAAI,SAAU,EAAO,ECdhB,GAAe,EAAwB,IAAkB,CACpE,IAAM,EAAS,EAAO,UAAU,EAAK,CAErC,GAAI,EAAO,QAAS,OAAO,EAAO,KAIlC,MAFA,QAAQ,MAAMC,EAAE,aAAa,EAAO,MAAM,CAAC,CAErC,gBCJK,EAAiB,EAAE,OAAO,CACrC,QAAS,EAAE,QAAQ,CAAC,QAAQ,UAAU,CAAC,UAAU,CACjD,OAAQ,EAAE,QAAQ,CAAC,UAAU,CAE7B,SAAU,EAAE,SAAS,CAAC,QAAQ,GAAK,CAAC,UAAU,CAC9C,SAAU,EAAE,SAAS,CAAC,QAAQ,GAAK,CAAC,UAAU,CAE9C,gBAAiB,EAAE,SAAS,CAAC,QAAQ,GAAK,CAAC,UAAU,CAErD,aAAc,EAAE,SAAS,CAAC,QAAQ,GAAK,CAAC,UAAU,CAClD,WAAY,EAAE,SAAS,CAAC,QAAQ,GAAK,CAAC,UAAU,CAChD,SAAU,EAAE,SAAS,CAAC,QAAQ,GAAK,CAAC,UAAU,CAC9C,aAAc,EAAE,SAAS,CAAC,QAAQ,GAAK,CAAC,UAAU,CAClD,eAAgB,EAAE,SAAS,CAAC,QAAQ,GAAK,CAAC,UAAU,CACrD,CAAC,CAEW,EAAwB,EAAE,OAAO,CAC5C,SAAU,EAAE,QAAQ,UAAU,CAC9B,YAAa,EAAE,QAAQ,CACxB,CAAC,CAEW,EAAmB,EAAE,OAAO,CACvC,SAAU,EAAE,QAAQ,KAAK,CAC1B,CAAC,CAEW,EAAoB,EAAE,MAAM,CAAC,EAAsB,OAAO,EAAe,MAAM,CAAE,EAAiB,OAAO,EAAe,MAAM,CAAC,CAAC,CAEhH,EAAE,KAAK,CAAC,aAAc,WAAY,QAAQ,CAAC,OC9B3D,gBAED,YCAZ,MAAa,EAAsB,SAAY,CAC7C,GAAI,CAIF,OAFa,MADD,MAAM,MAAM,qCAAqC,EACtC,MAAM,EAEjB,aAAa,aAClB,EAAO,CACd,MAAM,IAIG,EAAkB,KAAO,IAAoB,CACxD,GAAI,CACF,IAAM,EAAe,YAAY,EAAQ,aACzC,MAAM,EAAG,OAAO,EAAa,OACtB,EAAO,CAEd,MADA,EAAM,QAAQ,MAAM,4CAA4C,EAAQ,IAAI,CACtE,IAIG,GAAiB,EAAO,KAC9B,EAEO,EACT,UAAU,OAAO,CACjB,QAAQ,2FAA4F,GAAG,CACvG,QACC,4LACA,GACD,CACA,QAAQ,iCAAkC,GAAG,CAC7C,QAAQ,6BAA8B,EAAG,IAAM,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAV1D,KCnBP,GAAqB,GAAiB,CACjD,GAAO,SAAS,EAAM,CAAE,MAAO,GAAM,CAAG,GAAS,CAC/C,QAAQ,IAAIC,EAAK,EACjB,EAGS,GAAoB,SAAY,CAC3C,QAAQ,OAAO,CACf,EAAM,QAAQ,MAAM,2BAA2B,CAE/C,IAAM,EAAgB,MAAM,GAAqB,CAC3C,EAAWC,IAAgB,EAEjC,EAAM,QAAQ,MAAM,CAEpB,IACM,EAAY,QAAQC,EAAW,MAAMD,IAErC,EAAc,GAAG,EAAW,gCAAkC,uBAAuB,EAAc,GAAG,KACtG,EAAc,EAAW,CAAC,YAAa,YAAY,CAAG,CAAC,YAAa,YAAY,CAGhF,EAAQ,EADD,MAAM,GAAO,KAAK,UAAU,CACd,CAE3B,QAAQ,IAAI,EAAM,CAClB,QAAQ,IAAI,EAAS,CAAC,YAAa,YAAY,CAAC,CAAC,EAAU,CAAC,CAC5D,QAAQ,IAAI,EAAS,EAAY,CAAC,EAAY,CAAC,EC3BjD,IAAa,GAAb,KAAmB,CACjB,YAAY,EAAwB,CAAhB,KAAA,OAAA,EAClB,KAAK,YAAY,CAGnB,MAAM,YAAa,CACF,EAAM,IAAI,SAAS,CAE3B,GAAG,GAAG,OAAQ,KAAO,IAAU,CACpC,IAAK,IAAM,KAAQ,EAAO,CACxB,IAAM,EAAS,MAAM,KAAK,MAAM,EAAK,CAChC,IAEL,MAAM,KAAK,OAAO,WAAW,IAAI,CAAE,MAAO,EAAQ,CAAC,CACnD,EAAM,OAAO,KAAK,QAAS,EAAO,IAEpC,CAGJ,MAAM,MAAM,EAAqB,CAC/B,IAAMG,EAAqD,EAAE,CAa7D,MAXA,GAAO,OAAS,EAAO,GACvB,EAAO,SAAW,EAAO,KACzB,EAAO,OAAS,EAAO,OAEvB,EAAO,KAAO,EAAO,KACrB,EAAO,QAAU,EAAO,QACxB,EAAO,OAAS,EAAO,OAEvB,EAAO,QAAU,CAAC,CAAC,EAAO,QAC1B,EAAO,QAAU,CAAC,CAAC,EAAO,QAEnB,ICpCX,MAAa,EAAc,GAAc,EAE5B,EAAU,GAAoB,CACzC,GAAI,CACF,OAAO,KAAK,MAAM,EAAiB,MAC7B,CACN,OAAO,EAAE,YAAc,KAAK,MAAM,KAAK,UAAU,EAAO,EAAI,KAAK,CAAC,GAIzD,EAAY,GAAoB,CAC3C,GAAI,CACF,OAAO,KAAK,UAAU,EAAO,MACvB,CACN,IAAM,EAAS,EAAE,YAAc,KAAK,UAAU,EAAO,EAAO,EAAI,KAAK,CAAC,CACtE,OAAO,EAAE,QAAQ,EAAO,CAAG,KAAO,IAIzB,IAAiB,EAAM,KAC3B,EAAE,QAAQ,EAAI,CAAC,KAAK,GAAG,CAGnB,GAAkB,EAAO,GAAI,EAAO,KAC1C,EACE,EAAE,SAAS,EAAK,aAAa,CAAE,EAAK,aAAa,CAAC,CADvC,KAIP,GAAe,EAAO,KAC5B,EACE,EAAE,UAAU,EAAK,MAAM,EAAU,EAAI,EAAE,CAAC,CAD7B,EAAE,CAIT,GAAa,GACjB,EAAI,KAAK,MAAM,KAAK,QAAQ,CAAG,EAAI,OAAO,EAGtC,GAAqB,EAAY,IAAmB,CAC/D,IAAK,IAAM,KAAO,EAChB,IAAK,IAAM,KAAO,EAChB,GAAI,KAAO,GAAO,EAAI,KAAS,IAAA,IAAa,EAAI,KAAS,KACvD,OAAO,EAAI,ICnCnB,IAAa,GAAb,KAAwB,CACtB,YAAY,EAAwB,CAAhB,KAAA,OAAA,EAClB,KAAK,YAAY,CAGnB,MAAM,YAAa,CACjB,EAAM,QAAQ,MAAM,8BAA8B,CAElD,IAAM,EAAS,EAAM,IAAI,SAAS,CAE5BE,EAA0D,EAAE,CAG5D,EAAS,SAAY,CACzB,EAAO,OAAS,SAChB,EAAM,QAAQ,KAAK,8CAA8C,CAEjE,MAAM,KAAK,OAAO,YAAY,EAI1B,EAAQ,SAAY,CACxB,MAAM,EAAM,IAAK,CAEjB,EAAM,QAAQ,KAAK,sDAAsD,CACzE,MAAM,EAAM,IAAK,CAEjB,MAAM,EAAgB,KAAK,OAAO,QAAQ,QAAQ,CAClD,MAAM,GAAQ,EAIhB,GAAI,KAAK,OAAO,QAAQ,WAAa,WAAa,KAAK,OAAO,QAAQ,aAAe,CAAC,EAAO,UAAU,MAAM,WAAY,CACvH,EAAM,QAAQ,OAAO,8BAA8B,CAEnD,MAAM,EAAM,KAAK,CAEjB,GAAI,CACF,EAAO,YAAc,KAAK,KAAK,CAAG,IAElC,IAAM,EAAU,IAAI,KAAK,EAAO,YAAY,CAAC,oBAAoB,CAC3D,EAAO,MAAM,EAAO,mBAAmB,KAAK,OAAO,QAAQ,YAAY,UAAU,CAAC,CAExF,EAAM,QAAQ,KAAK,uBAAuB,EAAQ,EAAQ,GAAG,CAC7D,EAAM,QAAQ,KAAK,kBAAkB,IAAO,CAE5C,EAAO,KAAO,OACR,CACN,MAAM,GAAO,EAIjB,EAAO,GAAG,GAAG,oBAAqB,KAAO,IAAQ,CAC/C,GAAM,CAAE,aAAY,iBAAgB,MAAO,EAQ3C,GANA,EAAO,OAAS,GAAc,aAC9B,EAAO,SAAW,KAAK,OAAO,QAAQ,SAEtC,EAAM,QAAQ,OAAO,uBAAyB,EAAQ,EAAO,OAAO,CAAC,CAGjE,KAAK,OAAO,QAAQ,WAAa,MAAQ,EAAI,CAC/C,EAAO,YAAc,KAAK,KAAK,CAAG,IAElC,IAAM,EAAU,IAAI,KAAK,EAAO,YAAY,CAAC,oBAAoB,CAEjE,EAAM,QAAQ,KAAK,8BAA8B,CACjD,EAAM,QAAQ,KAAK,uBAAuB,EAAQ,EAAQ,GAAG,CAE7D,GAAkB,EAAG,CAErB,EAAO,GAAK,EACZ,OAGF,GAAI,IAAe,QAAS,CAC1B,IAAM,EAAO,EAAW,GAAgB,MAAM,EAAE,QAAQ,WAClD,EAAQ,GAAgB,OAAO,SAAW,GAE1C,EAAc,OAAO,GAAS,UAAY,IAAS,EAAiB,UAE1E,EAAM,QAAQ,MAAM,IAAI,EAAK,aAAa,IAAQ,EAE9C,IAAS,KAAO,IAAS,KAAO,IAAS,OAC3C,EAAM,QAAQ,MAAM,4CAA4C,CAChE,EAAM,QAAQ,MAAM,aAAa,KAAK,OAAO,QAAQ,QAAQ,sCAAsC,CAEnG,MAAM,GAAO,EAGX,GACF,MAAM,GAAQ,CAIlB,GAAI,IAAe,OACjB,GAAI,EAAO,MAAM,GAAI,CACnB,IAAM,EAAK,EAAkB,EAAO,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,GAGxD,EAAM,QAAQ,QAAQ,iBAAiB,EAF1B,EAAO,KAAK,MAAQ,EAAO,KAAK,cAEU,EAAG,GAAG,MAE7D,EAAM,QAAQ,QAAQ,cAAc,CAIxC,EAAM,OAAO,KAAK,aAAc,EAAO,EACvC,CAEF,EAAO,GAAG,GAAG,yBAA0B,CAAE,cAAe,CACtD,EAAO,OAAS,UAChB,EAAO,aAAe,EAEtB,EAAM,QAAQ,MAAM,+BAA+B,CAE/C,GACF,EAAM,QAAQ,OAAO,6BAA6B,EAAW,MAAM,CAGjE,GAAY,MACd,EAAM,QAAQ,QAAQ,uCAAuC,CAC7D,EAAO,cAAgB,IAGzB,EAAM,IAAI,aAAc,EAAO,CAC/B,EAAM,OAAO,KAAK,aAAc,EAAO,EACvC,GCvIN,MAAa,GAAsB,CACjC,KAAM,OACN,aAAc,OACd,aAAc,QACd,eAAgB,UAChB,gBAAiB,WACjB,gBAAiB,WACjB,aAAc,QACd,aAAc,QACd,gBAAiB,WACjB,qBAAsB,WACtB,wBAAyB,mBACzB,mBAAoB,cACpB,oBAAqB,WACrB,sBAAuB,iBACvB,6BAA8B,wBAC9B,4BAA6B,uBAC7B,gBAAiB,WACjB,eAAgB,UAChB,mBAAoB,cACpB,2BAA4B,UAC5B,eAAgB,UAChB,kBAAmB,aACnB,YAAa,OACb,gBAAiB,WACjB,aAAc,QACd,oBAAqB,OACrB,iBAAkB,YAClB,eAAgB,UAChB,eAAgB,UAChB,uBAAwB,UACxB,qBAAsB,gBACtB,mBAAoB,cACpB,gBAAiB,WACjB,sBAAuB,UACvB,2BAA4B,sBAC5B,oBAAqB,eACrB,uBAAwB,aACxB,kBAAmB,aACnB,kBAAmB,aACnB,2BAA4B,WAC5B,0BAA2B,qBAC3B,kBAAmB,WACnB,mBAAoB,WACpB,cAAe,OACf,2BAA4B,WAC5B,sBAAuB,eACvB,6BAA8B,wBAC9B,sBAAuB,iBACvB,iBAAkB,YAClB,sBAAuB,eACvB,yBAA0B,oBAC1B,WAAY,MACZ,iBAAkB,YAClB,gBAAiB,UACjB,kBAAmB,aACnB,aAAc,QACd,qBAAsB,gBACtB,aAAc,QACd,eAAgB,UAChB,6BAA8B,OAC9B,iCAAkC,OAClC,oBAAqB,OACrB,mBAAoB,cACpB,sBAAuB,iBACxB,CC9DY,EAAc,GAA6B,CACtD,IAAI,EAEJ,AAKE,EALE,MAAM,QAAQ,EAAM,CACL,EAAM,KAAK,IAAI,CACvB,OAAO,GAAU,SACT,EAEA,OAAO,EAAM,CAGhC,IAAI,EAAO,WACL,EAAM,EAAe,OAE3B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,IACvB,GAAQ,EAAe,WAAW,EAAE,CACpC,IAAS,GAAQ,IAAM,GAAQ,IAAM,GAAQ,IAAM,GAAQ,IAAM,GAAQ,IAG3E,MAAO,QAAU,IAAS,GAAG,SAAS,GAAG,CAAC,SAAS,EAAG,IAAI,CAAC,aAAa,EAG7D,GAAoB,EAAO,KAAO,CAC7C,GAAI,CAAC,EAAM,MAAO,EAAE,CACpB,IAAM,EAAM,IAAI,IAChB,IAAK,IAAM,KAAS,EAAK,SAAS,UAAU,CAC1C,EAAI,IAAI,EAAM,GAAG,CAEnB,OAAO,EAAE,QAAQ,EAAI,EAYV,GAAoB,GACxB,EAAE,KAAK,EAAQ,CACpB,MACA,cACA,aACA,gBACA,WACA,aACA,WACA,YACA,gBACA,qBACA,kBACA,sBACA,oBACA,mBACA,eACA,UACA,UACA,MACA,uBACD,CAAC,CAGS,GAAkB,GAAgC,CAC7D,GAAI,CAAC,EAAK,MAAO,CAAE,KAAM,IAAA,GAAW,MAAO,EAAE,CAAc,CAE3D,IAAIC,EAAe,EAAsB,EAAI,EAAI,EAC3CC,EAAkB,EAAE,CAE1B,KAAO,GAAW,OAAO,GAAY,UAAU,CAC7C,IAAM,EAAO,EAAe,EAAQ,CACpC,GAAI,CAAC,EAAM,MAEX,EAAM,KAAK,EAAK,CAChB,IAAM,EAAO,EAAQ,GAErB,GAAI,CAAC,GAAQ,OAAO,GAAS,SAAU,CACrC,EAAU,EACV,MAGF,EAAU,EAGZ,MAAO,CAAE,KAAM,EAAS,QAAO,EC/EjC,IAAa,GAAb,KAAsB,CACpB,YAAY,EAAwB,CAAhB,KAAA,OAAA,EACd,EAAM,IAAI,aAAa,EAAE,QAAU,WACrC,KAAK,YAAY,CAIrB,MAAM,YAAa,CACF,EAAM,IAAI,SAAS,CAE3B,GAAG,GAAG,kBAAmB,MAAO,CAAE,WAAU,UAAW,CACxD,OAAS,SAEb,IAAK,IAAM,KAAW,EAAU,CAC9B,IAAM,EAAS,MAAM,KAAK,MAAM,EAAQ,CAEpC,IACF,MAAM,KAAK,OAAO,WAAW,IAAI,CAAE,SAAU,EAAQ,CAAC,CACtD,EAAM,OAAO,KAAK,WAAY,EAAO,IAGzC,CAGJ,MAAM,MAAM,EAAoB,CAM9B,GALA,QAAQ,IAAI,KAAK,UAAU,EAAS,KAAM,EAAE,CAAC,CAEzC,GAAS,WAAa,QACtB,CAAC,EAAQ,SAAW,CAAC,GAAS,KAAK,IACnC,GAAS,iBAAqB,GAAS,uBACvC,GAAS,SAAS,kBAAoB,EAAQ,SAAS,iBAAiB,wCAAyC,OAErH,IAAM,EAAW,EAEX,EAAS,EAAM,IAAI,SAAS,CAC5BE,EAAwD,EAAE,CAE1D,EAAiB,GAAe,EAAQ,QAAQ,CAChD,EAAc,EAAe,MAAM,GAAG,GAAG,CACzC,EAAU,EAAe,KAI/B,EAAO,SAAW,KAClB,EAAO,UAAY,KAEnB,EAAO,OAAS,GAAS,SAAS,iBAAiB,KAAK,IAAM,GAAS,KAAK,IAAM,KAClF,EAAO,YAAc,GAAS,KAAK,eACnC,EAAO,SAAW,GAAoB,GAEtC,EAAO,WAAa,EAAkB,GAAQ,MAAM,IAAM,GAAG,CAC7D,EAAO,aAAe,EAAc,GAAQ,MAAM,MAAQ,GAAQ,MAAM,aAAa,CAErF,EAAO,OAAS,EAAkB,GAAS,KAAK,UAAU,CAE1D,IAAM,EAAO,MAAM,KAAK,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAO,OAAO,CACvD,EAAU,MAAM,KAAK,OAAO,GAAG,WAAW,CAAC,IAAI,EAAO,OAAO,CAE7D,EAAW,EAAkB,EAAM,CAAC,OAAQ,eAAe,CAAC,CAC5D,EAAc,EAAkB,EAAS,CAAC,SAAU,OAAO,CAAC,CA+DlE,MA7DA,GAAO,SAAW,GAAY,GAAe,KAE7C,EAAO,UAAY,EAAkB,CAAC,GAAS,IAAI,CAAE,CAAC,eAAgB,cAAc,CAAC,CACrF,EAAO,SAAW,EAAkB,GAAS,aAAe,GAAS,KAAK,aAAe,GAAS,KAAK,UAAU,CACjH,EAAO,WAAa,EAAc,GAAS,UAAY,GAAS,gBAAgB,CAChF,EAAO,aAAe,GAAU,EAAO,OAAO,CAE9C,EAAO,UAAY,EAAW,CAAC,EAAO,OAAQ,EAAO,SAAS,CAAC,CAC/D,EAAO,SAAW,EAAW,CAAC,EAAO,UAAW,EAAO,OAAO,CAAC,CAE/D,EAAO,UAAY,OAAO,GAAS,iBAAiB,CAEpD,EAAO,KACL,GAAS,MACT,GAAS,SACT,GAAS,MACT,GAAS,aACT,GAAS,cACT,GAAS,aACT,GAAS,qBACT,GACA,KAEF,EAAO,KAAO,EAAc,EAAO,KAAK,CACxC,EAAO,SAAW,EAAiB,EAAO,KAAK,CAC/C,EAAO,MAAQ,EAAY,EAAO,MAAQ,GAAG,CAE7C,EAAO,SAAW,GAAS,KAAK,QAAU,GAC1C,EAAO,QAAU,EAAO,UAAU,SAAS,EAAO,WAAW,MAAM,IAAI,CAAC,GAAG,CAC3E,EAAO,SAAW,EAAO,MAAM,WAAW,KAAK,OAAO,SAAS,OAAO,CAEtE,EAAO,OAAS,GAEhB,EAAO,QAAU,EAAO,QAAQ,SAAS,QAAQ,CACjD,EAAO,aAAe,EAAO,QAAQ,SAAS,cAAc,CAC5D,EAAO,QAAU,EAAO,QAAQ,SAAS,aAAa,CAEtD,EAAO,WAAa,GACpB,EAAO,SAAW,GAClB,EAAO,UAAY,GACnB,EAAO,SAAW,GAClB,EAAO,WAAa,GAEpB,EAAO,YAAc,CAAC,CAAC,GAAS,UAEhC,EAAO,YAAc,CAAC,CAAC,EAAe,EAAS,EAAQ,QAAQ,CAAE,4BAA4B,CAC7F,EAAO,YAAc,CAAC,CAAC,EAAe,EAAS,EAAQ,QAAQ,CAAE,kBAAkB,CAEnF,EAAO,SAAW,EAAE,CAEhB,EAAO,WAAa,SACtB,EAAO,MAAQ,CACb,GAAG,GAAiB,EAAQ,CAC5B,WAAc,EAAqB,EAAS,SAAU,EAAE,CAAC,CACzD,WAAc,EAAqB,EAAS,SAAU,EAAE,CAAC,CAC1D,EAGH,EAAO,YAAgB,EACvB,EAAO,QAAU,KAEV,IC5HE,GAAb,KAAsB,CACpB,YAAY,EAAwB,CAAhB,KAAA,OAAA,EAClB,IAAI,GAAW,EAAO,CACtB,IAAI,GAAS,EAAO,CACpB,IAAI,GAAM,EAAO,CAEjB,KAAK,YAAY,CAGnB,MAAM,YAAa,CACjB,IAAM,EAAS,EAAM,IAAI,SAAS,CAElC,EAAO,GAAG,GAAG,gBAAiB,MAAO,CAAC,KAAW,CAC/C,IAAM,EAAW,MAAM,EAAO,cAAc,EAAM,GAAG,CACrD,EAAM,WAAW,IAAI,EAAM,GAAI,EAAS,EACxC,CAEF,EAAO,GAAG,GAAG,4BAA6B,KAAO,IAAU,CACzD,IAAM,EAAW,MAAM,EAAO,cAAc,EAAM,GAAG,CACrD,EAAM,WAAW,IAAI,EAAM,GAAI,EAAS,EACxC,CAEF,GAAQ,GAAG,GAAG,wBAAyB,KAAO,IAAW,CACvD,GAAM,CAAE,QAAO,WAAU,YAAa,EAEtC,IAAK,IAAM,KAAQ,EACjB,MAAM,KAAK,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAK,GAAI,EAAK,CAGnD,IAAK,IAAM,KAAW,EACpB,MAAM,KAAK,OAAO,GAAG,WAAW,CAAC,KAAK,EAAQ,GAAI,EAAQ,CAG5D,IAAK,IAAM,KAAW,EAAU,CAG9B,GAFI,CAAC,EAAQ,SACT,GAAS,WAAa,QACtB,EAAQ,SAAS,gBAAiB,OAEtC,MAAM,KAAK,OAAO,GAAG,WAAW,CAAC,KAAK,EAAQ,IAAI,UAAW,EAAQ,GAEvE,CAEF,GAAQ,GAAG,GAAG,kBAAmB,MAAO,CAAE,cAAe,CACvD,IAAK,IAAM,KAAW,EAAU,CAG9B,GAFI,CAAC,EAAQ,SACT,GAAS,WAAa,QACtB,EAAQ,SAAS,gBAAiB,OAEtC,MAAM,KAAK,OAAO,GAAG,WAAW,CAAC,KAAK,EAAQ,IAAI,UAAW,EAAQ,GAEvE,CAEF,GAAQ,GAAG,GAAG,eAAgB,KAAO,IAAU,CAC7C,IAAK,IAAM,KAAQ,EACjB,MAAM,KAAK,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAK,GAAI,EAAK,EAEnD,CAEF,GAAQ,GAAG,GAAG,kBAAmB,KAAO,IAAa,CACnD,IAAK,IAAM,KAAW,EACpB,MAAM,KAAK,OAAO,GAAG,WAAW,CAAC,KAAK,EAAQ,GAAI,EAAQ,EAE5D,CAEF,GAAQ,GAAG,GAAG,kBAAmB,KAAO,IAAW,CACjD,QAAQ,IAAI,uDAAwD,EAAO,CAC3E,IAAK,GAAM,CAAE,MAAK,YAAY,EAAQ,CACpC,GAAI,CAAC,EAAO,YAAa,SAEzB,IAAM,EAAe,MAAM,KAAK,OAAO,GAAG,WAAW,CAAC,IAAI,EAAI,UAAU,CACxE,GAAI,CAAC,EAAc,SAEnB,IAAM,EAAc,EAA+B,CACjD,QAAS,EACT,YAAa,EAAO,YACrB,CAAC,CAEF,QAAQ,IAAI,oBAAqB,EAAY,GAE/C,GCjFO,GAAb,KAA2B,CACzB,MAAwC,EAAE,CAE1C,IAAI,EAA+B,CAEjC,OADA,KAAK,MAAM,KAAK,EAAQ,CACjB,KAGT,MAAM,IAAI,EAA4B,CACpC,IAAI,EAAQ,GAEN,EAAW,KAAO,IAA6B,CACnD,GAAI,GAAK,EAAO,KAAM,+BACtB,EAAQ,EAER,IAAM,EAAK,KAAK,MAAM,GACjB,KAEL,GAAI,CACF,MAAM,EAAG,MAAW,EAAS,EAAI,EAAE,CAAC,OAC7B,EAAK,CAEZ,MADA,QAAQ,MAAM,oBAAqB,EAAI,CACjC,IAIV,MAAM,EAAS,EAAE,GCpBR,GAAb,KAAoB,CAClB,WAAa,IAAI,GAEjB,YAAY,EAAmD,CAA5C,KAAA,QAAA,EACjB,KAAK,QAAU,EAAS,EAAmB,EAAQ,CACnD,KAAK,YAAY,CAGnB,MAAM,YAAa,CACjB,MAAM,IAAmB,CACzB,MAAM,EAAkB,KAAK,CAE7B,IAAI,GAAS,KAAK,CAGpB,GAAG,EAAc,CACf,OAAO,EAAM,MAAM,KAAK,QAAQ,QAAS,UAAU,EAAK,OAAO,CAGjE,GAA4C,EAAU,EAAqC,CACzF,EAAM,OAAO,GAAG,EAAO,EAAQ,CAGjC,IAAO,EAA+B,CAEpC,OADA,KAAK,WAAW,IAAI,EAAQ,CACrB"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["promises: Promise<void>[]","mkdir","obj: Record<string, any>","chunks: Promise<void>[]","list: any[]","manifest: ChunkManifest","writes: Promise<void>[]","reads: Promise<Buffer>[]","dels: Promise<void>[]","creds: AuthenticationCreds","data: { [_: string]: SignalDataTypeMap[typeof type] }","tasks: Promise<void>[]","z","code","pkg.version","pkg.author","client: Client","output: Partial<z.infer<typeof ListenerCallsType>>","client: Client","output: Partial<z.infer<typeof ListenerConnectionType>>","current: any","chain: string[]","client: Client","output: Partial<z.infer<typeof ListenerMessagesType>>","client: Client","options: z.infer<typeof ClientOptionsType>"],"sources":["../src/Modules/lowdb.ts","../src/Modules/store.ts","../src/Auth/state.ts","../src/Config/socket.ts","../src/Auth/creds.ts","../src/Modules/zod.ts","../src/Types/client.ts","../package.json","../src/Utils/validate.ts","../src/Utils/banner.ts","../src/Listener/calls.ts","../src/Utils/helper.ts","../src/Listener/connection.ts","../src/Config/media.ts","../src/Utils/message.ts","../src/Listener/messages.ts","../src/Listener/index.ts","../src/Classes/middleware.ts","../src/Classes/client.ts"],"sourcesContent":["import { Mutex } from 'async-mutex';\r\nimport { readFile, writeFile, unlink, mkdir, readdir, rmdir } from 'fs/promises';\r\nimport { join, dirname } from 'path';\r\n\r\ninterface ChunkManifest {\r\n v: 1;\r\n k: string;\r\n t: number;\r\n s: number;\r\n c: number;\r\n m: string;\r\n}\r\n\r\ninterface ChunkMeta {\r\n t: number;\r\n s: number;\r\n k: string;\r\n}\r\n\r\nclass MutexPool {\r\n private static inst: MutexPool;\r\n private fLocks = new Map<string, Mutex>();\r\n private kLocks = new Map<string, Mutex>();\r\n private maxSize = 100;\r\n\r\n static get(): MutexPool {\r\n return this.inst || (this.inst = new MutexPool());\r\n }\r\n\r\n getFile(p: string): Mutex {\r\n let m = this.fLocks.get(p);\r\n if (!m) {\r\n if (this.fLocks.size >= this.maxSize) {\r\n const f = this.fLocks.keys().next().value;\r\n this.fLocks.delete(f);\r\n }\r\n m = new Mutex();\r\n this.fLocks.set(p, m);\r\n }\r\n return m;\r\n }\r\n\r\n getKey(k: string): Mutex {\r\n let m = this.kLocks.get(k);\r\n if (!m) {\r\n if (this.kLocks.size >= this.maxSize) {\r\n const f = this.kLocks.keys().next().value;\r\n this.kLocks.delete(f);\r\n }\r\n m = new Mutex();\r\n this.kLocks.set(k, m);\r\n }\r\n return m;\r\n }\r\n}\r\n\r\ntype FlushMode = 'manual' | 'sync' | 'debounce';\r\n\r\nexport class Lowdb {\r\n private data: Map<string, any>;\r\n private path: string;\r\n private pool: MutexPool;\r\n private size: number;\r\n private chunkDir: string;\r\n private replacer: any;\r\n private reviver: any;\r\n\r\n private loaded = false;\r\n private flushMode: FlushMode;\r\n private debounceMs: number;\r\n private flushTimer: NodeJS.Timeout | null = null;\r\n private dirty = false;\r\n\r\n constructor(path: string, bufferJSON?: any, size: number = 2 * 1024 * 1024, flushMode: FlushMode = 'debounce', debounceMs = 200) {\r\n this.data = new Map();\r\n this.path = path;\r\n this.pool = MutexPool.get();\r\n this.size = size;\r\n this.chunkDir = `${path}.c`;\r\n this.replacer = bufferJSON?.replacer || null;\r\n this.reviver = bufferJSON?.reviver || null;\r\n this.flushMode = flushMode;\r\n this.debounceMs = debounceMs;\r\n }\r\n\r\n private async ensureLoaded(): Promise<void> {\r\n if (!this.loaded) {\r\n await this.read();\r\n this.loaded = true;\r\n }\r\n }\r\n\r\n private scheduleFlush(): void {\r\n if (this.flushMode === 'manual') return;\r\n if (this.flushMode === 'sync') {\r\n void this.write();\r\n return;\r\n }\r\n this.dirty = true;\r\n if (this.flushTimer) return;\r\n this.flushTimer = setTimeout(() => {\r\n this.flushTimer = null;\r\n if (!this.dirty) return;\r\n this.dirty = false;\r\n void this.write();\r\n }, this.debounceMs);\r\n }\r\n\r\n async read(): Promise<Map<string, any>> {\r\n const m = this.pool.getFile(this.path);\r\n return m.runExclusive(async () => {\r\n try {\r\n const buf = await readFile(this.path, 'utf-8');\r\n const parsed = JSON.parse(buf, this.reviver);\r\n this.data.clear();\r\n\r\n const promises: Promise<void>[] = [];\r\n for (const [k, v] of Object.entries(parsed)) {\r\n if (this.isMeta(v)) {\r\n promises.push(this.loadChunk(k, v as ChunkMeta));\r\n } else {\r\n this.data.set(k, v);\r\n }\r\n }\r\n\r\n await Promise.all(promises);\r\n this.loaded = true;\r\n return this.data;\r\n } catch {\r\n await mkdir(dirname(this.path), { recursive: true });\r\n this.data.clear();\r\n this.loaded = true;\r\n return this.data;\r\n }\r\n });\r\n }\r\n\r\n async write(): Promise<void> {\r\n const m = this.pool.getFile(this.path);\r\n return m.runExclusive(async () => {\r\n const obj: Record<string, any> = {};\r\n const chunks: Promise<void>[] = [];\r\n\r\n for (const [k, v] of this.data) {\r\n if (this.isMeta(v)) {\r\n obj[k] = v;\r\n continue;\r\n }\r\n\r\n const str = JSON.stringify(v, this.replacer);\r\n if (str.length > this.size) {\r\n chunks.push(\r\n this.saveChunk(k, v).then((meta) => {\r\n obj[k] = meta;\r\n }),\r\n );\r\n } else {\r\n obj[k] = v;\r\n }\r\n }\r\n\r\n await Promise.all(chunks);\r\n const jsonStr = JSON.stringify(obj, this.replacer, 2);\r\n await writeFile(this.path, jsonStr, 'utf-8');\r\n });\r\n }\r\n\r\n async set<T>(key: string, value: T): Promise<void> {\r\n await this.ensureLoaded();\r\n const keyMutex = this.pool.getKey(key);\r\n await keyMutex.runExclusive(async () => {\r\n this.data.set(key, value);\r\n this.scheduleFlush();\r\n });\r\n }\r\n\r\n async push<T>(key: string, value: T): Promise<void> {\r\n await this.ensureLoaded();\r\n const keyMutex = this.pool.getKey(key);\r\n await keyMutex.runExclusive(async () => {\r\n const current = this.data.get(key);\r\n let list: any[];\r\n if (Array.isArray(current)) {\r\n list = current;\r\n } else if (current === undefined) {\r\n list = [];\r\n } else {\r\n list = [current];\r\n }\r\n list.push(value);\r\n this.data.set(key, list);\r\n this.scheduleFlush();\r\n });\r\n }\r\n\r\n async get<T>(key: string): Promise<any> {\r\n await this.ensureLoaded();\r\n return this.data.get(key);\r\n }\r\n\r\n async delete(key: string): Promise<boolean> {\r\n await this.ensureLoaded();\r\n const keyMutex = this.pool.getKey(key);\r\n return keyMutex.runExclusive(async () => {\r\n const v = this.data.get(key);\r\n if (this.isMeta(v)) {\r\n await this.delChunk(key, v as ChunkMeta);\r\n }\r\n const res = this.data.delete(key);\r\n this.scheduleFlush();\r\n return res;\r\n });\r\n }\r\n\r\n private async saveChunk(key: string, value: any): Promise<ChunkMeta> {\r\n const str = JSON.stringify(value, this.replacer);\r\n const buf = Buffer.from(str, 'utf-8');\r\n const total = Math.ceil(buf.length / this.size);\r\n await mkdir(this.chunkDir, { recursive: true });\r\n\r\n const manifest: ChunkManifest = {\r\n v: 1,\r\n k: key,\r\n t: total,\r\n s: this.size,\r\n c: buf.length,\r\n m: Date.now().toString(36),\r\n };\r\n\r\n const writes: Promise<void>[] = [];\r\n for (let i = 0; i < total; i++) {\r\n const start = i * this.size;\r\n const end = Math.min(start + this.size, buf.length);\r\n const chunk = buf.subarray(start, end);\r\n writes.push(writeFile(join(this.chunkDir, `${key}.${i}.json`), JSON.stringify({ i, d: chunk.toString('base64') })));\r\n }\r\n writes.push(writeFile(join(this.chunkDir, `${key}.manifest.json`), JSON.stringify(manifest)));\r\n\r\n await Promise.all(writes);\r\n\r\n return { t: total, s: this.size, k: key } as ChunkMeta;\r\n }\r\n\r\n private async loadChunk(key: string, meta: ChunkMeta): Promise<void> {\r\n const manifestPath = join(this.chunkDir, `${key}.manifest.json`);\r\n const manifest: ChunkManifest = JSON.parse(await readFile(manifestPath, 'utf-8'));\r\n const reads: Promise<Buffer>[] = [];\r\n for (let i = 0; i < manifest.t; i++) {\r\n reads.push(readFile(join(this.chunkDir, `${key}.${i}.json`), 'utf-8').then((d) => Buffer.from(JSON.parse(d).d, 'base64')));\r\n }\r\n\r\n const chunks = await Promise.all(reads);\r\n const fullBuf = Buffer.concat(chunks);\r\n const data = JSON.parse(fullBuf.toString('utf-8'), this.reviver);\r\n this.data.set(key, data);\r\n }\r\n\r\n private async delChunk(key: string, meta: ChunkMeta): Promise<void> {\r\n const dels: Promise<void>[] = [];\r\n for (let i = 0; i < meta.t; i++) {\r\n dels.push(unlink(join(this.chunkDir, `${key}.${i}.json`)).catch(() => {}));\r\n }\r\n dels.push(unlink(join(this.chunkDir, `${key}.manifest.json`)).catch(() => {}));\r\n await Promise.all(dels);\r\n\r\n try {\r\n const files = await readdir(this.chunkDir);\r\n if (files.length === 0) await rmdir(this.chunkDir);\r\n } catch {}\r\n }\r\n\r\n private isMeta(v: any): v is ChunkMeta {\r\n return v?.t && v?.s && v?.k;\r\n }\r\n}\r\n\r\nexport const createLowdb = (\r\n path: string,\r\n options?: {\r\n BufferJSON?: any;\r\n size?: number;\r\n flushMode?: FlushMode;\r\n debounceMs?: number;\r\n },\r\n): Lowdb => new Lowdb(path, options?.BufferJSON, options?.size, options?.flushMode, options?.debounceMs);\r\n","import { createSpinner } from 'nanospinner';\r\nimport NodeCache from 'node-cache';\r\nimport { EventEmitter } from 'node:stream';\r\nimport pino from 'pino';\r\nimport { createLowdb, Lowdb } from './lowdb';\r\n\r\nexport type StoreData = Record<string, any>;\r\n\r\nexport class NanoStore {\r\n private data = new Map<string, StoreData>();\r\n\r\n set(key: string, value: any) {\r\n this.data.set(key, { ...this.data.get(key), ...value });\r\n }\r\n\r\n get(key: string) {\r\n return this.data.get(key) || {};\r\n }\r\n\r\n update(key: string, updater: (current: StoreData) => any) {\r\n const current = this.get(key);\r\n this.set(key, updater(current));\r\n }\r\n\r\n delete(key: string) {\r\n this.data.delete(key);\r\n }\r\n\r\n has(key: string) {\r\n return this.data.has(key);\r\n }\r\n\r\n private dbCache = new Map<string, Lowdb>();\r\n\r\n lowdb(session: string, dir: string): Lowdb {\r\n const path = `.session/${session}/${dir}`;\r\n if (this.dbCache.has(path)) {\r\n return this.dbCache.get(path)!;\r\n }\r\n const db = createLowdb(path);\r\n this.dbCache.set(path, db);\r\n return db;\r\n }\r\n\r\n spinner = createSpinner('', { color: 'green' });\r\n logger = pino({ level: 'silent', enabled: false });\r\n\r\n events = new EventEmitter();\r\n\r\n groupCache = new NodeCache({ stdTTL: 5 * 60, useClones: false });\r\n}\r\n\r\nexport const store = new NanoStore();\r\n","import { AuthenticationCreds, AuthenticationState, BufferJSON, initAuthCreds, proto, SignalDataTypeMap } from 'baileys';\r\nimport { mkdir, stat } from 'node:fs/promises';\r\nimport { createLowdb } from '../Modules/lowdb';\r\nimport { store } from '../Modules/store';\r\n\r\nexport const useAuthState = async (folder: string): Promise<{ state: AuthenticationState; saveCreds: () => Promise<void> }> => {\r\n store.spinner.start(' Initializing auth state...');\r\n\r\n const folderInfo = await stat(folder).catch(() => {});\r\n\r\n if (folderInfo) {\r\n if (!folderInfo.isDirectory()) {\r\n store.spinner.error(' Failed to open credentials\\n');\r\n throw `found something that is not a directory at ${folder}, either delete it or specify a different location`;\r\n }\r\n } else {\r\n await mkdir(folder, { recursive: true });\r\n }\r\n\r\n const credsDb = createLowdb(`${folder}/auth/creds.json`, { BufferJSON });\r\n const keysDb = createLowdb(`${folder}/auth/keys.json`, { BufferJSON, size: 512 * 1024 });\r\n\r\n await Promise.all([credsDb.read(), keysDb.read()]);\r\n\r\n const creds: AuthenticationCreds = (await credsDb.get('creds')) || initAuthCreds();\r\n\r\n store.spinner.success(' Generate auth successfully');\r\n\r\n return {\r\n state: {\r\n creds,\r\n keys: {\r\n get: async (type, ids) => {\r\n const data: { [_: string]: SignalDataTypeMap[typeof type] } = {};\r\n\r\n await Promise.all(\r\n ids.map(async (id) => {\r\n const key = `${type}:${id}`;\r\n let value = await keysDb.get(key);\r\n\r\n if (type === 'app-state-sync-key' && value) {\r\n value = proto.Message.AppStateSyncKeyData.fromObject(value);\r\n }\r\n\r\n data[id] = value as SignalDataTypeMap[typeof type];\r\n }),\r\n );\r\n\r\n return data;\r\n },\r\n set: async (data) => {\r\n const tasks: Promise<void>[] = [];\r\n\r\n for (const category in data) {\r\n for (const id in data[category as keyof SignalDataTypeMap]) {\r\n const value = data[category as keyof SignalDataTypeMap]![id];\r\n const key = `${category}:${id}`;\r\n\r\n if (value) {\r\n tasks.push(keysDb.set(key, value));\r\n } else {\r\n tasks.push(keysDb.delete(key).then(() => {}));\r\n }\r\n }\r\n }\r\n\r\n await Promise.all(tasks);\r\n await keysDb.write();\r\n },\r\n },\r\n },\r\n saveCreds: async () => {\r\n await credsDb.set('creds', creds);\r\n await credsDb.write();\r\n },\r\n };\r\n};\r\n","import makeWASocket, { AuthenticationState, isJidBroadcast, makeCacheableSignalKeyStore } from 'baileys';\r\nimport NodeCache from 'node-cache';\r\nimport { Client } from '../Classes';\r\nimport { store } from '../Modules/store';\r\n\r\nconst cache = new NodeCache();\r\n\r\nexport const socketConfig = (client: Client, state: AuthenticationState): Parameters<typeof makeWASocket>[0] => {\r\n return {\r\n logger: store.logger,\r\n printQRInTerminal: false,\r\n defaultQueryTimeoutMs: undefined,\r\n\r\n markOnlineOnConnect: client.options.autoOnline,\r\n syncFullHistory: client.options.syncFullHistory,\r\n\r\n msgRetryCounterCache: new NodeCache(),\r\n mediaCache: new NodeCache({ stdTTL: 60 }),\r\n\r\n cachedGroupMetadata: async (jid: string) => cache.get(jid),\r\n shouldIgnoreJid: (jid) => isJidBroadcast(jid),\r\n\r\n auth: {\r\n creds: state.creds,\r\n keys: makeCacheableSignalKeyStore(state.keys, store.logger),\r\n },\r\n\r\n getMessage: async (key) => {\r\n if (!key?.id) return undefined;\r\n return await client.db('messages').get(key.id);\r\n },\r\n };\r\n};\r\n","import makeWASocket from 'baileys';\r\nimport { Client } from '../Classes';\r\nimport { socketConfig } from '../Config/socket';\r\nimport { store } from '../Modules/store';\r\nimport { useAuthState } from './state';\r\n\r\nexport const registerAuthCreds = async (client: Client) => {\r\n const SESSION_PATH = `.session/${client.options.session}`;\r\n\r\n const { state, saveCreds } = await useAuthState(SESSION_PATH);\r\n\r\n const config = socketConfig(client, state);\r\n const socket = makeWASocket(config);\r\n\r\n socket.ev.on('creds.update', saveCreds);\r\n\r\n store.set('socket', socket);\r\n};\r\n","import z from 'zod';\r\n\r\nexport const parseZod = <T>(schema: z.ZodSchema<T>, data: unknown) => {\r\n const result = schema.safeParse(data);\r\n\r\n if (result.success) return result.data;\r\n\r\n console.error(z.treeifyError(result.error));\r\n\r\n throw 'Invalid data';\r\n};\r\n","import { z } from 'zod';\r\nimport { ListenerCallsType } from './calls';\r\nimport { ListenerConnectionType } from './connection';\r\nimport { ListenerMessagesType } from './messages';\r\n\r\nexport const ClientBaseType = z.object({\r\n session: z.string().default('zaileys').optional(),\r\n prefix: z.string().optional(),\r\n\r\n ignoreMe: z.boolean().default(true).optional(),\r\n showLogs: z.boolean().default(true).optional(),\r\n\r\n syncFullHistory: z.boolean().default(true).optional(),\r\n\r\n autoMentions: z.boolean().default(true).optional(),\r\n autoOnline: z.boolean().default(true).optional(),\r\n autoRead: z.boolean().default(true).optional(),\r\n autoPresence: z.boolean().default(true).optional(),\r\n autoRejectCall: z.boolean().default(true).optional(),\r\n});\r\n\r\nexport const ClientAuthPairingType = z.object({\r\n authType: z.literal('pairing'),\r\n phoneNumber: z.number(),\r\n});\r\n\r\nexport const ClientAuthQRType = z.object({\r\n authType: z.literal('qr'),\r\n});\r\n\r\nexport const ClientOptionsType = z.union([ClientAuthPairingType.extend(ClientBaseType.shape), ClientAuthQRType.extend(ClientBaseType.shape)]);\r\n\r\nexport const EventEnumType = z.enum(['connection', 'messages', 'calls']);\r\n\r\nexport type EventCallbackType = {\r\n connection: (ctx: z.infer<typeof ListenerConnectionType>) => void;\r\n messages: (ctx: z.infer<typeof ListenerMessagesType>) => void;\r\n calls: (ctx: z.infer<typeof ListenerCallsType>) => void;\r\n};\r\n","{\n \"name\": \"zaileys\",\n \"version\": \"1.1.40-tx.0\",\n \"license\": \"MIT\",\n \"main\": \"dist/index.js\",\n \"module\": \"dist/index.js\",\n \"types\": \"dist/index.d.ts\",\n \"files\": [\n \"dist\"\n ],\n \"author\": \"zaadevofc\",\n \"repository\": {\n \"url\": \"git+https://github.com/zeative/zaileys.git\"\n },\n \"scripts\": {\n \"test\": \"tsx --watch examples/test.ts\",\n \"build\": \"rolldown -c rolldown.config.ts\",\n \"r:patch\": \"npm run build && npm version patch && npm publish\",\n \"r:minor\": \"npm run build && npm version minor && npm publish\",\n \"r:major\": \"npm run build && npm version major && npm publish\"\n },\n \"devDependencies\": {\n \"@types/qrcode-terminal\": \"^0.12.2\",\n \"rolldown\": \"1.0.0-beta.52\",\n \"rolldown-plugin-dts\": \"^0.18.1\",\n \"tsx\": \"^4.21.0\",\n \"typescript\": \"^5.9.3\",\n \"zod\": \"^4.1.13\"\n },\n \"dependencies\": {\n \"async-mutex\": \"^0.5.0\",\n \"baileys\": \"7.0.0-rc.9\",\n \"figlet\": \"^1.9.4\",\n \"gradient-string\": \"^3.0.0\",\n \"lodash\": \"^4.17.21\",\n \"lowdb\": \"^7.0.1\",\n \"nanospinner\": \"^1.2.2\",\n \"node-cache\": \"^5.1.2\",\n \"pino\": \"^10.1.0\",\n \"qrcode-terminal\": \"^0.12.0\",\n \"rate-limiter-flexible\": \"^9.0.0\"\n }\n}\n","import _ from 'lodash';\r\nimport fs from 'node:fs/promises';\r\nimport { store } from '../Modules/store';\r\n\r\nexport const getLatestLibVersion = async () => {\r\n try {\r\n const res = await fetch('https://registry.npmjs.org/zaileys');\r\n const data = await res.json();\r\n\r\n return data['dist-tags'].latest;\r\n } catch (error) {\r\n throw error;\r\n }\r\n};\r\n\r\nexport const removeAuthCreds = async (session: string) => {\r\n try {\r\n const SESSION_PATH = `.session/${session}/creds.json`;\r\n await fs.unlink(SESSION_PATH);\r\n } catch (error) {\r\n store.spinner.error(`Failed to remove auth creds for session \"${session}\"!`);\r\n throw error;\r\n }\r\n};\r\n\r\nexport const normalizeText = (text = '') => {\r\n if (!text) return null;\r\n\r\n let clean = text\r\n .normalize('NFKD')\r\n .replace(/[\\u0000-\\u001F\\u007F-\\u009F\\u200B-\\u200F\\u2028-\\u202F\\u2060-\\u206F\\uFEFF\\uFFF9-\\uFFFB]/gu, '')\r\n .replace(\r\n /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1-\\u05C2\\u05C4-\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7-\\u06E8\\u06EA-\\u06ED\\u20D0-\\u20FF\\uFE20-\\uFE2F]/gu,\r\n '',\r\n )\r\n .replace(/[\\u202A-\\u202E\\u2066-\\u2069]/gu, '')\r\n .replace(/\\u202E([\\s\\S]*?)\\u202C?/gu, (_, s) => [...s].reverse().join(''));\r\n\r\n return clean;\r\n};\r\n","import figlet from 'figlet';\r\nimport gradient, { cristal, mind, morning } from 'gradient-string';\r\nimport pkg from '../../package.json' assert { type: 'json' };\r\nimport { store } from '../Modules/store';\r\nimport { getLatestLibVersion } from './validate';\r\nimport qrcode from 'qrcode-terminal';\r\n\r\nexport const autoDisplayQRCode = (code: string) => {\r\n qrcode.generate(code, { small: true }, (code) => {\r\n console.log(code);\r\n });\r\n};\r\n\r\nexport const autoDisplayBanner = async () => {\r\n console.clear();\r\n store.spinner.start(' Checking for updates...');\r\n\r\n const latestVersion = await getLatestLibVersion();\r\n const isLatest = pkg.version === latestVersion;\r\n\r\n store.spinner.stop();\r\n\r\n const logoLabel = 'Zaileys';\r\n const copyright = `\\nby ${pkg.author} ยท v${pkg.version}`;\r\n\r\n const updateLabel = `${isLatest ? 'Already using latest version!' : `Update available! (v${latestVersion})`} \\n`;\r\n const updateColor = isLatest ? ['#04ba25ff', '#04ba25ff'] : ['#ffaf00ff', '#ffaf00ff'];\r\n\r\n const logo = await figlet.text(logoLabel);\r\n const fancy = cristal(logo);\r\n\r\n console.log(fancy);\r\n console.log(gradient(['#383838ff', '#383838ff'])(copyright));\r\n console.log(gradient(updateColor)(updateLabel));\r\n};\r\n","import makeWASocket, { WACallEvent } from 'baileys';\r\nimport { Client } from '../Classes';\r\nimport { store } from '../Modules/store';\r\nimport z from 'zod';\r\nimport { ListenerCallsType } from '../Types/calls';\r\n\r\nexport class Calls {\r\n constructor(private client: Client) {\r\n this.initialize();\r\n }\r\n\r\n async initialize() {\r\n const socket = store.get('socket') as ReturnType<typeof makeWASocket>;\r\n\r\n socket.ev.on('call', async (calls) => {\r\n for (const call of calls) {\r\n const parsed = await this.parse(call);\r\n if (!parsed) continue;\r\n\r\n await this.client.middleware.run({ calls: parsed });\r\n store.events.emit('calls', parsed);\r\n }\r\n });\r\n }\r\n\r\n async parse(caller: WACallEvent) {\r\n const output: Partial<z.infer<typeof ListenerCallsType>> = {};\r\n\r\n output.callId = caller.id;\r\n output.callerId = caller.from;\r\n output.roomId = caller.chatId;\r\n\r\n output.date = caller.date;\r\n output.offline = caller.offline;\r\n output.status = caller.status;\r\n\r\n output.isVideo = !!caller.isVideo;\r\n output.isGroup = !!caller.isGroup;\r\n\r\n return output;\r\n }\r\n}\r\n","import { URL_REGEX } from 'baileys';\r\nimport _ from 'lodash';\r\n\r\nexport const ignoreLint = (data: any) => data;\r\n\r\nexport const toJson = (object: unknown) => {\r\n try {\r\n return JSON.parse(object as string);\r\n } catch {\r\n return _.attempt(() => JSON.parse(JSON.stringify(object) || '{}'));\r\n }\r\n};\r\n\r\nexport const toString = (object: unknown) => {\r\n try {\r\n return JSON.stringify(object);\r\n } catch {\r\n const result = _.attempt(() => JSON.stringify(toJson(object) || '{}'));\r\n return _.isError(result) ? '{}' : result;\r\n }\r\n};\r\n\r\nexport const shuffleString = (str = '') => {\r\n return _.shuffle(str).join('');\r\n};\r\n\r\nexport const findGlobalWord = (text = '', word = '') => {\r\n if (!text) return null;\r\n return _.includes(text.toLowerCase(), word.toLowerCase());\r\n};\r\n\r\nexport const extractUrls = (text = '') => {\r\n if (!text) return [];\r\n return _.castArray(text.match(URL_REGEX) || []);\r\n};\r\n\r\nexport const randomize = (arr: string[]) => {\r\n return arr[Math.floor(Math.random() * arr.length)];\r\n};\r\n\r\nexport const pickKeysFromArray = (arr: any[], keys: string[]) => {\r\n for (const obj of arr) {\r\n for (const key of keys) {\r\n if (key in obj && obj[key] !== undefined && obj[key] !== null) {\r\n return obj[key];\r\n }\r\n }\r\n }\r\n return undefined;\r\n};\r\n","import makeWASocket, { delay, DisconnectReason, jidNormalizedUser } from 'baileys';\r\nimport { cristal } from 'gradient-string';\r\nimport z from 'zod';\r\nimport { Client } from '../Classes';\r\nimport { store } from '../Modules/store';\r\nimport { ListenerConnectionType } from '../Types/connection';\r\nimport { ignoreLint, removeAuthCreds } from '../Utils';\r\nimport { autoDisplayQRCode } from '../Utils/banner';\r\n\r\nexport class Connection {\r\n constructor(private client: Client) {\r\n this.initialize();\r\n }\r\n\r\n async initialize() {\r\n store.spinner.start(' Initializing connection...');\r\n\r\n const socket = store.get('socket') as ReturnType<typeof makeWASocket>;\r\n\r\n const output: Partial<z.infer<typeof ListenerConnectionType>> = {};\r\n\r\n // Reload client\r\n const reload = async () => {\r\n output.status = 'reload';\r\n store.spinner.warn(' Connection lost. Attempting auto-reload...');\r\n\r\n await this.client.initialize();\r\n };\r\n\r\n // Retry handler\r\n const retry = async () => {\r\n await delay(3000);\r\n\r\n store.spinner.warn(` Invalid session. Attempting auto cleaning creds...`);\r\n await delay(3000);\r\n\r\n await removeAuthCreds(this.client.options.session);\r\n await reload();\r\n };\r\n\r\n // Pairing handler\r\n if (this.client.options.authType === 'pairing' && this.client.options.phoneNumber && !socket.authState.creds.registered) {\r\n store.spinner.update(' Generating pairing code...');\r\n\r\n await delay(3500);\r\n\r\n try {\r\n output.authTimeout = Date.now() + 60_000;\r\n\r\n const expired = new Date(output.authTimeout).toLocaleTimeString();\r\n const code = await socket.requestPairingCode(this.client.options.phoneNumber.toString());\r\n\r\n store.spinner.warn(` Pairing expired at ${cristal(expired)}`);\r\n store.spinner.warn(` Pairing code: ${code}`);\r\n\r\n output.code = code;\r\n } catch {\r\n await retry();\r\n }\r\n }\r\n\r\n socket.ev.on('connection.update', async (ctx) => {\r\n const { connection, lastDisconnect, qr } = ctx;\r\n\r\n output.status = connection || 'connecting';\r\n output.authType = this.client.options.authType;\r\n\r\n store.spinner.update(' Connection status: ' + cristal(output.status));\r\n\r\n // QR handler\r\n if (this.client.options.authType === 'qr' && qr) {\r\n output.authTimeout = Date.now() + 60_000;\r\n\r\n const expired = new Date(output.authTimeout).toLocaleTimeString();\r\n\r\n store.spinner.warn(` Please scan the QR code...`);\r\n store.spinner.warn(` Qr code expired at ${cristal(expired)}`);\r\n\r\n autoDisplayQRCode(qr);\r\n\r\n output.qr = qr;\r\n return;\r\n }\r\n\r\n if (connection === 'close') {\r\n const code = ignoreLint(lastDisconnect?.error)?.output?.statusCode;\r\n const error = lastDisconnect?.error?.message || '';\r\n\r\n const isReconnect = typeof code === 'number' && code !== DisconnectReason.loggedOut;\r\n\r\n store.spinner.error(`[${code} - Closed] ${error}`);\r\n\r\n if (code === 401 || code === 405 || code === 500) {\r\n store.spinner.error(' Invalid session, please delete manually!');\r\n store.spinner.error(` Session \"${this.client.options.session}\" has not valid, please delete it!\\n`);\r\n\r\n await retry();\r\n }\r\n\r\n if (isReconnect) {\r\n await reload();\r\n }\r\n }\r\n\r\n if (connection === 'open') {\r\n if (socket.user?.id) {\r\n const id = jidNormalizedUser(socket.user.id).split('@')[0];\r\n const name = socket.user.name || socket.user.verifiedName;\r\n\r\n store.spinner.success(` Connected as ${cristal(name || id)}`);\r\n } else {\r\n store.spinner.success(` Connected!`);\r\n }\r\n }\r\n\r\n store.events.emit('connection', output);\r\n });\r\n\r\n socket.ev.on('messaging-history.set', ({ progress }) => {\r\n output.status = 'syncing';\r\n output.syncProgress = progress;\r\n\r\n store.spinner.start(` Syncing messages history...`);\r\n\r\n if (progress) {\r\n store.spinner.update(` Syncing messages history ${progress + '%'}`);\r\n }\r\n\r\n if (progress == 100) {\r\n store.spinner.success(` Syncing messages history completed!`);\r\n output.syncCompleted = true;\r\n }\r\n\r\n store.set('connection', output);\r\n store.events.emit('connection', output);\r\n });\r\n }\r\n}\r\n","export const MESSAGE_MEDIA_TYPES = {\r\n text: 'text',\r\n conversation: 'text',\r\n imageMessage: 'image',\r\n contactMessage: 'contact',\r\n locationMessage: 'location',\r\n documentMessage: 'document',\r\n audioMessage: 'audio',\r\n videoMessage: 'video',\r\n protocolMessage: 'protocol',\r\n contactsArrayMessage: 'contacts',\r\n highlyStructuredMessage: 'highlyStructured',\r\n sendPaymentMessage: 'sendPayment',\r\n liveLocationMessage: 'location',\r\n requestPaymentMessage: 'requestPayment',\r\n declinePaymentRequestMessage: 'declinePaymentRequest',\r\n cancelPaymentRequestMessage: 'cancelPaymentRequest',\r\n templateMessage: 'template',\r\n stickerMessage: 'sticker',\r\n groupInviteMessage: 'groupInvite',\r\n templateButtonReplyMessage: 'buttons',\r\n productMessage: 'product',\r\n deviceSentMessage: 'deviceSent',\r\n listMessage: 'list',\r\n viewOnceMessage: 'viewOnce',\r\n orderMessage: 'order',\r\n listResponseMessage: 'list',\r\n ephemeralMessage: 'ephemeral',\r\n invoiceMessage: 'invoice',\r\n buttonsMessage: 'buttons',\r\n buttonsResponseMessage: 'buttons',\r\n paymentInviteMessage: 'paymentInvite',\r\n interactiveMessage: 'interactive',\r\n reactionMessage: 'reaction',\r\n stickerSyncRmrMessage: 'sticker',\r\n interactiveResponseMessage: 'interactiveResponse',\r\n pollCreationMessage: 'pollCreation',\r\n pollCreationMessageKey: 'pollUpdate',\r\n pollUpdateMessage: 'pollUpdate',\r\n keepInChatMessage: 'keepInChat',\r\n documentWithCaptionMessage: 'document',\r\n requestPhoneNumberMessage: 'requestPhoneNumber',\r\n viewOnceMessageV2: 'viewOnce',\r\n encReactionMessage: 'reaction',\r\n editedMessage: 'text',\r\n viewOnceMessageV2Extension: 'viewOnce',\r\n pollCreationMessageV2: 'pollCreation',\r\n scheduledCallCreationMessage: 'scheduledCallCreation',\r\n groupMentionedMessage: 'groupMentioned',\r\n pinInChatMessage: 'pinInChat',\r\n pollCreationMessageV3: 'pollCreation',\r\n scheduledCallEditMessage: 'scheduledCallEdit',\r\n ptvMessage: 'ptv',\r\n botInvokeMessage: 'botInvoke',\r\n callLogMesssage: 'callLog',\r\n encCommentMessage: 'encComment',\r\n bcallMessage: 'bcall',\r\n lottieStickerMessage: 'lottieSticker',\r\n eventMessage: 'event',\r\n commentMessage: 'comment',\r\n newsletterAdminInviteMessage: 'text',\r\n extendedTextMessageWithParentKey: 'text',\r\n extendedTextMessage: 'text',\r\n placeholderMessage: 'placeholder',\r\n encEventUpdateMessage: 'encEventUpdate',\r\n} as const;\r\n\r\nexport const MESSAGES_VERIFIED_TYPE = {\r\n whatsapp: '0@s.whatsapp.net',\r\n meta: '13135550002@s.whatsapp.net',\r\n chatgpt: '18002428478@s.whatsapp.net',\r\n copilot: '18772241042@s.whatsapp.net',\r\n instagram: '447723442971@s.whatsapp.net',\r\n tiktok: '6285574670498@s.whatsapp.net',\r\n} as const;\r\n","import { extractMessageContent, getContentType, proto } from 'baileys';\r\nimport _ from 'lodash';\r\n\r\nexport const generateId = (input: string | string[]) => {\r\n let combinedString;\r\n\r\n if (Array.isArray(input)) {\r\n combinedString = input.join('|');\r\n } else if (typeof input === 'string') {\r\n combinedString = input;\r\n } else {\r\n combinedString = String(input);\r\n }\r\n\r\n let hash = 2166136261;\r\n const len = combinedString.length;\r\n\r\n for (let i = 0; i < len; i++) {\r\n hash ^= combinedString.charCodeAt(i);\r\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\r\n }\r\n\r\n return 'Z4CD' + (hash >>> 0).toString(16).padStart(8, '0').toUpperCase();\r\n};\r\n\r\nexport const getUsersMentions = (text = '') => {\r\n if (!text) return [];\r\n const ids = new Set();\r\n for (const match of text.matchAll(/@(\\d+)/g)) {\r\n ids.add(match[1]);\r\n }\r\n return _.toArray(ids) as string[];\r\n};\r\n\r\nexport const extractJids = (text = '') => {\r\n if (!text) return [];\r\n const ids = new Set();\r\n for (const match of text.matchAll(/@(\\d+)/g)) {\r\n ids.add(match[1]);\r\n }\r\n return _.flatMap([...ids], (id) => [`${id}@s.whatsapp.net`, `${id}@g.us`]);\r\n};\r\n\r\nexport const cleanMediaObject = (object: any) => {\r\n return _.omit(object, [\r\n 'url',\r\n 'contextInfo',\r\n 'fileSha256',\r\n 'fileEncSha256',\r\n 'mediaKey',\r\n 'directPath',\r\n 'waveform',\r\n 'thumbnail',\r\n 'jpegThumbnail',\r\n 'thumbnailEncSha256',\r\n 'thumbnailSha256',\r\n 'thumbnailDirectPath',\r\n 'firstFrameSidecar',\r\n 'streamingSidecar',\r\n 'scansSidecar',\r\n 'callKey',\r\n 'message',\r\n 'key',\r\n 'midQualityFileSha256',\r\n ]);\r\n};\r\n\r\nexport const getDeepContent = (raw?: proto.IMessage | null) => {\r\n if (!raw) return { leaf: undefined, chain: [] as string[] };\r\n\r\n let current: any = extractMessageContent(raw) || raw;\r\n const chain: string[] = [];\r\n\r\n while (current && typeof current === 'object') {\r\n const type = getContentType(current);\r\n if (!type) break;\r\n\r\n chain.push(type);\r\n const next = current[type];\r\n\r\n if (!next || typeof next !== 'object') {\r\n current = next;\r\n break;\r\n }\r\n\r\n current = next;\r\n }\r\n\r\n return { leaf: current, chain };\r\n};\r\n","import makeWASocket, { downloadMediaMessage, getDevice, jidNormalizedUser, WAMessage, WAMessageAddressingMode } from 'baileys';\r\nimport z from 'zod';\r\nimport { Client } from '../Classes';\r\nimport { MESSAGE_MEDIA_TYPES } from '../Config/media';\r\nimport { store } from '../Modules/store';\r\nimport { ListenerMessagesType } from '../Types/messages';\r\nimport { extractUrls, findGlobalWord, normalizeText, pickKeysFromArray, toString } from '../Utils';\r\nimport { cleanMediaObject, generateId, getDeepContent, getUsersMentions } from '../Utils/message';\r\n\r\nexport class Messages {\r\n constructor(private client: Client) {\r\n if (store.get('connection')?.status != 'syncing') {\r\n this.initialize();\r\n }\r\n }\r\n\r\n async initialize() {\r\n const socket = store.get('socket') as ReturnType<typeof makeWASocket>;\r\n\r\n socket.ev.on('messages.upsert', async ({ messages, type }) => {\r\n if (type !== 'notify') return;\r\n\r\n for (const message of messages) {\r\n const parsed = await this.parse(message);\r\n\r\n if (parsed) {\r\n await this.client.middleware.run({ messages: parsed });\r\n store.events.emit('messages', parsed);\r\n }\r\n }\r\n });\r\n }\r\n\r\n async parse(message: WAMessage) {\r\n console.log(JSON.stringify(message, null, 2));\r\n\r\n if (message?.category === 'peer') return;\r\n if (!message.message || !message?.key?.id) return;\r\n if (message?.messageStubType || !!message?.messageStubParameters) return;\r\n if (message?.message?.botInvokeMessage || message.message?.protocolMessage?.peerDataOperationRequestResponseMessage) return;\r\n\r\n const original = message;\r\n\r\n const socket = store.get('socket') as ReturnType<typeof makeWASocket>;\r\n const output: Partial<z.infer<typeof ListenerMessagesType>> = {};\r\n\r\n const contentExtract = getDeepContent(message.message);\r\n const contentType = contentExtract.chain.at(-1);\r\n const content = contentExtract.leaf;\r\n\r\n // console.log(content);\r\n\r\n output.uniqueId = null;\r\n output.channelId = null;\r\n\r\n output.chatId = message?.message?.protocolMessage?.key?.id || message?.key?.id || null;\r\n output.chatAddress = message?.key?.addressingMode as WAMessageAddressingMode;\r\n output.chatType = MESSAGE_MEDIA_TYPES[contentType];\r\n\r\n output.receiverId = jidNormalizedUser(socket?.user?.id || '');\r\n output.receiverName = normalizeText(socket?.user?.name || socket?.user?.verifiedName);\r\n\r\n output.roomId = jidNormalizedUser(message?.key?.remoteJid);\r\n\r\n const chat = await this.client.db('chats').get(output.roomId);\r\n const contact = await this.client.db('contacts').get(output.roomId);\r\n\r\n const chatName = pickKeysFromArray(chat, ['name', 'verifiedName']);\r\n const contactName = pickKeysFromArray(contact, ['notify', 'name']);\r\n\r\n output.roomName = chatName || contactName || null;\r\n\r\n output.senderLid = pickKeysFromArray([message?.key], ['remoteJidAlt', 'participant']);\r\n output.senderId = jidNormalizedUser(message?.participant || message?.key?.participant || message?.key?.remoteJid);\r\n output.senderName = normalizeText(message?.pushName || message?.verifiedBizName);\r\n output.senderDevice = getDevice(output.chatId);\r\n\r\n output.channelId = generateId([output.roomId, output.senderId]);\r\n output.uniqueId = generateId([output.channelId, output.chatId]);\r\n\r\n output.timestamp = Number(message?.messageTimestamp);\r\n\r\n output.text =\r\n content?.text ||\r\n content?.caption ||\r\n content?.name ||\r\n content?.displayName ||\r\n content?.conversation ||\r\n content?.contentText ||\r\n content?.selectedDisplayText ||\r\n content ||\r\n null;\r\n\r\n output.text = normalizeText(output.text);\r\n output.mentions = getUsersMentions(output.text);\r\n output.links = extractUrls(output.text || '');\r\n\r\n output.isFromMe = message?.key?.fromMe || false;\r\n output.isTagMe = output.mentions?.includes(output.receiverId.split('@')[0]);\r\n output.isPrefix = output.text?.startsWith(this.client.options?.prefix);\r\n\r\n output.isSpam = false;\r\n\r\n output.isGroup = output.roomId?.includes('@g.us');\r\n output.isNewsletter = output.roomId?.includes('@newsletter');\r\n output.isStory = output.roomId?.includes('@broadcast');\r\n\r\n output.isViewOnce = false;\r\n output.isEdited = false;\r\n output.isDeleted = false;\r\n output.isPinned = false;\r\n output.isUnPinned = false;\r\n\r\n output.isBroadcast = !!message?.broadcast;\r\n\r\n output.isEphemeral = !!findGlobalWord(toString(message.message), 'ephemeralSettingTimestamp');\r\n output.isForwarded = !!findGlobalWord(toString(message.message), 'forwardingScore');\r\n\r\n output.citation = {};\r\n\r\n if (output.chatType !== 'text') {\r\n output.media = {\r\n ...cleanMediaObject(content),\r\n buffer: () => downloadMediaMessage(message, 'buffer', {}) as Promise<Buffer>,\r\n stream: () => downloadMediaMessage(message, 'stream', {}) as Promise<NodeJS.ReadableStream>,\r\n };\r\n }\r\n\r\n output.message = () => original;\r\n output.replied = null;\r\n\r\n return output;\r\n }\r\n}\r\n","import makeWASocket, { getAggregateVotesInPollMessage } from 'baileys';\r\nimport { Client } from '../Classes';\r\nimport { store } from '../Modules/store';\r\nimport { Calls } from './calls';\r\nimport { Connection } from './connection';\r\nimport { Messages } from './messages';\r\n\r\nexport class Listener {\r\n constructor(private client: Client) {\r\n new Connection(client);\r\n new Messages(client);\r\n new Calls(client);\r\n\r\n this.initialize();\r\n }\r\n\r\n async initialize() {\r\n const socket = store.get('socket') as ReturnType<typeof makeWASocket>;\r\n\r\n socket.ev.on('groups.update', async ([event]) => {\r\n const metadata = await socket.groupMetadata(event.id);\r\n store.groupCache.set(event.id, metadata);\r\n });\r\n\r\n socket.ev.on('group-participants.update', async (event) => {\r\n const metadata = await socket.groupMetadata(event.id);\r\n store.groupCache.set(event.id, metadata);\r\n });\r\n\r\n socket?.ev.on('messaging-history.set', async (update) => {\r\n const { chats, contacts, messages } = update;\r\n\r\n for (const chat of chats) {\r\n await this.client.db('chats').push(chat.id, chat);\r\n }\r\n\r\n for (const contact of contacts) {\r\n await this.client.db('contacts').push(contact.id, contact);\r\n }\r\n\r\n for (const message of messages) {\r\n if (!message.message) return;\r\n if (message?.category === 'peer') return;\r\n if (message.message?.protocolMessage) return;\r\n\r\n await this.client.db('messages').push(message.key.remoteJid, message);\r\n }\r\n });\r\n\r\n socket?.ev.on('messages.upsert', async ({ messages }) => {\r\n for (const message of messages) {\r\n if (!message.message) return;\r\n if (message?.category === 'peer') return;\r\n if (message.message?.protocolMessage) return;\r\n\r\n await this.client.db('messages').push(message.key.remoteJid, message);\r\n }\r\n });\r\n\r\n socket?.ev.on('chats.upsert', async (chats) => {\r\n for (const chat of chats) {\r\n await this.client.db('chats').push(chat.id, chat);\r\n }\r\n });\r\n\r\n socket?.ev.on('contacts.upsert', async (contacts) => {\r\n for (const contact of contacts) {\r\n await this.client.db('contacts').push(contact.id, contact);\r\n }\r\n });\r\n\r\n socket?.ev.on('messages.update', async (events) => {\r\n console.log('๐ ~ initialize ~ src/Listener/index.ts:72 ~ events:', events);\r\n for (const { key, update } of events) {\r\n if (!update.pollUpdates) continue;\r\n\r\n const pollCreation = await this.client.db('messages').get(key.remoteJid);\r\n if (!pollCreation) continue;\r\n\r\n const aggregation = getAggregateVotesInPollMessage({\r\n message: pollCreation,\r\n pollUpdates: update.pollUpdates,\r\n });\r\n\r\n console.log('poll aggregation:', aggregation);\r\n }\r\n });\r\n }\r\n}\r\n","import { MiddlewareContextType } from '../Types/middleware';\r\n\r\nexport type MiddlewareNext = () => Promise<void> | void;\r\nexport type MiddlewareHandler<T> = (ctx: MiddlewareContextType, next: MiddlewareNext) => Promise<void> | void;\r\n\r\nexport class Middleware<T> {\r\n private stack: MiddlewareHandler<T>[] = [];\r\n\r\n use(handler: MiddlewareHandler<T>) {\r\n this.stack.push(handler);\r\n return this;\r\n }\r\n\r\n async run(ctx: MiddlewareContextType) {\r\n let index = -1;\r\n\r\n const dispatch = async (i: number): Promise<void> => {\r\n if (i <= index) throw 'next() called multiple times';\r\n index = i;\r\n\r\n const fn = this.stack[i];\r\n if (!fn) return;\r\n\r\n try {\r\n await fn(ctx, () => dispatch(i + 1));\r\n } catch (err) {\r\n console.error('Middleware error:', err);\r\n throw err;\r\n }\r\n };\r\n\r\n await dispatch(0);\r\n }\r\n}\r\n","import makeWASocket from 'baileys';\r\nimport z from 'zod';\r\nimport { registerAuthCreds } from '../Auth';\r\nimport { store } from '../Modules/store';\r\nimport { parseZod } from '../Modules/zod';\r\nimport { ClientOptionsType, EventCallbackType, EventEnumType } from '../Types';\r\nimport { autoDisplayBanner } from '../Utils/banner';\r\nimport { Listener } from '../Listener';\r\n\r\nimport { Middleware, MiddlewareHandler } from './middleware';\r\n\r\nexport class Client {\r\n middleware = new Middleware<any>();\r\n\r\n constructor(public options: z.infer<typeof ClientOptionsType>) {\r\n this.options = parseZod(ClientOptionsType, options);\r\n this.initialize();\r\n }\r\n\r\n async initialize() {\r\n await autoDisplayBanner();\r\n await registerAuthCreds(this);\r\n\r\n new Listener(this);\r\n }\r\n\r\n db(path: string) {\r\n return store.lowdb(this.options.session, `stores/${path}.json`);\r\n }\r\n\r\n on<T extends z.infer<typeof EventEnumType>>(event: T, handler: EventCallbackType[T]): void {\r\n store.events.on(event, handler);\r\n }\r\n\r\n use<T>(handler: MiddlewareHandler<T>) {\r\n this.middleware.use(handler);\r\n return this;\r\n }\r\n}\r\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zaileys",
|
|
3
|
-
"version": "1.1.40-tx.
|
|
3
|
+
"version": "1.1.40-tx.1",
|
|
4
4
|
"license": "MIT",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
5
11
|
"author": "zaadevofc",
|
|
6
12
|
"repository": {
|
|
7
13
|
"url": "git+https://github.com/zeative/zaileys.git"
|
package/tsconfig.json
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES2022",
|
|
4
|
-
"module": "ESNext",
|
|
5
|
-
"declaration": true,
|
|
6
|
-
"declarationMap": true,
|
|
7
|
-
"sourceMap": true,
|
|
8
|
-
"outDir": "dist",
|
|
9
|
-
"strict": false,
|
|
10
|
-
"esModuleInterop": true,
|
|
11
|
-
"skipLibCheck": true,
|
|
12
|
-
"forceConsistentCasingInFileNames": true,
|
|
13
|
-
"moduleResolution": "bundler",
|
|
14
|
-
|
|
15
|
-
"experimentalDecorators": true,
|
|
16
|
-
"emitDecoratorMetadata": true
|
|
17
|
-
},
|
|
18
|
-
"include": ["src/**/*.ts"]
|
|
19
|
-
}
|