zaileys 3.0.0 → 3.0.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.
Files changed (109) hide show
  1. package/dist/index.js +2 -2
  2. package/dist/index.mjs +2 -2
  3. package/package.json +1 -1
  4. package/.agent/skills/codebase-mapper/SKILL.md +0 -226
  5. package/.agent/skills/context-compressor/SKILL.md +0 -201
  6. package/.agent/skills/context-fetch/SKILL.md +0 -184
  7. package/.agent/skills/context-health-monitor/SKILL.md +0 -105
  8. package/.agent/skills/debugger/SKILL.md +0 -273
  9. package/.agent/skills/empirical-validation/SKILL.md +0 -97
  10. package/.agent/skills/executor/SKILL.md +0 -465
  11. package/.agent/skills/plan-checker/SKILL.md +0 -283
  12. package/.agent/skills/planner/SKILL.md +0 -485
  13. package/.agent/skills/token-budget/SKILL.md +0 -166
  14. package/.agent/skills/verifier/SKILL.md +0 -421
  15. package/.agent/workflows/add-phase.md +0 -96
  16. package/.agent/workflows/add-todo.md +0 -69
  17. package/.agent/workflows/audit-milestone.md +0 -107
  18. package/.agent/workflows/check-todos.md +0 -80
  19. package/.agent/workflows/complete-milestone.md +0 -135
  20. package/.agent/workflows/debug.md +0 -235
  21. package/.agent/workflows/discuss-phase.md +0 -103
  22. package/.agent/workflows/execute.md +0 -325
  23. package/.agent/workflows/health.md +0 -122
  24. package/.agent/workflows/help.md +0 -96
  25. package/.agent/workflows/insert-phase.md +0 -109
  26. package/.agent/workflows/install.md +0 -152
  27. package/.agent/workflows/list-phase-assumptions.md +0 -82
  28. package/.agent/workflows/map.md +0 -394
  29. package/.agent/workflows/new-milestone.md +0 -126
  30. package/.agent/workflows/new-project.md +0 -368
  31. package/.agent/workflows/pause.md +0 -176
  32. package/.agent/workflows/plan-milestone-gaps.md +0 -116
  33. package/.agent/workflows/plan.md +0 -380
  34. package/.agent/workflows/progress.md +0 -90
  35. package/.agent/workflows/quick.md +0 -128
  36. package/.agent/workflows/remove-phase.md +0 -139
  37. package/.agent/workflows/research-phase.md +0 -160
  38. package/.agent/workflows/resume.md +0 -131
  39. package/.agent/workflows/update.md +0 -203
  40. package/.agent/workflows/verify.md +0 -263
  41. package/.agent/workflows/web-search.md +0 -121
  42. package/.agent/workflows/whats-new.md +0 -80
  43. package/.gemini/GEMINI.md +0 -67
  44. package/.gsd/DEBUG.md +0 -26
  45. package/.gsd/GSD-STYLE.md +0 -272
  46. package/.gsd/PROJECT_RULES.md +0 -256
  47. package/.gsd/ROADMAP.md +0 -38
  48. package/.gsd/SPEC.md +0 -16
  49. package/.gsd/STATE.md +0 -10
  50. package/.gsd/adapters/CLAUDE.md +0 -77
  51. package/.gsd/adapters/GEMINI.md +0 -92
  52. package/.gsd/adapters/GPT_OSS.md +0 -130
  53. package/.gsd/docs/model-selection-playbook.md +0 -128
  54. package/.gsd/docs/runbook.md +0 -296
  55. package/.gsd/docs/token-optimization-guide.md +0 -207
  56. package/.gsd/model_capabilities.yaml +0 -108
  57. package/.gsd/phases/1/1-PLAN.md +0 -44
  58. package/.gsd/phases/1/2-PLAN.md +0 -54
  59. package/.gsd/phases/1/3-PLAN.md +0 -46
  60. package/.gsd/phases/1/4-PLAN.md +0 -39
  61. package/.gsd/phases/2/2-1-SUMMARY.md +0 -8
  62. package/.gsd/phases/2/2-PLAN.md +0 -47
  63. package/.gsd/phases/3/3-1-SUMMARY.md +0 -8
  64. package/.gsd/phases/3/3-PLAN.md +0 -43
  65. package/.gsd/phases/4/4-1-PLAN.md +0 -44
  66. package/.gsd/phases/4/4-1-SUMMARY.md +0 -8
  67. package/.gsd/phases/4/4-2-PLAN.md +0 -59
  68. package/.gsd/phases/4/4-2-SUMMARY.md +0 -8
  69. package/.gsd/phases/4/4-3-PLAN.md +0 -42
  70. package/.gsd/phases/4/4-3-SUMMARY.md +0 -8
  71. package/.gsd/phases/4/VERIFICATION.md +0 -8
  72. package/.gsd/phases/5/1-SUMMARY.md +0 -5
  73. package/.gsd/phases/5/5-PLAN.md +0 -47
  74. package/.gsd/phases/5/RESEARCH.md +0 -24
  75. package/.gsd/phases/5/VERIFICATION.md +0 -8
  76. package/.gsd/phases/6/1-SUMMARY.md +0 -6
  77. package/.gsd/phases/6/6-PLAN.md +0 -46
  78. package/.gsd/phases/6/RESEARCH.md +0 -33
  79. package/.gsd/phases/6/VERIFICATION.md +0 -7
  80. package/.gsd/phases/7/1-SUMMARY.md +0 -12
  81. package/.gsd/phases/7/7-PLAN.md +0 -78
  82. package/.gsd/phases/7/VERIFICATION.md +0 -7
  83. package/.gsd/templates/DEBUG.md +0 -123
  84. package/.gsd/templates/PLAN.md +0 -90
  85. package/.gsd/templates/RESEARCH.md +0 -75
  86. package/.gsd/templates/SUMMARY.md +0 -103
  87. package/.gsd/templates/UAT.md +0 -168
  88. package/.gsd/templates/VERIFICATION.md +0 -70
  89. package/.gsd/templates/architecture.md +0 -67
  90. package/.gsd/templates/context.md +0 -91
  91. package/.gsd/templates/decisions.md +0 -37
  92. package/.gsd/templates/discovery.md +0 -122
  93. package/.gsd/templates/journal.md +0 -46
  94. package/.gsd/templates/milestone.md +0 -91
  95. package/.gsd/templates/phase-summary.md +0 -52
  96. package/.gsd/templates/project.md +0 -124
  97. package/.gsd/templates/requirements.md +0 -92
  98. package/.gsd/templates/roadmap.md +0 -103
  99. package/.gsd/templates/spec.md +0 -51
  100. package/.gsd/templates/sprint.md +0 -57
  101. package/.gsd/templates/stack.md +0 -62
  102. package/.gsd/templates/state.md +0 -92
  103. package/.gsd/templates/state_snapshot.md +0 -132
  104. package/.gsd/templates/todo.md +0 -32
  105. package/.gsd/templates/token_report.md +0 -79
  106. package/.gsd/templates/user-setup.md +0 -116
  107. package/.husky/commit-msg +0 -1
  108. package/.husky/pre-commit +0 -1
  109. package/commitlint.config.js +0 -3
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';var _t=require('baileys'),I=require('radashi'),lmdb=require('lmdb'),lruCache=require('lru-cache'),asyncMutex=require('async-mutex'),nanospinner=require('nanospinner'),Ot=require('pino'),events=require('events'),mediaProcess=require('@zaadevofc/media-process'),Ft=require('crypto'),a=require('valibot'),nt=require('gradient-string'),Vt=require('fs/promises'),zt=require('figlet'),Ht=require('qrcode-terminal'),U=require('fs'),W=require('path'),url=require('url');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var _t__default=/*#__PURE__*/_interopDefault(_t);var I__namespace=/*#__PURE__*/_interopNamespace(I);var Ot__default=/*#__PURE__*/_interopDefault(Ot);var Ft__default=/*#__PURE__*/_interopDefault(Ft);var a__namespace=/*#__PURE__*/_interopNamespace(a);var nt__default=/*#__PURE__*/_interopDefault(nt);var Vt__default=/*#__PURE__*/_interopDefault(Vt);var zt__default=/*#__PURE__*/_interopDefault(zt);var Ht__default=/*#__PURE__*/_interopDefault(Ht);var U__namespace=/*#__PURE__*/_interopNamespace(U);var W__namespace=/*#__PURE__*/_interopNamespace(W);var Te={encode:i=>JSON.stringify(i,_t.BufferJSON.replacer),decode:i=>JSON.parse(i,_t.BufferJSON.reviver)},Me=new Map,Ce=(i,e)=>(Me.has(i)||Me.set(i,lmdb.open({path:i,...e})),Me.get(i)),Ge=i=>Ce(`.session/${i}/auth/creds`,{compression:false,encoder:Te}),ne=i=>Ce(`.session/${i}/auth/keys`,{compression:false,encoder:Te}),Ve=(i,e)=>Ce(`.session/${i}/store/${e}`,{compression:true,encoder:Te});var Ae=class{cache;mutex=new asyncMutex.Mutex;namespace;constructor(e,t){this.namespace=e,this.cache=new lruCache.LRUCache({max:t?.max??500,ttl:t?.ttl});}key(e){return `${this.namespace}:${e}`}set(e,t){this.cache.set(this.key(e),t);}get(e){return this.cache.get(this.key(e))}has(e){return this.cache.has(this.key(e))}delete(e){return this.cache.delete(this.key(e))}getOrSet(e,t){if(this.has(e))return this.get(e);let n=t();return this.set(e,n),n}async getOrCreate(e,t){if(this.has(e))return this.get(e);let n=await this.mutex.acquire();try{if(this.has(e))return this.get(e);let o=await t();return this.set(e,o),o}finally{n();}}clear(){this.cache.clear();}keys(){return Array.from(this.cache.keys()).filter(e=>e.startsWith(`${this.namespace}:`)).map(e=>e.slice(this.namespace.length+1))}getAll(){let e={};for(let t of this.keys())e[t]=this.get(t);return e}get size(){return this.keys().length}},Re=class{namespaces=new Map;spinner=nanospinner.createSpinner("",{color:"green"});logger=Ot__default.default({level:"silent",enabled:false});events=new events.EventEmitter;ns(e,t){return this.namespaces.has(e)||this.namespaces.set(e,new Ae(e,t)),this.namespaces.get(e)}drop(e){let t=this.namespaces.get(e);return t?(t.clear(),this.namespaces.delete(e),true):false}snapshot(){let e={};for(let[t,n]of this.namespaces)e[t]=n.getAll();return e}get namespaceNames(){return Array.from(this.namespaces.keys())}},f=new Re;var j=f.ns("context",{max:500,ttl:1e3*60*10}),ze=f.ns("cache",{max:2e3,ttl:1e3*60*5}),d=f.ns("center",{max:500,ttl:1e3*60*10}),Pe=f.ns("rate",{max:5e3,ttl:1e3*10}),P=f.ns("group",{max:500,ttl:1e3*60*5}),Je=f.ns("msg",{max:1e3});var Ke=async i=>{f.spinner.start(" Initializing auth state...");let e=Ge(i),t=ne(i),n=await e.get("creds"),o=n||_t.initAuthCreds();return n?f.spinner.success(" Auth credentials loaded successfully"):f.spinner.success(" Initialized new auth session"),{state:{creds:o,keys:{get:async(s,r)=>{let u={};return await Promise.all(r.map(async l=>{let g=`${s}:${l}`,w=await t.get(g);s==="app-state-sync-key"&&w&&(w=_t.proto.Message.AppStateSyncKeyData.fromObject(w)),u[l]=w;})),u},set:async s=>{let r=[];for(let u in s)for(let l in s[u]){let g=s[u][l],w=`${u}:${l}`;r.push({key:w,value:g});}for(let u of I__namespace.cluster(r,500))await Promise.all(u.map(({key:l,value:g})=>g?t.put(l,g):t.remove(l)));}}},saveCreds:async()=>{await e.put("creds",o);}}};var J=class{constructor(e){this.cache=e;}get(e){return this.cache.get(e)}set(e,t){this.cache.set(e,t);}del(e){this.cache.delete(e);}flushAll(){this.cache.clear();}};var Ye=(i,e)=>({logger:i.health.logger,printQRInTerminal:false,enableRecentMessageCache:true,emitOwnEvents:true,keepAliveIntervalMs:3e4,browser:_t.Browsers.macOS("Desktop"),markOnlineOnConnect:i.options.autoOnline,syncFullHistory:i.options.syncFullHistory,msgRetryCounterCache:new J(Je),mediaCache:new J(ze),auth:{creds:e.creds,keys:_t.makeCacheableSignalKeyStore(e.keys,f.logger)},cachedGroupMetadata:async t=>P.get(t),shouldIgnoreJid:()=>false,shouldSyncHistoryMessage:()=>i.options.syncFullHistory,patchMessageBeforeSending:t=>t,getMessage:async t=>{if(!t?.remoteJid||!t?.id)return _t.proto.Message.fromObject({});let n=await i.db("messages").get(t.id);return _t.proto.Message.fromObject(n||{})}});var Ze=async i=>{let e=i.options.session||"zaileys",{state:t,saveCreds:n}=await Ke(e),{version:o}=await _t.fetchLatestBaileysVersion(),s=Ye(i,t),r=_t__default.default({...s,version:o});r.ev.on("creds.update",n),d.set("socket",r);};function Xe(i,e){let t=e.length;return new Proxy(i,{get(n,o,s){if(o in n){let r=Reflect.get(n,o,s);return typeof r=="function"?r.bind(s):r}for(let r=0;r<t;r++){let u=e[r];if(o in u){let l=Reflect.get(u,o,u);return typeof l=="function"?l.bind(u):l}}},set(n,o,s,r){if(o in n)return Reflect.set(n,o,s,r);for(let u=0;u<t;u++){let l=e[u];if(o in l)return Reflect.set(l,o,s,l)}return Reflect.set(n,o,s,r)},has(n,o){if(o in i)return true;for(let s=0;s<t;s++)if(o in e[s])return true;return false},ownKeys(){let n=new Set(Reflect.ownKeys(i)),o=[...n];for(let s=0;s<t;s++)for(let r of Reflect.ownKeys(e[s]))n.has(r)||(n.add(r),o.push(r));return o},getOwnPropertyDescriptor(n,o){let s=Object.getOwnPropertyDescriptor(i,o);if(s)return s;for(let r=0;r<t;r++)if(s=Object.getOwnPropertyDescriptor(e[r],o),s)return {...s,configurable:true}}})}var se=class{constructor(e){this.client=e;}interval=null;start(){let e=this.client.options.autoCleanUp;e?.enabled&&(this.interval=setInterval(()=>{this.run();},e.intervalMs),this.run());}stop(){this.interval&&(clearInterval(this.interval),this.interval=null);}async run(){let e=this.client.options.autoCleanUp;if(!e?.enabled)return;let t=Date.now()-e.maxAgeMs;for(let n of e.scopes)try{let o=this.client.db(n),s=[];for(let{value:r}of o.getRange())r&&r.timestamp!==void 0&&r.timestamp<t&&s.push(r);if(s.length>0){let r=s.map(u=>u.key?.id||u.id);for(let u of I__namespace.cluster(r,500))await Promise.all(u.map(l=>o.remove(l)));f.spinner.info(` [CleanUpManager] Cleaned up ${s.length} items from ${n}`);}}catch{}}};var C={CRITICAL:20,HIGH:10,NORMAL:0,LOW:-10},Ie=class{concurrency;timeout;onError;queue;running;completed;failed;isClosing;closeResolve;_idleResolvers=[];constructor(e){this.concurrency=e?.concurrency||20,this.timeout=e?.timeout||3e4,this.onError=e?.onError||this._defaultErrorHandler,this.queue=[],this.running=new Set,this.completed=0,this.failed=0,this.isClosing=false,this.closeResolve=null;}add(e,t){if(this.isClosing)throw new Error("Queue is closing, cannot add new tasks");let n={id:this._generateId(),fn:e,priority:t?.priority||0,timeout:t?.timeout||this.timeout,retries:0,maxRetries:t?.maxRetries||0,createdAt:Date.now()},o=this.queue.findIndex(s=>s.priority<n.priority);return o===-1?this.queue.push(n):this.queue.splice(o,0,n),this._process(),n.id}addBulk(e){return e.map(({fn:t,options:n})=>this.add(t,n))}async _process(){for(;this.running.size<this.concurrency&&this.queue.length>0;){let e=this.queue.shift();this.running.add(e),this._executeTask(e);}this.isClosing&&this.running.size===0&&this.queue.length===0&&this.closeResolve?.(),this.isIdle()&&(this._idleResolvers.forEach(e=>e()),this._idleResolvers=[]);}async _executeTask(e){try{await this._withTimeout(e.fn(),e.timeout),this.completed++;}catch(t){if(e.retries<e.maxRetries){e.retries++;let n=Math.min(500*2**e.retries,3e4);setTimeout(()=>{this.isClosing||(this.queue.unshift(e),this._process());},n);}else this.failed++,this.onError(t,e);}finally{this.running.delete(e),this._process();}}_withTimeout(e,t){let n,o=new Promise((s,r)=>{n=setTimeout(()=>r(new Error("Task timeout")),t);});return Promise.race([e,o]).finally(()=>clearTimeout(n))}async close(e=0){if(this.isClosing=true,this.running.size===0&&this.queue.length===0)return;let t=new Promise(n=>{this.closeResolve=n;});if(e>0){let n=new Promise(o=>setTimeout(o,e));await Promise.race([t,n]);}else await t;}forceClose(){this.queue=[],this.running.clear(),this.isClosing=true,this.closeResolve?.();}getStats(){return {queued:this.queue.length,running:this.running.size,completed:this.completed,failed:this.failed,total:this.completed+this.failed}}isIdle(){return this.queue.length===0&&this.running.size===0}async waitUntilIdle(){if(!this.isIdle())return new Promise(e=>{this._idleResolvers.push(e);})}_defaultErrorHandler(e,t){console.error(`[FireForget] Task ${t.id} failed:`,e.message);}_generateId(){return Ft__default.default.randomUUID()}},S=new Ie;var oe=class{constructor(e){this.client=e;this.keysDb=ne(e.options.session);}keysDb;async repair(e){if(e)try{let t=this.client.socket;t&&t.authState&&(await t.authState.keys.set({session:{[e]:null},"sender-key":{[e]:null}}),f.spinner.warn(` [HealthManager] Repaired session for ${e} due to Bad MAC by clearing auth cache`));}catch(t){this.logger.error({err:t},"Failed to repair session");}}get logger(){return Ot__default.default({level:"silent"},{write:e=>{try{let t=JSON.parse(e),n=t.msg||"",o=["Bad MAC","Session error:","Closing open session in favor of incoming prekey bundle","Error: Bad MAC"];if(n.includes("Bad MAC")){let s=t.jid||t.remoteJid;s&&this.repair(s);}o.some(s=>n.includes(s))||t.level>=50&&t.err&&console.error(t.err);}catch{}}})}};var H=(i,e)=>{let t=a__namespace.safeParse(i,e);if(t.issues){let n=[],o=r=>{for(let u of r)if(u.issues&&u.issues.length>0)o(u.issues);else {let l=u.path?.map(g=>g.key).join(".")||"root";n.push(`${l}: ${u.message}`);}};o(t.issues);let s=Array.from(new Set(n));throw new Error(`Validation Error:
2
2
  - ${s.join(`
3
- - `)}`)}return t.output};var y=(i,e="lime")=>Array.isArray(e)?nt__default.default(e)(i):nt__default.default([e,e])(i),Oe=i=>{try{return JSON.parse(i)}catch{return I__namespace.tryit(()=>JSON.parse(JSON.stringify(i)||"{}"))()[1]}},K=i=>{try{return JSON.stringify(i)}catch{let e=I__namespace.tryit(()=>JSON.stringify(Oe(i)||"{}"))();return e[0]?"{}":e[1]}},_s=(i="")=>I__namespace.shuffle(i.split("")).join(""),Q=(i="",e="")=>i?i.toLowerCase().includes(e.toLowerCase()):null,st=(i="")=>{if(!i)return [];let e=i.match(_t.URL_REGEX)||[];return Array.isArray(e)?e:[e]},js=i=>i[Math.floor(Math.random()*i.length)],Ee=(i,e)=>{if(!(!Array.isArray(i)||i.length===0)&&!(!Array.isArray(e)||e.length===0)){for(let t of i)if(!(!t||typeof t!="object"))for(let n of e){let o=I__namespace.get(t,n);if(!I__namespace.isEmpty(o)||typeof o=="number"||typeof o=="boolean"){if(typeof o=="string"&&o.trim()==="")continue;return o}}}},Fs=(i,e)=>{let t=Array.isArray(e)?e:[e],n=(r,u)=>Object.entries(u).every(([l,g])=>r?.[l]===g),o=(r,u)=>Object.entries(u).some(([l,g])=>r?.[l]===g),s=r=>Array.isArray(r)?r.find(s)??r:I__namespace.isObject(r)?t.find(g=>n(r,g))||t.find(g=>o(r,g))?r:Object.values(r).find(s)??r:null;return s(i)},Ls=(i,e,t)=>new Proxy(i,{apply(n,o,s){e?.(s);let r=Reflect.apply(n,o,s);return t?t(r,s):r}}),ot=i=>i.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");var We=i=>{let e;Array.isArray(i)?e=i.join("|"):typeof i=="string"?e=i:e=String(i);let t=2166136261,n=e.length;for(let o=0;o<n;o++)t^=e.charCodeAt(o),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},rt=(i="")=>{if(!i)return [];let e=new Set;for(let t of i.matchAll(/@(\d+)/g))e.add(t[1]);return Array.from(e)},Ne=(i="")=>{if(!i)return [];let e=new Set;for(let t of i.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return [...e].flatMap(t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},ie=i=>{let e=i.filter(Boolean).map(o=>_t.jidNormalizedUser(o)),t=e.find(o=>!o.includes("@lid")),n=e.find(o=>o.includes("@lid"));return {id:t||n||null,lid:n||null}},Vs=i=>i?.length?[...i].map(e=>`${e}@s.whatsapp.net`):[],at=i=>I__namespace.omit(i,["url","contextInfo","fileSha256","fileEncSha256","mediaKey","directPath","waveform","thumbnail","jpegThumbnail","thumbnailEncSha256","thumbnailSha256","thumbnailDirectPath","firstFrameSidecar","streamingSidecar","scansSidecar","callKey","message","key","midQualityFileSha256","historySyncNotification","appStateSyncKeyShare","appStateSyncKeyRequest","initialSecurityNotificationSettingSync","appStateFatalExceptionNotification","disappearingMode","peerDataOperationRequestMessage","peerDataOperationRequestResponseMessage","botFeedbackMessage"]),re=i=>{if(!i)return {leaf:void 0,chain:[]};let e=_t.extractMessageContent(i)||i,t=[];for(;e&&typeof e=="object";){let n=_t.getContentType(e);if(!n)break;t.push(n);let o=e[n];if(!o||typeof o!="object"){e=o;break}e=o;}return {leaf:e,chain:t}},E=i=>Number(i?.split("@")[0]);var v=i=>i,ct=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(i){throw i}},$e=async i=>{try{let e=`.session/${i}`;await Vt__default.default.rm(e,{recursive:!0,force:!0});}catch{f.spinner.error(`Failed to remove auth creds for session "${i}"!`);}},$=(i="")=>{if(!i?.length)return null;let e=i.replace(/\u202E(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/\u202D(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/gu,"").replace(/[\u200B\u200C\u200D\uFEFF]/gu,"").replace(/[\u00AD\u034F\u115F\u1160\u17B4\u17B5\u180B-\u180E]/gu,"").replace(/[\u2060-\u2064\u206A-\u206F]/gu,"").replace(/[\u2800\uFFFC\uFFFD]/gu,"").replace(/[\uFE00-\uFE0F]/gu,"").normalize("NFKD").replace(/[\u0300-\u036F]/gu,"").replace(/[\u1AB0-\u1AFF]/gu,"").replace(/[\u1DC0-\u1DFF]/gu,"").replace(/[\u20D0-\u20FF]/gu,"").replace(/[\uFE20-\uFE2F]/gu,"").replace(/[\p{Cc}]/gu,"").replace(/[\p{Cf}]/gu,"").replace(/[\p{Co}]/gu,"").replace(/[\p{Cn}]/gu,"").replace(/[\p{Cs}]/gu,"").replace(/[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/gu," ").replace(/[\u2028\u2029]/gu," ").replace(/[\t\r\n\f\v]/g," ").normalize("NFKC").normalize("NFC").replace(/\s+/g," ").trim();return e.length?e:null};var ae=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=d.get("socket");e.ev.on("call",async t=>{for(let n of t){let o=await this.parse(n);o&&(S.add(async()=>{await Promise.all([this.client.middleware.run({calls:o}),this.client.plugins.execute(this.client,{messages:o})]);},{priority:C.NORMAL,timeout:5e3}),f.events.emit("calls",o),this.client.options?.autoRejectCall&&S.add(async()=>e.rejectCall(o.callId,o.callerId),{priority:C.CRITICAL,timeout:3e3}));}});}async parse(e){let t=d.get("socket"),n={};return n.callId=e.id,n.callerId=_t.jidNormalizedUser(e.from),n.roomId=_t.jidNormalizedUser(e.chatId),n.roomName=$(t?.user?.name||t?.user?.verifiedName),n.date=e.date,n.offline=e.offline,n.status=e.status,n.isVideo=!!e.isVideo,n.isGroup=!!e.isGroup,this.client.logs.call(n),n}};var pt=i=>{Ht__default.default.generate(i,{small:true},e=>{console.log(e);});},ut=async()=>{console.clear(),f.spinner.start(" Checking for updates...");let i="3.0.0",e="zaadevofc",t=await ct(),n=i===t;f.spinner.stop();let o="Zaileys",s=`
3
+ - `)}`)}return t.output};var y=(i,e="lime")=>Array.isArray(e)?nt__default.default(e)(i):nt__default.default([e,e])(i),Oe=i=>{try{return JSON.parse(i)}catch{return I__namespace.tryit(()=>JSON.parse(JSON.stringify(i)||"{}"))()[1]}},K=i=>{try{return JSON.stringify(i)}catch{let e=I__namespace.tryit(()=>JSON.stringify(Oe(i)||"{}"))();return e[0]?"{}":e[1]}},_s=(i="")=>I__namespace.shuffle(i.split("")).join(""),Q=(i="",e="")=>i?i.toLowerCase().includes(e.toLowerCase()):null,st=(i="")=>{if(!i)return [];let e=i.match(_t.URL_REGEX)||[];return Array.isArray(e)?e:[e]},js=i=>i[Math.floor(Math.random()*i.length)],Ee=(i,e)=>{if(!(!Array.isArray(i)||i.length===0)&&!(!Array.isArray(e)||e.length===0)){for(let t of i)if(!(!t||typeof t!="object"))for(let n of e){let o=I__namespace.get(t,n);if(!I__namespace.isEmpty(o)||typeof o=="number"||typeof o=="boolean"){if(typeof o=="string"&&o.trim()==="")continue;return o}}}},Fs=(i,e)=>{let t=Array.isArray(e)?e:[e],n=(r,u)=>Object.entries(u).every(([l,g])=>r?.[l]===g),o=(r,u)=>Object.entries(u).some(([l,g])=>r?.[l]===g),s=r=>Array.isArray(r)?r.find(s)??r:I__namespace.isObject(r)?t.find(g=>n(r,g))||t.find(g=>o(r,g))?r:Object.values(r).find(s)??r:null;return s(i)},Ls=(i,e,t)=>new Proxy(i,{apply(n,o,s){e?.(s);let r=Reflect.apply(n,o,s);return t?t(r,s):r}}),ot=i=>i.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");var We=i=>{let e;Array.isArray(i)?e=i.join("|"):typeof i=="string"?e=i:e=String(i);let t=2166136261,n=e.length;for(let o=0;o<n;o++)t^=e.charCodeAt(o),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},rt=(i="")=>{if(!i)return [];let e=new Set;for(let t of i.matchAll(/@(\d+)/g))e.add(t[1]);return Array.from(e)},Ne=(i="")=>{if(!i)return [];let e=new Set;for(let t of i.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return [...e].flatMap(t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},ie=i=>{let e=i.filter(Boolean).map(o=>_t.jidNormalizedUser(o)),t=e.find(o=>!o.includes("@lid")),n=e.find(o=>o.includes("@lid"));return {id:t||n||null,lid:n||null}},Vs=i=>i?.length?[...i].map(e=>`${e}@s.whatsapp.net`):[],at=i=>I__namespace.omit(i,["url","contextInfo","fileSha256","fileEncSha256","mediaKey","directPath","waveform","thumbnail","jpegThumbnail","thumbnailEncSha256","thumbnailSha256","thumbnailDirectPath","firstFrameSidecar","streamingSidecar","scansSidecar","callKey","message","key","midQualityFileSha256","historySyncNotification","appStateSyncKeyShare","appStateSyncKeyRequest","initialSecurityNotificationSettingSync","appStateFatalExceptionNotification","disappearingMode","peerDataOperationRequestMessage","peerDataOperationRequestResponseMessage","botFeedbackMessage"]),re=i=>{if(!i)return {leaf:void 0,chain:[]};let e=_t.extractMessageContent(i)||i,t=[];for(;e&&typeof e=="object";){let n=_t.getContentType(e);if(!n)break;t.push(n);let o=e[n];if(!o||typeof o!="object"){e=o;break}e=o;}return {leaf:e,chain:t}},E=i=>Number(i?.split("@")[0]);var v=i=>i,ct=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(i){throw i}},$e=async i=>{try{let e=`.session/${i}`;await Vt__default.default.rm(e,{recursive:!0,force:!0});}catch{f.spinner.error(`Failed to remove auth creds for session "${i}"!`);}},$=(i="")=>{if(!i?.length)return null;let e=i.replace(/\u202E(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/\u202D(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/gu,"").replace(/[\u200B\u200C\u200D\uFEFF]/gu,"").replace(/[\u00AD\u034F\u115F\u1160\u17B4\u17B5\u180B-\u180E]/gu,"").replace(/[\u2060-\u2064\u206A-\u206F]/gu,"").replace(/[\u2800\uFFFC\uFFFD]/gu,"").replace(/[\uFE00-\uFE0F]/gu,"").normalize("NFKD").replace(/[\u0300-\u036F]/gu,"").replace(/[\u1AB0-\u1AFF]/gu,"").replace(/[\u1DC0-\u1DFF]/gu,"").replace(/[\u20D0-\u20FF]/gu,"").replace(/[\uFE20-\uFE2F]/gu,"").replace(/[\p{Cc}]/gu,"").replace(/[\p{Cf}]/gu,"").replace(/[\p{Co}]/gu,"").replace(/[\p{Cn}]/gu,"").replace(/[\p{Cs}]/gu,"").replace(/[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/gu," ").replace(/[\u2028\u2029]/gu," ").replace(/[\t\r\n\f\v]/g," ").normalize("NFKC").normalize("NFC").replace(/\s+/g," ").trim();return e.length?e:null};var ae=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=d.get("socket");e.ev.on("call",async t=>{for(let n of t){let o=await this.parse(n);o&&(S.add(async()=>{await Promise.all([this.client.middleware.run({calls:o}),this.client.plugins.execute(this.client,{messages:o})]);},{priority:C.NORMAL,timeout:5e3}),f.events.emit("calls",o),this.client.options?.autoRejectCall&&S.add(async()=>e.rejectCall(o.callId,o.callerId),{priority:C.CRITICAL,timeout:3e3}));}});}async parse(e){let t=d.get("socket"),n={};return n.callId=e.id,n.callerId=_t.jidNormalizedUser(e.from),n.roomId=_t.jidNormalizedUser(e.chatId),n.roomName=$(t?.user?.name||t?.user?.verifiedName),n.date=e.date,n.offline=e.offline,n.status=e.status,n.isVideo=!!e.isVideo,n.isGroup=!!e.isGroup,this.client.logs.call(n),n}};var pt=i=>{Ht__default.default.generate(i,{small:true},e=>{console.log(e);});},ut=async()=>{console.clear(),f.spinner.start(" Checking for updates...");let i="3.0.1",e="zaadevofc",t=await ct(),n=i===t;f.spinner.stop();let o="Zaileys",s=`
4
4
  by ${e} \xB7 v${i}`,r="\u2014 discord.gg/KBHhTTVUc5",u="\u2014 chat.whatsapp.com/GlQfvc83mSH3F6ov06vuCt",l=`${n?"\u2714 Already using latest version!":`\u2714 Update available! (v${t})`}
5
5
  `,g=n?"blue":"orange",w=await zt__default.default.text(o),O=nt.cristal(w);console.log(O),console.log(y(s,"dimgray")),console.log(y(r,"purple")),console.log(y(u,"green")),console.log(y(l,g));};var le=class{constructor(e){this.client=e;this.initialize();}async initialize(){f.spinner.start(" Initializing connection...");let e=d.get("socket"),t={},n=async()=>{t.status="reload",f.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},o=async()=>{await _t.delay(3e3),f.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await _t.delay(3e3),await $e(this.client.options.session),await n();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){f.spinner.update(" Generating pairing code..."),await _t.delay(3500);try{t.authTimeout=Date.now()+6e4;let s=new Date(t.authTimeout).toLocaleTimeString(),r=await e.requestPairingCode(this.client.options.phoneNumber.toString());f.spinner.warn(` Pairing expired at ${nt.cristal(s)}`),f.spinner.warn(` Pairing code: ${r}`),t.code=r;}catch{await o();}}e.ev.on("connection.update",async s=>{let{connection:r,lastDisconnect:u,qr:l}=s;if(t.status=r||"connecting",t.authType=this.client.options.authType,f.spinner.update(" Connection status: "+nt.cristal(t.status)),this.client.options.authType==="qr"&&l){t.authTimeout=Date.now()+6e4;let g=new Date(t.authTimeout).toLocaleTimeString();f.spinner.warn(" Please scan the QR code..."),f.spinner.warn(` Qr code expired at ${nt.cristal(g)}`),pt(l),t.qr=l;return}if(r==="close"){let g=v(u?.error)?.output?.statusCode,w=u?.error?.message||"Unknown Error",O=g??"Internal";if(f.spinner.error(` [${O} - Closed] ${w}`),g===_t.DisconnectReason.loggedOut){this.client.options.deleteSessionOnLogout?(f.spinner.warn(" Session logged out or invalidated. Self-healing..."),await $e(this.client.options.session),setTimeout(()=>n(),3e3)):f.spinner.warn(" Session logged out or invalidated. Automatic session deletion is disabled.");return}if(g===405){f.spinner.warn(" Session invalid/stale or used by another device (405)."),f.spinner.warn(" Automatic reconnecting..."),setTimeout(()=>n(),3e3);return}if(g===500){f.spinner.error(" Server error occurred, attempting reconnect..."),setTimeout(()=>n(),3e3);return}typeof g=="number"&&(f.spinner.warn(` Connection marked for reconnect (${g}). Wait a moment...`),setTimeout(()=>n(),3e3));}if(r==="open")if(e.user?.id){let g=_t.jidNormalizedUser(e.user.id).split("@")[0],w=e.user.name||e.user.verifiedName;f.spinner.success(` Connected as ${nt.cristal(w||g)}`);}else f.spinner.success(" Connected!");f.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:s})=>{t.status="syncing",t.syncProgress=s,f.spinner.start(" Syncing messages history..."),s&&f.spinner.update(` Syncing messages history ${s+"%"}`),s==100&&(f.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),f.events.emit("connection",t);});}};var mt={text:"text",conversation:"text",imageMessage:"image",contactMessage:"contact",locationMessage:"location",documentMessage:"document",audioMessage:"audio",videoMessage:"video",protocolMessage:"protocol",contactsArrayMessage:"contacts",highlyStructuredMessage:"highlyStructured",sendPaymentMessage:"sendPayment",liveLocationMessage:"location",requestPaymentMessage:"requestPayment",groupStatusMentionMessage:"groupStatusMention",statusMentionMessage:"statusMention",albumMessage:"album",declinePaymentRequestMessage:"declinePaymentRequest",cancelPaymentRequestMessage:"cancelPaymentRequest",templateMessage:"template",stickerMessage:"sticker",groupInviteMessage:"groupInvite",templateButtonReplyMessage:"buttons",productMessage:"product",deviceSentMessage:"deviceSent",listMessage:"lists",viewOnceMessage:"viewOnce",orderMessage:"order",listResponseMessage:"lists",ephemeralMessage:"ephemeral",invoiceMessage:"invoice",buttonsMessage:"buttons",buttonsResponseMessage:"buttons",paymentInviteMessage:"paymentInvite",interactiveMessage:"interactive",reactionMessage:"reaction",stickerSyncRmrMessage:"sticker",questionMessage:"question",nativeFlowResponseMessage:"lists",interactiveResponseMessage:"interactiveResponse",pollCreationMessage:"pollCreation",pollCreationMessageKey:"pollUpdate",pollUpdateMessage:"pollUpdate",keepInChatMessage:"keepInChat",documentWithCaptionMessage:"document",requestPhoneNumberMessage:"requestPhoneNumber",viewOnceMessageV2:"viewOnce",encReactionMessage:"reaction",editedMessage:"text",viewOnceMessageV2Extension:"viewOnce",pollCreationMessageV2:"pollCreation",scheduledCallCreationMessage:"scheduledCallCreation",groupMentionedMessage:"groupMentioned",pinInChatMessage:"pinInChat",pollCreationMessageV3:"pollCreation",scheduledCallEditMessage:"scheduledCallEdit",ptvMessage:"ptv",botInvokeMessage:"botInvoke",callLogMesssage:"callLog",encCommentMessage:"encComment",bcallMessage:"bcall",lottieStickerMessage:"lottieSticker",eventMessage:"event",commentMessage:"comment",newsletterAdminInviteMessage:"text",extendedTextMessageWithParentKey:"text",extendedTextMessage:"text",placeholderMessage:"placeholder",encEventUpdateMessage:"encEventUpdate"},_e={whatsapp:"0@s.whatsapp.net",meta:"13135550002@s.whatsapp.net",chatgpt:"18002428478@s.whatsapp.net",copilot:"18772241042@s.whatsapp.net",instagram:"447723442971@s.whatsapp.net",tiktok:"6285574670498@s.whatsapp.net"};var pe=class{constructor(e){this.client=e;this.maxMessages=this.client.options.limiter?.maxMessages||20;}maxMessages;async isSpam(e){let t=Pe.get(e)||0;return t>=this.maxMessages?true:(Pe.set(e,t+1),false)}};var ue=class{constructor(e){this.client=e;this.limiter=new pe(e),this.maxReplies=this.client.options?.maxReplies??3,this.initialize();}limiter;maxReplies;async initialize(){let e=d.get("socket");if(!e?.ev){console.warn("\u26A0\uFE0F [Messages] Socket or socket.ev is not available during initialization");return}e.ev.on("messages.upsert",async({messages:t,type:n})=>{try{if(n!=="notify"&&n!=="append")return;for(let o of t)try{let s=await this.parse(o);s&&(S.add(async()=>{await Promise.all([this.client.middleware.run({messages:s}),this.client.plugins.execute(this.client,{messages:s})]);},{priority:C.NORMAL,timeout:5e3}),d.set("message",s),f.events.emit("messages",s),this.client.options.autoRead&&S.add(async()=>e.readMessages([s.message().key]),{priority:C.NORMAL,timeout:5e3}));}catch{}}catch{}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage)return;let n=e,o=d.get("socket"),s={},r=re(e.message),u=r.chain.at(-1),l=r.leaf;if(l?.message&&(r=re(l.message),u=r.chain.at(-1),l=r.leaf),s.uniqueId=null,s.channelId=null,s.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,s.chatType=mt[u],!s.chatType)return;let g=ie([o?.user?.id,o?.user?.lid]);s.receiverId=g.id||g.lid||"",s.receiverLid=g.lid||g.id||"",s.receiverName=$(o?.user?.name||o?.user?.verifiedName);let w=ie([e?.key?.remoteJid]);s.roomId=w.id,s.roomLid=w.lid;let O=l?.type===0,b=l?.type===1,X=l?.type===2,ee=s.roomId?.includes("@newsletter"),be=!!e?.message?.questionMessage,q=e?.key?.fromMe||false;if(q&&this.client.options.ignoreMe&&t!=="replied")return;let G=l?.key?.id;if(O||b||X){if(!G)return;let M=await this.client.db("messages").get(G);if(!M)return;e=M,r=re(e.message),u=r.chain.at(-1),l=r.leaf;}s.roomName=await this.client.getRoomName(s.roomId);let V=ie([e?.key?.participant,e?.key?.remoteJid,e?.key?.participantAlt,e?.key?.remoteJidAlt]);if(s.senderId=V.id,s.senderLid=V.lid,s.senderName=$(e?.pushName||e?.verifiedBizName),s.senderDevice=_t.getDevice(s.chatId||""),s.channelId=We([s.roomId,s.senderId]),s.uniqueId=We([s.channelId,s.chatId]),s.timestamp=Number(e?.messageTimestamp)*1e3,ee){let M=await o.newsletterMetadata("jid",s.roomId);s.roomName=v(M.thread_metadata.name)?.text,s.senderId=null,s.senderLid=null;}q&&(s.senderLid=s.receiverLid,s.senderId=s.receiverId,s.senderName=s.receiverName),s.text=l?.text||l?.caption||l?.name||l?.displayName||l?.conversation||l?.contentText||l?.selectedDisplayText||l||null,l?.name=="menu_options"&&(s.text=Oe(l?.paramsJson)?.id),s.text=$(s.text),s.mentions=rt(s.text),s.links=st(s.text||""),s.isBot=s.chatId.startsWith("BAE5")||s.chatId.startsWith("3EB0"),s.isFromMe=q;let D=this.client.options?.prefix,z=Array.isArray(D)?D:[D];if(s.isPrefix=!!z.find(M=>s.text?.startsWith(M)),s.isTagMe=s.mentions?.includes(s.receiverId.split("@")[0])||s.mentions?.includes(s.receiverLid.split("@")[0]),s.isStatusMention=!!e?.message?.statusMentionMessage,s.isGroupStatusMention=!!e?.message?.groupStatusMentionMessage,s.isHideTags=false,!s.text?.trim()&&l?.contextInfo?.mentionedJid?.length&&(s.isHideTags=true),s.isSpam=await this.limiter.isSpam(s.channelId),s.isPrefix&&(s.text=s.text.replace(new RegExp(`^${ot(z.find(M=>s.text?.startsWith(M))||"")}`),"")),s.isGroup=s.roomId?.includes("@g.us"),s.isNewsletter=ee,s.isQuestion=be,s.isStory=s.roomId?.includes("@broadcast"),!s.isGroup&&!s.roomName&&(s.roomName=s.senderName),s.isViewOnce=false,s.isEdited=!!Q(K(r),"editedMessage"),s.isDeleted=O,s.isPinned=b,s.isUnPinned=X,s.isBroadcast=!!e?.broadcast,s.isEphemeral=!!Q(K(l?.contextInfo),"ephemeralSettingTimestamp"),s.isForwarded=!!Q(K(l?.contextInfo),"forwardingScore"),s.citation=null,this.client.options.citation){s.citation=s.citation||{};let M=this.client.options.citation;for(let N of Object.keys(M)){let _=M[N];s.citation[N]=async()=>{let k=await _();return !![E(s.roomId),E(s.senderLid),E(s.senderId)].some(R=>k.includes(R))};}}s.chatType!=="text"&&(s.media={...at(l),buffer:()=>_t.downloadMediaMessage(e,"buffer",{}),stream:()=>_t.downloadMediaMessage(e,"stream",{})}),s.isStatusMention&&(s.chatType="statusMention"),s.isGroupStatusMention&&(s.chatType="groupStatusMention"),s.message=()=>n,s.replied=null;let B=l?.contextInfo?.quotedMessage,xe=Q(K(B),"viewOnce"),te=l?.contextInfo?.stanzaId;if(B&&this.maxReplies){if(this.maxReplies--,!te)return s;let M=await this.client.db("messages").get(te),N;xe?N={...M,message:B}:N=M,s.replied=await this.parse(N,"replied"),s.replied&&(s.replied.isViewOnce=true),this.maxReplies=this.client.options?.maxReplies??3;}return t!="replied"&&this.client.logs.message(s),s.injection=j.getAll(),s}};var me=class{constructor(e){this.client=e;this.connection=new le(e),this.messages=new ue(e),this.calls=new ae(e),this.initialize();}connection;messages;calls;async initialize(){let e=d.get("socket");e.ev.on("groups.update",async([n])=>{S.add(async()=>{let o=await e.groupMetadata(n.id);P.set(n.id,o);},{priority:C.LOW,timeout:1e4});}),e.ev.on("group-participants.update",async n=>{S.add(async()=>{let o=await e.groupMetadata(n.id);P.set(n.id,o);},{priority:C.LOW,timeout:1e4});});let t=async(n,o)=>{for(let r=0;r<n.length;r+=500){let u=n.slice(r,r+500);await Promise.all(u.map(o));}};e?.ev.on("messaging-history.set",async n=>{let{chats:o,contacts:s,messages:r}=n;S.add(async()=>{await t(o,u=>this.client.db("chats").put(u.id,u));},{priority:C.LOW,timeout:3e4}),S.add(async()=>{await t(s,u=>this.client.db("contacts").put(u.id,u));},{priority:C.LOW,timeout:3e4}),S.add(async()=>{await t(r,u=>this.client.db("messages").put(u.key.id,u));},{priority:C.LOW,timeout:3e4});}),e?.ev.on("messages.upsert",async({messages:n})=>{S.add(async()=>{await t(n,o=>this.client.db("messages").put(o.key.id,o));},{priority:C.LOW,timeout:3e4});}),e?.ev.on("chats.upsert",async n=>{S.add(async()=>{await t(n,o=>this.client.db("chats").put(o.id,o));},{priority:C.LOW,timeout:3e4});}),e?.ev.on("contacts.upsert",async n=>{S.add(async()=>{await t(n,o=>this.client.db("contacts").put(o.id,o));},{priority:C.LOW,timeout:3e4});});}};var gt=a__namespace.object({type:a__namespace.literal("quick_reply"),id:a__namespace.string(),text:a__namespace.string()}),ft=a__namespace.object({type:a__namespace.literal("cta_url"),url:a__namespace.pipe(a__namespace.string(),a__namespace.url()),text:a__namespace.string()}),yt=a__namespace.object({type:a__namespace.literal("cta_copy"),id:a__namespace.string(),copy:a__namespace.string(),text:a__namespace.string()}),ht=a__namespace.object({type:a__namespace.literal("cta_call"),text:a__namespace.string(),phoneNumber:a__namespace.string()}),Zt=a__namespace.object({type:a__namespace.literal("single_select"),text:a__namespace.string(),section:a__namespace.array(a__namespace.object({title:a__namespace.string(),highlight_label:a__namespace.optional(a__namespace.string()),rows:a__namespace.array(a__namespace.object({id:a__namespace.string(),title:a__namespace.string(),header:a__namespace.optional(a__namespace.string()),description:a__namespace.optional(a__namespace.string())}))}))}),Xt=a__namespace.object({type:a__namespace.literal("interactive"),footer:a__namespace.optional(a__namespace.string()),data:a__namespace.array(a__namespace.union([gt,ft,yt,ht,Zt]))}),en=a__namespace.object({type:a__namespace.literal("simple"),footer:a__namespace.optional(a__namespace.string()),data:a__namespace.array(a__namespace.object({id:a__namespace.string(),text:a__namespace.string()}))}),tn=a__namespace.object({body:a__namespace.string(),footer:a__namespace.optional(a__namespace.string()),header:a__namespace.optional(a__namespace.object({title:a__namespace.optional(a__namespace.string()),subtitle:a__namespace.optional(a__namespace.string()),hasMediaAttachment:a__namespace.optional(a__namespace.boolean()),image:a__namespace.optional(a__namespace.string()),video:a__namespace.optional(a__namespace.string())})),nativeFlow:a__namespace.array(a__namespace.union([gt,ft,yt,ht]))}),nn=a__namespace.object({type:a__namespace.literal("carousel"),data:a__namespace.array(tn)}),vt=a__namespace.union([en,Xt,nn]);var sn=a__namespace.optional(a__namespace.object({maxMessages:a__namespace.optional(a__namespace.number(),20),durationMs:a__namespace.optional(a__namespace.number(),1e4)})),on=a__namespace.optional(a__namespace.record(a__namespace.string(),a__namespace.custom(i=>typeof i=="function"))),rn=a__namespace.optional(a__namespace.object({provider:a__namespace.union([a__namespace.picklist(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]),a__namespace.number()])})),je=a__namespace.optional(a__namespace.picklist(["default","rounded","circle","oval"]),"default"),an=a__namespace.optional(a__namespace.object({packageName:a__namespace.optional(a__namespace.string()),authorName:a__namespace.optional(a__namespace.string()),quality:a__namespace.optional(a__namespace.number()),shape:a__namespace.optional(je)})),cn=a__namespace.optional(a__namespace.object({enabled:a__namespace.optional(a__namespace.boolean(),false),intervalMs:a__namespace.optional(a__namespace.number(),3600*1e3),maxAgeMs:a__namespace.optional(a__namespace.number(),1440*60*1e3),scopes:a__namespace.optional(a__namespace.array(a__namespace.string()),["messages"])})),kt=a__namespace.object({session:a__namespace.optional(a__namespace.string(),"zaileys"),prefix:a__namespace.optional(a__namespace.union([a__namespace.string(),a__namespace.array(a__namespace.string())])),ignoreMe:a__namespace.optional(a__namespace.boolean(),true),showLogs:a__namespace.optional(a__namespace.boolean(),true),fancyLogs:a__namespace.optional(a__namespace.boolean(),false),syncFullHistory:a__namespace.optional(a__namespace.boolean(),true),disableFFmpeg:a__namespace.optional(a__namespace.boolean(),false),autoMarkAI:a__namespace.optional(a__namespace.boolean(),true),autoMentions:a__namespace.optional(a__namespace.boolean(),true),autoOnline:a__namespace.optional(a__namespace.boolean(),true),autoRead:a__namespace.optional(a__namespace.boolean(),true),autoPresence:a__namespace.optional(a__namespace.boolean(),true),autoRejectCall:a__namespace.optional(a__namespace.boolean(),true),showSpinner:a__namespace.optional(a__namespace.boolean(),true),maxReplies:a__namespace.optional(a__namespace.number(),3),deleteSessionOnLogout:a__namespace.optional(a__namespace.boolean(),false),pluginsDir:a__namespace.optional(a__namespace.string(),"plugins"),pluginsHmr:a__namespace.optional(a__namespace.boolean(),true),autoCleanUp:cn,limiter:sn,citation:on,fakeReply:rn,sticker:an}),ln=a__namespace.object({authType:a__namespace.literal("pairing"),phoneNumber:a__namespace.number()}),pn=a__namespace.object({authType:a__namespace.literal("qr")}),wt=a__namespace.union([a__namespace.object({...ln.entries,...kt.entries}),a__namespace.object({...pn.entries,...kt.entries})]),si=a__namespace.picklist(["connection","messages","calls"]);var Y=a__namespace.union([a__namespace.pipe(a__namespace.string(),a__namespace.url()),a__namespace.pipe(a__namespace.string(),a__namespace.base64()),a__namespace.custom(i=>i instanceof Buffer)]),bt=a__namespace.looseObject({text:a__namespace.string()}),un=a__namespace.looseObject({image:Y,caption:a__namespace.optional(a__namespace.string())}),mn=a__namespace.looseObject({audio:Y,caption:a__namespace.optional(a__namespace.string()),ptt:a__namespace.optional(a__namespace.boolean())}),dn=a__namespace.looseObject({video:Y,caption:a__namespace.optional(a__namespace.string()),ptv:a__namespace.optional(a__namespace.boolean())}),gn=a__namespace.looseObject({sticker:Y,shape:a__namespace.optional(je),caption:a__namespace.optional(a__namespace.string())}),fn=a__namespace.looseObject({document:Y,caption:a__namespace.optional(a__namespace.string()),fileName:a__namespace.optional(a__namespace.string())}),yn=a__namespace.looseObject({location:a__namespace.optional(a__namespace.object({latitude:a__namespace.number(),longitude:a__namespace.number(),url:a__namespace.optional(a__namespace.pipe(a__namespace.string(),a__namespace.url())),title:a__namespace.optional(a__namespace.string()),footer:a__namespace.optional(a__namespace.string())}))}),hn=a__namespace.looseObject({contacts:a__namespace.object({title:a__namespace.optional(a__namespace.string()),contacts:a__namespace.array(a__namespace.object({fullname:a__namespace.string(),phoneNumber:a__namespace.number(),organization:a__namespace.optional(a__namespace.string())}))})}),vn=a__namespace.object({poll:a__namespace.object({name:a__namespace.string(),answers:a__namespace.array(a__namespace.string()),isMultiple:a__namespace.optional(a__namespace.boolean(),false)})}),xt=a__namespace.object({replied:a__namespace.optional(a__namespace.custom(i=>typeof i=="object"&&i!==null)),isForwardedMany:a__namespace.optional(a__namespace.boolean()),isViewOnce:a__namespace.optional(a__namespace.boolean()),banner:a__namespace.optional(a__namespace.custom(i=>typeof i=="object"&&i!==null)),buttons:a__namespace.optional(vt)});a__namespace.picklist(["forward","button","edit","delete"]);var kn=a__namespace.union([bt,un,mn,dn,gn,fn,yn,hn,vn]),St=a__namespace.union([a__namespace.string(),a__namespace.intersect([kn,a__namespace.omit(xt,["buttons"])])]),Mt=a__namespace.intersect([bt,a__namespace.omit(xt,["banner"])]);var de=class{toNativeSimple(e){return e.map(({id:t,text:n})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:n,id:t})}))}toNativeInteractive(e){let t={quick_reply:n=>({display_text:n.text,id:n.id}),cta_url:n=>({display_text:n.text,url:n.url,merchant_url:n.url}),cta_copy:n=>({display_text:n.text,id:n.id,copy_code:n.copy}),cta_call:n=>({display_text:n.text,phone_number:n.phoneNumber}),single_select:n=>({title:n.text,sections:n.section})};return e.map(n=>({name:n.type,buttonParamsJson:JSON.stringify(t[n.type](n))}))}async build(e,t){let n=v(e).buttons,o=n?.data||[],s=n?.type;if(s==="carousel"){let u=[];for(let l of o){let g={};(l.header?.image||l.header?.video)&&(g=await _t.prepareWAMessageMedia(l.header.image?{image:{url:l.header.image}}:{video:{url:l.header.video}},{upload:t.waUploadToServer})),u.push({body:_t.proto.Message.InteractiveMessage.Body.fromObject({text:l.body}),footer:l.footer?_t.proto.Message.InteractiveMessage.Footer.fromObject({text:l.footer}):void 0,header:_t.proto.Message.InteractiveMessage.Header.fromObject({title:l.header?.title||"",subtitle:l.header?.subtitle||"",hasMediaAttachment:!!(l.header?.image||l.header?.video||l.header?.hasMediaAttachment),...g}),nativeFlowMessage:_t.proto.Message.InteractiveMessage.NativeFlowMessage.fromObject({buttons:this.toNativeInteractive(l.nativeFlow)})});}return {body:_t.proto.Message.InteractiveMessage.Body.fromObject({text:v(e).text}),footer:n.footer?_t.proto.Message.InteractiveMessage.Footer.fromObject({text:n.footer}):void 0,carouselMessage:_t.proto.Message.InteractiveMessage.CarouselMessage.fromObject({cards:u})}}let r=s=="simple"?this.toNativeSimple(o):this.toNativeInteractive(o);return {body:{text:v(e).text},footer:n.footer?{text:n.footer}:void 0,nativeFlowMessage:{buttons:r}}}async send(e,t,n){let o=d.get("socket"),s=o?.authState?.creds?.me?.id||o?.user?.id,r=await this.build(t,o),u=v(t).buttons?.type==="carousel",l=_t.generateWAMessageFromContent(e,u?{viewOnceMessage:{message:{messageContextInfo:{deviceListMetadata:{},deviceListMetadataVersion:2},interactiveMessage:r}}}:{interactiveMessage:r},{userJid:s,messageId:_t.generateMessageIDV2(s),...n});return await o.relayMessage(e,l.message,{messageId:l.key.id,...n,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),o.config?.emitOwnEvents&&!_t.isJidGroup(e)&&process.nextTick(()=>o.upsertMessage?.(l,"append")),l}};var ge=class{constructor(e){this.client=e;}async signal(e,t,n,o){n!="delete"&&(n=="button"?t=H(Mt,t):t=H(St,t));let s=d.get("socket"),r={},u={},l=typeof t=="string",g=(k,T)=>typeof k=="object"&&k!==null&&T in k,w=this.client.options?.fakeReply?.provider,O=this.client.options?.autoMentions,b=this.client.options?.autoPresence,X=g(t,"replied"),ee=g(t,"banner"),be=g(t,"isViewOnce"),q=n=="button",G=g(t,"image"),V=g(t,"video"),D=g(t,"audio"),z=g(t,"sticker"),B=g(t,"document"),xe=g(t,"location"),te=g(t,"contacts"),M=g(t,"poll"),N=G||V||D||z||B,_=l?t:Ee([t],["text","caption"]);if(b&&(D?await s.sendPresenceUpdate("recording",e):await s.sendPresenceUpdate("composing",e)),O&&(r={...r,mentions:Ne(_),contextInfo:{mentionedJid:Ne(_)}}),X&&(u.quoted=v(t).replied,w&&(u.quoted.key.remoteJid=_e[w],u.quoted.key.participant=_e[w])),ee&&(r={...r,contextInfo:{externalAdReply:v(t).banner}},r.contextInfo.externalAdReply.mediaType=1),be&&(r={...r,viewOnce:v(t)?.isViewOnce}),_&&(r={...r,text:_,caption:_},N&&delete v(r).text),N){let k=Ee([t],["image","video","audio","sticker","document"]);if(G&&(r={...r,image:await new mediaProcess.Media(k).image.toJpeg(),jpegThumbnail:await new mediaProcess.Media(k).thumbnail.get()}),V){let T=v(t)?.ptv;r={...r,video:await new mediaProcess.Media(k).video.toMp4(),ptv:T,jpegThumbnail:await new mediaProcess.Media(k).thumbnail.get()};}if(D){let T=v(t)?.ptt;r={...r,audio:await new mediaProcess.Media(k).audio.toOpus(),ptt:T,mimetype:T?"audio/ogg; codecs=opus":"audio/mpeg"};}if(z){let T=v(t)?.shape;r={...r,sticker:await new mediaProcess.Media(k).sticker.create({...this.client.options?.sticker,shape:T})};}if(B){let T=await new mediaProcess.Media(k).document.create(),R=v(t).fileName||`Document_${T.fileName.slice(-6)}`,Se=R.includes(".")?R.substring(0,R.lastIndexOf(".")):R;r={...r,...T,fileName:`${Se}.${T.ext} - Zaileys`};}}if(xe){let k=v(t).location;r={...r,location:{degreesLatitude:k.latitude,degreesLongitude:k.longitude,url:k.url,address:k.footer,name:k.title}};}if(te){let k=v(t)?.contacts,T=k?.contacts.map(R=>{let Se=["BEGIN:VCARD","VERSION:3.0",`FN:${R.fullname}`,`ORG:${R.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${R.phoneNumber}:${R.phoneNumber}`,"END:VCARD"].join(`
6
6
  `);return {displayName:R.fullname,vcard:Se}});r={...r,contacts:{displayName:k?.title,contacts:T}};}if(M){let k=v(t)?.poll;r={...r,poll:{name:k.name,values:k.answers,selectableCount:k.isMultiple?1:0,toAnnouncementGroup:true}};}return n=="forward"&&(r={...r,contextInfo:{...v(r).contextInfo,isForwarded:true,forwardingScore:v(t).isForwardedMany?9999:1}}),n=="edit"&&(r={...r,edit:o?.key},await s.sendPresenceUpdate("paused",e)),n=="delete"&&(r={...r,delete:o?.key},await s.sendPresenceUpdate("paused",e)),q?await new de().send(e,t,u):await s.sendMessage(e,v(r),u)}async send(e,t){return await this.signal(e,t)}async forward(e,t){return await this.signal(e,t,"forward")}async button(e,t){return await this.signal(e,t,"button")}async edit(e,t){return await this.signal(e.key.remoteJid,t,"edit",e)}async delete(e){return Array.isArray(e)?Promise.all(e.map(t=>this.signal(t.key.remoteJid,{},"delete",t))):await this.signal(e.key.remoteJid,{},"delete",e)}async presence(e,t){let n=d.get("socket"),o={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await n.sendPresenceUpdate(o[t],e)}async reaction(e,t){return await d.get("socket").sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}async memberLabel(e,t){return await d.get("socket").relayMessage(e,{protocolMessage:{type:30,memberLabel:{label:t,labelTimestamp:Date.now()}}},{})}};var Fe=class{constructor(e){this.client=e;}async create(e,t){return await d.get("socket").communityCreate(e,t)}async createGroup(e,t,n){return await d.get("socket").communityCreateGroup(e,t,n)}async leave(e){return await d.get("socket").communityLeave(e)}async metadata(e){return await d.get("socket").communityMetadata(e)}async update(e,t,n){let o=d.get("socket");switch(t){case "subject":return await o.communityUpdateSubject(e,n);case "description":return await o.communityUpdateDescription(e,n)}}async group(e,t,n){let o=d.get("socket");switch(t){case "link":if(!n)throw "Group JID is required for linking";return await o.communityLinkGroup(e,n);case "unlink":if(!n)throw "Group JID is required for unlinking";return await o.communityUnlinkGroup(e,n);case "linked":return await o.communityFetchLinkedGroups(e)}}async participants(e,t,n,o){let s=d.get("socket");switch(t){case "list":return await s.communityRequestParticipantsList(e);case "request-update":return await s.communityRequestParticipantsUpdate(e,o,v(n));case "update":if(!n||!o)throw "Action and participants are required for update";return await s.communityParticipantsUpdate(e,o,v(n));case "all":return await s.communityFetchAllParticipating()}}async invite(e,t,...n){let o=d.get("socket");switch(t){case "code":return await o.communityInviteCode(e);case "revoke":return await o.communityRevokeInvite(e);case "accept":return await o.communityAcceptInvite(e);case "info":return await o.communityGetInviteInfo(e);case "revokeV4":return await o.communityRevokeInviteV4(e,n[0]);case "acceptV4":return await o.communityAcceptInviteV4(e,n[0])}}async settings(e,t,n){let o=d.get("socket");switch(t){case "ephemeral":return await o.communityToggleEphemeral(e,n);case "update":return await o.communitySettingUpdate(e,n);case "memberAdd":return await o.communityMemberAddMode(e,n);case "approval":return await o.communityJoinApprovalMode(e,n)}}},fe=class{constructor(e){this.mlient=e;this.community=new Fe(e);}community};var Le=class{constructor(e){this.client=e;}async create(e,t){return await d.get("socket").groupCreate(e,t)}async participant(e,t,n){return await d.get("socket").groupParticipantsUpdate(e,t,n)}async profile(e,t,n){let o=d.get("socket"),s=Buffer.isBuffer(t);switch(n){case "subject":if(!s)return await o.groupUpdateSubject(e,t);case "description":if(!s)return await o.groupUpdateDescription(e,t);case "picture":return await o.updateProfilePicture(e,await new mediaProcess.Media(t).toBuffer())}}async setting(e,t){let n=d.get("socket");switch(t){case "open":return await n.groupSettingUpdate(e,"not_announcement");case "close":return await n.groupSettingUpdate(e,"announcement");case "locked":return await n.groupSettingUpdate(e,t);case "unlocked":return await n.groupSettingUpdate(e,t);case "all_member_add":return await n.groupMemberAddMode(e,t);case "admin_add":return await n.groupMemberAddMode(e,t)}}async leave(e){return await d.get("socket").groupLeave(e)}async inviteCode(e,t){let n=d.get("socket");switch(t){case "code":return await n.groupInviteCode(e);case "revoke":return await n.groupRevokeInvite(e);case "accept":return await n.groupAcceptInvite(e);case "info":return await n.groupGetInviteInfo(e)}}async metadata(e){let t=d.get("socket"),n=P.get(e);if(n)return n;let o=await t.groupMetadata(e);return o&&P.set(e,o),o}async requestJoin(e,t,n){let o=d.get("socket");switch(n){case "approve":return await o.groupRequestParticipantsUpdate(e,t,n);case "reject":return await o.groupRequestParticipantsUpdate(e,t,n)}}async requestJoinList(e){return await d.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await d.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let n=d.get("socket"),o={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await n.groupToggleEphemeral(e,o[t])}},ye=class{constructor(e){this.glient=e;this.group=new Le(e);}group};var Ue=class{constructor(e){this.client=e;}async create(e,t){return await d.get("socket").newsletterCreate(e,t)}async action(e,t){let n=d.get("socket");switch(t){case "follow":return await n.newsletterFollow(e);case "unfollow":return await n.newsletterUnfollow(e);case "mute":return await n.newsletterMute(e);case "unmute":return await n.newsletterUnmute(e);}}async update(e,t,n){let o=d.get("socket"),s=Buffer.isBuffer(t);switch(n){case "name":if(!s)return await o.newsletterUpdateName(e,t);case "description":if(!s)return await o.newsletterUpdateDescription(e,t);case "picture":return await o.newsletterUpdatePicture(e,await new mediaProcess.Media(t).toBuffer())}}async metadata(e,t){return await d.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await d.get("socket").newsletterSubscribers(e)}async reaction(e,t,n){return await d.get("socket").newsletterReactMessage(e,t,n)}async fetchMessages(e,t,n,o){let s=d.get("socket"),r=n.getTime()/1e3,u=o.getTime()/1e3;return await s.newsletterFetchMessages(e,t,r,u)}async adminCount(e){return await d.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await d.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await d.get("socket").newsletterDemote(e,t)}async delete(e){return await d.get("socket").newsletterDelete(e)}async removePicture(e){return await d.get("socket").newsletterRemovePicture(e)}},he=class{constructor(e){this.nlient=e;this.newsletter=new Ue(e);}newsletter};var Be=class{constructor(e){this.client=e;}async block(e){return await d.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await d.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await d.get("socket").updateLastSeenPrivacy(e)}async online(e){return await d.get("socket").updateOnlinePrivacy(e)}async picture(e){return await d.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await d.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await d.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await d.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=d.get("socket"),n={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(n[e])}async blocklist(){return await d.get("socket").fetchBlocklist()}async getSettings(){return await d.get("socket").fetchPrivacySettings(true)}},ve=class{constructor(e){this.plient=e;this.privacy=new Be(e);}privacy};var Gi=a__namespace.object({status:a__namespace.picklist(["connecting","open","close","reload","syncing"]),authType:a__namespace.picklist(["pairing","qr"]),authTimeout:a__namespace.optional(a__namespace.number()),syncProgress:a__namespace.optional(a__namespace.number()),syncCompleted:a__namespace.optional(a__namespace.boolean(),false),qr:a__namespace.optional(a__namespace.string()),code:a__namespace.optional(a__namespace.string())});var Cn=a__namespace.picklist(["unknown","android","ios","desktop","web"]),An=a__namespace.picklist(["text","album","image","contact","location","document","audio","video","protocol","contacts","highlyStructured","sendPayment","requestPayment","groupStatusMention","statusMention","declinePaymentRequest","cancelPaymentRequest","template","sticker","groupInvite","product","deviceSent","lists","viewOnce","order","ephemeral","invoice","buttons","paymentInvite","interactive","reaction","interactiveResponse","pollCreation","pollUpdate","keepInChat","requestPhoneNumber","scheduledCallCreation","groupMentioned","pinInChat","scheduledCallEdit","ptv","botInvoke","callLog","encComment","bcall","lottieSticker","event","comment","placeholder","encEventUpdate"]),Tt=a__namespace.object({channelId:a__namespace.string(),uniqueId:a__namespace.string(),chatId:a__namespace.string(),chatType:An,receiverLid:a__namespace.string(),receiverId:a__namespace.string(),receiverName:a__namespace.string(),roomId:a__namespace.string(),roomLid:a__namespace.nullable(a__namespace.string()),roomName:a__namespace.nullable(a__namespace.string()),senderLid:a__namespace.string(),senderId:a__namespace.string(),senderName:a__namespace.string(),senderDevice:Cn,timestamp:a__namespace.number(),text:a__namespace.nullable(a__namespace.string()),mentions:a__namespace.array(a__namespace.string()),links:a__namespace.array(a__namespace.string()),isBot:a__namespace.boolean(),isFromMe:a__namespace.boolean(),isPrefix:a__namespace.boolean(),isSpam:a__namespace.boolean(),isTagMe:a__namespace.boolean(),isStatusMention:a__namespace.boolean(),isGroupStatusMention:a__namespace.boolean(),isHideTags:a__namespace.boolean(),isGroup:a__namespace.boolean(),isNewsletter:a__namespace.boolean(),isQuestion:a__namespace.boolean(),isStory:a__namespace.boolean(),isViewOnce:a__namespace.boolean(),isEdited:a__namespace.boolean(),isDeleted:a__namespace.boolean(),isPinned:a__namespace.boolean(),isUnPinned:a__namespace.boolean(),isBroadcast:a__namespace.boolean(),isEphemeral:a__namespace.boolean(),isForwarded:a__namespace.boolean(),citation:a__namespace.nullable(a__namespace.record(a__namespace.string(),a__namespace.custom(i=>typeof i=="function"))),media:a__namespace.nullable(a__namespace.looseObject({buffer:a__namespace.custom(i=>typeof i=="function"),stream:a__namespace.custom(i=>typeof i=="function")})),injection:a__namespace.optional(a__namespace.record(a__namespace.string(),a__namespace.any()),{}),message:a__namespace.custom(i=>typeof i=="function")}),Ji=a__namespace.object({...Tt.entries,replied:a__namespace.nullable(Tt)});var Qi=a__namespace.object({callId:a__namespace.string(),callerId:a__namespace.string(),roomId:a__namespace.string(),roomName:a__namespace.string(),date:a__namespace.date(),offline:a__namespace.boolean(),status:a__namespace.picklist(["accept","offer","reject","ringing","terminate","timeout"]),isVideo:a__namespace.boolean(),isGroup:a__namespace.boolean()});var ke=class{constructor(e){this.client=e;this.initialize();}logsInitialized=false;logsDisplayed=false;isReady=false;getRoomColor(e){return e?.isNewsletter?"blue":e?.isGroup?e?.isGroup?"lime":"dimgray":"orange"}initialize(){if(!this.client.options.showLogs||this.logsInitialized)return;this.logsInitialized=true;let e=async({status:t})=>{t==="open"&&(this.isReady=true,this.logsDisplayed||setTimeout(()=>{this.displayIndicator();},500));};f.events.on("connection",e);}displayIndicator(){this.logsDisplayed||(this.logsDisplayed=true,console.log(),f.spinner.info("Logs Indicator:"),console.log(y(" \u2022","orange")+" Private Chat"),console.log(y(" \u2022","lime")+" Group Chat"),console.log(y(" \u2022","blue")+" Newsletter Chat"),console.log());}message(e){if(!this.isReady)return;let t=v(this.getRoomColor(e)),n=e?.text?.toLowerCase()?.match("zaileys"),o=this.client.options?.fancyLogs,s=y(`[${new Date(e?.timestamp).toTimeString().split(" ")[0]}]`,"dimgray"),r=y(`${e?.roomName}`,t),u=e?.text?.slice(0,300)||"",l=u?.length>=300?"...":"";if(o){let g=y("\u2501".repeat(50),"dimgray"),w=y("\u2192","dimgray"),O=y("\u2022",t),b=`
@@ -31,7 +31,7 @@ ${g}
31
31
  * See LICENSE file for details.
32
32
 
33
33
  * Author: zaadevofc
34
- * Last build time: 3/17/2026 11:53:16 AM
34
+ * Last build time: 3/17/2026 11:58:22 AM
35
35
  *
36
36
  * Repository: git+https://github.com/zeative/zaileys.git
37
37
  */exports.BaseMessagesType=Tt;exports.ButtonCarouselCardType=tn;exports.ButtonCarouselType=nn;exports.ButtonInteractiveCallType=ht;exports.ButtonInteractiveCopyType=yt;exports.ButtonInteractiveReplyType=gt;exports.ButtonInteractiveSingleSelectType=Zt;exports.ButtonInteractiveType=Xt;exports.ButtonInteractiveUrlType=ft;exports.ButtonSimpleType=en;exports.ButtonType=vt;exports.CitationType=on;exports.Client=Ct;exports.ClientAuthPairingType=ln;exports.ClientAuthQRType=pn;exports.ClientBaseType=kt;exports.ClientOptionsType=wt;exports.ClientStickerOptionsType=an;exports.ClientStickerShapeType=je;exports.DEVICE_ENUM_TYPES=Cn;exports.EventEnumType=si;exports.FakeReplyType=rn;exports.LimiterType=sn;exports.ListenerCallsType=Qi;exports.ListenerConnectionType=Gi;exports.ListenerMessagesType=Ji;exports.MESSAGE_ENUM_TYPES=An;exports.Plugins=Z;exports.autoCleanUp=cn;exports.cleanJid=E;exports.cleanMediaObject=at;exports.definePlugins=gr;exports.escapeRegExp=ot;exports.extractJids=Ne;exports.extractUrls=st;exports.findGlobalWord=Q;exports.findNestedByKeys=Fs;exports.generateId=We;exports.getDeepContent=re;exports.getLatestLibVersion=ct;exports.getUsersMentions=rt;exports.ignoreLint=v;exports.logColor=y;exports.modifyFn=Ls;exports.normalizeText=$;exports.numbersToJids=Vs;exports.pickKeysFromArray=Ee;exports.randomize=js;exports.registerAuthCreds=Ze;exports.removeAuthCreds=$e;exports.resolveJids=ie;exports.shuffleString=_s;exports.toJson=Oe;exports.toString=K;exports.useAuthState=Ke;Object.keys(mediaProcess).forEach(function(k){if(k!=='default'&&!Object.prototype.hasOwnProperty.call(exports,k))Object.defineProperty(exports,k,{enumerable:true,get:function(){return mediaProcess[k]}})});
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import jt,{initAuthCreds,proto,fetchLatestBaileysVersion,URL_REGEX,jidNormalizedUser,extractMessageContent,getContentType,makeCacheableSignalKeyStore,Browsers,delay,DisconnectReason,getDevice,downloadMediaMessage,prepareWAMessageMedia,generateWAMessageFromContent,generateMessageIDV2,isJidGroup,BufferJSON}from'baileys';import*as O from'radashi';import {open}from'lmdb';import {LRUCache}from'lru-cache';import {Mutex}from'async-mutex';import {createSpinner}from'nanospinner';import Et from'pino';import {EventEmitter}from'events';import {initializeFFmpeg,Media}from'@zaadevofc/media-process';export*from'@zaadevofc/media-process';import Lt from'crypto';import*as a from'valibot';import st,{cristal}from'gradient-string';import zt from'fs/promises';import Jt from'figlet';import Kt from'qrcode-terminal';import*as B from'fs';import*as N from'path';import {pathToFileURL}from'url';var Ce={encode:i=>JSON.stringify(i,BufferJSON.replacer),decode:i=>JSON.parse(i,BufferJSON.reviver)},Te=new Map,Ae=(i,e)=>(Te.has(i)||Te.set(i,open({path:i,...e})),Te.get(i)),Ve=i=>Ae(`.session/${i}/auth/creds`,{compression:false,encoder:Ce}),se=i=>Ae(`.session/${i}/auth/keys`,{compression:false,encoder:Ce}),ze=(i,e)=>Ae(`.session/${i}/store/${e}`,{compression:true,encoder:Ce});var Re=class{cache;mutex=new Mutex;namespace;constructor(e,t){this.namespace=e,this.cache=new LRUCache({max:t?.max??500,ttl:t?.ttl});}key(e){return `${this.namespace}:${e}`}set(e,t){this.cache.set(this.key(e),t);}get(e){return this.cache.get(this.key(e))}has(e){return this.cache.has(this.key(e))}delete(e){return this.cache.delete(this.key(e))}getOrSet(e,t){if(this.has(e))return this.get(e);let n=t();return this.set(e,n),n}async getOrCreate(e,t){if(this.has(e))return this.get(e);let n=await this.mutex.acquire();try{if(this.has(e))return this.get(e);let o=await t();return this.set(e,o),o}finally{n();}}clear(){this.cache.clear();}keys(){return Array.from(this.cache.keys()).filter(e=>e.startsWith(`${this.namespace}:`)).map(e=>e.slice(this.namespace.length+1))}getAll(){let e={};for(let t of this.keys())e[t]=this.get(t);return e}get size(){return this.keys().length}},Pe=class{namespaces=new Map;spinner=createSpinner("",{color:"green"});logger=Et({level:"silent",enabled:false});events=new EventEmitter;ns(e,t){return this.namespaces.has(e)||this.namespaces.set(e,new Re(e,t)),this.namespaces.get(e)}drop(e){let t=this.namespaces.get(e);return t?(t.clear(),this.namespaces.delete(e),true):false}snapshot(){let e={};for(let[t,n]of this.namespaces)e[t]=n.getAll();return e}get namespaceNames(){return Array.from(this.namespaces.keys())}},f=new Pe;var F=f.ns("context",{max:500,ttl:1e3*60*10}),Je=f.ns("cache",{max:2e3,ttl:1e3*60*5}),d=f.ns("center",{max:500,ttl:1e3*60*10}),Ie=f.ns("rate",{max:5e3,ttl:1e3*10}),I=f.ns("group",{max:500,ttl:1e3*60*5}),He=f.ns("msg",{max:1e3});var Qe=async i=>{f.spinner.start(" Initializing auth state...");let e=Ve(i),t=se(i),n=await e.get("creds"),o=n||initAuthCreds();return n?f.spinner.success(" Auth credentials loaded successfully"):f.spinner.success(" Initialized new auth session"),{state:{creds:o,keys:{get:async(s,r)=>{let u={};return await Promise.all(r.map(async l=>{let g=`${s}:${l}`,b=await t.get(g);s==="app-state-sync-key"&&b&&(b=proto.Message.AppStateSyncKeyData.fromObject(b)),u[l]=b;})),u},set:async s=>{let r=[];for(let u in s)for(let l in s[u]){let g=s[u][l],b=`${u}:${l}`;r.push({key:b,value:g});}for(let u of O.cluster(r,500))await Promise.all(u.map(({key:l,value:g})=>g?t.put(l,g):t.remove(l)));}}},saveCreds:async()=>{await e.put("creds",o);}}};var H=class{constructor(e){this.cache=e;}get(e){return this.cache.get(e)}set(e,t){this.cache.set(e,t);}del(e){this.cache.delete(e);}flushAll(){this.cache.clear();}};var Ze=(i,e)=>({logger:i.health.logger,printQRInTerminal:false,enableRecentMessageCache:true,emitOwnEvents:true,keepAliveIntervalMs:3e4,browser:Browsers.macOS("Desktop"),markOnlineOnConnect:i.options.autoOnline,syncFullHistory:i.options.syncFullHistory,msgRetryCounterCache:new H(He),mediaCache:new H(Je),auth:{creds:e.creds,keys:makeCacheableSignalKeyStore(e.keys,f.logger)},cachedGroupMetadata:async t=>I.get(t),shouldIgnoreJid:()=>false,shouldSyncHistoryMessage:()=>i.options.syncFullHistory,patchMessageBeforeSending:t=>t,getMessage:async t=>{if(!t?.remoteJid||!t?.id)return proto.Message.fromObject({});let n=await i.db("messages").get(t.id);return proto.Message.fromObject(n||{})}});var Xe=async i=>{let e=i.options.session||"zaileys",{state:t,saveCreds:n}=await Qe(e),{version:o}=await fetchLatestBaileysVersion(),s=Ze(i,t),r=jt({...s,version:o});r.ev.on("creds.update",n),d.set("socket",r);};function et(i,e){let t=e.length;return new Proxy(i,{get(n,o,s){if(o in n){let r=Reflect.get(n,o,s);return typeof r=="function"?r.bind(s):r}for(let r=0;r<t;r++){let u=e[r];if(o in u){let l=Reflect.get(u,o,u);return typeof l=="function"?l.bind(u):l}}},set(n,o,s,r){if(o in n)return Reflect.set(n,o,s,r);for(let u=0;u<t;u++){let l=e[u];if(o in l)return Reflect.set(l,o,s,l)}return Reflect.set(n,o,s,r)},has(n,o){if(o in i)return true;for(let s=0;s<t;s++)if(o in e[s])return true;return false},ownKeys(){let n=new Set(Reflect.ownKeys(i)),o=[...n];for(let s=0;s<t;s++)for(let r of Reflect.ownKeys(e[s]))n.has(r)||(n.add(r),o.push(r));return o},getOwnPropertyDescriptor(n,o){let s=Object.getOwnPropertyDescriptor(i,o);if(s)return s;for(let r=0;r<t;r++)if(s=Object.getOwnPropertyDescriptor(e[r],o),s)return {...s,configurable:true}}})}var oe=class{constructor(e){this.client=e;}interval=null;start(){let e=this.client.options.autoCleanUp;e?.enabled&&(this.interval=setInterval(()=>{this.run();},e.intervalMs),this.run());}stop(){this.interval&&(clearInterval(this.interval),this.interval=null);}async run(){let e=this.client.options.autoCleanUp;if(!e?.enabled)return;let t=Date.now()-e.maxAgeMs;for(let n of e.scopes)try{let o=this.client.db(n),s=[];for(let{value:r}of o.getRange())r&&r.timestamp!==void 0&&r.timestamp<t&&s.push(r);if(s.length>0){let r=s.map(u=>u.key?.id||u.id);for(let u of O.cluster(r,500))await Promise.all(u.map(l=>o.remove(l)));f.spinner.info(` [CleanUpManager] Cleaned up ${s.length} items from ${n}`);}}catch{}}};var A={CRITICAL:20,HIGH:10,NORMAL:0,LOW:-10},Oe=class{concurrency;timeout;onError;queue;running;completed;failed;isClosing;closeResolve;_idleResolvers=[];constructor(e){this.concurrency=e?.concurrency||20,this.timeout=e?.timeout||3e4,this.onError=e?.onError||this._defaultErrorHandler,this.queue=[],this.running=new Set,this.completed=0,this.failed=0,this.isClosing=false,this.closeResolve=null;}add(e,t){if(this.isClosing)throw new Error("Queue is closing, cannot add new tasks");let n={id:this._generateId(),fn:e,priority:t?.priority||0,timeout:t?.timeout||this.timeout,retries:0,maxRetries:t?.maxRetries||0,createdAt:Date.now()},o=this.queue.findIndex(s=>s.priority<n.priority);return o===-1?this.queue.push(n):this.queue.splice(o,0,n),this._process(),n.id}addBulk(e){return e.map(({fn:t,options:n})=>this.add(t,n))}async _process(){for(;this.running.size<this.concurrency&&this.queue.length>0;){let e=this.queue.shift();this.running.add(e),this._executeTask(e);}this.isClosing&&this.running.size===0&&this.queue.length===0&&this.closeResolve?.(),this.isIdle()&&(this._idleResolvers.forEach(e=>e()),this._idleResolvers=[]);}async _executeTask(e){try{await this._withTimeout(e.fn(),e.timeout),this.completed++;}catch(t){if(e.retries<e.maxRetries){e.retries++;let n=Math.min(500*2**e.retries,3e4);setTimeout(()=>{this.isClosing||(this.queue.unshift(e),this._process());},n);}else this.failed++,this.onError(t,e);}finally{this.running.delete(e),this._process();}}_withTimeout(e,t){let n,o=new Promise((s,r)=>{n=setTimeout(()=>r(new Error("Task timeout")),t);});return Promise.race([e,o]).finally(()=>clearTimeout(n))}async close(e=0){if(this.isClosing=true,this.running.size===0&&this.queue.length===0)return;let t=new Promise(n=>{this.closeResolve=n;});if(e>0){let n=new Promise(o=>setTimeout(o,e));await Promise.race([t,n]);}else await t;}forceClose(){this.queue=[],this.running.clear(),this.isClosing=true,this.closeResolve?.();}getStats(){return {queued:this.queue.length,running:this.running.size,completed:this.completed,failed:this.failed,total:this.completed+this.failed}}isIdle(){return this.queue.length===0&&this.running.size===0}async waitUntilIdle(){if(!this.isIdle())return new Promise(e=>{this._idleResolvers.push(e);})}_defaultErrorHandler(e,t){console.error(`[FireForget] Task ${t.id} failed:`,e.message);}_generateId(){return Lt.randomUUID()}},M=new Oe;var ie=class{constructor(e){this.client=e;this.keysDb=se(e.options.session);}keysDb;async repair(e){if(e)try{let t=this.client.socket;t&&t.authState&&(await t.authState.keys.set({session:{[e]:null},"sender-key":{[e]:null}}),f.spinner.warn(` [HealthManager] Repaired session for ${e} due to Bad MAC by clearing auth cache`));}catch(t){this.logger.error({err:t},"Failed to repair session");}}get logger(){return Et({level:"silent"},{write:e=>{try{let t=JSON.parse(e),n=t.msg||"",o=["Bad MAC","Session error:","Closing open session in favor of incoming prekey bundle","Error: Bad MAC"];if(n.includes("Bad MAC")){let s=t.jid||t.remoteJid;s&&this.repair(s);}o.some(s=>n.includes(s))||t.level>=50&&t.err&&console.error(t.err);}catch{}}})}};var K=(i,e)=>{let t=a.safeParse(i,e);if(t.issues){let n=[],o=r=>{for(let u of r)if(u.issues&&u.issues.length>0)o(u.issues);else {let l=u.path?.map(g=>g.key).join(".")||"root";n.push(`${l}: ${u.message}`);}};o(t.issues);let s=Array.from(new Set(n));throw new Error(`Validation Error:
2
2
  - ${s.join(`
3
- - `)}`)}return t.output};var y=(i,e="lime")=>Array.isArray(e)?st(e)(i):st([e,e])(i),Ee=i=>{try{return JSON.parse(i)}catch{return O.tryit(()=>JSON.parse(JSON.stringify(i)||"{}"))()[1]}},Q=i=>{try{return JSON.stringify(i)}catch{let e=O.tryit(()=>JSON.stringify(Ee(i)||"{}"))();return e[0]?"{}":e[1]}},js=(i="")=>O.shuffle(i.split("")).join(""),Y=(i="",e="")=>i?i.toLowerCase().includes(e.toLowerCase()):null,ot=(i="")=>{if(!i)return [];let e=i.match(URL_REGEX)||[];return Array.isArray(e)?e:[e]},Fs=i=>i[Math.floor(Math.random()*i.length)],We=(i,e)=>{if(!(!Array.isArray(i)||i.length===0)&&!(!Array.isArray(e)||e.length===0)){for(let t of i)if(!(!t||typeof t!="object"))for(let n of e){let o=O.get(t,n);if(!O.isEmpty(o)||typeof o=="number"||typeof o=="boolean"){if(typeof o=="string"&&o.trim()==="")continue;return o}}}},Ls=(i,e)=>{let t=Array.isArray(e)?e:[e],n=(r,u)=>Object.entries(u).every(([l,g])=>r?.[l]===g),o=(r,u)=>Object.entries(u).some(([l,g])=>r?.[l]===g),s=r=>Array.isArray(r)?r.find(s)??r:O.isObject(r)?t.find(g=>n(r,g))||t.find(g=>o(r,g))?r:Object.values(r).find(s)??r:null;return s(i)},Us=(i,e,t)=>new Proxy(i,{apply(n,o,s){e?.(s);let r=Reflect.apply(n,o,s);return t?t(r,s):r}}),it=i=>i.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");var Ne=i=>{let e;Array.isArray(i)?e=i.join("|"):typeof i=="string"?e=i:e=String(i);let t=2166136261,n=e.length;for(let o=0;o<n;o++)t^=e.charCodeAt(o),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},at=(i="")=>{if(!i)return [];let e=new Set;for(let t of i.matchAll(/@(\d+)/g))e.add(t[1]);return Array.from(e)},$e=(i="")=>{if(!i)return [];let e=new Set;for(let t of i.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return [...e].flatMap(t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},re=i=>{let e=i.filter(Boolean).map(o=>jidNormalizedUser(o)),t=e.find(o=>!o.includes("@lid")),n=e.find(o=>o.includes("@lid"));return {id:t||n||null,lid:n||null}},zs=i=>i?.length?[...i].map(e=>`${e}@s.whatsapp.net`):[],ct=i=>O.omit(i,["url","contextInfo","fileSha256","fileEncSha256","mediaKey","directPath","waveform","thumbnail","jpegThumbnail","thumbnailEncSha256","thumbnailSha256","thumbnailDirectPath","firstFrameSidecar","streamingSidecar","scansSidecar","callKey","message","key","midQualityFileSha256","historySyncNotification","appStateSyncKeyShare","appStateSyncKeyRequest","initialSecurityNotificationSettingSync","appStateFatalExceptionNotification","disappearingMode","peerDataOperationRequestMessage","peerDataOperationRequestResponseMessage","botFeedbackMessage"]),ae=i=>{if(!i)return {leaf:void 0,chain:[]};let e=extractMessageContent(i)||i,t=[];for(;e&&typeof e=="object";){let n=getContentType(e);if(!n)break;t.push(n);let o=e[n];if(!o||typeof o!="object"){e=o;break}e=o;}return {leaf:e,chain:t}},W=i=>Number(i?.split("@")[0]);var k=i=>i,lt=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(i){throw i}},De=async i=>{try{let e=`.session/${i}`;await zt.rm(e,{recursive:!0,force:!0});}catch{f.spinner.error(`Failed to remove auth creds for session "${i}"!`);}},D=(i="")=>{if(!i?.length)return null;let e=i.replace(/\u202E(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/\u202D(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/gu,"").replace(/[\u200B\u200C\u200D\uFEFF]/gu,"").replace(/[\u00AD\u034F\u115F\u1160\u17B4\u17B5\u180B-\u180E]/gu,"").replace(/[\u2060-\u2064\u206A-\u206F]/gu,"").replace(/[\u2800\uFFFC\uFFFD]/gu,"").replace(/[\uFE00-\uFE0F]/gu,"").normalize("NFKD").replace(/[\u0300-\u036F]/gu,"").replace(/[\u1AB0-\u1AFF]/gu,"").replace(/[\u1DC0-\u1DFF]/gu,"").replace(/[\u20D0-\u20FF]/gu,"").replace(/[\uFE20-\uFE2F]/gu,"").replace(/[\p{Cc}]/gu,"").replace(/[\p{Cf}]/gu,"").replace(/[\p{Co}]/gu,"").replace(/[\p{Cn}]/gu,"").replace(/[\p{Cs}]/gu,"").replace(/[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/gu," ").replace(/[\u2028\u2029]/gu," ").replace(/[\t\r\n\f\v]/g," ").normalize("NFKC").normalize("NFC").replace(/\s+/g," ").trim();return e.length?e:null};var ce=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=d.get("socket");e.ev.on("call",async t=>{for(let n of t){let o=await this.parse(n);o&&(M.add(async()=>{await Promise.all([this.client.middleware.run({calls:o}),this.client.plugins.execute(this.client,{messages:o})]);},{priority:A.NORMAL,timeout:5e3}),f.events.emit("calls",o),this.client.options?.autoRejectCall&&M.add(async()=>e.rejectCall(o.callId,o.callerId),{priority:A.CRITICAL,timeout:3e3}));}});}async parse(e){let t=d.get("socket"),n={};return n.callId=e.id,n.callerId=jidNormalizedUser(e.from),n.roomId=jidNormalizedUser(e.chatId),n.roomName=D(t?.user?.name||t?.user?.verifiedName),n.date=e.date,n.offline=e.offline,n.status=e.status,n.isVideo=!!e.isVideo,n.isGroup=!!e.isGroup,this.client.logs.call(n),n}};var ut=i=>{Kt.generate(i,{small:true},e=>{console.log(e);});},mt=async()=>{console.clear(),f.spinner.start(" Checking for updates...");let i="3.0.0",e="zaadevofc",t=await lt(),n=i===t;f.spinner.stop();let o="Zaileys",s=`
3
+ - `)}`)}return t.output};var y=(i,e="lime")=>Array.isArray(e)?st(e)(i):st([e,e])(i),Ee=i=>{try{return JSON.parse(i)}catch{return O.tryit(()=>JSON.parse(JSON.stringify(i)||"{}"))()[1]}},Q=i=>{try{return JSON.stringify(i)}catch{let e=O.tryit(()=>JSON.stringify(Ee(i)||"{}"))();return e[0]?"{}":e[1]}},js=(i="")=>O.shuffle(i.split("")).join(""),Y=(i="",e="")=>i?i.toLowerCase().includes(e.toLowerCase()):null,ot=(i="")=>{if(!i)return [];let e=i.match(URL_REGEX)||[];return Array.isArray(e)?e:[e]},Fs=i=>i[Math.floor(Math.random()*i.length)],We=(i,e)=>{if(!(!Array.isArray(i)||i.length===0)&&!(!Array.isArray(e)||e.length===0)){for(let t of i)if(!(!t||typeof t!="object"))for(let n of e){let o=O.get(t,n);if(!O.isEmpty(o)||typeof o=="number"||typeof o=="boolean"){if(typeof o=="string"&&o.trim()==="")continue;return o}}}},Ls=(i,e)=>{let t=Array.isArray(e)?e:[e],n=(r,u)=>Object.entries(u).every(([l,g])=>r?.[l]===g),o=(r,u)=>Object.entries(u).some(([l,g])=>r?.[l]===g),s=r=>Array.isArray(r)?r.find(s)??r:O.isObject(r)?t.find(g=>n(r,g))||t.find(g=>o(r,g))?r:Object.values(r).find(s)??r:null;return s(i)},Us=(i,e,t)=>new Proxy(i,{apply(n,o,s){e?.(s);let r=Reflect.apply(n,o,s);return t?t(r,s):r}}),it=i=>i.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");var Ne=i=>{let e;Array.isArray(i)?e=i.join("|"):typeof i=="string"?e=i:e=String(i);let t=2166136261,n=e.length;for(let o=0;o<n;o++)t^=e.charCodeAt(o),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return "Z4D3FC"+(t>>>0).toString(16).padStart(8,"0").toUpperCase()},at=(i="")=>{if(!i)return [];let e=new Set;for(let t of i.matchAll(/@(\d+)/g))e.add(t[1]);return Array.from(e)},$e=(i="")=>{if(!i)return [];let e=new Set;for(let t of i.matchAll(/@(\d+)/g))t[1].length<=15&&e.add(t[1]);return [...e].flatMap(t=>[`${t}@s.whatsapp.net`,`${t}@g.us`,`${t}@lid`])},re=i=>{let e=i.filter(Boolean).map(o=>jidNormalizedUser(o)),t=e.find(o=>!o.includes("@lid")),n=e.find(o=>o.includes("@lid"));return {id:t||n||null,lid:n||null}},zs=i=>i?.length?[...i].map(e=>`${e}@s.whatsapp.net`):[],ct=i=>O.omit(i,["url","contextInfo","fileSha256","fileEncSha256","mediaKey","directPath","waveform","thumbnail","jpegThumbnail","thumbnailEncSha256","thumbnailSha256","thumbnailDirectPath","firstFrameSidecar","streamingSidecar","scansSidecar","callKey","message","key","midQualityFileSha256","historySyncNotification","appStateSyncKeyShare","appStateSyncKeyRequest","initialSecurityNotificationSettingSync","appStateFatalExceptionNotification","disappearingMode","peerDataOperationRequestMessage","peerDataOperationRequestResponseMessage","botFeedbackMessage"]),ae=i=>{if(!i)return {leaf:void 0,chain:[]};let e=extractMessageContent(i)||i,t=[];for(;e&&typeof e=="object";){let n=getContentType(e);if(!n)break;t.push(n);let o=e[n];if(!o||typeof o!="object"){e=o;break}e=o;}return {leaf:e,chain:t}},W=i=>Number(i?.split("@")[0]);var k=i=>i,lt=async()=>{try{return (await(await fetch("https://registry.npmjs.org/zaileys")).json())["dist-tags"].latest}catch(i){throw i}},De=async i=>{try{let e=`.session/${i}`;await zt.rm(e,{recursive:!0,force:!0});}catch{f.spinner.error(`Failed to remove auth creds for session "${i}"!`);}},D=(i="")=>{if(!i?.length)return null;let e=i.replace(/\u202E(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/\u202D(.*?)(\u202C|$)/gu,(t,n)=>[...n].reverse().join("")).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/gu,"").replace(/[\u200B\u200C\u200D\uFEFF]/gu,"").replace(/[\u00AD\u034F\u115F\u1160\u17B4\u17B5\u180B-\u180E]/gu,"").replace(/[\u2060-\u2064\u206A-\u206F]/gu,"").replace(/[\u2800\uFFFC\uFFFD]/gu,"").replace(/[\uFE00-\uFE0F]/gu,"").normalize("NFKD").replace(/[\u0300-\u036F]/gu,"").replace(/[\u1AB0-\u1AFF]/gu,"").replace(/[\u1DC0-\u1DFF]/gu,"").replace(/[\u20D0-\u20FF]/gu,"").replace(/[\uFE20-\uFE2F]/gu,"").replace(/[\p{Cc}]/gu,"").replace(/[\p{Cf}]/gu,"").replace(/[\p{Co}]/gu,"").replace(/[\p{Cn}]/gu,"").replace(/[\p{Cs}]/gu,"").replace(/[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/gu," ").replace(/[\u2028\u2029]/gu," ").replace(/[\t\r\n\f\v]/g," ").normalize("NFKC").normalize("NFC").replace(/\s+/g," ").trim();return e.length?e:null};var ce=class{constructor(e){this.client=e;this.initialize();}async initialize(){let e=d.get("socket");e.ev.on("call",async t=>{for(let n of t){let o=await this.parse(n);o&&(M.add(async()=>{await Promise.all([this.client.middleware.run({calls:o}),this.client.plugins.execute(this.client,{messages:o})]);},{priority:A.NORMAL,timeout:5e3}),f.events.emit("calls",o),this.client.options?.autoRejectCall&&M.add(async()=>e.rejectCall(o.callId,o.callerId),{priority:A.CRITICAL,timeout:3e3}));}});}async parse(e){let t=d.get("socket"),n={};return n.callId=e.id,n.callerId=jidNormalizedUser(e.from),n.roomId=jidNormalizedUser(e.chatId),n.roomName=D(t?.user?.name||t?.user?.verifiedName),n.date=e.date,n.offline=e.offline,n.status=e.status,n.isVideo=!!e.isVideo,n.isGroup=!!e.isGroup,this.client.logs.call(n),n}};var ut=i=>{Kt.generate(i,{small:true},e=>{console.log(e);});},mt=async()=>{console.clear(),f.spinner.start(" Checking for updates...");let i="3.0.1",e="zaadevofc",t=await lt(),n=i===t;f.spinner.stop();let o="Zaileys",s=`
4
4
  by ${e} \xB7 v${i}`,r="\u2014 discord.gg/KBHhTTVUc5",u="\u2014 chat.whatsapp.com/GlQfvc83mSH3F6ov06vuCt",l=`${n?"\u2714 Already using latest version!":`\u2714 Update available! (v${t})`}
5
5
  `,g=n?"blue":"orange",b=await Jt.text(o),E=cristal(b);console.log(E),console.log(y(s,"dimgray")),console.log(y(r,"purple")),console.log(y(u,"green")),console.log(y(l,g));};var pe=class{constructor(e){this.client=e;this.initialize();}async initialize(){f.spinner.start(" Initializing connection...");let e=d.get("socket"),t={},n=async()=>{t.status="reload",f.spinner.warn(" Connection lost. Attempting auto-reload..."),await this.client.initialize();},o=async()=>{await delay(3e3),f.spinner.warn(" Invalid session. Attempting auto cleaning creds..."),await delay(3e3),await De(this.client.options.session),await n();};if(this.client.options.authType==="pairing"&&this.client.options.phoneNumber&&!e.authState.creds.registered){f.spinner.update(" Generating pairing code..."),await delay(3500);try{t.authTimeout=Date.now()+6e4;let s=new Date(t.authTimeout).toLocaleTimeString(),r=await e.requestPairingCode(this.client.options.phoneNumber.toString());f.spinner.warn(` Pairing expired at ${cristal(s)}`),f.spinner.warn(` Pairing code: ${r}`),t.code=r;}catch{await o();}}e.ev.on("connection.update",async s=>{let{connection:r,lastDisconnect:u,qr:l}=s;if(t.status=r||"connecting",t.authType=this.client.options.authType,f.spinner.update(" Connection status: "+cristal(t.status)),this.client.options.authType==="qr"&&l){t.authTimeout=Date.now()+6e4;let g=new Date(t.authTimeout).toLocaleTimeString();f.spinner.warn(" Please scan the QR code..."),f.spinner.warn(` Qr code expired at ${cristal(g)}`),ut(l),t.qr=l;return}if(r==="close"){let g=k(u?.error)?.output?.statusCode,b=u?.error?.message||"Unknown Error",E=g??"Internal";if(f.spinner.error(` [${E} - Closed] ${b}`),g===DisconnectReason.loggedOut){this.client.options.deleteSessionOnLogout?(f.spinner.warn(" Session logged out or invalidated. Self-healing..."),await De(this.client.options.session),setTimeout(()=>n(),3e3)):f.spinner.warn(" Session logged out or invalidated. Automatic session deletion is disabled.");return}if(g===405){f.spinner.warn(" Session invalid/stale or used by another device (405)."),f.spinner.warn(" Automatic reconnecting..."),setTimeout(()=>n(),3e3);return}if(g===500){f.spinner.error(" Server error occurred, attempting reconnect..."),setTimeout(()=>n(),3e3);return}typeof g=="number"&&(f.spinner.warn(` Connection marked for reconnect (${g}). Wait a moment...`),setTimeout(()=>n(),3e3));}if(r==="open")if(e.user?.id){let g=jidNormalizedUser(e.user.id).split("@")[0],b=e.user.name||e.user.verifiedName;f.spinner.success(` Connected as ${cristal(b||g)}`);}else f.spinner.success(" Connected!");f.events.emit("connection",t);}),e.ev.on("messaging-history.set",({progress:s})=>{t.status="syncing",t.syncProgress=s,f.spinner.start(" Syncing messages history..."),s&&f.spinner.update(` Syncing messages history ${s+"%"}`),s==100&&(f.spinner.success(" Syncing messages history completed!"),t.syncCompleted=true),f.events.emit("connection",t);});}};var dt={text:"text",conversation:"text",imageMessage:"image",contactMessage:"contact",locationMessage:"location",documentMessage:"document",audioMessage:"audio",videoMessage:"video",protocolMessage:"protocol",contactsArrayMessage:"contacts",highlyStructuredMessage:"highlyStructured",sendPaymentMessage:"sendPayment",liveLocationMessage:"location",requestPaymentMessage:"requestPayment",groupStatusMentionMessage:"groupStatusMention",statusMentionMessage:"statusMention",albumMessage:"album",declinePaymentRequestMessage:"declinePaymentRequest",cancelPaymentRequestMessage:"cancelPaymentRequest",templateMessage:"template",stickerMessage:"sticker",groupInviteMessage:"groupInvite",templateButtonReplyMessage:"buttons",productMessage:"product",deviceSentMessage:"deviceSent",listMessage:"lists",viewOnceMessage:"viewOnce",orderMessage:"order",listResponseMessage:"lists",ephemeralMessage:"ephemeral",invoiceMessage:"invoice",buttonsMessage:"buttons",buttonsResponseMessage:"buttons",paymentInviteMessage:"paymentInvite",interactiveMessage:"interactive",reactionMessage:"reaction",stickerSyncRmrMessage:"sticker",questionMessage:"question",nativeFlowResponseMessage:"lists",interactiveResponseMessage:"interactiveResponse",pollCreationMessage:"pollCreation",pollCreationMessageKey:"pollUpdate",pollUpdateMessage:"pollUpdate",keepInChatMessage:"keepInChat",documentWithCaptionMessage:"document",requestPhoneNumberMessage:"requestPhoneNumber",viewOnceMessageV2:"viewOnce",encReactionMessage:"reaction",editedMessage:"text",viewOnceMessageV2Extension:"viewOnce",pollCreationMessageV2:"pollCreation",scheduledCallCreationMessage:"scheduledCallCreation",groupMentionedMessage:"groupMentioned",pinInChatMessage:"pinInChat",pollCreationMessageV3:"pollCreation",scheduledCallEditMessage:"scheduledCallEdit",ptvMessage:"ptv",botInvokeMessage:"botInvoke",callLogMesssage:"callLog",encCommentMessage:"encComment",bcallMessage:"bcall",lottieStickerMessage:"lottieSticker",eventMessage:"event",commentMessage:"comment",newsletterAdminInviteMessage:"text",extendedTextMessageWithParentKey:"text",extendedTextMessage:"text",placeholderMessage:"placeholder",encEventUpdateMessage:"encEventUpdate"},je={whatsapp:"0@s.whatsapp.net",meta:"13135550002@s.whatsapp.net",chatgpt:"18002428478@s.whatsapp.net",copilot:"18772241042@s.whatsapp.net",instagram:"447723442971@s.whatsapp.net",tiktok:"6285574670498@s.whatsapp.net"};var ue=class{constructor(e){this.client=e;this.maxMessages=this.client.options.limiter?.maxMessages||20;}maxMessages;async isSpam(e){let t=Ie.get(e)||0;return t>=this.maxMessages?true:(Ie.set(e,t+1),false)}};var me=class{constructor(e){this.client=e;this.limiter=new ue(e),this.maxReplies=this.client.options?.maxReplies??3,this.initialize();}limiter;maxReplies;async initialize(){let e=d.get("socket");if(!e?.ev){console.warn("\u26A0\uFE0F [Messages] Socket or socket.ev is not available during initialization");return}e.ev.on("messages.upsert",async({messages:t,type:n})=>{try{if(n!=="notify"&&n!=="append")return;for(let o of t)try{let s=await this.parse(o);s&&(M.add(async()=>{await Promise.all([this.client.middleware.run({messages:s}),this.client.plugins.execute(this.client,{messages:s})]);},{priority:A.NORMAL,timeout:5e3}),d.set("message",s),f.events.emit("messages",s),this.client.options.autoRead&&M.add(async()=>e.readMessages([s.message().key]),{priority:A.NORMAL,timeout:5e3}));}catch{}}catch{}});}async parse(e,t){if(e?.category==="peer"||!e?.message||!e?.key?.id||e?.messageStubType||e?.messageStubParameters?.length||e.message?.protocolMessage?.peerDataOperationRequestResponseMessage)return;let n=e,o=d.get("socket"),s={},r=ae(e.message),u=r.chain.at(-1),l=r.leaf;if(l?.message&&(r=ae(l.message),u=r.chain.at(-1),l=r.leaf),s.uniqueId=null,s.channelId=null,s.chatId=e?.message?.protocolMessage?.key?.id||e?.key?.id||null,s.chatType=dt[u],!s.chatType)return;let g=re([o?.user?.id,o?.user?.lid]);s.receiverId=g.id||g.lid||"",s.receiverLid=g.lid||g.id||"",s.receiverName=D(o?.user?.name||o?.user?.verifiedName);let b=re([e?.key?.remoteJid]);s.roomId=b.id,s.roomLid=b.lid;let E=l?.type===0,x=l?.type===1,ee=l?.type===2,te=s.roomId?.includes("@newsletter"),xe=!!e?.message?.questionMessage,G=e?.key?.fromMe||false;if(G&&this.client.options.ignoreMe&&t!=="replied")return;let V=l?.key?.id;if(E||x||ee){if(!V)return;let T=await this.client.db("messages").get(V);if(!T)return;e=T,r=ae(e.message),u=r.chain.at(-1),l=r.leaf;}s.roomName=await this.client.getRoomName(s.roomId);let z=re([e?.key?.participant,e?.key?.remoteJid,e?.key?.participantAlt,e?.key?.remoteJidAlt]);if(s.senderId=z.id,s.senderLid=z.lid,s.senderName=D(e?.pushName||e?.verifiedBizName),s.senderDevice=getDevice(s.chatId||""),s.channelId=Ne([s.roomId,s.senderId]),s.uniqueId=Ne([s.channelId,s.chatId]),s.timestamp=Number(e?.messageTimestamp)*1e3,te){let T=await o.newsletterMetadata("jid",s.roomId);s.roomName=k(T.thread_metadata.name)?.text,s.senderId=null,s.senderLid=null;}G&&(s.senderLid=s.receiverLid,s.senderId=s.receiverId,s.senderName=s.receiverName),s.text=l?.text||l?.caption||l?.name||l?.displayName||l?.conversation||l?.contentText||l?.selectedDisplayText||l||null,l?.name=="menu_options"&&(s.text=Ee(l?.paramsJson)?.id),s.text=D(s.text),s.mentions=at(s.text),s.links=ot(s.text||""),s.isBot=s.chatId.startsWith("BAE5")||s.chatId.startsWith("3EB0"),s.isFromMe=G;let _=this.client.options?.prefix,J=Array.isArray(_)?_:[_];if(s.isPrefix=!!J.find(T=>s.text?.startsWith(T)),s.isTagMe=s.mentions?.includes(s.receiverId.split("@")[0])||s.mentions?.includes(s.receiverLid.split("@")[0]),s.isStatusMention=!!e?.message?.statusMentionMessage,s.isGroupStatusMention=!!e?.message?.groupStatusMentionMessage,s.isHideTags=false,!s.text?.trim()&&l?.contextInfo?.mentionedJid?.length&&(s.isHideTags=true),s.isSpam=await this.limiter.isSpam(s.channelId),s.isPrefix&&(s.text=s.text.replace(new RegExp(`^${it(J.find(T=>s.text?.startsWith(T))||"")}`),"")),s.isGroup=s.roomId?.includes("@g.us"),s.isNewsletter=te,s.isQuestion=xe,s.isStory=s.roomId?.includes("@broadcast"),!s.isGroup&&!s.roomName&&(s.roomName=s.senderName),s.isViewOnce=false,s.isEdited=!!Y(Q(r),"editedMessage"),s.isDeleted=E,s.isPinned=x,s.isUnPinned=ee,s.isBroadcast=!!e?.broadcast,s.isEphemeral=!!Y(Q(l?.contextInfo),"ephemeralSettingTimestamp"),s.isForwarded=!!Y(Q(l?.contextInfo),"forwardingScore"),s.citation=null,this.client.options.citation){s.citation=s.citation||{};let T=this.client.options.citation;for(let $ of Object.keys(T)){let j=T[$];s.citation[$]=async()=>{let w=await j();return !![W(s.roomId),W(s.senderLid),W(s.senderId)].some(P=>w.includes(P))};}}s.chatType!=="text"&&(s.media={...ct(l),buffer:()=>downloadMediaMessage(e,"buffer",{}),stream:()=>downloadMediaMessage(e,"stream",{})}),s.isStatusMention&&(s.chatType="statusMention"),s.isGroupStatusMention&&(s.chatType="groupStatusMention"),s.message=()=>n,s.replied=null;let q=l?.contextInfo?.quotedMessage,Se=Y(Q(q),"viewOnce"),ne=l?.contextInfo?.stanzaId;if(q&&this.maxReplies){if(this.maxReplies--,!ne)return s;let T=await this.client.db("messages").get(ne),$;Se?$={...T,message:q}:$=T,s.replied=await this.parse($,"replied"),s.replied&&(s.replied.isViewOnce=true),this.maxReplies=this.client.options?.maxReplies??3;}return t!="replied"&&this.client.logs.message(s),s.injection=F.getAll(),s}};var de=class{constructor(e){this.client=e;this.connection=new pe(e),this.messages=new me(e),this.calls=new ce(e),this.initialize();}connection;messages;calls;async initialize(){let e=d.get("socket");e.ev.on("groups.update",async([n])=>{M.add(async()=>{let o=await e.groupMetadata(n.id);I.set(n.id,o);},{priority:A.LOW,timeout:1e4});}),e.ev.on("group-participants.update",async n=>{M.add(async()=>{let o=await e.groupMetadata(n.id);I.set(n.id,o);},{priority:A.LOW,timeout:1e4});});let t=async(n,o)=>{for(let r=0;r<n.length;r+=500){let u=n.slice(r,r+500);await Promise.all(u.map(o));}};e?.ev.on("messaging-history.set",async n=>{let{chats:o,contacts:s,messages:r}=n;M.add(async()=>{await t(o,u=>this.client.db("chats").put(u.id,u));},{priority:A.LOW,timeout:3e4}),M.add(async()=>{await t(s,u=>this.client.db("contacts").put(u.id,u));},{priority:A.LOW,timeout:3e4}),M.add(async()=>{await t(r,u=>this.client.db("messages").put(u.key.id,u));},{priority:A.LOW,timeout:3e4});}),e?.ev.on("messages.upsert",async({messages:n})=>{M.add(async()=>{await t(n,o=>this.client.db("messages").put(o.key.id,o));},{priority:A.LOW,timeout:3e4});}),e?.ev.on("chats.upsert",async n=>{M.add(async()=>{await t(n,o=>this.client.db("chats").put(o.id,o));},{priority:A.LOW,timeout:3e4});}),e?.ev.on("contacts.upsert",async n=>{M.add(async()=>{await t(n,o=>this.client.db("contacts").put(o.id,o));},{priority:A.LOW,timeout:3e4});});}};var ft=a.object({type:a.literal("quick_reply"),id:a.string(),text:a.string()}),yt=a.object({type:a.literal("cta_url"),url:a.pipe(a.string(),a.url()),text:a.string()}),ht=a.object({type:a.literal("cta_copy"),id:a.string(),copy:a.string(),text:a.string()}),vt=a.object({type:a.literal("cta_call"),text:a.string(),phoneNumber:a.string()}),Xt=a.object({type:a.literal("single_select"),text:a.string(),section:a.array(a.object({title:a.string(),highlight_label:a.optional(a.string()),rows:a.array(a.object({id:a.string(),title:a.string(),header:a.optional(a.string()),description:a.optional(a.string())}))}))}),en=a.object({type:a.literal("interactive"),footer:a.optional(a.string()),data:a.array(a.union([ft,yt,ht,vt,Xt]))}),tn=a.object({type:a.literal("simple"),footer:a.optional(a.string()),data:a.array(a.object({id:a.string(),text:a.string()}))}),nn=a.object({body:a.string(),footer:a.optional(a.string()),header:a.optional(a.object({title:a.optional(a.string()),subtitle:a.optional(a.string()),hasMediaAttachment:a.optional(a.boolean()),image:a.optional(a.string()),video:a.optional(a.string())})),nativeFlow:a.array(a.union([ft,yt,ht,vt]))}),sn=a.object({type:a.literal("carousel"),data:a.array(nn)}),kt=a.union([tn,en,sn]);var on=a.optional(a.object({maxMessages:a.optional(a.number(),20),durationMs:a.optional(a.number(),1e4)})),rn=a.optional(a.record(a.string(),a.custom(i=>typeof i=="function"))),an=a.optional(a.object({provider:a.union([a.picklist(["whatsapp","meta","chatgpt","copilot","instagram","tiktok"]),a.number()])})),Fe=a.optional(a.picklist(["default","rounded","circle","oval"]),"default"),cn=a.optional(a.object({packageName:a.optional(a.string()),authorName:a.optional(a.string()),quality:a.optional(a.number()),shape:a.optional(Fe)})),ln=a.optional(a.object({enabled:a.optional(a.boolean(),false),intervalMs:a.optional(a.number(),3600*1e3),maxAgeMs:a.optional(a.number(),1440*60*1e3),scopes:a.optional(a.array(a.string()),["messages"])})),wt=a.object({session:a.optional(a.string(),"zaileys"),prefix:a.optional(a.union([a.string(),a.array(a.string())])),ignoreMe:a.optional(a.boolean(),true),showLogs:a.optional(a.boolean(),true),fancyLogs:a.optional(a.boolean(),false),syncFullHistory:a.optional(a.boolean(),true),disableFFmpeg:a.optional(a.boolean(),false),autoMarkAI:a.optional(a.boolean(),true),autoMentions:a.optional(a.boolean(),true),autoOnline:a.optional(a.boolean(),true),autoRead:a.optional(a.boolean(),true),autoPresence:a.optional(a.boolean(),true),autoRejectCall:a.optional(a.boolean(),true),showSpinner:a.optional(a.boolean(),true),maxReplies:a.optional(a.number(),3),deleteSessionOnLogout:a.optional(a.boolean(),false),pluginsDir:a.optional(a.string(),"plugins"),pluginsHmr:a.optional(a.boolean(),true),autoCleanUp:ln,limiter:on,citation:rn,fakeReply:an,sticker:cn}),pn=a.object({authType:a.literal("pairing"),phoneNumber:a.number()}),un=a.object({authType:a.literal("qr")}),bt=a.union([a.object({...pn.entries,...wt.entries}),a.object({...un.entries,...wt.entries})]),oi=a.picklist(["connection","messages","calls"]);var Z=a.union([a.pipe(a.string(),a.url()),a.pipe(a.string(),a.base64()),a.custom(i=>i instanceof Buffer)]),xt=a.looseObject({text:a.string()}),mn=a.looseObject({image:Z,caption:a.optional(a.string())}),dn=a.looseObject({audio:Z,caption:a.optional(a.string()),ptt:a.optional(a.boolean())}),gn=a.looseObject({video:Z,caption:a.optional(a.string()),ptv:a.optional(a.boolean())}),fn=a.looseObject({sticker:Z,shape:a.optional(Fe),caption:a.optional(a.string())}),yn=a.looseObject({document:Z,caption:a.optional(a.string()),fileName:a.optional(a.string())}),hn=a.looseObject({location:a.optional(a.object({latitude:a.number(),longitude:a.number(),url:a.optional(a.pipe(a.string(),a.url())),title:a.optional(a.string()),footer:a.optional(a.string())}))}),vn=a.looseObject({contacts:a.object({title:a.optional(a.string()),contacts:a.array(a.object({fullname:a.string(),phoneNumber:a.number(),organization:a.optional(a.string())}))})}),kn=a.object({poll:a.object({name:a.string(),answers:a.array(a.string()),isMultiple:a.optional(a.boolean(),false)})}),St=a.object({replied:a.optional(a.custom(i=>typeof i=="object"&&i!==null)),isForwardedMany:a.optional(a.boolean()),isViewOnce:a.optional(a.boolean()),banner:a.optional(a.custom(i=>typeof i=="object"&&i!==null)),buttons:a.optional(kt)});a.picklist(["forward","button","edit","delete"]);var wn=a.union([xt,mn,dn,gn,fn,yn,hn,vn,kn]),Mt=a.union([a.string(),a.intersect([wn,a.omit(St,["buttons"])])]),Tt=a.intersect([xt,a.omit(St,["banner"])]);var ge=class{toNativeSimple(e){return e.map(({id:t,text:n})=>({name:"quick_reply",buttonParamsJson:JSON.stringify({display_text:n,id:t})}))}toNativeInteractive(e){let t={quick_reply:n=>({display_text:n.text,id:n.id}),cta_url:n=>({display_text:n.text,url:n.url,merchant_url:n.url}),cta_copy:n=>({display_text:n.text,id:n.id,copy_code:n.copy}),cta_call:n=>({display_text:n.text,phone_number:n.phoneNumber}),single_select:n=>({title:n.text,sections:n.section})};return e.map(n=>({name:n.type,buttonParamsJson:JSON.stringify(t[n.type](n))}))}async build(e,t){let n=k(e).buttons,o=n?.data||[],s=n?.type;if(s==="carousel"){let u=[];for(let l of o){let g={};(l.header?.image||l.header?.video)&&(g=await prepareWAMessageMedia(l.header.image?{image:{url:l.header.image}}:{video:{url:l.header.video}},{upload:t.waUploadToServer})),u.push({body:proto.Message.InteractiveMessage.Body.fromObject({text:l.body}),footer:l.footer?proto.Message.InteractiveMessage.Footer.fromObject({text:l.footer}):void 0,header:proto.Message.InteractiveMessage.Header.fromObject({title:l.header?.title||"",subtitle:l.header?.subtitle||"",hasMediaAttachment:!!(l.header?.image||l.header?.video||l.header?.hasMediaAttachment),...g}),nativeFlowMessage:proto.Message.InteractiveMessage.NativeFlowMessage.fromObject({buttons:this.toNativeInteractive(l.nativeFlow)})});}return {body:proto.Message.InteractiveMessage.Body.fromObject({text:k(e).text}),footer:n.footer?proto.Message.InteractiveMessage.Footer.fromObject({text:n.footer}):void 0,carouselMessage:proto.Message.InteractiveMessage.CarouselMessage.fromObject({cards:u})}}let r=s=="simple"?this.toNativeSimple(o):this.toNativeInteractive(o);return {body:{text:k(e).text},footer:n.footer?{text:n.footer}:void 0,nativeFlowMessage:{buttons:r}}}async send(e,t,n){let o=d.get("socket"),s=o?.authState?.creds?.me?.id||o?.user?.id,r=await this.build(t,o),u=k(t).buttons?.type==="carousel",l=generateWAMessageFromContent(e,u?{viewOnceMessage:{message:{messageContextInfo:{deviceListMetadata:{},deviceListMetadataVersion:2},interactiveMessage:r}}}:{interactiveMessage:r},{userJid:s,messageId:generateMessageIDV2(s),...n});return await o.relayMessage(e,l.message,{messageId:l.key.id,...n,additionalNodes:[{tag:"biz",attrs:{},content:[{tag:"interactive",attrs:{type:"native_flow",v:"1"},content:[{tag:"native_flow",attrs:{v:"9",name:"mixed"}}]}]}]}),o.config?.emitOwnEvents&&!isJidGroup(e)&&process.nextTick(()=>o.upsertMessage?.(l,"append")),l}};var fe=class{constructor(e){this.client=e;}async signal(e,t,n,o){n!="delete"&&(n=="button"?t=K(Tt,t):t=K(Mt,t));let s=d.get("socket"),r={},u={},l=typeof t=="string",g=(w,C)=>typeof w=="object"&&w!==null&&C in w,b=this.client.options?.fakeReply?.provider,E=this.client.options?.autoMentions,x=this.client.options?.autoPresence,ee=g(t,"replied"),te=g(t,"banner"),xe=g(t,"isViewOnce"),G=n=="button",V=g(t,"image"),z=g(t,"video"),_=g(t,"audio"),J=g(t,"sticker"),q=g(t,"document"),Se=g(t,"location"),ne=g(t,"contacts"),T=g(t,"poll"),$=V||z||_||J||q,j=l?t:We([t],["text","caption"]);if(x&&(_?await s.sendPresenceUpdate("recording",e):await s.sendPresenceUpdate("composing",e)),E&&(r={...r,mentions:$e(j),contextInfo:{mentionedJid:$e(j)}}),ee&&(u.quoted=k(t).replied,b&&(u.quoted.key.remoteJid=je[b],u.quoted.key.participant=je[b])),te&&(r={...r,contextInfo:{externalAdReply:k(t).banner}},r.contextInfo.externalAdReply.mediaType=1),xe&&(r={...r,viewOnce:k(t)?.isViewOnce}),j&&(r={...r,text:j,caption:j},$&&delete k(r).text),$){let w=We([t],["image","video","audio","sticker","document"]);if(V&&(r={...r,image:await new Media(w).image.toJpeg(),jpegThumbnail:await new Media(w).thumbnail.get()}),z){let C=k(t)?.ptv;r={...r,video:await new Media(w).video.toMp4(),ptv:C,jpegThumbnail:await new Media(w).thumbnail.get()};}if(_){let C=k(t)?.ptt;r={...r,audio:await new Media(w).audio.toOpus(),ptt:C,mimetype:C?"audio/ogg; codecs=opus":"audio/mpeg"};}if(J){let C=k(t)?.shape;r={...r,sticker:await new Media(w).sticker.create({...this.client.options?.sticker,shape:C})};}if(q){let C=await new Media(w).document.create(),P=k(t).fileName||`Document_${C.fileName.slice(-6)}`,Me=P.includes(".")?P.substring(0,P.lastIndexOf(".")):P;r={...r,...C,fileName:`${Me}.${C.ext} - Zaileys`};}}if(Se){let w=k(t).location;r={...r,location:{degreesLatitude:w.latitude,degreesLongitude:w.longitude,url:w.url,address:w.footer,name:w.title}};}if(ne){let w=k(t)?.contacts,C=w?.contacts.map(P=>{let Me=["BEGIN:VCARD","VERSION:3.0",`FN:${P.fullname}`,`ORG:${P.organization||""}`,`TEL;type=CELL;type=VOICE;waid=${P.phoneNumber}:${P.phoneNumber}`,"END:VCARD"].join(`
6
6
  `);return {displayName:P.fullname,vcard:Me}});r={...r,contacts:{displayName:w?.title,contacts:C}};}if(T){let w=k(t)?.poll;r={...r,poll:{name:w.name,values:w.answers,selectableCount:w.isMultiple?1:0,toAnnouncementGroup:true}};}return n=="forward"&&(r={...r,contextInfo:{...k(r).contextInfo,isForwarded:true,forwardingScore:k(t).isForwardedMany?9999:1}}),n=="edit"&&(r={...r,edit:o?.key},await s.sendPresenceUpdate("paused",e)),n=="delete"&&(r={...r,delete:o?.key},await s.sendPresenceUpdate("paused",e)),G?await new ge().send(e,t,u):await s.sendMessage(e,k(r),u)}async send(e,t){return await this.signal(e,t)}async forward(e,t){return await this.signal(e,t,"forward")}async button(e,t){return await this.signal(e,t,"button")}async edit(e,t){return await this.signal(e.key.remoteJid,t,"edit",e)}async delete(e){return Array.isArray(e)?Promise.all(e.map(t=>this.signal(t.key.remoteJid,{},"delete",t))):await this.signal(e.key.remoteJid,{},"delete",e)}async presence(e,t){let n=d.get("socket"),o={typing:"composing",recording:"recording",online:"available",offline:"unavailable",paused:"paused"};return await n.sendPresenceUpdate(o[t],e)}async reaction(e,t){return await d.get("socket").sendMessage(e.key.remoteJid,{react:{text:t,key:e?.key}})}async memberLabel(e,t){return await d.get("socket").relayMessage(e,{protocolMessage:{type:30,memberLabel:{label:t,labelTimestamp:Date.now()}}},{})}};var Le=class{constructor(e){this.client=e;}async create(e,t){return await d.get("socket").communityCreate(e,t)}async createGroup(e,t,n){return await d.get("socket").communityCreateGroup(e,t,n)}async leave(e){return await d.get("socket").communityLeave(e)}async metadata(e){return await d.get("socket").communityMetadata(e)}async update(e,t,n){let o=d.get("socket");switch(t){case "subject":return await o.communityUpdateSubject(e,n);case "description":return await o.communityUpdateDescription(e,n)}}async group(e,t,n){let o=d.get("socket");switch(t){case "link":if(!n)throw "Group JID is required for linking";return await o.communityLinkGroup(e,n);case "unlink":if(!n)throw "Group JID is required for unlinking";return await o.communityUnlinkGroup(e,n);case "linked":return await o.communityFetchLinkedGroups(e)}}async participants(e,t,n,o){let s=d.get("socket");switch(t){case "list":return await s.communityRequestParticipantsList(e);case "request-update":return await s.communityRequestParticipantsUpdate(e,o,k(n));case "update":if(!n||!o)throw "Action and participants are required for update";return await s.communityParticipantsUpdate(e,o,k(n));case "all":return await s.communityFetchAllParticipating()}}async invite(e,t,...n){let o=d.get("socket");switch(t){case "code":return await o.communityInviteCode(e);case "revoke":return await o.communityRevokeInvite(e);case "accept":return await o.communityAcceptInvite(e);case "info":return await o.communityGetInviteInfo(e);case "revokeV4":return await o.communityRevokeInviteV4(e,n[0]);case "acceptV4":return await o.communityAcceptInviteV4(e,n[0])}}async settings(e,t,n){let o=d.get("socket");switch(t){case "ephemeral":return await o.communityToggleEphemeral(e,n);case "update":return await o.communitySettingUpdate(e,n);case "memberAdd":return await o.communityMemberAddMode(e,n);case "approval":return await o.communityJoinApprovalMode(e,n)}}},ye=class{constructor(e){this.mlient=e;this.community=new Le(e);}community};var Ue=class{constructor(e){this.client=e;}async create(e,t){return await d.get("socket").groupCreate(e,t)}async participant(e,t,n){return await d.get("socket").groupParticipantsUpdate(e,t,n)}async profile(e,t,n){let o=d.get("socket"),s=Buffer.isBuffer(t);switch(n){case "subject":if(!s)return await o.groupUpdateSubject(e,t);case "description":if(!s)return await o.groupUpdateDescription(e,t);case "picture":return await o.updateProfilePicture(e,await new Media(t).toBuffer())}}async setting(e,t){let n=d.get("socket");switch(t){case "open":return await n.groupSettingUpdate(e,"not_announcement");case "close":return await n.groupSettingUpdate(e,"announcement");case "locked":return await n.groupSettingUpdate(e,t);case "unlocked":return await n.groupSettingUpdate(e,t);case "all_member_add":return await n.groupMemberAddMode(e,t);case "admin_add":return await n.groupMemberAddMode(e,t)}}async leave(e){return await d.get("socket").groupLeave(e)}async inviteCode(e,t){let n=d.get("socket");switch(t){case "code":return await n.groupInviteCode(e);case "revoke":return await n.groupRevokeInvite(e);case "accept":return await n.groupAcceptInvite(e);case "info":return await n.groupGetInviteInfo(e)}}async metadata(e){let t=d.get("socket"),n=I.get(e);if(n)return n;let o=await t.groupMetadata(e);return o&&I.set(e,o),o}async requestJoin(e,t,n){let o=d.get("socket");switch(n){case "approve":return await o.groupRequestParticipantsUpdate(e,t,n);case "reject":return await o.groupRequestParticipantsUpdate(e,t,n)}}async requestJoinList(e){return await d.get("socket").groupRequestParticipantsList(e)}async fetchAllGroups(){return await d.get("socket").groupFetchAllParticipating()}async ephemeral(e,t){let n=d.get("socket"),o={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await n.groupToggleEphemeral(e,o[t])}},he=class{constructor(e){this.glient=e;this.group=new Ue(e);}group};var Be=class{constructor(e){this.client=e;}async create(e,t){return await d.get("socket").newsletterCreate(e,t)}async action(e,t){let n=d.get("socket");switch(t){case "follow":return await n.newsletterFollow(e);case "unfollow":return await n.newsletterUnfollow(e);case "mute":return await n.newsletterMute(e);case "unmute":return await n.newsletterUnmute(e);}}async update(e,t,n){let o=d.get("socket"),s=Buffer.isBuffer(t);switch(n){case "name":if(!s)return await o.newsletterUpdateName(e,t);case "description":if(!s)return await o.newsletterUpdateDescription(e,t);case "picture":return await o.newsletterUpdatePicture(e,await new Media(t).toBuffer())}}async metadata(e,t){return await d.get("socket").newsletterMetadata(t,e)}async subscribers(e){return await d.get("socket").newsletterSubscribers(e)}async reaction(e,t,n){return await d.get("socket").newsletterReactMessage(e,t,n)}async fetchMessages(e,t,n,o){let s=d.get("socket"),r=n.getTime()/1e3,u=o.getTime()/1e3;return await s.newsletterFetchMessages(e,t,r,u)}async adminCount(e){return await d.get("socket").newsletterAdminCount(e)}async changeOwner(e,t){return await d.get("socket").newsletterChangeOwner(e,t)}async demote(e,t){return await d.get("socket").newsletterDemote(e,t)}async delete(e){return await d.get("socket").newsletterDelete(e)}async removePicture(e){return await d.get("socket").newsletterRemovePicture(e)}},ve=class{constructor(e){this.nlient=e;this.newsletter=new Be(e);}newsletter};var qe=class{constructor(e){this.client=e;}async block(e){return await d.get("socket").updateBlockStatus(e,"block")}async unblock(e){return await d.get("socket").updateBlockStatus(e,"unblock")}async lastSeen(e){return await d.get("socket").updateLastSeenPrivacy(e)}async online(e){return await d.get("socket").updateOnlinePrivacy(e)}async picture(e){return await d.get("socket").updateProfilePicturePrivacy(e)}async status(e){return await d.get("socket").updateStatusPrivacy(e)}async readReceipt(e){return await d.get("socket").updateReadReceiptsPrivacy(e)}async groupsAdd(e){return await d.get("socket").updateGroupsAddPrivacy(e)}async ephemeral(e){let t=d.get("socket"),n={off:0,"24h":86400,"7d":604800,"90d":7776e3};return await t.updateDefaultDisappearingMode(n[e])}async blocklist(){return await d.get("socket").fetchBlocklist()}async getSettings(){return await d.get("socket").fetchPrivacySettings(true)}},ke=class{constructor(e){this.plient=e;this.privacy=new qe(e);}privacy};var Vi=a.object({status:a.picklist(["connecting","open","close","reload","syncing"]),authType:a.picklist(["pairing","qr"]),authTimeout:a.optional(a.number()),syncProgress:a.optional(a.number()),syncCompleted:a.optional(a.boolean(),false),qr:a.optional(a.string()),code:a.optional(a.string())});var An=a.picklist(["unknown","android","ios","desktop","web"]),Rn=a.picklist(["text","album","image","contact","location","document","audio","video","protocol","contacts","highlyStructured","sendPayment","requestPayment","groupStatusMention","statusMention","declinePaymentRequest","cancelPaymentRequest","template","sticker","groupInvite","product","deviceSent","lists","viewOnce","order","ephemeral","invoice","buttons","paymentInvite","interactive","reaction","interactiveResponse","pollCreation","pollUpdate","keepInChat","requestPhoneNumber","scheduledCallCreation","groupMentioned","pinInChat","scheduledCallEdit","ptv","botInvoke","callLog","encComment","bcall","lottieSticker","event","comment","placeholder","encEventUpdate"]),Ct=a.object({channelId:a.string(),uniqueId:a.string(),chatId:a.string(),chatType:Rn,receiverLid:a.string(),receiverId:a.string(),receiverName:a.string(),roomId:a.string(),roomLid:a.nullable(a.string()),roomName:a.nullable(a.string()),senderLid:a.string(),senderId:a.string(),senderName:a.string(),senderDevice:An,timestamp:a.number(),text:a.nullable(a.string()),mentions:a.array(a.string()),links:a.array(a.string()),isBot:a.boolean(),isFromMe:a.boolean(),isPrefix:a.boolean(),isSpam:a.boolean(),isTagMe:a.boolean(),isStatusMention:a.boolean(),isGroupStatusMention:a.boolean(),isHideTags:a.boolean(),isGroup:a.boolean(),isNewsletter:a.boolean(),isQuestion:a.boolean(),isStory:a.boolean(),isViewOnce:a.boolean(),isEdited:a.boolean(),isDeleted:a.boolean(),isPinned:a.boolean(),isUnPinned:a.boolean(),isBroadcast:a.boolean(),isEphemeral:a.boolean(),isForwarded:a.boolean(),citation:a.nullable(a.record(a.string(),a.custom(i=>typeof i=="function"))),media:a.nullable(a.looseObject({buffer:a.custom(i=>typeof i=="function"),stream:a.custom(i=>typeof i=="function")})),injection:a.optional(a.record(a.string(),a.any()),{}),message:a.custom(i=>typeof i=="function")}),Hi=a.object({...Ct.entries,replied:a.nullable(Ct)});var Yi=a.object({callId:a.string(),callerId:a.string(),roomId:a.string(),roomName:a.string(),date:a.date(),offline:a.boolean(),status:a.picklist(["accept","offer","reject","ringing","terminate","timeout"]),isVideo:a.boolean(),isGroup:a.boolean()});var we=class{constructor(e){this.client=e;this.initialize();}logsInitialized=false;logsDisplayed=false;isReady=false;getRoomColor(e){return e?.isNewsletter?"blue":e?.isGroup?e?.isGroup?"lime":"dimgray":"orange"}initialize(){if(!this.client.options.showLogs||this.logsInitialized)return;this.logsInitialized=true;let e=async({status:t})=>{t==="open"&&(this.isReady=true,this.logsDisplayed||setTimeout(()=>{this.displayIndicator();},500));};f.events.on("connection",e);}displayIndicator(){this.logsDisplayed||(this.logsDisplayed=true,console.log(),f.spinner.info("Logs Indicator:"),console.log(y(" \u2022","orange")+" Private Chat"),console.log(y(" \u2022","lime")+" Group Chat"),console.log(y(" \u2022","blue")+" Newsletter Chat"),console.log());}message(e){if(!this.isReady)return;let t=k(this.getRoomColor(e)),n=e?.text?.toLowerCase()?.match("zaileys"),o=this.client.options?.fancyLogs,s=y(`[${new Date(e?.timestamp).toTimeString().split(" ")[0]}]`,"dimgray"),r=y(`${e?.roomName}`,t),u=e?.text?.slice(0,300)||"",l=u?.length>=300?"...":"";if(o){let g=y("\u2501".repeat(50),"dimgray"),b=y("\u2192","dimgray"),E=y("\u2022",t),x=`
@@ -31,7 +31,7 @@ ${g}
31
31
  * See LICENSE file for details.
32
32
 
33
33
  * Author: zaadevofc
34
- * Last build time: 3/17/2026 11:53:16 AM
34
+ * Last build time: 3/17/2026 11:58:22 AM
35
35
  *
36
36
  * Repository: git+https://github.com/zeative/zaileys.git
37
37
  */export{Ct as BaseMessagesType,nn as ButtonCarouselCardType,sn as ButtonCarouselType,vt as ButtonInteractiveCallType,ht as ButtonInteractiveCopyType,ft as ButtonInteractiveReplyType,Xt as ButtonInteractiveSingleSelectType,en as ButtonInteractiveType,yt as ButtonInteractiveUrlType,tn as ButtonSimpleType,kt as ButtonType,rn as CitationType,At as Client,pn as ClientAuthPairingType,un as ClientAuthQRType,wt as ClientBaseType,bt as ClientOptionsType,cn as ClientStickerOptionsType,Fe as ClientStickerShapeType,An as DEVICE_ENUM_TYPES,oi as EventEnumType,an as FakeReplyType,on as LimiterType,Yi as ListenerCallsType,Vi as ListenerConnectionType,Hi as ListenerMessagesType,Rn as MESSAGE_ENUM_TYPES,X as Plugins,ln as autoCleanUp,W as cleanJid,ct as cleanMediaObject,fr as definePlugins,it as escapeRegExp,$e as extractJids,ot as extractUrls,Y as findGlobalWord,Ls as findNestedByKeys,Ne as generateId,ae as getDeepContent,lt as getLatestLibVersion,at as getUsersMentions,k as ignoreLint,y as logColor,Us as modifyFn,D as normalizeText,zs as numbersToJids,We as pickKeysFromArray,Fs as randomize,Xe as registerAuthCreds,De as removeAuthCreds,re as resolveJids,js as shuffleString,Ee as toJson,Q as toString,Qe as useAuthState};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "zaileys",
3
3
  "description": "Zaileys - Simplified WhatsApp Node.js TypeScript/JavaScript API",
4
- "version": "3.0.0",
4
+ "version": "3.0.1",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.mjs",
@@ -1,226 +0,0 @@
1
- ---
2
- name: GSD Codebase Mapper
3
- description: Analyzes existing codebases to understand structure, patterns, and technical debt
4
- ---
5
-
6
- # GSD Codebase Mapper Agent
7
-
8
- <role>
9
- You are a GSD codebase mapper. You analyze existing codebases to produce documentation that enables informed planning.
10
-
11
- **Core responsibilities:**
12
- - Scan and understand project structure
13
- - Identify patterns and conventions
14
- - Map dependencies and integrations
15
- - Surface technical debt
16
- - Produce ARCHITECTURE.md and STACK.md
17
- </role>
18
-
19
- ## Analysis Domains
20
-
21
- ### 1. Structure Analysis
22
- Understand how the project is organized:
23
- - Source directories and their purposes
24
- - Entry points (main files, index files)
25
- - Test locations and patterns
26
- - Configuration locations
27
- - Asset directories
28
-
29
- ### 2. Dependency Analysis
30
- Map what the project depends on:
31
- - Runtime dependencies (production)
32
- - Development dependencies
33
- - Peer dependencies
34
- - Outdated packages
35
- - Security vulnerabilities
36
-
37
- ### 3. Pattern Analysis
38
- Identify how code is written:
39
- - Naming conventions
40
- - File organization patterns
41
- - Error handling approaches
42
- - State management patterns
43
- - API patterns
44
-
45
- ### 4. Integration Analysis
46
- Map external connections:
47
- - APIs consumed
48
- - Databases used
49
- - Third-party services
50
- - Environment dependencies
51
-
52
- ### 5. Technical Debt Analysis
53
- Surface issues to address:
54
- - TODOs and FIXMEs
55
- - Deprecated code
56
- - Missing tests
57
- - Inconsistent patterns
58
- - Known vulnerabilities
59
-
60
- ---
61
-
62
- ## Scanning Process
63
-
64
- ### Phase 1: Project Type Detection
65
-
66
- Identify project type from markers:
67
- ```powershell
68
- # Node.js/JavaScript
69
- Test-Path "package.json"
70
-
71
- # Python
72
- Test-Path "requirements.txt" -or Test-Path "pyproject.toml"
73
-
74
- # Rust
75
- Test-Path "Cargo.toml"
76
-
77
- # Go
78
- Test-Path "go.mod"
79
-
80
- # .NET
81
- Get-ChildItem "*.csproj"
82
- ```
83
-
84
- ### Phase 2: Structure Scan
85
-
86
- ```powershell
87
- # Get directory structure
88
- Get-ChildItem -Recurse -Directory |
89
- Where-Object { $_.Name -notmatch "node_modules|\.git|__pycache__|dist|build|\.next" } |
90
- Select-Object FullName
91
- ```
92
-
93
- ### Phase 3: Dependency Extraction
94
-
95
- For each ecosystem:
96
-
97
- **Node.js:**
98
- ```powershell
99
- $pkg = Get-Content "package.json" | ConvertFrom-Json
100
- $pkg.dependencies
101
- $pkg.devDependencies
102
- ```
103
-
104
- **Python:**
105
- ```powershell
106
- Get-Content "requirements.txt"
107
- ```
108
-
109
- ### Phase 4: Pattern Discovery
110
-
111
- Search for common patterns:
112
- ```powershell
113
- # Components
114
- Get-ChildItem -Recurse -Include "*.tsx","*.jsx" | Select-Object Name
115
-
116
- # API routes
117
- Get-ChildItem -Recurse -Path "**/api/**" -Include "*.ts","*.js"
118
-
119
- # Models/schemas
120
- Select-String -Path "**/*.ts" -Pattern "interface|type|schema"
121
- ```
122
-
123
- ### Phase 5: Debt Discovery
124
-
125
- ```powershell
126
- # TODOs
127
- Select-String -Path "src/**/*" -Pattern "TODO|FIXME|HACK|XXX"
128
-
129
- # Deprecated
130
- Select-String -Path "**/*" -Pattern "@deprecated|DEPRECATED"
131
-
132
- # Console statements (often debug leftovers)
133
- Select-String -Path "src/**/*" -Pattern "console\.(log|debug|warn)"
134
- ```
135
-
136
- ---
137
-
138
- ## Output Format
139
-
140
- ### ARCHITECTURE.md
141
-
142
- ```markdown
143
- # Architecture
144
-
145
- > Generated by /map on {date}
146
-
147
- ## Overview
148
- {High-level system description}
149
-
150
- ## System Diagram
151
- ```
152
- {ASCII or description of component relationships}
153
- ```
154
-
155
- ## Components
156
-
157
- ### {Component Name}
158
- - **Purpose:** {what it does}
159
- - **Location:** `{path}`
160
- - **Dependencies:** {what it imports}
161
- - **Dependents:** {what imports it}
162
-
163
- ## Data Flow
164
- {How data moves through the system}
165
-
166
- ## Integration Points
167
- | External Service | Type | Purpose |
168
- |------------------|------|---------|
169
- | {service} | {API/DB/etc} | {purpose} |
170
-
171
- ## Conventions
172
- - **Naming:** {patterns}
173
- - **Structure:** {organization}
174
- - **Testing:** {approach}
175
-
176
- ## Technical Debt
177
- - [ ] {Debt item with location}
178
- ```
179
-
180
- ### STACK.md
181
-
182
- ```markdown
183
- # Technology Stack
184
-
185
- > Generated by /map on {date}
186
-
187
- ## Runtime
188
- | Technology | Version | Purpose |
189
- |------------|---------|---------|
190
- | {tech} | {version} | {purpose} |
191
-
192
- ## Production Dependencies
193
- | Package | Version | Purpose |
194
- |---------|---------|---------|
195
- | {pkg} | {version} | {purpose} |
196
-
197
- ## Development Dependencies
198
- | Package | Version | Purpose |
199
- |---------|---------|---------|
200
- | {pkg} | {version} | {purpose} |
201
-
202
- ## Infrastructure
203
- | Service | Provider | Purpose |
204
- |---------|----------|---------|
205
- | {svc} | {provider} | {purpose} |
206
-
207
- ## Configuration
208
- | Variable | Purpose | Required |
209
- |----------|---------|----------|
210
- | {var} | {purpose} | {yes/no} |
211
- ```
212
-
213
- ---
214
-
215
- ## Checklist
216
-
217
- Before Completing Map:
218
- - [ ] Project type identified
219
- - [ ] All source directories documented
220
- - [ ] Entry points found
221
- - [ ] Dependencies extracted and categorized
222
- - [ ] Key patterns identified
223
- - [ ] Integrations mapped
224
- - [ ] Technical debt surfaced
225
- - [ ] ARCHITECTURE.md created
226
- - [ ] STACK.md created