commandkit 1.0.0-dev.20250529020123 → 1.0.0-dev.20250529125116

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 (89) hide show
  1. package/dist/CommandKit.js +4 -4
  2. package/dist/CommandKit.js.map +1 -1
  3. package/dist/app/commands/AppCommandRunner.js +2 -2
  4. package/dist/app/commands/AppCommandRunner.js.map +1 -1
  5. package/dist/app/commands/Context.js +2 -2
  6. package/dist/app/commands/Context.js.map +1 -1
  7. package/dist/app/handlers/AppCommandHandler.js +3 -3
  8. package/dist/app/handlers/AppCommandHandler.js.map +1 -1
  9. package/dist/app/handlers/AppEventsHandler.js +2 -2
  10. package/dist/app/handlers/AppEventsHandler.js.map +1 -1
  11. package/dist/app/index.js +3 -3
  12. package/dist/app/index.js.map +1 -1
  13. package/dist/app/register/CommandRegistrar.js +2 -2
  14. package/dist/app/register/CommandRegistrar.js.map +1 -1
  15. package/dist/cli/app-process.js +2 -2
  16. package/dist/cli/app-process.js.map +1 -1
  17. package/dist/cli/build.js +2 -2
  18. package/dist/cli/build.js.map +1 -1
  19. package/dist/cli/common.js +4 -4
  20. package/dist/cli/common.js.map +1 -1
  21. package/dist/cli/development.js +8 -8
  22. package/dist/cli/development.js.map +1 -1
  23. package/dist/cli/generators.js +4 -4
  24. package/dist/cli/generators.js.map +1 -1
  25. package/dist/cli/information.js +1 -1
  26. package/dist/cli/information.js.map +1 -1
  27. package/dist/cli/init.js +15 -15
  28. package/dist/cli/init.js.map +1 -1
  29. package/dist/cli/production.js +9 -9
  30. package/dist/cli/production.js.map +1 -1
  31. package/dist/cli/type-checker.js +2 -2
  32. package/dist/cli/type-checker.js.map +1 -1
  33. package/dist/components/index.js +4 -4
  34. package/dist/components/index.js.map +1 -1
  35. package/dist/components/v1/button/Button.js +4 -4
  36. package/dist/components/v1/button/Button.js.map +1 -1
  37. package/dist/components/v1/button/ButtonKit.js +4 -4
  38. package/dist/components/v1/button/ButtonKit.js.map +1 -1
  39. package/dist/components/v1/modal/Modal.js +4 -4
  40. package/dist/components/v1/modal/Modal.js.map +1 -1
  41. package/dist/components/v1/modal/ModalKit.js +4 -4
  42. package/dist/components/v1/modal/ModalKit.js.map +1 -1
  43. package/dist/components/v1/select-menu/ChannelSelectMenuKit.js +4 -4
  44. package/dist/components/v1/select-menu/ChannelSelectMenuKit.js.map +1 -1
  45. package/dist/components/v1/select-menu/MentionableSelectMenuKit.js +4 -4
  46. package/dist/components/v1/select-menu/MentionableSelectMenuKit.js.map +1 -1
  47. package/dist/components/v1/select-menu/RoleSelectMenuKit.js +4 -4
  48. package/dist/components/v1/select-menu/RoleSelectMenuKit.js.map +1 -1
  49. package/dist/components/v1/select-menu/SelectMenu.js +4 -4
  50. package/dist/components/v1/select-menu/SelectMenu.js.map +1 -1
  51. package/dist/components/v1/select-menu/StringSelectMenuKit.js +4 -4
  52. package/dist/components/v1/select-menu/StringSelectMenuKit.js.map +1 -1
  53. package/dist/components/v1/select-menu/UserSelectMenuKit.js +4 -4
  54. package/dist/components/v1/select-menu/UserSelectMenuKit.js.map +1 -1
  55. package/dist/config/config.js +2 -2
  56. package/dist/config/config.js.map +1 -1
  57. package/dist/config/default.js +2 -2
  58. package/dist/config/default.js.map +1 -1
  59. package/dist/config/loader.js +4 -4
  60. package/dist/config/loader.js.map +1 -1
  61. package/dist/context/async-context.js +4 -4
  62. package/dist/context/async-context.js.map +1 -1
  63. package/dist/context/environment.js +2 -2
  64. package/dist/context/environment.js.map +1 -1
  65. package/dist/flags/feature-flags.js +6 -6
  66. package/dist/flags/feature-flags.js.map +1 -1
  67. package/dist/index.js +4 -4
  68. package/dist/index.js.map +1 -1
  69. package/dist/logger/DefaultLogger.js +2 -2
  70. package/dist/logger/DefaultLogger.js.map +1 -1
  71. package/dist/logger/Logger.js +2 -2
  72. package/dist/logger/Logger.js.map +1 -1
  73. package/dist/plugins/index.js +2 -2
  74. package/dist/plugins/index.js.map +1 -1
  75. package/dist/plugins/plugin-runtime/CommandKitPluginRuntime.js +1 -1
  76. package/dist/plugins/plugin-runtime/CommandKitPluginRuntime.js.map +1 -1
  77. package/dist/plugins/plugin-runtime/CompilerPluginRuntime.js +1 -1
  78. package/dist/plugins/plugin-runtime/CompilerPluginRuntime.js.map +1 -1
  79. package/dist/plugins/plugin-runtime/builtin/CommonDirectiveTransformer.js +2 -2
  80. package/dist/plugins/plugin-runtime/builtin/CommonDirectiveTransformer.js.map +1 -1
  81. package/dist/plugins/plugin-runtime/builtin/MacroPlugin.js +2 -2
  82. package/dist/plugins/plugin-runtime/builtin/MacroPlugin.js.map +1 -1
  83. package/dist/utils/dev-hooks.js +1 -1
  84. package/dist/utils/dev-hooks.js.map +1 -1
  85. package/dist/utils/utilities.js +1 -1
  86. package/dist/utils/utilities.js.map +1 -1
  87. package/dist/version.js +1 -1
  88. package/dist/version.js.map +1 -1
  89. package/package.json +2 -2
@@ -1,16 +1,16 @@
1
- "use strict";var Pn=Object.create;var q=Object.defineProperty;var Kn=Object.getOwnPropertyDescriptor;var Dn=Object.getOwnPropertyNames;var Tn=Object.getPrototypeOf,kn=Object.prototype.hasOwnProperty;var It=o=>{throw TypeError(o)};var An=(o,e,t)=>e in o?q(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var i=(o,e)=>q(o,"name",{value:e,configurable:!0});var Bn=(o,e)=>{for(var t in e)q(o,t,{get:e[t],enumerable:!0})},St=(o,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Dn(e))!kn.call(o,r)&&r!==t&&q(o,r,{get:()=>e[r],enumerable:!(n=Kn(e,r))||n.enumerable});return o};var j=(o,e,t)=>(t=o!=null?Pn(Tn(o)):{},St(e||!o||!o.__esModule?q(t,"default",{value:o,enumerable:!0}):t,o)),On=o=>St(q({},"__esModule",{value:!0}),o);var x=(o,e,t)=>An(o,typeof e!="symbol"?e+"":e,t),Ue=(o,e,t)=>e.has(o)||It("Cannot "+t);var p=(o,e,t)=>(Ue(o,e,"read from private field"),t?t.call(o):e.get(o)),E=(o,e,t)=>e.has(o)?It("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(o):e.set(o,t),P=(o,e,t,n)=>(Ue(o,e,"write to private field"),n?n.call(o,t):e.set(o,t),t),S=(o,e,t)=>(Ue(o,e,"access private method"),t);var fr={};Bn(fr,{FeatureFlag:()=>$e,flag:()=>pr});module.exports=On(fr);var Mn=require("async_hooks");var gn=j(require("events"));var Rt=require("picocolors"),h=(0,Rt.createColors)(!0);var Ln=require("discord.js");var He=require("discord.js");var Fn=require("discord.js");var Pt=require("discord.js");var Ge=require("discord.js");var Kt=require("discord.js");var Dt=require("discord.js");var Tt=require("discord.js");var kt=require("discord.js");var At=require("discord.js");var $n=require("discord.js");var W=require("discord.js");var Nn=require("discord.js");var Ot=require("discord.js");var ce=require("discord.js");var Un=require("discord.js");var Hn=require("discord.js");var Lt=new Set;function Gn(o,e="CommandKitWarning"){process.emitWarning(o,{code:e})}i(Gn,"emitWarning");function je(o){Lt.has(o)||(Lt.add(o),Gn(`${o} is unstable and may change in future versions.`,"CommandKitUnstableWarning"))}i(je,"warnUnstable");function Ft(o){return je("CommandKit JSX"),Array.isArray(o.children)?o.children.flat():[o.children]}i(Ft,"Fragment");function $t(o,e,...t){return je("CommandKit JSX"),o({...e,children:e.children??t})}i($t,"createElement");var ue,Nt,We=class We{constructor(e){this.client=e;E(this,ue);x(this,"subscribers",new Map);x(this,"globalHandlers",new Map);x(this,"cleanupTimer",null);S(this,ue,Nt).call(this)}destroy(){this.cleanupTimer&&(clearInterval(this.cleanupTimer),this.cleanupTimer=null);for(let[e,t]of this.subscribers)for(let n of t)this.unsubscribe(e,n,"destroy");this.subscribers.clear(),this.globalHandlers.clear()}hasSubscribers(e){return this.subscribers.has(e)}getSubscriberCount(e){let t=this.subscribers.get(e);return(t==null?void 0:t.size)??0}hasGlobalHandlers(){return this.globalHandlers.size>0}getGlobalHandlersCount(){return this.subscribers.size}subscribe(e,t,n){return this.subscribers.has(e)||(this.subscribers.set(e,new Set),this.client.on(e,this.createGlobalHandler(e)),this.client.setMaxListeners(this.client.getMaxListeners()+1)),n??={},n.registeredAt=Date.now(),Reflect.set(t,"options",n),this.subscribers.get(e).add(t),()=>{this.unsubscribe(e,t)}}unsubscribe(e,t,n){var s,a;let r=this.subscribers.get(e);r&&(r.delete(t),r.size<1&&(this.subscribers.delete(e),this.client.removeListener(e,this.globalHandlers.get(e)),this.globalHandlers.delete(e),this.client.setMaxListeners(Math.max(this.client.getMaxListeners()-1,0))),(a=(s=Reflect.get(t,"options")).onEnd)==null||a.call(s,n??"unsubscribe"))}createGlobalHandler(e){if(this.globalHandlers.has(e))return this.globalHandlers.get(e);let t=i(async(...n)=>{let r=this.subscribers.get(e);if(r&&r.size>0)for(let s of r){let a=Reflect.get(s,"options");if(a.time&&Date.now()-a.registeredAt>a.time){this.unsubscribe(e,s,"time");continue}if(a.autoReset&&(a.registeredAt=Date.now()),!(a.filter&&!await a.filter(...n)))try{await s(...n)}catch(l){if(a.onError)await a.onError(l);else throw l}finally{a.once&&this.unsubscribe(e,s,"once")}}},"handler");return this.globalHandlers.set(e,t),t}};ue=new WeakSet,Nt=i(function(){this.cleanupTimer&&clearInterval(this.cleanupTimer),this.cleanupTimer=setInterval(()=>{for(let[e,t]of this.subscribers)for(let n of t){let r=Reflect.get(n,"options");r.time&&Date.now()-r.registeredAt>r.time&&this.unsubscribe(e,n,"time")}},6e4).unref()},"#cleanupLoop"),i(We,"EventInterceptor");var me=We;var Le=require("discord.js");var Ze=require("fs"),et=require("path");var ra=Symbol("kCommandKitCacheTag"),O=process.env.COMMANDKIT_IS_DEV==="true",oa=process.env.COMMANDKIT_IS_TEST==="true",ia=process.env.COMMANDKIT_BOOTSTRAP_MODE||"development",de={ReloadCommands:"reload-commands",ReloadEvents:"reload-events",Unknown:"unknown"};var Ut=require("crypto");var Ve=class Ve{constructor(e){this.options=e}id=(0,Ut.randomUUID)();loadedAt=Date.now();async activate(e){}async deactivate(e){}};i(Ve,"PluginCommon");var J=Ve;function _e(o){return o instanceof J}i(_e,"isPlugin");var qe=class qe extends J{type="compiler";async transform(e){return null}async resolve(e){return null}async onBuildStart(){}async onBuildEnd(){}};i(qe,"CompilerPlugin");var Y=qe;function Ht(o){return _e(o)&&o.type==="runtime"}i(Ht,"isRuntimePlugin");var Gt=require("discord.js");var v={ExitMiddleware:Symbol("kExitMiddleware"),ForwardedCommand:Symbol("kForwardedCommand"),InvalidCommandPrefix:Symbol("kInvalidCommandPrefix"),PluginCaptureHandle:Symbol("kPluginCaptureHandle")};function _(o){let e=new Error;return Reflect.set(e,"code",o),e}i(_,"createCommandKitError");function pe(o){if(!(o instanceof Error))return!1;let e=Reflect.get(o,"code");for(let t in v)if(v[t]===e)return!0;return!1}i(pe,"isCommandKitError");function F(o,e){if(!pe(o))return!1;let t=Reflect.get(o,"code");return t?Array.isArray(e)?e.includes(t):t===e:!1}i(F,"isErrorType");var Wn={autocomplete:"Autocomplete",messageContextMenu:"MessageContextMenu",userContextMenu:"UserContextMenu",chatInput:"ChatInputCommand",message:"Message"},_n={0:h.blue,1:h.green,2:h.yellow,3:h.red,4:h.white},Vn={0:h.bgBlue,1:h.bgGreen,2:h.bgYellow,3:h.bgRed,4:h.bgWhite},fe={vertical:"\u2502",horizontalDown:"\u252C",horizontalUp:"\u2534",verticalRight:"\u251C",corner:"\u2514"},ze=class ze{constructor(e=process.stdout,t=process.stderr){this.stdout=e;this.stderr=t;this.logger=new console.Console(this.stdout,this.stderr)}logger;_formatTime(e){let t=e.getHours().toString().padStart(2,"0"),n=e.getMinutes().toString().padStart(2,"0"),r=e.getSeconds().toString().padStart(2,"0"),s=e.getMilliseconds().toString().padStart(3,"0");return`${t}:${n}:${r}.${s}`}_getContext(){let e=T();if(!e)return"";let t=e.variables.get("execHandlerKind"),n=e.variables.get("commandHandlerType"),r=e.variables.get("currentCommandName");if(!t&&!n)return"";let s=Wn[t];if(!s&&!n)return"";let a=e.variables.get("forwardedBy"),c=e.variables.get("forwardedTo"),l=r?h.magenta(`/${r}`)+" ":"",m=c?`${h.yellowBright(`(${a||r} \u2192 ${c})`)} `:"";return h.dim(`${fe.vertical} `)+h.cyanBright(`${l}${m}${s?h.gray(`[${s}]`):""}`.trim())}_getLevelLabel(e){let t;switch(e){case 0:t="[DEBUG]";break;case 1:t="[INFO]";break;case 2:t="[WARN]";break;case 3:t="[ERROR]";break;default:t="[LOG]"}return`${Vn[e](h.whiteBright(` ${t} `))} `}_getPrefix(e){let t=this._formatTime(new Date);return`${this._getLevelLabel(e)}${h.dim(fe.vertical)} ${h.dim(t)}`}_log(e,...t){let n=this._getPrefix(e),r=this._getContext(),s=_n[e];r?this.logger.log(`${n}
2
- ${r} ${h.dim(fe.corner)}`,...t.map(a=>s(a))):this.logger.log(`${n} ${h.dim(fe.corner)}`,...t.map(a=>s(a)))}debug(...e){this._log(0,...e)}error(...e){this._log(3,...e)}log(...e){this._log(4,...e)}info(...e){this._log(1,...e)}warn(...e){this._log(2,...e)}};i(ze,"DefaultLogger");var he=ze;function qn(o){let e=o;if(!(e!=null&&e.provider))throw new Error("A logger provider must be provided.");let t=["log","error","warn","info","debug"],n={configure(r){e=r}};for(let r of t)n[r]=(...s)=>{e.provider[r](...s)};return n}i(qn,"createLogger");var C=qn({provider:new he});var Je=class Je{constructor(e){this.commandkit=e}plugins=new Gt.Collection;getPlugins(){return this.plugins}getPlugin(e){return this.plugins.get(e)??null}async softRegisterPlugin(e){let t=e.name;if(!this.plugins.has(t))try{await e.activate(this),this.plugins.set(t,e)}catch(n){throw new Error(`Failed to activate plugin "${t}": ${(n==null?void 0:n.stack)||n}`)}}async registerPlugin(e){let t=e.name;if(this.plugins.has(t))throw new Error(`Plugin with name "${t}" already exists.`);try{await e.activate(this),this.plugins.set(t,e)}catch(n){throw new Error(`Failed to activate plugin "${t}": ${(n==null?void 0:n.stack)||n}`)}}async unregisterPlugin(e){let t=e.name;if(!this.plugins.has(t))throw new Error(`Plugin with name "${t}" does not exist.`);this.plugins.delete(t);try{await e.deactivate(this)}catch(n){throw new Error(`Failed to deactivate plugin "${t}": ${(n==null?void 0:n.stack)||n}`)}}async unregisterAllPlugins(){for(let e of this.plugins.values())await this.unregisterPlugin(e)}capture(){throw _(v.PluginCaptureHandle)}async execute(e){let t;for(let n of this.plugins.values())try{t=await e(this,n)}catch(r){if(F(r,v.PluginCaptureHandle))return!0;C.error(`Plugin "${n.name}" failed`,(r==null?void 0:r.stack)||r)}return t}};i(Je,"CommandKitPluginRuntime");var Ce=Je;var zn=require("fs/promises");var Ye=class Ye extends Y{name="MacroPlugin";macroTransformer;async activate(){let e=await import("use-macro");this.macroTransformer=new e.MacroTransformer}async deactivate(){this.macroTransformer=null}async transform(e){if(!this.options.enabled)return null;let{contents:t,loader:n}=await this.macroTransformer.transform(e.contents.toString(),e.path);return{contents:t,loader:n}}};i(Ye,"MacroPlugin");var ge=Ye;var jt={plugins:[new ge({enabled:!0})],esbuildPlugins:[],compilerOptions:{macro:{development:!1}},static:!0,typescript:{ignoreBuildErrors:!1},distDir:"dist",env:{},sourceMap:{development:!0,production:!0},typedCommands:!0};var Jn=jt;function xe(){return Jn}i(xe,"getConfig");var Wt=require("async_hooks");var Yn=Symbol("commandkitEventWorker"),ye=new Wt.AsyncLocalStorage;function Xe(o,e){return Reflect.set(o,Yn,!0),ye.run(o,e)}i(Xe,"runInEventWorkerContext");var Qe=null;function _t(){if(Qe)return Qe;let o=(0,et.join)(process.cwd(),O?".commandkit":xe().distDir);(0,Ze.existsSync)(o)||(o=process.cwd());let e=["app"].map(t=>(0,et.join)(o,t));for(let t of e)if((0,Ze.existsSync)(t))return Qe=t,t;return null}i(_t,"findAppDirectory");var tt=class tt extends Error{constructor(){super("Event propagation stopped"),this.name="StopEventPropagationError"}};i(tt,"StopEventPropagationError");var ne=tt;var wt=require("path");var M=require("discord.js");var Vt=j(require("path"));function re(o,e=!1){return`${"file://"+Vt.default.resolve(o).replace(/\\\\|\\/g,"/")}${e?`?ts=${Date.now()}`:""}`}i(re,"toFileURL");var K=require("discord.js");var V,X,oe,rt=class rt{constructor(e,t,n){this.message=e;this.prefix=t;this.schema=n;E(this,V,null);E(this,X,null);E(this,oe,[])}getArgs(){return this.parse(),p(this,oe)}get options(){return p(this,X)||P(this,X,new nt(this)),p(this,X)}getOption(e){var t;return(t=this.parse().options.find(n=>n.name===e))==null?void 0:t.value}getCommand(){return this.parse().command}getSubcommand(){return this.parse().subcommand}getSubcommandGroup(){return this.parse().subcommandGroup}getPrefix(){for(let e of this.prefix)if(this.message.content.startsWith(e))return e}getFullCommand(){return[this.getCommand(),this.getSubcommandGroup(),this.getSubcommand()].filter(e=>e).join(" ")}parse(){if(p(this,V))return p(this,V);let e=this.message.content,t=this.getPrefix();if(!t)throw _(v.InvalidCommandPrefix);let n=e.slice(t.length).trim().split(" "),r=n.shift();P(this,oe,n);let s,a;if(r!=null&&r.includes(":")){let[,m,d]=r.split(":");!d&&m?a=m:d&&m&&(s=m,a=d)}let c=this.schema([r,s,a].filter(Boolean).join(" ").trim()),l=n.map(m=>{try{let[d,f]=m.split(":");if(!(d in c))return null;switch(c[d]){case K.ApplicationCommandOptionType.Boolean:return{name:d,value:f==="true"};case K.ApplicationCommandOptionType.Integer:return{name:d,value:parseInt(f,10)};case K.ApplicationCommandOptionType.Number:return{name:d,value:parseFloat(f)};case K.ApplicationCommandOptionType.String:return{name:d,value:f};case K.ApplicationCommandOptionType.User:return{name:d,value:this.message.mentions.users.find(g=>g.id===f.replace(/[<@!>]/g,""))};case K.ApplicationCommandOptionType.Channel:return{name:d,value:this.message.mentions.channels.find(g=>g.id===f.replace(/[<#>]/g,""))};case K.ApplicationCommandOptionType.Role:return{name:d,value:this.message.mentions.roles.find(g=>g.id===f.replace(/[<@&>]/g,""))};case K.ApplicationCommandOptionType.Attachment:return{name:d,value:this.message.attachments.find(g=>g.name===f)};default:return null}}catch{return null}}).filter(m=>m!==null);return P(this,V,{command:r,options:l,subcommand:a,subcommandGroup:s}),p(this,V)}};V=new WeakMap,X=new WeakMap,oe=new WeakMap,i(rt,"MessageCommandParser");var Ee=rt,ot=class ot{constructor(e){this.parser=e}assertOption(e,t=!1){let n=this.parser.getOption(e);if(t&&n===void 0)throw new Error(`Option "${e}" is required.`);return n??null}getMember(e,t=!1){var s;let n=this.assertOption(e,t),r=(s=this.parser.message.guild)==null?void 0:s.members.cache.get(n==null?void 0:n.id);if(t&&!r)throw new Error(`Member "${e}" is required.`);return r??null}getAttachment(e,t=!1){return this.assertOption(e,t)}getBoolean(e,t=!1){return this.assertOption(e,t)}getNumber(e,t=!1){return this.assertOption(e,t)}getString(e,t=!1){return this.assertOption(e,t)}getInteger(e,t=!1){return this.assertOption(e,t)}getUser(e,t=!1){return this.assertOption(e,t)}getChannel(e,t=!1){return this.assertOption(e,t)}getRole(e,t=!1){return this.assertOption(e,t)}getMentionable(e,t=!1){let n=this.assertOption(e,t);if(n instanceof K.GuildMember||n instanceof K.User||n instanceof K.Role)return n;if(t)throw new Error(`Mentionable "${e}" is required.`);return null}getSubcommand(e=!1){let t=this.parser.getSubcommand();if(e&&t===void 0)throw new Error("Subcommand is required.");return t??null}getSubcommandGroup(e=!1){let t=this.parser.getSubcommandGroup();if(e&&t===void 0)throw new Error("Subcommand group is required.");return t??null}};i(ot,"MessageCommandOptions");var nt=ot;var $=require("discord.js");var it=class it{constructor(e){this.commandkit=e;this.api.setToken(this.commandkit.client.token??process.env.DISCORD_TOKEN??process.env.TOKEN??"")}api=new $.REST;getCommandsData(){return this.commandkit.commandHandler.getCommandsArray().flatMap(n=>{let r="toJSON"in n.data.command?n.data.command.toJSON():n.data.command,s=[r];return n.data.userContextMenu&&r.type!==$.ApplicationCommandType.User&&s.push({...r,type:$.ApplicationCommandType.User,options:void 0,description_localizations:void 0,description:void 0}),n.data.messageContextMenu&&r.type!==$.ApplicationCommandType.Message&&s.push({...r,type:$.ApplicationCommandType.Message,description_localizations:void 0,description:void 0,options:void 0}),s})}async register(){let e=this.getCommandsData(),t=!1,n={preventDefault(){t=!0},commands:e};if(await this.commandkit.plugins.execute(async(a,c)=>{if(!t)return c.onBeforeRegisterCommands(a,n)}),t)return;if(!this.commandkit.client.isReady())throw new Error("Cannot register commands before the client is ready");let r=e.filter(a=>{var c;return(c=a.guilds)==null?void 0:c.filter(Boolean).length}).map(a=>{var c;return{...a,guilds:Array.from(new Set((c=a.guilds)==null?void 0:c.filter(Boolean)))}}),s=e.filter(a=>{var c;return!((c=a.guilds)!=null&&c.filter(Boolean).length)});await this.updateGlobalCommands(s),await this.updateGuildCommands(r)}async updateGlobalCommands(e){if(!e.length)return;let t=!1,n={preventDefault(){t=!0},commands:e};await this.commandkit.plugins.execute(async(r,s)=>{if(!t)return s.onBeforeRegisterGlobalCommands(r,n)});try{let r=await this.api.put($.Routes.applicationCommands(this.commandkit.client.user.id),{body:e.map(s=>({...s,guilds:void 0}))});C.info(`\u2728 Refreshed ${r.length} global application (/) commands`)}catch(r){C.error("Failed to update global application (/) commands",r)}}async updateGuildCommands(e){if(!e.length)return;let t=!1,n={preventDefault(){t=!0},commands:e};if(await this.commandkit.plugins.execute(async(r,s)=>{if(!t)return s.onBeforePrepareGuildCommandsRegistration(r,n)}),!t)try{let r=new Map;if(e.forEach(a=>{var c;(c=a.guilds)!=null&&c.length&&a.guilds.forEach(l=>{r.has(l)||r.set(l,[]),r.get(l).push(a)})}),!r.size)return;let s=0;for(let[a,c]of r){let l=!1,m={preventDefault(){l=!0},commands:c};if(await this.commandkit.plugins.execute(async(f,g)=>{if(!l)return g.onBeforeRegisterGuildCommands(f,m)}),l)continue;let d=await this.api.put($.Routes.applicationGuildCommands(this.commandkit.client.user.id,a),{body:c.map(f=>({...f,guilds:void 0}))});s+=d.length}C.info(`\u2728 Refreshed ${s} guild application (/) commands`)}catch(r){C.error("Failed to update guild application (/) commands",r)}}};i(it,"CommandRegistrar");var be=it;var we=require("discord.js");var qt=require("crypto");var b,at=class at{constructor(e){this.commandkit=e;E(this,b,{executionError:null,type:null,variables:new Map,deferredFunctions:new Map,marker:"",markStart:0,markEnd:0,context:null})}setContext(e){p(this,b).context=e}get context(){return p(this,b).context}getExecutionError(){return p(this,b).executionError}setExecutionError(e){if(p(this,b).executionError)throw new Error("Execution error already set.");p(this,b).executionError=e}getType(){let e=p(this,b).type;if(!e)throw new Error("Environment type not set.");return e}setType(e){p(this,b).type=e}get variables(){return p(this,b).variables}registerDeferredFunction(e){let t=(0,qt.randomUUID)();return p(this,b).deferredFunctions.set(t,e),t}clearDeferredFunction(e){p(this,b).deferredFunctions.delete(e)}async runDeferredFunctions(){for(let[e,t]of p(this,b).deferredFunctions)try{await t(this)}catch(n){this.commandkit.emit("unhandledDeferredFunctionRejection",n)}finally{this.clearDeferredFunction(e)}}clearAllDeferredFunctions(){p(this,b).deferredFunctions.clear()}markStart(e){p(this,b).marker=e,p(this,b).markStart=performance.now()}markEnd(){p(this,b).markEnd||(p(this,b).markEnd=performance.now())}getMarker(){return p(this,b).marker}getExecutionTime(){return Math.abs(p(this,b).markEnd-p(this,b).markStart)}};b=new WeakMap,i(at,"CommandKitEnvironment");var ve=at;function zt(){throw _(v.ExitMiddleware)}i(zt,"exitMiddleware");function Jt(){throw _(v.ForwardedCommand)}i(Jt,"redirect");var D={ChatInputCommand:"chatInput",MessageContextMenu:"messageContextMenu",UserContextMenu:"userContextMenu",Autocomplete:"autocomplete",Message:"message"},Q,ie=class ie{constructor(e,t){this.commandkit=e;this.config=t;x(this,"interaction");x(this,"message");x(this,"guild");x(this,"guildId");x(this,"channel");x(this,"channelId");x(this,"client");x(this,"command");E(this,Q);x(this,"_locale",null);this.interaction=t.interaction,this.message=t.message,this.client=e.client,P(this,Q,t.store??new Map),this.command=t.command,t.interaction&&(this.guild=t.interaction.guild,this.guildId=t.interaction.guildId,this.channel=t.interaction.channel,this.channelId=t.interaction.channelId),t.message&&(this.guild=t.message.guild,this.guildId=t.message.guildId,this.channel=t.message.channel,this.channelId=t.message.channelId),this.config.environment&&this.config.environment.setContext(this)}get store(){return p(this,Q)}get commandName(){return this.isInteraction()?this.interaction.commandName:this.config.messageCommandParser.getCommand()}get options(){return this.isMessage()?this.config.messageCommandParser.options:this.interaction.options}get forwarded(){return this.config.forwarded??!1}async forwardCommand(e){let t=await this.commandkit.commandHandler.prepareCommandRun(this.isInteraction()?this.interaction:this.message,e);if(!t)throw new Error(`Command ${e} not found`);let n=this.config.environment??T();if(!n)throw new Error("No commandkit environment found.");let r={chatInput:t.command.data.chatInput,autocomplete:t.command.data.autocomplete,message:t.command.data.message,messageContextMenu:t.command.data.messageContextMenu,userContextMenu:t.command.data.userContextMenu},s=n.variables.get("execHandlerKind");if(!s)throw new Error("No execution handler kind found.");let a=r[s];if(!a)throw new Error(`No handler found for ${s}`);n.variables.set("forwardedBy",this.commandName),n.variables.set("forwardedTo",e),await a(this.clone({forwarded:!0})),Jt()}get executionMode(){return this.config.executionMode}isInteraction(){return this.executionMode===D.ChatInputCommand||this.executionMode===D.Autocomplete||this.executionMode===D.MessageContextMenu||this.executionMode===D.UserContextMenu}isChatInputCommand(){return this.executionMode===D.ChatInputCommand}isAutocomplete(){return this.executionMode===D.Autocomplete}isMessageContextMenu(){return this.executionMode===D.MessageContextMenu}isUserContextMenu(){return this.executionMode===D.UserContextMenu}isMessage(){return this.executionMode===D.Message}getCommandIdentifier(){return this.isInteraction()?this.interaction.commandName:this.message.content.split(" ")[0].slice(1)}getGuildLocale(){var e;return this.isInteraction()?this.interaction.guildLocale:((e=this.message.guild)==null?void 0:e.preferredLocale)??null}getUserLocale(){return this.isInteraction()?this.interaction.locale:null}getLocale(e=!1){if(this._locale)return this._locale;let t=e?this.getUserLocale():this.getGuildLocale();return t||this.commandkit.config.defaultLocale}setLocale(e){this._locale=e}clone(e){return e?new ie(this.commandkit,{...this.config,...e,store:p(this,Q)}):new ie(this.commandkit,this.config)}isMiddleware(){return this instanceof ae}args(){return this.isMessage()?this.config.messageCommandParser.getArgs():[]}exit(){zt()}};Q=new WeakMap,i(ie,"Context");var st=ie,se,lt=class lt extends st{constructor(){super(...arguments);E(this,se,!1)}get cancelled(){return p(this,se)}cancel(){P(this,se,!0)}setCommandRunner(t){var n,r;(r=(n=this.config.customArgs)==null?void 0:n.setCommandRunner)==null||r.call(n,t)}};se=new WeakMap,i(lt,"MiddlewareContext");var ae=lt;var Ie,Yt,ct=class ct{constructor(e){this.handler=e;E(this,Ie)}async runCommand(e,t){let{commandkit:n}=this.handler,r=this.getExecutionMode(t),s=null,a=new ve(n);a.setType("COMMAND_HANDLER"),a.variables.set("commandHandlerType","app"),a.variables.set("currentCommandName",e.command.command.name),a.variables.set("execHandlerKind",r);let c=new ae(n,{command:e.command,environment:a,executionMode:r,interaction:t instanceof we.Message?null:t,message:t instanceof we.Message?t:null,forwarded:!1,customArgs:{setCommandRunner:i(m=>{s=m},"setCommandRunner")},messageCommandParser:e.messageCommandParser}),l=!1;if(e.middlewares.length&&await Se(a,async()=>{for(let m of e.middlewares)if(m.data.beforeExecute)try{await m.data.beforeExecute(c)}catch(d){if(F(d,v.ExitMiddleware)){l=!0;return}if(F(d,[v.ForwardedCommand,v.InvalidCommandPrefix]))continue;throw d}}),!c.cancelled){let d=e.command.data[r];if(d||C.warn(`Command ${e.command.command.name} has no handler for ${r}`),d)try{let f=Xt(a,async()=>(a.registerDeferredFunction(I=>{I.markEnd();let w=I.getExecutionError(),y=I.getMarker(),R=`${I.getExecutionTime().toFixed(2)}ms`;if(w){C.error(`[${y} - ${R}] Error executing command: ${w.stack||w}`);return}C.info(`[${y} - ${R}] Command executed successfully`)}),d(c.clone())),S(this,Ie,Yt).bind(this)),g=s!=null?s(f):f;a.markStart(e.command.data.command.name),await n.plugins.execute(async(I,w)=>w.executeCommand(I,a,t,e,g))||await g()}catch(f){F(f,v.ExitMiddleware)&&(l=!0),F(f,[v.ForwardedCommand,v.ExitMiddleware])||C.error(f)}}!l&&e.middlewares.length&&await Se(a,async()=>{for(let m of e.middlewares)if(m.data.afterExecute)try{await m.data.afterExecute(c)}catch(d){if(F(d,v.ExitMiddleware))return;throw d}})}getExecutionMode(e){return e instanceof we.Message?D.Message:e.isChatInputCommand()?D.ChatInputCommand:e.isAutocomplete()?D.Autocomplete:e.isMessageContextMenuCommand()?D.MessageContextMenu:e.isUserContextMenuCommand()?D.UserContextMenu:null}};Ie=new WeakSet,Yt=i(async function(){let e=Qt();await e.runDeferredFunctions(),e.clearAllDeferredFunctions(),await this.handler.commandkit.plugins.execute(async(t,n)=>{await n.onAfterCommand(t,e)})},"#finalizer"),i(ct,"AppCommandRunner");var Me=ct;var G=require("fs/promises"),H=require("path");var Zt=require("fs");async function Re(o=!1){let e=(0,H.join)(process.cwd(),"node_modules","commandkit-types");if(!O&&!o)return e;let t=(0,H.join)(e,"package.json"),n=(0,H.join)(e,"index.js"),r=(0,H.join)(e,"index.d.ts"),s=(0,H.join)(e,"command.d.ts"),a={name:"commandkit-types",version:"1.0.0",description:"CommandKit types package",type:"commonjs",main:"index.js",types:"index.d.ts"},c="module.exports = {};",l=`// Main types index file - imports all type declarations
1
+ "use strict";var Pn=Object.create;var q=Object.defineProperty;var Kn=Object.getOwnPropertyDescriptor;var Dn=Object.getOwnPropertyNames;var Tn=Object.getPrototypeOf,kn=Object.prototype.hasOwnProperty;var It=o=>{throw TypeError(o)};var An=(o,e,t)=>e in o?q(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var i=(o,e)=>q(o,"name",{value:e,configurable:!0});var Bn=(o,e)=>{for(var t in e)q(o,t,{get:e[t],enumerable:!0})},St=(o,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Dn(e))!kn.call(o,r)&&r!==t&&q(o,r,{get:()=>e[r],enumerable:!(n=Kn(e,r))||n.enumerable});return o};var j=(o,e,t)=>(t=o!=null?Pn(Tn(o)):{},St(e||!o||!o.__esModule?q(t,"default",{value:o,enumerable:!0}):t,o)),On=o=>St(q({},"__esModule",{value:!0}),o);var x=(o,e,t)=>An(o,typeof e!="symbol"?e+"":e,t),Ue=(o,e,t)=>e.has(o)||It("Cannot "+t);var p=(o,e,t)=>(Ue(o,e,"read from private field"),t?t.call(o):e.get(o)),E=(o,e,t)=>e.has(o)?It("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(o):e.set(o,t),P=(o,e,t,n)=>(Ue(o,e,"write to private field"),n?n.call(o,t):e.set(o,t),t),S=(o,e,t)=>(Ue(o,e,"access private method"),t);var fr={};Bn(fr,{FeatureFlag:()=>$e,flag:()=>pr});module.exports=On(fr);var Mn=require("async_hooks");var gn=j(require("events"));var Rt=require("picocolors"),h=(0,Rt.createColors)(!0);var Ln=require("discord.js");var He=require("discord.js");var Fn=require("discord.js");var Pt=require("discord.js");var Ge=require("discord.js");var Kt=require("discord.js");var Dt=require("discord.js");var Tt=require("discord.js");var kt=require("discord.js");var At=require("discord.js");var $n=require("discord.js");var W=require("discord.js");var Nn=require("discord.js");var Ot=require("discord.js");var ce=require("discord.js");var Un=require("discord.js");var Hn=require("discord.js");var Lt=new Set;function Gn(o,e="CommandKitWarning"){process.emitWarning(o,{code:e})}i(Gn,"emitWarning");function je(o){Lt.has(o)||(Lt.add(o),Gn(`${o} is unstable and may change in future versions.`,"CommandKitUnstableWarning"))}i(je,"warnUnstable");function Ft(o){return je("CommandKit JSX"),Array.isArray(o.children)?o.children.flat():[o.children]}i(Ft,"Fragment");function $t(o,e,...t){return je("CommandKit JSX"),o({...e,children:e.children??t})}i($t,"createElement");var ue,Nt,We=class We{constructor(e){this.client=e;E(this,ue);x(this,"subscribers",new Map);x(this,"globalHandlers",new Map);x(this,"cleanupTimer",null);S(this,ue,Nt).call(this)}destroy(){this.cleanupTimer&&(clearInterval(this.cleanupTimer),this.cleanupTimer=null);for(let[e,t]of this.subscribers)for(let n of t)this.unsubscribe(e,n,"destroy");this.subscribers.clear(),this.globalHandlers.clear()}hasSubscribers(e){return this.subscribers.has(e)}getSubscriberCount(e){let t=this.subscribers.get(e);return(t==null?void 0:t.size)??0}hasGlobalHandlers(){return this.globalHandlers.size>0}getGlobalHandlersCount(){return this.subscribers.size}subscribe(e,t,n){return this.subscribers.has(e)||(this.subscribers.set(e,new Set),this.client.on(e,this.createGlobalHandler(e)),this.client.setMaxListeners(this.client.getMaxListeners()+1)),n??={},n.registeredAt=Date.now(),Reflect.set(t,"options",n),this.subscribers.get(e).add(t),()=>{this.unsubscribe(e,t)}}unsubscribe(e,t,n){var s,a;let r=this.subscribers.get(e);r&&(r.delete(t),r.size<1&&(this.subscribers.delete(e),this.client.removeListener(e,this.globalHandlers.get(e)),this.globalHandlers.delete(e),this.client.setMaxListeners(Math.max(this.client.getMaxListeners()-1,0))),(a=(s=Reflect.get(t,"options")).onEnd)==null||a.call(s,n??"unsubscribe"))}createGlobalHandler(e){if(this.globalHandlers.has(e))return this.globalHandlers.get(e);let t=i(async(...n)=>{let r=this.subscribers.get(e);if(r&&r.size>0)for(let s of r){let a=Reflect.get(s,"options");if(a.time&&Date.now()-a.registeredAt>a.time){this.unsubscribe(e,s,"time");continue}if(a.autoReset&&(a.registeredAt=Date.now()),!(a.filter&&!await a.filter(...n)))try{await s(...n)}catch(l){if(a.onError)await a.onError(l);else throw l}finally{a.once&&this.unsubscribe(e,s,"once")}}},"handler");return this.globalHandlers.set(e,t),t}};ue=new WeakSet,Nt=i(function(){this.cleanupTimer&&clearInterval(this.cleanupTimer),this.cleanupTimer=setInterval(()=>{for(let[e,t]of this.subscribers)for(let n of t){let r=Reflect.get(n,"options");r.time&&Date.now()-r.registeredAt>r.time&&this.unsubscribe(e,n,"time")}},6e4).unref()},"#cleanupLoop"),i(We,"EventInterceptor");var me=We;var Le=require("discord.js");var Ze=require("fs"),et=require("path");var ra=Symbol("kCommandKitCacheTag"),O=process.env.COMMANDKIT_IS_DEV==="true",oa=process.env.COMMANDKIT_IS_TEST==="true",ia=process.env.COMMANDKIT_BOOTSTRAP_MODE||"development",de={ReloadCommands:"reload-commands",ReloadEvents:"reload-events",Unknown:"unknown"};var Ut=require("crypto");var Ve=class Ve{constructor(e){this.options=e}id=(0,Ut.randomUUID)();loadedAt=Date.now();async activate(e){}async deactivate(e){}};i(Ve,"PluginCommon");var J=Ve;function _e(o){return o instanceof J}i(_e,"isPlugin");var qe=class qe extends J{type="compiler";async transform(e){return null}async resolve(e){return null}async onBuildStart(){}async onBuildEnd(){}};i(qe,"CompilerPlugin");var Y=qe;function Ht(o){return _e(o)&&o.type==="runtime"}i(Ht,"isRuntimePlugin");var Gt=require("discord.js");var v={ExitMiddleware:Symbol("kExitMiddleware"),ForwardedCommand:Symbol("kForwardedCommand"),InvalidCommandPrefix:Symbol("kInvalidCommandPrefix"),PluginCaptureHandle:Symbol("kPluginCaptureHandle")};function _(o){let e=new Error;return Reflect.set(e,"code",o),e}i(_,"createCommandKitError");function pe(o){if(!(o instanceof Error))return!1;let e=Reflect.get(o,"code");for(let t in v)if(v[t]===e)return!0;return!1}i(pe,"isCommandKitError");function F(o,e){if(!pe(o))return!1;let t=Reflect.get(o,"code");return t?Array.isArray(e)?e.includes(t):t===e:!1}i(F,"isErrorType");var Wn={autocomplete:"Autocomplete",messageContextMenu:"MessageContextMenu",userContextMenu:"UserContextMenu",chatInput:"ChatInputCommand",message:"Message"},_n={0:h.blue,1:h.green,2:h.yellow,3:h.red,4:h.white},Vn={0:h.bgBlue,1:h.bgGreen,2:h.bgYellow,3:h.bgRed,4:h.bgWhite},fe={vertical:"\u2502",horizontalDown:"\u252C",horizontalUp:"\u2534",verticalRight:"\u251C",corner:"\u2514"},ze=class ze{constructor(e=process.stdout,t=process.stderr){this.stdout=e;this.stderr=t;this.logger=new console.Console(this.stdout,this.stderr)}logger;_formatTime(e){let t=e.getHours().toString().padStart(2,"0"),n=e.getMinutes().toString().padStart(2,"0"),r=e.getSeconds().toString().padStart(2,"0"),s=e.getMilliseconds().toString().padStart(3,"0");return`${t}:${n}:${r}.${s}`}_getContext(){let e=T();if(!e)return"";let t=e.variables.get("execHandlerKind"),n=e.variables.get("commandHandlerType"),r=e.variables.get("currentCommandName");if(!t&&!n)return"";let s=Wn[t];if(!s&&!n)return"";let a=e.variables.get("forwardedBy"),m=e.variables.get("forwardedTo"),l=r?h.magenta(`/${r}`)+" ":"",c=m?`${h.yellowBright(`(${a||r} \u2192 ${m})`)} `:"";return h.dim(`${fe.vertical} `)+h.cyanBright(`${l}${c}${s?h.gray(`[${s}]`):""}`.trim())}_getLevelLabel(e){let t;switch(e){case 0:t="[DEBUG]";break;case 1:t="[INFO]";break;case 2:t="[WARN]";break;case 3:t="[ERROR]";break;default:t="[LOG]"}return`${Vn[e](h.whiteBright(` ${t} `))} `}_getPrefix(e){let t=this._formatTime(new Date);return`${this._getLevelLabel(e)}${h.dim(fe.vertical)} ${h.dim(t)}`}_log(e,...t){let n=this._getPrefix(e),r=this._getContext(),s=_n[e];r?this.logger.log(`${n}
2
+ ${r} ${h.dim(fe.corner)}`,...t.map(a=>s(a))):this.logger.log(`${n} ${h.dim(fe.corner)}`,...t.map(a=>s(a)))}debug(...e){this._log(0,...e)}error(...e){this._log(3,...e)}log(...e){this._log(4,...e)}info(...e){this._log(1,...e)}warn(...e){this._log(2,...e)}};i(ze,"DefaultLogger");var he=ze;function qn(o){let e=o;if(!(e!=null&&e.provider))throw new Error("A logger provider must be provided.");let t=["log","error","warn","info","debug"],n={configure(r){e=r}};for(let r of t)n[r]=(...s)=>{e.provider[r](...s)};return n}i(qn,"createLogger");var C=qn({provider:new he});var Je=class Je{constructor(e){this.commandkit=e}plugins=new Gt.Collection;getPlugins(){return this.plugins}getPlugin(e){return this.plugins.get(e)??null}async softRegisterPlugin(e){let t=e.name;if(!this.plugins.has(t))try{await e.activate(this),this.plugins.set(t,e)}catch(n){throw new Error(`Failed to activate plugin "${t}": ${(n==null?void 0:n.stack)||n}`)}}async registerPlugin(e){let t=e.name;if(this.plugins.has(t))throw new Error(`Plugin with name "${t}" already exists.`);try{await e.activate(this),this.plugins.set(t,e)}catch(n){throw new Error(`Failed to activate plugin "${t}": ${(n==null?void 0:n.stack)||n}`)}}async unregisterPlugin(e){let t=e.name;if(!this.plugins.has(t))throw new Error(`Plugin with name "${t}" does not exist.`);this.plugins.delete(t);try{await e.deactivate(this)}catch(n){throw new Error(`Failed to deactivate plugin "${t}": ${(n==null?void 0:n.stack)||n}`)}}async unregisterAllPlugins(){for(let e of this.plugins.values())await this.unregisterPlugin(e)}capture(){throw _(v.PluginCaptureHandle)}async execute(e){let t;for(let n of this.plugins.values())try{t=await e(this,n)}catch(r){if(F(r,v.PluginCaptureHandle))return!0;C.error(`Plugin "${n.name}" failed`,(r==null?void 0:r.stack)||r)}return t}};i(Je,"CommandKitPluginRuntime");var Ce=Je;var zn=require("fs/promises");var Ye=class Ye extends Y{name="MacroPlugin";macroTransformer;async activate(){let e=await import("use-macro");this.macroTransformer=new e.MacroTransformer}async deactivate(){this.macroTransformer=null}async transform(e){if(!this.options.enabled)return null;let{contents:t,loader:n}=await this.macroTransformer.transform(e.contents.toString(),e.path);return{contents:t,loader:n}}};i(Ye,"MacroPlugin");var ge=Ye;var jt={plugins:[new ge({enabled:!0})],esbuildPlugins:[],compilerOptions:{macro:{development:!1}},static:!0,typescript:{ignoreBuildErrors:!1},distDir:"dist",env:{},sourceMap:{development:!0,production:!0},typedCommands:!0};var Jn=jt;function xe(){return Jn}i(xe,"getConfig");var Wt=require("async_hooks");var Yn=Symbol("commandkitEventWorker"),ye=new Wt.AsyncLocalStorage;function Xe(o,e){return Reflect.set(o,Yn,!0),ye.run(o,e)}i(Xe,"runInEventWorkerContext");var Qe=null;function _t(){if(Qe)return Qe;let o=(0,et.join)(process.cwd(),O?".commandkit":xe().distDir);(0,Ze.existsSync)(o)||(o=process.cwd());let e=["app"].map(t=>(0,et.join)(o,t));for(let t of e)if((0,Ze.existsSync)(t))return Qe=t,t;return null}i(_t,"findAppDirectory");var tt=class tt extends Error{constructor(){super("Event propagation stopped"),this.name="StopEventPropagationError"}};i(tt,"StopEventPropagationError");var re=tt;var wt=require("path");var M=require("discord.js");var Vt=j(require("path"));function oe(o,e=!1){return`${"file://"+Vt.default.resolve(o).replace(/\\\\|\\/g,"/")}${e?`?ts=${Date.now()}`:""}`}i(oe,"toFileURL");var K=require("discord.js");var V,X,ie,rt=class rt{constructor(e,t,n){this.message=e;this.prefix=t;this.schema=n;E(this,V,null);E(this,X,null);E(this,ie,[])}getArgs(){return this.parse(),p(this,ie)}get options(){return p(this,X)||P(this,X,new nt(this)),p(this,X)}getOption(e){var t;return(t=this.parse().options.find(n=>n.name===e))==null?void 0:t.value}getCommand(){return this.parse().command}getSubcommand(){return this.parse().subcommand}getSubcommandGroup(){return this.parse().subcommandGroup}getPrefix(){for(let e of this.prefix)if(this.message.content.startsWith(e))return e}getFullCommand(){return[this.getCommand(),this.getSubcommandGroup(),this.getSubcommand()].filter(e=>e).join(" ")}parse(){if(p(this,V))return p(this,V);let e=this.message.content,t=this.getPrefix();if(!t)throw _(v.InvalidCommandPrefix);let n=e.slice(t.length).trim().split(" "),r=n.shift();P(this,ie,n);let s,a;if(r!=null&&r.includes(":")){let[,c,d]=r.split(":");!d&&c?a=c:d&&c&&(s=c,a=d)}let m=this.schema([r,s,a].filter(Boolean).join(" ").trim()),l=n.map(c=>{try{let[d,f]=c.split(":");if(!(d in m))return null;switch(m[d]){case K.ApplicationCommandOptionType.Boolean:return{name:d,value:f==="true"};case K.ApplicationCommandOptionType.Integer:return{name:d,value:parseInt(f,10)};case K.ApplicationCommandOptionType.Number:return{name:d,value:parseFloat(f)};case K.ApplicationCommandOptionType.String:return{name:d,value:f};case K.ApplicationCommandOptionType.User:return{name:d,value:this.message.mentions.users.find(g=>g.id===f.replace(/[<@!>]/g,""))};case K.ApplicationCommandOptionType.Channel:return{name:d,value:this.message.mentions.channels.find(g=>g.id===f.replace(/[<#>]/g,""))};case K.ApplicationCommandOptionType.Role:return{name:d,value:this.message.mentions.roles.find(g=>g.id===f.replace(/[<@&>]/g,""))};case K.ApplicationCommandOptionType.Attachment:return{name:d,value:this.message.attachments.find(g=>g.name===f)};default:return null}}catch{return null}}).filter(c=>c!==null);return P(this,V,{command:r,options:l,subcommand:a,subcommandGroup:s}),p(this,V)}};V=new WeakMap,X=new WeakMap,ie=new WeakMap,i(rt,"MessageCommandParser");var Ee=rt,ot=class ot{constructor(e){this.parser=e}assertOption(e,t=!1){let n=this.parser.getOption(e);if(t&&n===void 0)throw new Error(`Option "${e}" is required.`);return n??null}getMember(e,t=!1){var s;let n=this.assertOption(e,t),r=(s=this.parser.message.guild)==null?void 0:s.members.cache.get(n==null?void 0:n.id);if(t&&!r)throw new Error(`Member "${e}" is required.`);return r??null}getAttachment(e,t=!1){return this.assertOption(e,t)}getBoolean(e,t=!1){return this.assertOption(e,t)}getNumber(e,t=!1){return this.assertOption(e,t)}getString(e,t=!1){return this.assertOption(e,t)}getInteger(e,t=!1){return this.assertOption(e,t)}getUser(e,t=!1){return this.assertOption(e,t)}getChannel(e,t=!1){return this.assertOption(e,t)}getRole(e,t=!1){return this.assertOption(e,t)}getMentionable(e,t=!1){let n=this.assertOption(e,t);if(n instanceof K.GuildMember||n instanceof K.User||n instanceof K.Role)return n;if(t)throw new Error(`Mentionable "${e}" is required.`);return null}getSubcommand(e=!1){let t=this.parser.getSubcommand();if(e&&t===void 0)throw new Error("Subcommand is required.");return t??null}getSubcommandGroup(e=!1){let t=this.parser.getSubcommandGroup();if(e&&t===void 0)throw new Error("Subcommand group is required.");return t??null}};i(ot,"MessageCommandOptions");var nt=ot;var $=require("discord.js");var it=class it{constructor(e){this.commandkit=e;this.api.setToken(this.commandkit.client.token??process.env.DISCORD_TOKEN??process.env.TOKEN??"")}api=new $.REST;getCommandsData(){return this.commandkit.commandHandler.getCommandsArray().flatMap(n=>{let r="toJSON"in n.data.command?n.data.command.toJSON():n.data.command,s=[r];return n.data.userContextMenu&&r.type!==$.ApplicationCommandType.User&&s.push({...r,type:$.ApplicationCommandType.User,options:void 0,description_localizations:void 0,description:void 0}),n.data.messageContextMenu&&r.type!==$.ApplicationCommandType.Message&&s.push({...r,type:$.ApplicationCommandType.Message,description_localizations:void 0,description:void 0,options:void 0}),s})}async register(){let e=this.getCommandsData(),t=!1,n={preventDefault(){t=!0},commands:e};if(await this.commandkit.plugins.execute(async(a,m)=>{if(!t)return m.onBeforeRegisterCommands(a,n)}),t)return;if(!this.commandkit.client.isReady())throw new Error("Cannot register commands before the client is ready");let r=e.filter(a=>{var m;return(m=a.guilds)==null?void 0:m.filter(Boolean).length}).map(a=>{var m;return{...a,guilds:Array.from(new Set((m=a.guilds)==null?void 0:m.filter(Boolean)))}}),s=e.filter(a=>{var m;return!((m=a.guilds)!=null&&m.filter(Boolean).length)});await this.updateGlobalCommands(s),await this.updateGuildCommands(r)}async updateGlobalCommands(e){if(!e.length)return;let t=!1,n={preventDefault(){t=!0},commands:e};await this.commandkit.plugins.execute(async(r,s)=>{if(!t)return s.onBeforeRegisterGlobalCommands(r,n)});try{let r=await this.api.put($.Routes.applicationCommands(this.commandkit.client.user.id),{body:e.map(s=>({...s,guilds:void 0}))});C.info(`\u2728 Refreshed ${r.length} global application (/) commands`)}catch(r){C.error("Failed to update global application (/) commands",r)}}async updateGuildCommands(e){if(!e.length)return;let t=!1,n={preventDefault(){t=!0},commands:e};if(await this.commandkit.plugins.execute(async(r,s)=>{if(!t)return s.onBeforePrepareGuildCommandsRegistration(r,n)}),!t)try{let r=new Map;if(e.forEach(a=>{var m;(m=a.guilds)!=null&&m.length&&a.guilds.forEach(l=>{r.has(l)||r.set(l,[]),r.get(l).push(a)})}),!r.size)return;let s=0;for(let[a,m]of r){let l=!1,c={preventDefault(){l=!0},commands:m};if(await this.commandkit.plugins.execute(async(f,g)=>{if(!l)return g.onBeforeRegisterGuildCommands(f,c)}),l)continue;let d=await this.api.put($.Routes.applicationGuildCommands(this.commandkit.client.user.id,a),{body:m.map(f=>({...f,guilds:void 0}))});s+=d.length}C.info(`\u2728 Refreshed ${s} guild application (/) commands`)}catch(r){C.error("Failed to update guild application (/) commands",r)}}};i(it,"CommandRegistrar");var be=it;var we=require("discord.js");var qt=require("crypto");var b,at=class at{constructor(e){this.commandkit=e;E(this,b,{executionError:null,type:null,variables:new Map,deferredFunctions:new Map,marker:"",markStart:0,markEnd:0,context:null})}setContext(e){p(this,b).context=e}get context(){return p(this,b).context}getExecutionError(){return p(this,b).executionError}setExecutionError(e){if(p(this,b).executionError)throw new Error("Execution error already set.");p(this,b).executionError=e}getType(){let e=p(this,b).type;if(!e)throw new Error("Environment type not set.");return e}setType(e){p(this,b).type=e}get variables(){return p(this,b).variables}registerDeferredFunction(e){let t=(0,qt.randomUUID)();return p(this,b).deferredFunctions.set(t,e),t}clearDeferredFunction(e){p(this,b).deferredFunctions.delete(e)}async runDeferredFunctions(){for(let[e,t]of p(this,b).deferredFunctions)try{await t(this)}catch(n){this.commandkit.emit("unhandledDeferredFunctionRejection",n)}finally{this.clearDeferredFunction(e)}}clearAllDeferredFunctions(){p(this,b).deferredFunctions.clear()}markStart(e){p(this,b).marker=e,p(this,b).markStart=performance.now()}markEnd(){p(this,b).markEnd||(p(this,b).markEnd=performance.now())}getMarker(){return p(this,b).marker}getExecutionTime(){return Math.abs(p(this,b).markEnd-p(this,b).markStart)}};b=new WeakMap,i(at,"CommandKitEnvironment");var ve=at;function zt(){throw _(v.ExitMiddleware)}i(zt,"exitMiddleware");function Jt(){throw _(v.ForwardedCommand)}i(Jt,"redirect");var D={ChatInputCommand:"chatInput",MessageContextMenu:"messageContextMenu",UserContextMenu:"userContextMenu",Autocomplete:"autocomplete",Message:"message"},Q,ae=class ae{constructor(e,t){this.commandkit=e;this.config=t;x(this,"interaction");x(this,"message");x(this,"guild");x(this,"guildId");x(this,"channel");x(this,"channelId");x(this,"client");x(this,"command");E(this,Q);x(this,"_locale",null);this.interaction=t.interaction,this.message=t.message,this.client=e.client,P(this,Q,t.store??new Map),this.command=t.command,t.interaction&&(this.guild=t.interaction.guild,this.guildId=t.interaction.guildId,this.channel=t.interaction.channel,this.channelId=t.interaction.channelId),t.message&&(this.guild=t.message.guild,this.guildId=t.message.guildId,this.channel=t.message.channel,this.channelId=t.message.channelId),this.config.environment&&this.config.environment.setContext(this)}get store(){return p(this,Q)}get commandName(){return this.isInteraction()?this.interaction.commandName:this.config.messageCommandParser.getCommand()}get options(){return this.isMessage()?this.config.messageCommandParser.options:this.interaction.options}get forwarded(){return this.config.forwarded??!1}async forwardCommand(e){let t=await this.commandkit.commandHandler.prepareCommandRun(this.isInteraction()?this.interaction:this.message,e);if(!t)throw new Error(`Command ${e} not found`);let n=this.config.environment??T();if(!n)throw new Error("No commandkit environment found.");let r={chatInput:t.command.data.chatInput,autocomplete:t.command.data.autocomplete,message:t.command.data.message,messageContextMenu:t.command.data.messageContextMenu,userContextMenu:t.command.data.userContextMenu},s=n.variables.get("execHandlerKind");if(!s)throw new Error("No execution handler kind found.");let a=r[s];if(!a)throw new Error(`No handler found for ${s}`);n.variables.set("forwardedBy",this.commandName),n.variables.set("forwardedTo",e),await a(this.clone({forwarded:!0})),Jt()}get executionMode(){return this.config.executionMode}isInteraction(){return this.executionMode===D.ChatInputCommand||this.executionMode===D.Autocomplete||this.executionMode===D.MessageContextMenu||this.executionMode===D.UserContextMenu}isChatInputCommand(){return this.executionMode===D.ChatInputCommand}isAutocomplete(){return this.executionMode===D.Autocomplete}isMessageContextMenu(){return this.executionMode===D.MessageContextMenu}isUserContextMenu(){return this.executionMode===D.UserContextMenu}isMessage(){return this.executionMode===D.Message}getCommandIdentifier(){return this.isInteraction()?this.interaction.commandName:this.message.content.split(" ")[0].slice(1)}getGuildLocale(){var e;return this.isInteraction()?this.interaction.guildLocale:((e=this.message.guild)==null?void 0:e.preferredLocale)??null}getUserLocale(){return this.isInteraction()?this.interaction.locale:null}getLocale(e=!1){if(this._locale)return this._locale;let t=e?this.getUserLocale():this.getGuildLocale();return t||this.commandkit.config.defaultLocale}setLocale(e){this._locale=e}clone(e){return e?new ae(this.commandkit,{...this.config,...e,store:p(this,Q)}):new ae(this.commandkit,this.config)}isMiddleware(){return this instanceof se}args(){return this.isMessage()?this.config.messageCommandParser.getArgs():[]}exit(){zt()}};Q=new WeakMap,i(ae,"Context");var st=ae,le,lt=class lt extends st{constructor(){super(...arguments);E(this,le,!1)}get cancelled(){return p(this,le)}cancel(){P(this,le,!0)}setCommandRunner(t){var n,r;(r=(n=this.config.customArgs)==null?void 0:n.setCommandRunner)==null||r.call(n,t)}};le=new WeakMap,i(lt,"MiddlewareContext");var se=lt;var Ie,Yt,ct=class ct{constructor(e){this.handler=e;E(this,Ie)}async runCommand(e,t){let{commandkit:n}=this.handler,r=this.getExecutionMode(t),s=null,a=new ve(n);a.setType("COMMAND_HANDLER"),a.variables.set("commandHandlerType","app"),a.variables.set("currentCommandName",e.command.command.name),a.variables.set("execHandlerKind",r);let m=new se(n,{command:e.command,environment:a,executionMode:r,interaction:t instanceof we.Message?null:t,message:t instanceof we.Message?t:null,forwarded:!1,customArgs:{setCommandRunner:i(c=>{s=c},"setCommandRunner")},messageCommandParser:e.messageCommandParser}),l=!1;if(e.middlewares.length&&await Se(a,async()=>{for(let c of e.middlewares)if(c.data.beforeExecute)try{await c.data.beforeExecute(m)}catch(d){if(F(d,v.ExitMiddleware)){l=!0;return}if(F(d,[v.ForwardedCommand,v.InvalidCommandPrefix]))continue;throw d}}),!m.cancelled){let d=e.command.data[r];if(d||C.warn(`Command ${e.command.command.name} has no handler for ${r}`),d)try{let f=Xt(a,async()=>(a.registerDeferredFunction(I=>{I.markEnd();let w=I.getExecutionError(),y=I.getMarker(),R=`${I.getExecutionTime().toFixed(2)}ms`;if(w){C.error(`[${y} - ${R}] Error executing command: ${w.stack||w}`);return}C.info(`[${y} - ${R}] Command executed successfully`)}),d(m.clone())),S(this,Ie,Yt).bind(this)),g=s!=null?s(f):f;a.markStart(e.command.data.command.name),await n.plugins.execute(async(I,w)=>w.executeCommand(I,a,t,e,g))||await g()}catch(f){F(f,v.ExitMiddleware)&&(l=!0),F(f,[v.ForwardedCommand,v.ExitMiddleware])||C.error(f)}}!l&&e.middlewares.length&&await Se(a,async()=>{for(let c of e.middlewares)if(c.data.afterExecute)try{await c.data.afterExecute(m)}catch(d){if(F(d,v.ExitMiddleware))return;throw d}})}getExecutionMode(e){return e instanceof we.Message?D.Message:e.isChatInputCommand()?D.ChatInputCommand:e.isAutocomplete()?D.Autocomplete:e.isMessageContextMenuCommand()?D.MessageContextMenu:e.isUserContextMenuCommand()?D.UserContextMenu:null}};Ie=new WeakSet,Yt=i(async function(){let e=Qt();await e.runDeferredFunctions(),e.clearAllDeferredFunctions(),await this.handler.commandkit.plugins.execute(async(t,n)=>{await n.onAfterCommand(t,e)})},"#finalizer"),i(ct,"AppCommandRunner");var Me=ct;var G=require("fs/promises"),H=require("path");var Zt=require("fs");async function Re(o=!1){let e=(0,H.join)(process.cwd(),"node_modules","commandkit-types");if(!O&&!o)return e;let t=(0,H.join)(e,"package.json"),n=(0,H.join)(e,"index.js"),r=(0,H.join)(e,"index.d.ts"),s=(0,H.join)(e,"command.d.ts"),a={name:"commandkit-types",version:"1.0.0",description:"CommandKit types package",type:"commonjs",main:"index.js",types:"index.d.ts"},m="module.exports = {};",l=`// Main types index file - imports all type declarations
3
3
  import './command';
4
4
  export {};
5
- `,m=`// Auto-generated command types
5
+ `,c=`// Auto-generated command types
6
6
  export {};
7
7
  declare module 'commandkit' {
8
8
  type CommandTypeData = string
9
- }`;return await(0,G.mkdir)(e,{recursive:!0}).catch(()=>{}),await(0,G.writeFile)(t,JSON.stringify(a,null,2)),await(0,G.writeFile)(n,c),await(0,G.writeFile)(r,l),await(0,G.writeFile)(s,m),e}i(Re,"generateTypesPackage");async function en(o){let e=`// Auto-generated command types
9
+ }`;return await(0,G.mkdir)(e,{recursive:!0}).catch(()=>{}),await(0,G.writeFile)(t,JSON.stringify(a,null,2)),await(0,G.writeFile)(n,m),await(0,G.writeFile)(r,l),await(0,G.writeFile)(s,c),e}i(Re,"generateTypesPackage");async function en(o){let e=`// Auto-generated command types
10
10
  declare module 'commandkit' {
11
11
  ${o}
12
12
  }
13
13
  export {};
14
- `,t=(0,H.join)(process.cwd(),"node_modules","commandkit-types");if(!(0,Zt.existsSync)(t))return;let n=(0,H.join)(t,"command.d.ts");await(0,G.writeFile)(n,e,{encoding:"utf-8"})}i(en,"rewriteCommandDeclaration");var Xn={command:i(o=>o instanceof M.SlashCommandBuilder||o instanceof M.ContextMenuCommandBuilder||o&&typeof o=="object","command"),chatInput:i(o=>typeof o=="function","chatInput"),autocomplete:i(o=>typeof o=="function","autocomplete"),message:i(o=>typeof o=="function","message"),messageContextMenu:i(o=>typeof o=="function","messageContextMenu"),userContextMenu:i(o=>typeof o=="function","userContextMenu")},Qn={beforeExecute:i(o=>typeof o=="function","beforeExecute"),afterExecute:i(o=>typeof o=="function","afterExecute")},mt=class mt{constructor(e){this.commandkit=e;this.registrar=new be(this.commandkit)}loadedCommands=new M.Collection;loadedMiddlewares=new M.Collection;commandNameToId=new Map;subcommandPathToId=new Map;registrar;onInteraction=null;onMessageCreate=null;commandRunner=new Me(this);externalCommandData=new M.Collection;externalMiddlewareData=new M.Collection;printBanner(){let e=crypto.randomUUID(),t=this.getCommandsArray().reduce((l,m)=>{let d=m.command.category||e;return l[d]=l[d]||[],l[d].push(m),l},{});console.log(h.green(`Loaded ${h.magenta(this.loadedCommands.size.toString())} commands:`));let n=Object.keys(t).sort(),r={};n.forEach(l=>{if(l!==e&&l.includes(":")){let m=l.split(":"),d=null;for(let f=m.length-1;f>0;f--){let g=m.slice(0,f).join(":");if(n.includes(g)){d=g;break}}d&&(r[d]=r[d]||[],r[d].push(l))}});let s=new Set,a=i((l,m="",d=!1,f="")=>{if(s.has(l))return;s.add(l);let g=t[l],k=r[l]&&r[l].length>0,I=d?"\u2514\u2500":"\u251C\u2500",w=f+(d?" ":"\u2502 ");if(l!==e){let y=l.includes(":")?l.split(":").pop():l;console.log(h.cyan(`${m}${I} ${h.bold(y)}`))}if(g.forEach((y,R)=>{let Ne=R===g.length-1&&!k?"\u2514\u2500":"\u251C\u2500",In=l!==e?w:m,Sn=y.data.command.name,Rn=y.command.middlewares.length>0?h.magenta(" (\u03BB)"):"";console.log(`${h.green(`${In}${Ne}`)} ${h.yellow(Sn)}${Rn}`)}),k){let y=r[l].sort();y.forEach((R,te)=>{let Ne=te===y.length-1;a(R,w,Ne,w)})}},"printCategory"),c=n.filter(l=>{if(l===e)return!0;if(l.includes(":")){let m=l.split(":");for(let d=1;d<m.length;d++){let f=m.slice(0,d).join(":");if(n.includes(f))return!1}return!0}return!0}).sort();c.forEach((l,m)=>{let d=m===c.length-1;a(l,"",d)})}getCommandsArray(){return Array.from(this.loadedCommands.values())}registerCommandHandler(){this.onInteraction??=async e=>{if(await this.commandkit.plugins.execute(async(s,a)=>a.onBeforeInteraction(s,e))||!(e.isCommand()||e.isAutocomplete()||e.isUserContextMenuCommand()||e.isMessageContextMenuCommand()))return;let r=await this.prepareCommandRun(e);if(r)return this.commandRunner.runCommand(r,e)},this.onMessageCreate??=async e=>{if(await this.commandkit.plugins.execute(async(r,s)=>s.onBeforeMessageCommand(r,e))||e.author.bot)return;let n=await this.prepareCommandRun(e);if(n)return this.commandRunner.runCommand(n,e)},this.commandkit.client.on(M.Events.InteractionCreate,this.onInteraction),this.commandkit.client.on(M.Events.MessageCreate,this.onMessageCreate)}async prepareCommandRun(e,t){var c;let n;if(!t)if(e instanceof M.Message){if(e.author.bot)return null;let l=await this.commandkit.config.getMessageCommandPrefix(e);n=new Ee(e,Array.isArray(l)?l:[l],m=>{var k,I;let d=this.commandNameToId.get(m);if(!d)return null;let f=this.loadedCommands.get(d);return!f||e.guildId&&((k=f.guilds)!=null&&k.length)&&!f.guilds.includes(e.guildId)?null:((I=("toJSON"in f.data.command?f.data.command.toJSON():f.data.command).options)==null?void 0:I.reduce((w,y)=>(w[y.name]=y.type,w),{}))??{}});try{t=n.getFullCommand().split(" ")[0]}catch(m){return F(m,v.InvalidCommandPrefix)||C.error(m),null}}else{if(!(e.isChatInputCommand()||e.isAutocomplete()||e.isContextMenuCommand()))return null;t=e.commandName}let r=this.commandNameToId.get(t);if(!r)return null;let s=this.loadedCommands.get(r);if(!s||(e instanceof M.CommandInteraction||e instanceof M.AutocompleteInteraction)&&e.guildId&&((c=s.guilds)!=null&&c.length)&&!s.guilds.includes(e.guildId))return null;let a=[];for(let l of s.command.middlewares){let m=this.loadedMiddlewares.get(l);m&&a.push(m)}return{command:s,middlewares:a,messageCommandParser:n}}async reloadCommands(){this.loadedCommands.clear(),this.loadedMiddlewares.clear(),this.commandNameToId.clear(),this.subcommandPathToId.clear(),this.externalCommandData.clear(),this.externalMiddlewareData.clear(),await this.loadCommands()}async addExternalMiddleware(e){for(let t of e)t.id&&this.externalMiddlewareData.set(t.id,t)}async addExternalCommands(e){for(let t of e)t.id&&this.externalCommandData.set(t.id,t)}async registerExternalLoadedMiddleware(e){for(let t of e)this.loadedMiddlewares.set(t.middleware.id,t)}async registerExternalLoadedCommands(e){for(let t of e)this.loadedCommands.set(t.command.id,t),this.commandNameToId.set(t.command.name,t.command.id)}async loadCommands(){await this.commandkit.plugins.execute((a,c)=>c.onBeforeCommandsLoad(a));let e=this.commandkit.commandsRouter;if(!e)throw new Error("Commands router has not yet initialized");let{commands:t,middlewares:n}=e.getData(),r=this.externalCommandData.size?t.concat(this.externalCommandData):t,s=this.externalMiddlewareData.size?n.concat(this.externalMiddlewareData):n;for(let[a,c]of s)await this.loadMiddleware(a,c);for(let[a,c]of r)await this.loadCommand(a,c);O&&await en(`type CommandTypeData = ${Array.from(this.loadedCommands.mapValues(a=>JSON.stringify(a.command.name)).values()).join(" | ")}`),await this.commandkit.plugins.execute((a,c)=>c.onAfterCommandsLoad(a))}async loadMiddleware(e,t){try{let n=await import(`${re(t.path)}?t=${Date.now()}`),r=0;for(let[s,a]of Object.entries(Qn)){if(n[s]&&!await a(n[s]))throw new Error(`Invalid export for middleware ${e}: ${s} does not match expected value`);n[s]&&r++}if(r===0)throw new Error(`Invalid export for middleware ${e}: at least one handler function must be provided`);this.loadedMiddlewares.set(e,{middleware:t,data:n})}catch(n){C.error(`Failed to load middleware ${e}`,n)}}async loadCommand(e,t){try{if(t.path===null){this.loadedCommands.set(e,{command:t,data:{command:{name:t.name,description:`${t.name} commands`,type:1}}});return}let n=await import(`${re(t.path)}?t=${Date.now()}`);if(!n.command)throw new Error(`Invalid export for command ${t.name}: no command definition found`);let r=0;for(let[a,c]of Object.entries(Xn))if(a!=="command"&&n[a]&&r++,n[a]&&!await c(n[a]))throw new Error(`Invalid export for command ${t.name}: ${a} does not match expected value`);if(r===0)throw new Error(`Invalid export for command ${t.name}: at least one handler function must be provided`);let s=n.command;await this.commandkit.plugins.execute(async(a,c)=>{let l=await c.prepareCommand(a,s);l&&(s=l)}),this.loadedCommands.set(e,{command:t,guilds:n.guilds,data:{...n,command:"toJSON"in s?s.toJSON():s}}),this.commandNameToId.set(t.name,e)}catch(n){C.error(`Failed to load command ${t.name} (${e})`,n)}}};i(mt,"AppCommandHandler");var Pe=mt;var ut=require("discord.js"),rn=require("fs"),dt=require("fs/promises"),A=require("path");var Zn=/^\+middleware\.(m|c)?(j|t)sx?$/,tn=/^\+([^+().][^().]*)\.middleware\.(m|c)?(j|t)sx?$/,nn=/^\+global-middleware\.(m|c)?(j|t)sx?$/,er=/^([^+().][^().]*)\.(m|c)?(j|t)sx?$/,tr=/^\(.+\)$/,pt=class pt{constructor(e){this.options=e}commands=new ut.Collection;middlewares=new ut.Collection;populate(e){for(let[t,n]of Object.entries(e.commands))this.commands.set(t,n);for(let[t,n]of Object.entries(e.middlewares))this.middlewares.set(t,n)}isValidPath(){return(0,rn.existsSync)(this.options.entrypoint)}isCommand(e){return er.test(e)}isMiddleware(e){return Zn.test(e)||nn.test(e)||tn.test(e)}isCategory(e){return tr.test(e)}clear(){this.commands.clear(),this.middlewares.clear()}async scan(){let e=await(0,dt.readdir)(this.options.entrypoint,{withFileTypes:!0});for(let t of e){if(t.name.startsWith("_"))continue;let n=(0,A.join)(this.options.entrypoint,t.name);if(t.isDirectory()){let r=this.isCategory(t.name)?t.name.slice(1,-1):null;await this.traverse(n,r)}else await this.handle(t)}return await this.applyMiddlewares(),this.toJSON()}getData(){return{commands:this.commands,middlewares:this.middlewares}}toJSON(){return{commands:Object.fromEntries(this.commands.entries()),middlewares:Object.fromEntries(this.middlewares.entries())}}async traverse(e,t){let n=await(0,dt.readdir)(e,{withFileTypes:!0});for(let r of n)if(!r.name.startsWith("_")){if(r.isFile())(this.isCommand(r.name)||this.isMiddleware(r.name))&&await this.handle(r,t);else if(r.isDirectory()&&this.isCategory(r.name)&&t){let s=this.isCategory(r.name)?`${t}:${r.name.slice(1,-1)}`:null;await this.traverse((0,A.join)(e,r.name),s)}}}async handle(e,t=null){let n=e.name,r=(0,A.join)(e.parentPath,e.name);if(this.isCommand(n)){let s={id:crypto.randomUUID(),name:(0,A.basename)(r,(0,A.extname)(r)),path:r,category:t,parentPath:e.parentPath,relativePath:this.replaceEntrypoint(r),middlewares:[]};this.commands.set(s.id,s)}else if(this.isMiddleware(n)){let s={id:crypto.randomUUID(),name:(0,A.basename)(r,(0,A.extname)(r)),path:r,relativePath:this.replaceEntrypoint(r),parentPath:e.parentPath,global:nn.test(n),command:tn.test(n)&&n.split(".")[0]||null};this.middlewares.set(s.id,s)}}applyMiddlewares(){this.commands.forEach(e=>{let t=e.parentPath,n=Array.from(this.middlewares.values()).filter(r=>r.global?!0:r.command?r.command===e.name:r.parentPath===t).map(r=>r.id);e.middlewares=Array.from(new Set([...e.middlewares,...n]))})}replaceEntrypoint(e){return(0,A.normalize)(e).replace(this.options.entrypoint,"")}};i(pt,"CommandsRouter");var Ke=pt;var on=require("discord.js"),an=require("fs"),ft=require("fs/promises"),De=require("path");var ht=class ht{constructor(e){this.options=e;var t;if(e.entrypoints&&(e.entrypoints=Array.from(new Set(e.entrypoints))),!((t=e.entrypoints)!=null&&t.length))throw new Error("Entrypoint directory must be provided")}events=new on.Collection;addEntrypoints(e){this.options.entrypoints=Array.from(new Set([...this.options.entrypoints,...e]))}match(e){return this.events.get(e)??null}get entrypoints(){return this.options.entrypoints}isValidPath(){return this.entrypoints.every(e=>(0,an.existsSync)(e))}clear(){this.events.clear()}async reload(){return this.clear(),this.scan()}async scan(){for(let e of this.entrypoints){let t=await(0,ft.readdir)(e,{withFileTypes:!0});for(let n of t)if(n.isDirectory()){let r=(0,De.join)(e,n.name);await this.scanEvent(n.name,r,null,[],!0)}}return Object.fromEntries(this.events)}toJSON(){return Object.fromEntries(this.events)}async scanEvent(e,t,n=null,r=[],s=!1){let a=await(0,ft.readdir)(t,{withFileTypes:!0}),c=s&&/^\(.+\)$/.test(e),l=c?e.slice(1,-1):n??null;a.sort((m,d)=>m.name.localeCompare(d.name));for(let m of a)if(!m.name.startsWith("_")){if(m.isDirectory()){let d=(0,De.join)(t,m.name);await this.scanEvent(m.name,d,l,r);continue}m.isFile()&&/\.(m|c)?(j|t)sx?$/.test(m.name)&&r.push((0,De.join)(m.parentPath,m.name))}if(!c){let m=this.events.get(e);if(m){m.listeners=Array.from(new Set([...m.listeners,...r]));return}this.events.set(e,{event:e,path:t,listeners:r,namespace:l})}}};i(ht,"EventsRouter");var Te=ht;var sn=require("discord.js");var Ct=class Ct{constructor(e){this.commandkit=e}loadedEvents=new sn.Collection;getEvents(){return this.loadedEvents.size===0?[]:this.loadedEvents.toJSON().map(t=>({name:t.name,namespace:t.namespace,onceListeners:t.listeners.filter(n=>n.once).length,regularListeners:t.listeners.filter(n=>!n.once).length,metadata:t.event}))}async reloadEvents(){this.unregisterAll(),await this.loadEvents()}async loadEvents(){await this.commandkit.plugins.execute((n,r)=>r.onBeforeEventsLoad(n));let t=await this.commandkit.eventsRouter.scan();for(let n of Object.values(t)){let r=[];for(let c of n.listeners){let l=await import(re(c,!0));(!l.default||typeof l.default!="function")&&C.error(`Event handler for ${n.event}${n.namespace?` of namespace ${n.namespace}`:""} does not have a default export or is not a function`),r.push({handler:l.default,once:!!l.once})}let s=r.length;s||C.warn(`Event ${n.event}${n.namespace?` of namespace ${n.namespace}`:""} does not have any listeners`);let a=`${n.namespace?`${n.namespace}:`:""}${n.event}`;this.loadedEvents.set(a,{name:n.event,namespace:n.namespace,event:n,listeners:r}),C.info(`\u2728 Loaded event ${n.event}${n.namespace?` of namespace ${n.namespace}`:""} with ${s} listener${s===1?"":"s"}`)}this.registerAllClientEvents(),await this.commandkit.plugins.execute((n,r)=>r.onAfterEventsLoad(n))}unregisterAll(){this.unregisterAllClientListeners(),this.loadedEvents.clear()}registerAllClientEvents(){let e=this.commandkit.client;for(let[t,n]of this.loadedEvents.entries()){let{name:r,listeners:s,namespace:a}=n,c=s.filter(g=>g.once),l=s.filter(g=>!g.once),m=new Set,d=i(async(...g)=>{let k=!1,I={name:r,args:g,namespace:a??null,once:!1,metadata:n.event,accept(){k||(k=!0)}};await this.commandkit.plugins.execute(async(w,y)=>{var R;if(!k)return(R=y.willEmitEvent)==null?void 0:R.call(y,w,I)}).catch(Object),await Xe({event:r,namespace:a??null,data:n.event,commandkit:this.commandkit,arguments:g},async()=>{for(let w of l)try{await w.handler(...g)}catch(y){if(y instanceof ne){C.debug(`Event propagation stopped for ${r}${a?` of namespace ${a}`:""}`);break}C.error(`Error handling event ${r}${a?` of namespace ${a}`:""}`,y)}})},"mainHandler"),f=i(async(...g)=>{let k=!1,I=!1,w={name:r,args:g,namespace:a??null,once:!0,metadata:n.event,accept(){I||(I=!0)}};await this.commandkit.plugins.execute(async(y,R)=>{var te;if(!I)return(te=R.willEmitEvent)==null?void 0:te.call(R,y,w)}).catch(Object);for(let y of c){if(k)break;await Xe({event:r,namespace:a??null,data:n.event,commandkit:this.commandkit,arguments:g},async()=>{try{if(m.has(y.handler))return;await y.handler(...g),m.add(y.handler)}catch(R){R instanceof ne&&(C.debug(`Event propagation stopped for ${r}${a?` of namespace ${a}`:""}`),k=!0),C.error(`Error handling event ${r}${a?` of namespace ${a}`:""}`,R)}})}m.size===c.length&&l.length===0&&(this.loadedEvents.delete(t),C.info(`\u{1F9F9} Cleaned up completed once-only event ${r}${a?` of namespace ${a}`:""}`))},"onceHandler");this.loadedEvents.set(t,{...n,mainListener:l.length>0?{handler:d,once:!1}:void 0,executedOnceListeners:m}),a?(l.length>0&&this.commandkit.events.on(a,r,d),c.length>0&&this.commandkit.events.once(a,r,f)):(l.length>0&&e.on(r,d),c.length>0&&e.once(r,f)),C.info(`\u{1F50C} Registered event ${r}${a?` of namespace ${a}`:""} (${l.length} regular, ${c.length} once-only)`)}}unregisterAllClientListeners(){let e=this.commandkit.client;for(let[t,{name:n,mainListener:r,namespace:s}]of this.loadedEvents.entries())r?s?this.commandkit.events.off(s,n,r.handler):e.off(n,r.handler):s?this.commandkit.events.removeAllListeners(s,n):e.removeAllListeners(n),this.loadedEvents.delete(t),C.info(`\u{1F5D1}\uFE0F Unregistered event ${n}${s?` of namespace ${s}`:""}`)}};i(Ct,"AppEventsHandler");var ke=Ct;var un=require("fs"),dn=require("path");var nr=require("rimraf"),gt=require("path"),le=j(require("fs"));var cn=require("child_process");var L;function rr(o){process.stdout.write(o),process.stdout.write(`
15
- `)}i(rr,"write");function ln(o){rr(h.red(`Error: ${o}`)),process.exit(1)}i(ln,"panic");async function or(o){return/\.(c|m)?tsx?$/.test(o)?(process.features.typescript||await ar(),!0):!1}i(or,"ensureTypeScript");var Z;function ir(){if(Z)return Z;let o={"yarn.lock":"yarn","pnpm-lock.yaml":"pnpm","package-lock.json":"npm","bun.lock":"bun","bun.lockb":"bun"};for(let[e,t]of Object.entries(o))if(le.default.existsSync((0,gt.join)(process.cwd(),e))){Z=t;break}return Z||(Z="npm"),Z}i(ir,"detectPackageManager");async function ar(o){if(L)return L;try{L=await import("typescript")}catch(e){if(e instanceof Error&&"code"in e&&e.code==="MODULE_NOT_FOUND")try{let t=ir();return(0,cn.execSync)(`${t} add typescript`,{stdio:"inherit",cwd:process.cwd()}),console.log(h.cyan("TypeScript has been installed automatically, restarting...")),L=await import("typescript"),L}catch{ln("TypeScript is not installed and could not be installed automatically. Please install it manually.")}ln(e||"TypeScript must be installed to use TypeScript config files.")}return L}i(ar,"loadTypeScript");async function mn(o){if(await sr(o),await or(o)&&L){let{transpileModule:n}=L,r=le.default.readFileSync(o,"utf8"),{outputText:s}=n(r,{compilerOptions:{module:L.ModuleKind.ESNext,target:L.ScriptTarget.ESNext,moduleResolution:L.ModuleResolutionKind.NodeNext},fileName:o}),a=await Re(),c=(0,gt.join)(a,"compiled-commandkit.config.mjs");le.default.writeFileSync(c,s),o=c}return await import(`file://${o}`).then(n=>n.default||n)}i(mn,"loadConfigFileFromPath");async function sr(o){if(!le.default.existsSync(o))throw new Error(`File not found: ${o}`)}i(sr,"ensureExists");var lr=["commandkit.config.js","commandkit.config.mjs","commandkit.config.cjs","commandkit.config.ts"];function cr(o){return lr.map(e=>(0,dn.join)(o,e))}i(cr,"getPossibleConfigPaths");function mr(o){let e=cr(o);for(let t of e)if((0,un.existsSync)(t))return{path:t,isTypeScript:/\.ts$/.test(t)};return null}i(mr,"findConfigFile");var xt=null;async function pn(o=process.cwd()){if(xt)return xt;let e=mr(o);if(!e)return xe();let t=await mn(e.path);return xt=t,t}i(pn,"loadConfigFile");function fn(o){O&&process.on("message",async e=>{if(typeof e!="object"||e===null)return;let{event:t,path:n,id:r}=e;if(!t)return;process.env.COMMANDKIT_DEBUG_HMR==="true"&&C.info(`Received HMR event: ${t}${n?` for ${n}`:""}`);let s=!1,a=!1,c=!1,l={accept(){s=!0},preventDefault(){a=!0},path:n,event:t};try{if(await o.plugins.execute(async(m,d)=>{var f;s||await((f=d.performHMR)==null?void 0:f.call(d,m,l))}),a)return;switch(t){case de.ReloadCommands:o.commandHandler.reloadCommands(),c=!0;break;case de.ReloadEvents:o.eventHandler.reloadEvents(),c=!0;break;case de.Unknown:c=!1;break;default:break}}finally{r&&process.send&&process.send({type:"commandkit-hmr-ack",id:r,handled:c||s})}})}i(fn,"registerDevHooks");var xn=require("fs");var hn=j(require("events"));var yt=class yt{constructor(e){this.commandkit=e}emitter=new hn.default;to(e){return{on:this.on.bind(this,e),off:this.off.bind(this,e),once:this.once.bind(this,e),emit:this.emit.bind(this,e),removeAllListeners:this.removeAllListeners.bind(this,e)}}on(e,t,n){this.emitter.on(`${e}:${t}`,n)}off(e,t,n){this.emitter.off(`${e}:${t}`,n)}once(e,t,n){this.emitter.once(`${e}:${t}`,n)}emit(e,t,...n){return this.emitter.emit(`${e}:${t}`,...n)}removeAllListeners(e,t){t?this.emitter.removeAllListeners(`${e}:${t}`):this.emitter.removeAllListeners(e)}};i(yt,"CommandKitEventsChannel");var Ae=yt;var Cn=require("discord.js");var Et=class Et extends Cn.Collection{};i(Et,"FlagStore");var Be=Et;var ur,bt=new Set,vt=new Set;var ee,B,yn,En,bn,vn,wn,N=class N extends gn.default{constructor(t){if(N.instance&&process.emitWarning("CommandKit instance already exists. Having multiple instance in same project is discouraged and it may lead to unexpected behavior.",{code:"MultiInstanceWarning"}),!t.client)throw new Error(h.red('"client" is required when instantiating CommandKit.'));super();this.options=t;E(this,B);E(this,ee,!1);x(this,"eventInterceptor");x(this,"config",{defaultLocale:Le.Locale.EnglishUS,getMessageCommandPrefix:i(()=>"!","getMessageCommandPrefix")});x(this,"store",new Map);x(this,"flags",new Be);x(this,"commandsRouter");x(this,"eventsRouter");x(this,"commandHandler",new Pe(this));x(this,"eventHandler",new ke(this));x(this,"plugins");x(this,"events",new Ae(this));this.plugins=new Ce(this),N.instance||(N.instance=this),ur=N.instance,S(this,B,yn).call(this)}async start(t){if(!p(this,ee)){if(!this.options.client)throw new Error(h.red('"client" is required when starting CommandKit.'));if(this.eventInterceptor=new me(this.client),O)try{fn(this),await Re()}catch(n){process.env.COMMANDKIT_DEBUG_TYPEGEN&&C.error(n)}if(await this.loadPlugins(),await S(this,B,bn).call(this),this.commandHandler.registerCommandHandler(),this.incrementClientListenersCount(),t!==!1&&!this.options.client.isReady()){this.client.once(Le.Events.ClientReady,async()=>{await this.commandHandler.registrar.register()}),await this.plugins.execute((r,s)=>{var a;return(a=s.onBeforeClientLogin)==null?void 0:a.call(s,r)});let n=t??this.options.client.token??process.env.TOKEN??process.env.DISCORD_TOKEN;await this.options.client.login(n),await this.plugins.execute((r,s)=>{var a;return(a=s.onAfterClientLogin)==null?void 0:a.call(s,r)})}else this.options.client.isReady()&&await this.commandHandler.registrar.register();P(this,ee,!0),await S(this,B,En).call(this)}}async loadPlugins(){let n=(await pn()).plugins.flat(2).filter(r=>Ht(r));if(n.length)for(let r of n)await this.plugins.softRegisterPlugin(r)}get started(){return p(this,ee)}setPrefixResolver(t){return this.config.getMessageCommandPrefix=t,this}setDefaultLocale(t){return this.config.defaultLocale=t,this}get client(){return this.options.client}async reloadCommands(){await this.commandHandler.reloadCommands()}async reloadEvents(){await this.eventHandler.reloadEvents()}incrementClientListenersCount(){this.options.client.setMaxListeners(this.options.client.getMaxListeners()+1)}decrementClientListenersCount(){this.options.client.setMaxListeners(this.options.client.getMaxListeners()-1)}getAppDirectory(){return _t()}getPath(t){let n=this.getAppDirectory();if(!n)return null;switch(t){case"commands":return(0,wt.join)(n,"commands");case"events":return(0,wt.join)(n,"events");default:return t}}};ee=new WeakMap,B=new WeakSet,yn=i(async function(){for(let t of bt)try{await t(this)}catch(n){C.error("Error while executing bootstrap hook: ",n)}finally{bt.delete(t)}bt.clear()},"#bootstrapHooks"),En=i(async function(){for(let t of vt)try{await t(this)}catch(n){C.error("Error while executing application bootstrap hook: ",n)}finally{vt.delete(t)}vt.clear()},"#applicationBootstrapHooks"),bn=i(async function(){if(!this.getAppDirectory())return;let n=this.getPath("commands"),r=this.getPath("events");this.commandsRouter=new Ke({entrypoint:n}),await this.plugins.execute((s,a)=>a.onCommandsRouterInit(s)),this.eventsRouter=new Te({entrypoints:[r]}),await this.plugins.execute((s,a)=>a.onEventsRouterInit(s)),await S(this,B,wn).call(this),await S(this,B,vn).call(this)},"#init"),vn=i(async function(){if(this.commandsRouter.isValidPath()){let t=await this.commandsRouter.scan();O&&(0,xn.writeFileSync)("./.commandkit/commands.json",JSON.stringify(t,null,2))}await this.commandHandler.loadCommands(),this.commandHandler.printBanner()},"#initCommands"),wn=i(async function(){this.eventsRouter.isValidPath()&&await this.eventsRouter.scan(),await this.eventHandler.loadEvents()},"#initEvents"),i(N,"CommandKit"),x(N,"createElement",$t),x(N,"Fragment",Ft),x(N,"instance");var Oe=N;var dr=Symbol("commandkitCommandWorker"),Fe=new Mn.AsyncLocalStorage;function Se(o,e){return Reflect.set(o,dr,!0),Fe.run(o,e)}i(Se,"provideContext");function Xt(o,e,t){return i((...r)=>Se(o,async()=>{try{return await e(...r)}catch(s){pe(s)||o.setExecutionError(s)}finally{typeof t=="function"&&setImmediate(async()=>{try{await t(...r)}catch{}})}}),"_fn")}i(Xt,"makeContextAwareFunction");function U(o=!1){var t;let e=((t=Fe.getStore())==null?void 0:t.commandkit)??Oe.instance;if(!e&&o)throw new Error("CommandKit instance not found.");return e}i(U,"getCommandKit");function T(){return Fe.getStore()}i(T,"getContext");function Qt(){let o=Fe.getStore();if(!o)throw new Error("No commandkit environment found. Please make sure you are inside commandkit handler.");return o}i(Qt,"useEnvironment");var Mt=class Mt{constructor(e){this.options=e;let t=U(!0).flags;if(t.has(e.key))throw new Error(`Feature flag with key "${e.key}" already exists.`);t.set(e.key,this)}getContext(){let e=T();if(e!=null&&e.context){let{client:n,commandkit:r,interaction:s,message:a,guild:c,channel:l,command:m}=e.context;return{client:n,commandkit:r,command:{interaction:s,message:a,guild:c,channel:l,command:m},event:null}}let t=ye.getStore();if(t){let{commandkit:n,data:r,event:s,namespace:a}=t;return{client:n.client,commandkit:n,event:{data:r,event:s,namespace:a,arguments:t.arguments,argumentsAs:i(c=>t.arguments,"argumentsAs")},command:null}}throw new Error("Could not determine the execution context. Feature flags may only be used inside a command or event.")}async execute(e){let{decide:t,identify:n}=this.options,r=e??await(async()=>{let a=this.getContext();return await(n==null?void 0:n(a))??{}})();return await t({entities:r})}};i(Mt,"FeatureFlag");var $e=Mt;function pr(o){let e=new $e(o),t=e.execute.bind(e,void 0);return t.run=async function(n){if(!(n!=null&&n.identify))throw new Error("Custom evaluation context must have an identify function or object.");let r=typeof n=="function"?await n():n;return await e.execute(r)},t}i(pr,"flag");0&&(module.exports={FeatureFlag,flag});
14
+ `,t=(0,H.join)(process.cwd(),"node_modules","commandkit-types");if(!(0,Zt.existsSync)(t))return;let n=(0,H.join)(t,"command.d.ts");await(0,G.writeFile)(n,e,{encoding:"utf-8"})}i(en,"rewriteCommandDeclaration");var Xn={command:i(o=>o instanceof M.SlashCommandBuilder||o instanceof M.ContextMenuCommandBuilder||o&&typeof o=="object","command"),chatInput:i(o=>typeof o=="function","chatInput"),autocomplete:i(o=>typeof o=="function","autocomplete"),message:i(o=>typeof o=="function","message"),messageContextMenu:i(o=>typeof o=="function","messageContextMenu"),userContextMenu:i(o=>typeof o=="function","userContextMenu")},Qn={beforeExecute:i(o=>typeof o=="function","beforeExecute"),afterExecute:i(o=>typeof o=="function","afterExecute")},mt=class mt{constructor(e){this.commandkit=e;this.registrar=new be(this.commandkit)}loadedCommands=new M.Collection;loadedMiddlewares=new M.Collection;commandNameToId=new Map;subcommandPathToId=new Map;registrar;onInteraction=null;onMessageCreate=null;commandRunner=new Me(this);externalCommandData=new M.Collection;externalMiddlewareData=new M.Collection;printBanner(){let e=crypto.randomUUID(),t=this.getCommandsArray().reduce((l,c)=>{let d=c.command.category||e;return l[d]=l[d]||[],l[d].push(c),l},{});console.log(h.green(`Loaded ${h.magenta(this.loadedCommands.size.toString())} commands:`));let n=Object.keys(t).sort(),r={};n.forEach(l=>{if(l!==e&&l.includes(":")){let c=l.split(":"),d=null;for(let f=c.length-1;f>0;f--){let g=c.slice(0,f).join(":");if(n.includes(g)){d=g;break}}d&&(r[d]=r[d]||[],r[d].push(l))}});let s=new Set,a=i((l,c="",d=!1,f="")=>{if(s.has(l))return;s.add(l);let g=t[l],k=r[l]&&r[l].length>0,I=d?"\u2514\u2500":"\u251C\u2500",w=f+(d?" ":"\u2502 ");if(l!==e){let y=l.includes(":")?l.split(":").pop():l;console.log(h.cyan(`${c}${I} ${h.bold(y)}`))}if(g.forEach((y,R)=>{let Ne=R===g.length-1&&!k?"\u2514\u2500":"\u251C\u2500",In=l!==e?w:c,Sn=y.data.command.name,Rn=y.command.middlewares.length>0?h.magenta(" (\u03BB)"):"";console.log(`${h.green(`${In}${Ne}`)} ${h.yellow(Sn)}${Rn}`)}),k){let y=r[l].sort();y.forEach((R,ne)=>{let Ne=ne===y.length-1;a(R,w,Ne,w)})}},"printCategory"),m=n.filter(l=>{if(l===e)return!0;if(l.includes(":")){let c=l.split(":");for(let d=1;d<c.length;d++){let f=c.slice(0,d).join(":");if(n.includes(f))return!1}return!0}return!0}).sort();m.forEach((l,c)=>{let d=c===m.length-1;a(l,"",d)})}getCommandsArray(){return Array.from(this.loadedCommands.values())}registerCommandHandler(){this.onInteraction??=async e=>{if(await this.commandkit.plugins.execute(async(s,a)=>a.onBeforeInteraction(s,e))||!(e.isCommand()||e.isAutocomplete()||e.isUserContextMenuCommand()||e.isMessageContextMenuCommand()))return;let r=await this.prepareCommandRun(e);if(r)return this.commandRunner.runCommand(r,e)},this.onMessageCreate??=async e=>{if(await this.commandkit.plugins.execute(async(r,s)=>s.onBeforeMessageCommand(r,e))||e.author.bot)return;let n=await this.prepareCommandRun(e);if(n)return this.commandRunner.runCommand(n,e)},this.commandkit.client.on(M.Events.InteractionCreate,this.onInteraction),this.commandkit.client.on(M.Events.MessageCreate,this.onMessageCreate)}async prepareCommandRun(e,t){var m;let n;if(!t)if(e instanceof M.Message){if(e.author.bot)return null;let l=await this.commandkit.config.getMessageCommandPrefix(e);n=new Ee(e,Array.isArray(l)?l:[l],c=>{var k,I;let d=this.commandNameToId.get(c);if(!d)return null;let f=this.loadedCommands.get(d);return!f||e.guildId&&((k=f.guilds)!=null&&k.length)&&!f.guilds.includes(e.guildId)?null:((I=("toJSON"in f.data.command?f.data.command.toJSON():f.data.command).options)==null?void 0:I.reduce((w,y)=>(w[y.name]=y.type,w),{}))??{}});try{t=n.getFullCommand().split(" ")[0]}catch(c){return F(c,v.InvalidCommandPrefix)||C.error(c),null}}else{if(!(e.isChatInputCommand()||e.isAutocomplete()||e.isContextMenuCommand()))return null;t=e.commandName}let r=this.commandNameToId.get(t);if(!r)return null;let s=this.loadedCommands.get(r);if(!s||(e instanceof M.CommandInteraction||e instanceof M.AutocompleteInteraction)&&e.guildId&&((m=s.guilds)!=null&&m.length)&&!s.guilds.includes(e.guildId))return null;let a=[];for(let l of s.command.middlewares){let c=this.loadedMiddlewares.get(l);c&&a.push(c)}return{command:s,middlewares:a,messageCommandParser:n}}async reloadCommands(){this.loadedCommands.clear(),this.loadedMiddlewares.clear(),this.commandNameToId.clear(),this.subcommandPathToId.clear(),this.externalCommandData.clear(),this.externalMiddlewareData.clear(),await this.loadCommands()}async addExternalMiddleware(e){for(let t of e)t.id&&this.externalMiddlewareData.set(t.id,t)}async addExternalCommands(e){for(let t of e)t.id&&this.externalCommandData.set(t.id,t)}async registerExternalLoadedMiddleware(e){for(let t of e)this.loadedMiddlewares.set(t.middleware.id,t)}async registerExternalLoadedCommands(e){for(let t of e)this.loadedCommands.set(t.command.id,t),this.commandNameToId.set(t.command.name,t.command.id)}async loadCommands(){await this.commandkit.plugins.execute((a,m)=>m.onBeforeCommandsLoad(a));let e=this.commandkit.commandsRouter;if(!e)throw new Error("Commands router has not yet initialized");let{commands:t,middlewares:n}=e.getData(),r=this.externalCommandData.size?t.concat(this.externalCommandData):t,s=this.externalMiddlewareData.size?n.concat(this.externalMiddlewareData):n;for(let[a,m]of s)await this.loadMiddleware(a,m);for(let[a,m]of r)await this.loadCommand(a,m);O&&await en(`type CommandTypeData = ${Array.from(this.loadedCommands.mapValues(a=>JSON.stringify(a.command.name)).values()).join(" | ")}`),await this.commandkit.plugins.execute((a,m)=>m.onAfterCommandsLoad(a))}async loadMiddleware(e,t){try{let n=await import(`${oe(t.path)}?t=${Date.now()}`),r=0;for(let[s,a]of Object.entries(Qn)){if(n[s]&&!await a(n[s]))throw new Error(`Invalid export for middleware ${e}: ${s} does not match expected value`);n[s]&&r++}if(r===0)throw new Error(`Invalid export for middleware ${e}: at least one handler function must be provided`);this.loadedMiddlewares.set(e,{middleware:t,data:n})}catch(n){C.error(`Failed to load middleware ${e}`,n)}}async loadCommand(e,t){try{if(t.path===null){this.loadedCommands.set(e,{command:t,data:{command:{name:t.name,description:`${t.name} commands`,type:1}}});return}let n=await import(`${oe(t.path)}?t=${Date.now()}`);if(!n.command)throw new Error(`Invalid export for command ${t.name}: no command definition found`);let r=0;for(let[a,m]of Object.entries(Xn))if(a!=="command"&&n[a]&&r++,n[a]&&!await m(n[a]))throw new Error(`Invalid export for command ${t.name}: ${a} does not match expected value`);if(r===0)throw new Error(`Invalid export for command ${t.name}: at least one handler function must be provided`);let s=n.command;await this.commandkit.plugins.execute(async(a,m)=>{let l=await m.prepareCommand(a,s);l&&(s=l)}),this.loadedCommands.set(e,{command:t,guilds:n.guilds,data:{...n,command:"toJSON"in s?s.toJSON():s}}),this.commandNameToId.set(t.name,e)}catch(n){C.error(`Failed to load command ${t.name} (${e})`,n)}}};i(mt,"AppCommandHandler");var Pe=mt;var ut=require("discord.js"),rn=require("fs"),dt=require("fs/promises"),A=require("path");var Zn=/^\+middleware\.(m|c)?(j|t)sx?$/,tn=/^\+([^+().][^().]*)\.middleware\.(m|c)?(j|t)sx?$/,nn=/^\+global-middleware\.(m|c)?(j|t)sx?$/,er=/^([^+().][^().]*)\.(m|c)?(j|t)sx?$/,tr=/^\(.+\)$/,pt=class pt{constructor(e){this.options=e}commands=new ut.Collection;middlewares=new ut.Collection;populate(e){for(let[t,n]of Object.entries(e.commands))this.commands.set(t,n);for(let[t,n]of Object.entries(e.middlewares))this.middlewares.set(t,n)}isValidPath(){return(0,rn.existsSync)(this.options.entrypoint)}isCommand(e){return er.test(e)}isMiddleware(e){return Zn.test(e)||nn.test(e)||tn.test(e)}isCategory(e){return tr.test(e)}clear(){this.commands.clear(),this.middlewares.clear()}async scan(){let e=await(0,dt.readdir)(this.options.entrypoint,{withFileTypes:!0});for(let t of e){if(t.name.startsWith("_"))continue;let n=(0,A.join)(this.options.entrypoint,t.name);if(t.isDirectory()){let r=this.isCategory(t.name)?t.name.slice(1,-1):null;await this.traverse(n,r)}else await this.handle(t)}return await this.applyMiddlewares(),this.toJSON()}getData(){return{commands:this.commands,middlewares:this.middlewares}}toJSON(){return{commands:Object.fromEntries(this.commands.entries()),middlewares:Object.fromEntries(this.middlewares.entries())}}async traverse(e,t){let n=await(0,dt.readdir)(e,{withFileTypes:!0});for(let r of n)if(!r.name.startsWith("_")){if(r.isFile())(this.isCommand(r.name)||this.isMiddleware(r.name))&&await this.handle(r,t);else if(r.isDirectory()&&this.isCategory(r.name)&&t){let s=this.isCategory(r.name)?`${t}:${r.name.slice(1,-1)}`:null;await this.traverse((0,A.join)(e,r.name),s)}}}async handle(e,t=null){let n=e.name,r=(0,A.join)(e.parentPath,e.name);if(this.isCommand(n)){let s={id:crypto.randomUUID(),name:(0,A.basename)(r,(0,A.extname)(r)),path:r,category:t,parentPath:e.parentPath,relativePath:this.replaceEntrypoint(r),middlewares:[]};this.commands.set(s.id,s)}else if(this.isMiddleware(n)){let s={id:crypto.randomUUID(),name:(0,A.basename)(r,(0,A.extname)(r)),path:r,relativePath:this.replaceEntrypoint(r),parentPath:e.parentPath,global:nn.test(n),command:tn.test(n)&&n.split(".")[0]||null};this.middlewares.set(s.id,s)}}applyMiddlewares(){this.commands.forEach(e=>{let t=e.parentPath,n=Array.from(this.middlewares.values()).filter(r=>r.global?!0:r.command?r.command===e.name:r.parentPath===t).map(r=>r.id);e.middlewares=Array.from(new Set([...e.middlewares,...n]))})}replaceEntrypoint(e){return(0,A.normalize)(e).replace(this.options.entrypoint,"")}};i(pt,"CommandsRouter");var Ke=pt;var on=require("discord.js"),an=require("fs"),ft=require("fs/promises"),De=require("path");var ht=class ht{constructor(e){this.options=e;var t;if(e.entrypoints&&(e.entrypoints=Array.from(new Set(e.entrypoints))),!((t=e.entrypoints)!=null&&t.length))throw new Error("Entrypoint directory must be provided")}events=new on.Collection;addEntrypoints(e){this.options.entrypoints=Array.from(new Set([...this.options.entrypoints,...e]))}match(e){return this.events.get(e)??null}get entrypoints(){return this.options.entrypoints}isValidPath(){return this.entrypoints.every(e=>(0,an.existsSync)(e))}clear(){this.events.clear()}async reload(){return this.clear(),this.scan()}async scan(){for(let e of this.entrypoints){let t=await(0,ft.readdir)(e,{withFileTypes:!0});for(let n of t)if(n.isDirectory()){let r=(0,De.join)(e,n.name);await this.scanEvent(n.name,r,null,[],!0)}}return Object.fromEntries(this.events)}toJSON(){return Object.fromEntries(this.events)}async scanEvent(e,t,n=null,r=[],s=!1){let a=await(0,ft.readdir)(t,{withFileTypes:!0}),m=s&&/^\(.+\)$/.test(e),l=m?e.slice(1,-1):n??null;a.sort((c,d)=>c.name.localeCompare(d.name));for(let c of a)if(!c.name.startsWith("_")){if(c.isDirectory()){let d=(0,De.join)(t,c.name);await this.scanEvent(c.name,d,l,r);continue}c.isFile()&&/\.(m|c)?(j|t)sx?$/.test(c.name)&&r.push((0,De.join)(c.parentPath,c.name))}if(!m){let c=this.events.get(e);if(c){c.listeners=Array.from(new Set([...c.listeners,...r]));return}this.events.set(e,{event:e,path:t,listeners:r,namespace:l})}}};i(ht,"EventsRouter");var Te=ht;var sn=require("discord.js");var Ct=class Ct{constructor(e){this.commandkit=e}loadedEvents=new sn.Collection;getEvents(){return this.loadedEvents.size===0?[]:this.loadedEvents.toJSON().map(t=>({name:t.name,namespace:t.namespace,onceListeners:t.listeners.filter(n=>n.once).length,regularListeners:t.listeners.filter(n=>!n.once).length,metadata:t.event}))}async reloadEvents(){this.unregisterAll(),await this.loadEvents()}async loadEvents(){await this.commandkit.plugins.execute((n,r)=>r.onBeforeEventsLoad(n));let t=await this.commandkit.eventsRouter.scan();for(let n of Object.values(t)){let r=[];for(let m of n.listeners){let l=await import(oe(m,!0));(!l.default||typeof l.default!="function")&&C.error(`Event handler for ${n.event}${n.namespace?` of namespace ${n.namespace}`:""} does not have a default export or is not a function`),r.push({handler:l.default,once:!!l.once})}let s=r.length;s||C.warn(`Event ${n.event}${n.namespace?` of namespace ${n.namespace}`:""} does not have any listeners`);let a=`${n.namespace?`${n.namespace}:`:""}${n.event}`;this.loadedEvents.set(a,{name:n.event,namespace:n.namespace,event:n,listeners:r}),C.info(`\u2728 Loaded event ${n.event}${n.namespace?` of namespace ${n.namespace}`:""} with ${s} listener${s===1?"":"s"}`)}this.registerAllClientEvents(),await this.commandkit.plugins.execute((n,r)=>r.onAfterEventsLoad(n))}unregisterAll(){this.unregisterAllClientListeners(),this.loadedEvents.clear()}registerAllClientEvents(){let e=this.commandkit.client;for(let[t,n]of this.loadedEvents.entries()){let{name:r,listeners:s,namespace:a}=n,m=s.filter(g=>g.once),l=s.filter(g=>!g.once),c=new Set,d=i(async(...g)=>{let k=!1,I={name:r,args:g,namespace:a??null,once:!1,metadata:n.event,accept(){k||(k=!0)}};await this.commandkit.plugins.execute(async(w,y)=>{var R;if(!k)return(R=y.willEmitEvent)==null?void 0:R.call(y,w,I)}).catch(Object),await Xe({event:r,namespace:a??null,data:n.event,commandkit:this.commandkit,arguments:g},async()=>{for(let w of l)try{await w.handler(...g)}catch(y){if(y instanceof re){C.debug(`Event propagation stopped for ${r}${a?` of namespace ${a}`:""}`);break}C.error(`Error handling event ${r}${a?` of namespace ${a}`:""}`,y)}})},"mainHandler"),f=i(async(...g)=>{let k=!1,I=!1,w={name:r,args:g,namespace:a??null,once:!0,metadata:n.event,accept(){I||(I=!0)}};await this.commandkit.plugins.execute(async(y,R)=>{var ne;if(!I)return(ne=R.willEmitEvent)==null?void 0:ne.call(R,y,w)}).catch(Object);for(let y of m){if(k)break;await Xe({event:r,namespace:a??null,data:n.event,commandkit:this.commandkit,arguments:g},async()=>{try{if(c.has(y.handler))return;await y.handler(...g),c.add(y.handler)}catch(R){R instanceof re&&(C.debug(`Event propagation stopped for ${r}${a?` of namespace ${a}`:""}`),k=!0),C.error(`Error handling event ${r}${a?` of namespace ${a}`:""}`,R)}})}c.size===m.length&&l.length===0&&(this.loadedEvents.delete(t),C.info(`\u{1F9F9} Cleaned up completed once-only event ${r}${a?` of namespace ${a}`:""}`))},"onceHandler");this.loadedEvents.set(t,{...n,mainListener:l.length>0?{handler:d,once:!1}:void 0,executedOnceListeners:c}),a?(l.length>0&&this.commandkit.events.on(a,r,d),m.length>0&&this.commandkit.events.once(a,r,f)):(l.length>0&&e.on(r,d),m.length>0&&e.once(r,f)),C.info(`\u{1F50C} Registered event ${r}${a?` of namespace ${a}`:""} (${l.length} regular, ${m.length} once-only)`)}}unregisterAllClientListeners(){let e=this.commandkit.client;for(let[t,{name:n,mainListener:r,namespace:s}]of this.loadedEvents.entries())r?s?this.commandkit.events.off(s,n,r.handler):e.off(n,r.handler):s?this.commandkit.events.removeAllListeners(s,n):e.removeAllListeners(n),this.loadedEvents.delete(t),C.info(`\u{1F5D1}\uFE0F Unregistered event ${n}${s?` of namespace ${s}`:""}`)}};i(Ct,"AppEventsHandler");var ke=Ct;var un=require("fs"),dn=require("path");var nr=require("rimraf"),gt=require("path"),ee=j(require("fs"));var cn=require("child_process");var L;function rr(o){process.stdout.write(o),process.stdout.write(`
15
+ `)}i(rr,"write");function ln(o){rr(h.red(`Error: ${o}`)),process.exit(1)}i(ln,"panic");async function or(o){return/\.(c|m)?tsx?$/.test(o)?(process.features.typescript||await ar(),!0):!1}i(or,"ensureTypeScript");var Z;function ir(){if(Z)return Z;let o={"yarn.lock":"yarn","pnpm-lock.yaml":"pnpm","package-lock.json":"npm","bun.lock":"bun","bun.lockb":"bun"};for(let[e,t]of Object.entries(o))if(ee.default.existsSync((0,gt.join)(process.cwd(),e))){Z=t;break}return Z||(Z="npm"),Z}i(ir,"detectPackageManager");async function ar(o){if(L)return L;try{L=await import("typescript")}catch(e){if(e instanceof Error&&"code"in e&&e.code==="MODULE_NOT_FOUND")try{let t=ir();return(0,cn.execSync)(`${t} add typescript`,{stdio:"inherit",cwd:process.cwd()}),console.log(h.cyan("TypeScript has been installed automatically, restarting...")),L=await import("typescript"),L}catch{ln("TypeScript is not installed and could not be installed automatically. Please install it manually.")}ln(e||"TypeScript must be installed to use TypeScript config files.")}return L}i(ar,"loadTypeScript");async function mn(o){await sr(o);let e=await or(o),t;if(e&&L){let{transpileModule:r}=L,s=ee.default.readFileSync(o,"utf8"),{outputText:a}=r(s,{compilerOptions:{module:L.ModuleKind.ESNext,target:L.ScriptTarget.ESNext,moduleResolution:L.ModuleResolutionKind.NodeNext},fileName:o});await Re();let m=process.cwd(),l=(0,gt.join)(m,"compiled-commandkit.config.mjs");ee.default.writeFileSync(l,a),t=l,o=l}let n=await import(`file://${o}`).then(r=>r.default||r);if(t)try{ee.default.unlinkSync(t)}catch{}return n}i(mn,"loadConfigFileFromPath");async function sr(o){if(!ee.default.existsSync(o))throw new Error(`File not found: ${o}`)}i(sr,"ensureExists");var lr=["commandkit.config.js","commandkit.config.mjs","commandkit.config.cjs","commandkit.config.ts"];function cr(o){return lr.map(e=>(0,dn.join)(o,e))}i(cr,"getPossibleConfigPaths");function mr(o){let e=cr(o);for(let t of e)if((0,un.existsSync)(t))return{path:t,isTypeScript:/\.ts$/.test(t)};return null}i(mr,"findConfigFile");var xt=null;async function pn(o=process.cwd()){if(xt)return xt;let e=mr(o);if(!e)return xe();let t=await mn(e.path);return xt=t,t}i(pn,"loadConfigFile");function fn(o){O&&process.on("message",async e=>{if(typeof e!="object"||e===null)return;let{event:t,path:n,id:r}=e;if(!t)return;process.env.COMMANDKIT_DEBUG_HMR==="true"&&C.info(`Received HMR event: ${t}${n?` for ${n}`:""}`);let s=!1,a=!1,m=!1,l={accept(){s=!0},preventDefault(){a=!0},path:n,event:t};try{if(await o.plugins.execute(async(c,d)=>{var f;s||await((f=d.performHMR)==null?void 0:f.call(d,c,l))}),a)return;switch(t){case de.ReloadCommands:o.commandHandler.reloadCommands(),m=!0;break;case de.ReloadEvents:o.eventHandler.reloadEvents(),m=!0;break;case de.Unknown:m=!1;break;default:break}}finally{r&&process.send&&process.send({type:"commandkit-hmr-ack",id:r,handled:m||s})}})}i(fn,"registerDevHooks");var xn=require("fs");var hn=j(require("events"));var yt=class yt{constructor(e){this.commandkit=e}emitter=new hn.default;to(e){return{on:this.on.bind(this,e),off:this.off.bind(this,e),once:this.once.bind(this,e),emit:this.emit.bind(this,e),removeAllListeners:this.removeAllListeners.bind(this,e)}}on(e,t,n){this.emitter.on(`${e}:${t}`,n)}off(e,t,n){this.emitter.off(`${e}:${t}`,n)}once(e,t,n){this.emitter.once(`${e}:${t}`,n)}emit(e,t,...n){return this.emitter.emit(`${e}:${t}`,...n)}removeAllListeners(e,t){t?this.emitter.removeAllListeners(`${e}:${t}`):this.emitter.removeAllListeners(e)}};i(yt,"CommandKitEventsChannel");var Ae=yt;var Cn=require("discord.js");var Et=class Et extends Cn.Collection{};i(Et,"FlagStore");var Be=Et;var ur,bt=new Set,vt=new Set;var te,B,yn,En,bn,vn,wn,N=class N extends gn.default{constructor(t){if(N.instance&&process.emitWarning("CommandKit instance already exists. Having multiple instance in same project is discouraged and it may lead to unexpected behavior.",{code:"MultiInstanceWarning"}),!t.client)throw new Error(h.red('"client" is required when instantiating CommandKit.'));super();this.options=t;E(this,B);E(this,te,!1);x(this,"eventInterceptor");x(this,"config",{defaultLocale:Le.Locale.EnglishUS,getMessageCommandPrefix:i(()=>"!","getMessageCommandPrefix")});x(this,"store",new Map);x(this,"flags",new Be);x(this,"commandsRouter");x(this,"eventsRouter");x(this,"commandHandler",new Pe(this));x(this,"eventHandler",new ke(this));x(this,"plugins");x(this,"events",new Ae(this));this.plugins=new Ce(this),N.instance||(N.instance=this),ur=N.instance,S(this,B,yn).call(this)}async start(t){if(!p(this,te)){if(!this.options.client)throw new Error(h.red('"client" is required when starting CommandKit.'));if(this.eventInterceptor=new me(this.client),O)try{fn(this),await Re()}catch(n){process.env.COMMANDKIT_DEBUG_TYPEGEN&&C.error(n)}if(await this.loadPlugins(),await S(this,B,bn).call(this),this.commandHandler.registerCommandHandler(),this.incrementClientListenersCount(),t!==!1&&!this.options.client.isReady()){this.client.once(Le.Events.ClientReady,async()=>{await this.commandHandler.registrar.register()}),await this.plugins.execute((r,s)=>{var a;return(a=s.onBeforeClientLogin)==null?void 0:a.call(s,r)});let n=t??this.options.client.token??process.env.TOKEN??process.env.DISCORD_TOKEN;await this.options.client.login(n),await this.plugins.execute((r,s)=>{var a;return(a=s.onAfterClientLogin)==null?void 0:a.call(s,r)})}else this.options.client.isReady()&&await this.commandHandler.registrar.register();P(this,te,!0),await S(this,B,En).call(this)}}async loadPlugins(){let n=(await pn()).plugins.flat(2).filter(r=>Ht(r));if(n.length)for(let r of n)await this.plugins.softRegisterPlugin(r)}get started(){return p(this,te)}setPrefixResolver(t){return this.config.getMessageCommandPrefix=t,this}setDefaultLocale(t){return this.config.defaultLocale=t,this}get client(){return this.options.client}async reloadCommands(){await this.commandHandler.reloadCommands()}async reloadEvents(){await this.eventHandler.reloadEvents()}incrementClientListenersCount(){this.options.client.setMaxListeners(this.options.client.getMaxListeners()+1)}decrementClientListenersCount(){this.options.client.setMaxListeners(this.options.client.getMaxListeners()-1)}getAppDirectory(){return _t()}getPath(t){let n=this.getAppDirectory();if(!n)return null;switch(t){case"commands":return(0,wt.join)(n,"commands");case"events":return(0,wt.join)(n,"events");default:return t}}};te=new WeakMap,B=new WeakSet,yn=i(async function(){for(let t of bt)try{await t(this)}catch(n){C.error("Error while executing bootstrap hook: ",n)}finally{bt.delete(t)}bt.clear()},"#bootstrapHooks"),En=i(async function(){for(let t of vt)try{await t(this)}catch(n){C.error("Error while executing application bootstrap hook: ",n)}finally{vt.delete(t)}vt.clear()},"#applicationBootstrapHooks"),bn=i(async function(){if(!this.getAppDirectory())return;let n=this.getPath("commands"),r=this.getPath("events");this.commandsRouter=new Ke({entrypoint:n}),await this.plugins.execute((s,a)=>a.onCommandsRouterInit(s)),this.eventsRouter=new Te({entrypoints:[r]}),await this.plugins.execute((s,a)=>a.onEventsRouterInit(s)),await S(this,B,wn).call(this),await S(this,B,vn).call(this)},"#init"),vn=i(async function(){if(this.commandsRouter.isValidPath()){let t=await this.commandsRouter.scan();O&&(0,xn.writeFileSync)("./.commandkit/commands.json",JSON.stringify(t,null,2))}await this.commandHandler.loadCommands(),this.commandHandler.printBanner()},"#initCommands"),wn=i(async function(){this.eventsRouter.isValidPath()&&await this.eventsRouter.scan(),await this.eventHandler.loadEvents()},"#initEvents"),i(N,"CommandKit"),x(N,"createElement",$t),x(N,"Fragment",Ft),x(N,"instance");var Oe=N;var dr=Symbol("commandkitCommandWorker"),Fe=new Mn.AsyncLocalStorage;function Se(o,e){return Reflect.set(o,dr,!0),Fe.run(o,e)}i(Se,"provideContext");function Xt(o,e,t){return i((...r)=>Se(o,async()=>{try{return await e(...r)}catch(s){pe(s)||o.setExecutionError(s)}finally{typeof t=="function"&&setImmediate(async()=>{try{await t(...r)}catch{}})}}),"_fn")}i(Xt,"makeContextAwareFunction");function U(o=!1){var t;let e=((t=Fe.getStore())==null?void 0:t.commandkit)??Oe.instance;if(!e&&o)throw new Error("CommandKit instance not found.");return e}i(U,"getCommandKit");function T(){return Fe.getStore()}i(T,"getContext");function Qt(){let o=Fe.getStore();if(!o)throw new Error("No commandkit environment found. Please make sure you are inside commandkit handler.");return o}i(Qt,"useEnvironment");var Mt=class Mt{constructor(e){this.options=e;let t=U(!0).flags;if(t.has(e.key))throw new Error(`Feature flag with key "${e.key}" already exists.`);t.set(e.key,this)}getContext(){let e=T();if(e!=null&&e.context){let{client:n,commandkit:r,interaction:s,message:a,guild:m,channel:l,command:c}=e.context;return{client:n,commandkit:r,command:{interaction:s,message:a,guild:m,channel:l,command:c},event:null}}let t=ye.getStore();if(t){let{commandkit:n,data:r,event:s,namespace:a}=t;return{client:n.client,commandkit:n,event:{data:r,event:s,namespace:a,arguments:t.arguments,argumentsAs:i(m=>t.arguments,"argumentsAs")},command:null}}throw new Error("Could not determine the execution context. Feature flags may only be used inside a command or event.")}async execute(e){let{decide:t,identify:n}=this.options,r=e??await(async()=>{let a=this.getContext();return await(n==null?void 0:n(a))??{}})();return await t({entities:r})}};i(Mt,"FeatureFlag");var $e=Mt;function pr(o){let e=new $e(o),t=e.execute.bind(e,void 0);return t.run=async function(n){if(!(n!=null&&n.identify))throw new Error("Custom evaluation context must have an identify function or object.");let r=typeof n=="function"?await n():n;return await e.execute(r)},t}i(pr,"flag");0&&(module.exports={FeatureFlag,flag});
16
16
  //# sourceMappingURL=feature-flags.js.map