commandkit 1.0.0-dev.20250528125253 → 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.
- package/dist/CommandKit.js +4 -4
- package/dist/CommandKit.js.map +1 -1
- package/dist/app/commands/AppCommandRunner.js +2 -2
- package/dist/app/commands/AppCommandRunner.js.map +1 -1
- package/dist/app/commands/Context.js +2 -2
- package/dist/app/commands/Context.js.map +1 -1
- package/dist/app/handlers/AppCommandHandler.js +3 -3
- package/dist/app/handlers/AppCommandHandler.js.map +1 -1
- package/dist/app/handlers/AppEventsHandler.js +2 -2
- package/dist/app/handlers/AppEventsHandler.js.map +1 -1
- package/dist/app/index.js +3 -3
- package/dist/app/index.js.map +1 -1
- package/dist/app/register/CommandRegistrar.js +2 -2
- package/dist/app/register/CommandRegistrar.js.map +1 -1
- package/dist/cli/app-process.js +2 -2
- package/dist/cli/app-process.js.map +1 -1
- package/dist/cli/build.js +2 -2
- package/dist/cli/build.js.map +1 -1
- package/dist/cli/common.js +4 -4
- package/dist/cli/common.js.map +1 -1
- package/dist/cli/development.js +8 -8
- package/dist/cli/development.js.map +1 -1
- package/dist/cli/generators.js +4 -4
- package/dist/cli/generators.js.map +1 -1
- package/dist/cli/information.js +1 -1
- package/dist/cli/information.js.map +1 -1
- package/dist/cli/init.js +15 -15
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/production.js +9 -9
- package/dist/cli/production.js.map +1 -1
- package/dist/cli/type-checker.js +2 -2
- package/dist/cli/type-checker.js.map +1 -1
- package/dist/components/index.js +4 -4
- package/dist/components/index.js.map +1 -1
- package/dist/components/v1/button/Button.js +4 -4
- package/dist/components/v1/button/Button.js.map +1 -1
- package/dist/components/v1/button/ButtonKit.js +4 -4
- package/dist/components/v1/button/ButtonKit.js.map +1 -1
- package/dist/components/v1/modal/Modal.js +4 -4
- package/dist/components/v1/modal/Modal.js.map +1 -1
- package/dist/components/v1/modal/ModalKit.js +4 -4
- package/dist/components/v1/modal/ModalKit.js.map +1 -1
- package/dist/components/v1/select-menu/ChannelSelectMenuKit.js +4 -4
- package/dist/components/v1/select-menu/ChannelSelectMenuKit.js.map +1 -1
- package/dist/components/v1/select-menu/MentionableSelectMenuKit.js +4 -4
- package/dist/components/v1/select-menu/MentionableSelectMenuKit.js.map +1 -1
- package/dist/components/v1/select-menu/RoleSelectMenuKit.js +4 -4
- package/dist/components/v1/select-menu/RoleSelectMenuKit.js.map +1 -1
- package/dist/components/v1/select-menu/SelectMenu.js +4 -4
- package/dist/components/v1/select-menu/SelectMenu.js.map +1 -1
- package/dist/components/v1/select-menu/StringSelectMenuKit.js +4 -4
- package/dist/components/v1/select-menu/StringSelectMenuKit.js.map +1 -1
- package/dist/components/v1/select-menu/UserSelectMenuKit.js +4 -4
- package/dist/components/v1/select-menu/UserSelectMenuKit.js.map +1 -1
- package/dist/config/config.js +2 -2
- package/dist/config/config.js.map +1 -1
- package/dist/config/default.js +2 -2
- package/dist/config/default.js.map +1 -1
- package/dist/config/loader.js +4 -4
- package/dist/config/loader.js.map +1 -1
- package/dist/context/async-context.js +4 -4
- package/dist/context/async-context.js.map +1 -1
- package/dist/context/environment.js +2 -2
- package/dist/context/environment.js.map +1 -1
- package/dist/flags/feature-flags.js +6 -6
- package/dist/flags/feature-flags.js.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/logger/DefaultLogger.js +2 -2
- package/dist/logger/DefaultLogger.js.map +1 -1
- package/dist/logger/Logger.js +2 -2
- package/dist/logger/Logger.js.map +1 -1
- package/dist/plugins/index.js +2 -2
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/plugin-runtime/CommandKitPluginRuntime.js +1 -1
- package/dist/plugins/plugin-runtime/CommandKitPluginRuntime.js.map +1 -1
- package/dist/plugins/plugin-runtime/CompilerPluginRuntime.js +1 -1
- package/dist/plugins/plugin-runtime/CompilerPluginRuntime.js.map +1 -1
- package/dist/plugins/plugin-runtime/builtin/CommonDirectiveTransformer.js +2 -2
- package/dist/plugins/plugin-runtime/builtin/CommonDirectiveTransformer.js.map +1 -1
- package/dist/plugins/plugin-runtime/builtin/MacroPlugin.js +2 -2
- package/dist/plugins/plugin-runtime/builtin/MacroPlugin.js.map +1 -1
- package/dist/utils/dev-hooks.js +1 -1
- package/dist/utils/dev-hooks.js.map +1 -1
- package/dist/utils/utilities.js +1 -1
- package/dist/utils/utilities.js.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/flag.cjs +6 -0
- package/flag.d.ts +1 -0
- package/package.json +10 -3
package/dist/CommandKit.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";var Rn=Object.create;var V=Object.defineProperty;var Pn=Object.getOwnPropertyDescriptor;var Kn=Object.getOwnPropertyNames;var Dn=Object.getPrototypeOf,Tn=Object.prototype.hasOwnProperty;var
|
|
2
|
-
${r} ${h.dim(Ce.corner)}`,...t.map(a=>s(a))):this.logger.log(`${n} ${h.dim(Ce.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 ge=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 ge});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 j(v.PluginCaptureHandle)}async execute(e){let t;for(let n of this.plugins.values())try{t=await e(this,n)}catch(r){if($(r,v.PluginCaptureHandle))return!0;C.error(`Plugin "${n.name}" failed`,(r==null?void 0:r.stack)||r)}return t}};i(Je,"CommandKitPluginRuntime");var xe=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 ye=Ye;var jt={plugins:[new ye({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 be(){return Jn}i(be,"getConfig");var _t=require("async_hooks");var Yn=Symbol("commandkitEventWorker"),Wt=new _t.AsyncLocalStorage;function Xe(o,e){return Reflect.set(o,Yn,!0),Wt.run(o,e)}i(Xe,"runInEventWorkerContext");var Qe=null;function Vt(){if(Qe)return Qe;let o=(0,et.join)(process.cwd(),O?".commandkit":be().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(Vt,"findAppDirectory");var tt=class tt extends Error{constructor(){super("Event propagation stopped"),this.name="StopEventPropagationError"}};i(tt,"StopEventPropagationError");var ne=tt;var Et=require("path");var M=require("discord.js");var qt=G(require("path"));function re(o,e=!1){return`${"file://"+qt.default.resolve(o).replace(/\\\\|\\/g,"/")}${e?`?ts=${Date.now()}`:""}`}i(re,"toFileURL");var K=require("discord.js");var W,X,oe,rt=class rt{constructor(e,t,n){this.message=e;this.prefix=t;this.schema=n;b(this,W,null);b(this,X,null);b(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,W))return p(this,W);let e=this.message.content,t=this.getPrefix();if(!t)throw j(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[,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,W,{command:r,options:l,subcommand:a,subcommandGroup:s}),p(this,W)}};W=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 F=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 F.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!==F.ApplicationCommandType.User&&s.push({...r,type:F.ApplicationCommandType.User,options:void 0,description_localizations:void 0,description:void 0}),n.data.messageContextMenu&&r.type!==F.ApplicationCommandType.Message&&s.push({...r,type:F.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(F.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(F.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 ve=it;var Me=require("discord.js");var zt=require("crypto");var E,at=class at{constructor(e){this.commandkit=e;b(this,E,{executionError:null,type:null,variables:new Map,deferredFunctions:new Map,marker:"",markStart:0,markEnd:0,context:null})}setContext(e){p(this,E).context=e}get context(){return p(this,E).context}getExecutionError(){return p(this,E).executionError}setExecutionError(e){if(p(this,E).executionError)throw new Error("Execution error already set.");p(this,E).executionError=e}getType(){let e=p(this,E).type;if(!e)throw new Error("Environment type not set.");return e}setType(e){p(this,E).type=e}get variables(){return p(this,E).variables}registerDeferredFunction(e){let t=(0,zt.randomUUID)();return p(this,E).deferredFunctions.set(t,e),t}clearDeferredFunction(e){p(this,E).deferredFunctions.delete(e)}async runDeferredFunctions(){for(let[e,t]of p(this,E).deferredFunctions)try{await t(this)}catch(n){this.commandkit.emit("unhandledDeferredFunctionRejection",n)}finally{this.clearDeferredFunction(e)}}clearAllDeferredFunctions(){p(this,E).deferredFunctions.clear()}markStart(e){p(this,E).marker=e,p(this,E).markStart=performance.now()}markEnd(){p(this,E).markEnd||(p(this,E).markEnd=performance.now())}getMarker(){return p(this,E).marker}getExecutionTime(){return Math.abs(p(this,E).markEnd-p(this,E).markStart)}};E=new WeakMap,i(at,"CommandKitEnvironment");var we=at;function Jt(){throw j(v.ExitMiddleware)}i(Jt,"exitMiddleware");function Yt(){throw j(v.ForwardedCommand)}i(Yt,"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");b(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??A();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})),Yt()}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(){Jt()}};Q=new WeakMap,i(ie,"Context");var st=ie,se,lt=class lt extends st{constructor(){super(...arguments);b(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 Se,Xt,ct=class ct{constructor(e){this.handler=e;b(this,Se)}async runCommand(e,t){let{commandkit:n}=this.handler,r=this.getExecutionMode(t),s=null,a=new we(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 ae(n,{command:e.command,environment:a,executionMode:r,interaction:t instanceof Me.Message?null:t,message:t instanceof Me.Message?t:null,forwarded:!1,customArgs:{setCommandRunner:i(c=>{s=c},"setCommandRunner")},messageCommandParser:e.messageCommandParser}),l=!1;if(e.middlewares.length&&await me(a,async()=>{for(let c of e.middlewares)if(c.data.beforeExecute)try{await c.data.beforeExecute(m)}catch(d){if($(d,v.ExitMiddleware)){l=!0;return}if($(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=St(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,Se,Xt).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,v.ExitMiddleware)&&(l=!0),$(f,[v.ForwardedCommand,v.ExitMiddleware])||C.error(f)}}!l&&e.middlewares.length&&await me(a,async()=>{for(let c of e.middlewares)if(c.data.afterExecute)try{await c.data.afterExecute(m)}catch(d){if($(d,v.ExitMiddleware))return;throw d}})}getExecutionMode(e){return e instanceof Me.Message?D.Message:e.isChatInputCommand()?D.ChatInputCommand:e.isAutocomplete()?D.Autocomplete:e.isMessageContextMenuCommand()?D.MessageContextMenu:e.isUserContextMenuCommand()?D.UserContextMenu:null}};Se=new WeakSet,Xt=i(async function(){let e=Rt();await e.runDeferredFunctions(),e.clearAllDeferredFunctions(),await this.handler.commandkit.plugins.execute(async(t,n)=>{await n.onAfterCommand(t,e)})},"#finalizer"),i(ct,"AppCommandRunner");var Ie=ct;var H=require("fs/promises"),N=require("path");var Qt=require("fs");async function Re(o=!1){let e=(0,N.join)(process.cwd(),"node_modules","commandkit-types");if(!O&&!o)return e;let t=(0,N.join)(e,"package.json"),n=(0,N.join)(e,"index.js"),r=(0,N.join)(e,"index.d.ts"),s=(0,N.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
|
|
1
|
+
"use strict";var Rn=Object.create;var V=Object.defineProperty;var Pn=Object.getOwnPropertyDescriptor;var Kn=Object.getOwnPropertyNames;var Dn=Object.getPrototypeOf,Tn=Object.prototype.hasOwnProperty;var wt=o=>{throw TypeError(o)};var An=(o,e,t)=>e in o?V(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var i=(o,e)=>V(o,"name",{value:e,configurable:!0});var kn=(o,e)=>{for(var t in e)V(o,t,{get:e[t],enumerable:!0})},vt=(o,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Kn(e))!Tn.call(o,r)&&r!==t&&V(o,r,{get:()=>e[r],enumerable:!(n=Pn(e,r))||n.enumerable});return o};var G=(o,e,t)=>(t=o!=null?Rn(Dn(o)):{},vt(e||!o||!o.__esModule?V(t,"default",{value:o,enumerable:!0}):t,o)),Bn=o=>vt(V({},"__esModule",{value:!0}),o);var x=(o,e,t)=>An(o,typeof e!="symbol"?e+"":e,t),Ue=(o,e,t)=>e.has(o)||wt("Cannot "+t);var p=(o,e,t)=>(Ue(o,e,"read from private field"),t?t.call(o):e.get(o)),b=(o,e,t)=>e.has(o)?wt("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 pr={};kn(pr,{CommandKit:()=>ue,commandkit:()=>xn,onApplicationBootstrap:()=>dr,onBootstrap:()=>ur});module.exports=Bn(pr);var Cn=G(require("events"));var Mt=require("picocolors"),h=(0,Mt.createColors)(!0);var On=require("discord.js");var He=require("discord.js");var It=require("async_hooks");var w={ExitMiddleware:Symbol("kExitMiddleware"),ForwardedCommand:Symbol("kForwardedCommand"),InvalidCommandPrefix:Symbol("kInvalidCommandPrefix"),PluginCaptureHandle:Symbol("kPluginCaptureHandle")};function j(o){let e=new Error;return Reflect.set(e,"code",o),e}i(j,"createCommandKitError");function ce(o){if(!(o instanceof Error))return!1;let e=Reflect.get(o,"code");for(let t in w)if(w[t]===e)return!0;return!1}i(ce,"isCommandKitError");function F(o,e){if(!ce(o))return!1;let t=Reflect.get(o,"code");return t?Array.isArray(e)?e.includes(t):t===e:!1}i(F,"isErrorType");var Ln=Symbol("commandkitCommandWorker"),Ne=new It.AsyncLocalStorage;function me(o,e){return Reflect.set(o,Ln,!0),Ne.run(o,e)}i(me,"provideContext");function St(o,e,t){return i((...r)=>me(o,async()=>{try{return await e(...r)}catch(s){ce(s)||o.setExecutionError(s)}finally{typeof t=="function"&&setImmediate(async()=>{try{await t(...r)}catch{}})}}),"_fn")}i(St,"makeContextAwareFunction");function A(){return Ne.getStore()}i(A,"getContext");function Rt(){let o=Ne.getStore();if(!o)throw new Error("No commandkit environment found. Please make sure you are inside commandkit handler.");return o}i(Rt,"useEnvironment");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 At=require("discord.js");var kt=require("discord.js");var $n=require("discord.js");var _=require("discord.js");var Un=require("discord.js");var Ot=require("discord.js");var de=require("discord.js");var Nn=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 fe,Ut,_e=class _e{constructor(e){this.client=e;b(this,fe);x(this,"subscribers",new Map);x(this,"globalHandlers",new Map);x(this,"cleanupTimer",null);S(this,fe,Ut).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}};fe=new WeakSet,Ut=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(_e,"EventInterceptor");var pe=_e;var Fe=require("discord.js");var Ze=require("fs"),et=require("path");var ma=Symbol("kCommandKitCacheTag"),O=process.env.COMMANDKIT_IS_DEV==="true",ua=process.env.COMMANDKIT_IS_TEST==="true",da=process.env.COMMANDKIT_BOOTSTRAP_MODE||"development",he={ReloadCommands:"reload-commands",ReloadEvents:"reload-events",Unknown:"unknown"};var Nt=require("crypto");var Ve=class Ve{constructor(e){this.options=e}id=(0,Nt.randomUUID)();loadedAt=Date.now();async activate(e){}async deactivate(e){}};i(Ve,"PluginCommon");var J=Ve;function We(o){return o instanceof J}i(We,"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 We(o)&&o.type==="runtime"}i(Ht,"isRuntimePlugin");var Gt=require("discord.js");var _n={autocomplete:"Autocomplete",messageContextMenu:"MessageContextMenu",userContextMenu:"UserContextMenu",chatInput:"ChatInputCommand",message:"Message"},Wn={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},Ce={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=A();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=_n[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(`${Ce.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(Ce.vertical)} ${h.dim(t)}`}_log(e,...t){let n=this._getPrefix(e),r=this._getContext(),s=Wn[e];r?this.logger.log(`${n}
|
|
2
|
+
${r} ${h.dim(Ce.corner)}`,...t.map(a=>s(a))):this.logger.log(`${n} ${h.dim(Ce.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 ge=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 ge});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 j(w.PluginCaptureHandle)}async execute(e){let t;for(let n of this.plugins.values())try{t=await e(this,n)}catch(r){if(F(r,w.PluginCaptureHandle))return!0;C.error(`Plugin "${n.name}" failed`,(r==null?void 0:r.stack)||r)}return t}};i(Je,"CommandKitPluginRuntime");var xe=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 ye=Ye;var jt={plugins:[new ye({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 be(){return Jn}i(be,"getConfig");var _t=require("async_hooks");var Yn=Symbol("commandkitEventWorker"),Wt=new _t.AsyncLocalStorage;function Xe(o,e){return Reflect.set(o,Yn,!0),Wt.run(o,e)}i(Xe,"runInEventWorkerContext");var Qe=null;function Vt(){if(Qe)return Qe;let o=(0,et.join)(process.cwd(),O?".commandkit":be().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(Vt,"findAppDirectory");var tt=class tt extends Error{constructor(){super("Event propagation stopped"),this.name="StopEventPropagationError"}};i(tt,"StopEventPropagationError");var re=tt;var Et=require("path");var M=require("discord.js");var qt=G(require("path"));function oe(o,e=!1){return`${"file://"+qt.default.resolve(o).replace(/\\\\|\\/g,"/")}${e?`?ts=${Date.now()}`:""}`}i(oe,"toFileURL");var K=require("discord.js");var W,X,ie,rt=class rt{constructor(e,t,n){this.message=e;this.prefix=t;this.schema=n;b(this,W,null);b(this,X,null);b(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,W))return p(this,W);let e=this.message.content,t=this.getPrefix();if(!t)throw j(w.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,W,{command:r,options:l,subcommand:a,subcommandGroup:s}),p(this,W)}};W=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 we=it;var Me=require("discord.js");var zt=require("crypto");var E,at=class at{constructor(e){this.commandkit=e;b(this,E,{executionError:null,type:null,variables:new Map,deferredFunctions:new Map,marker:"",markStart:0,markEnd:0,context:null})}setContext(e){p(this,E).context=e}get context(){return p(this,E).context}getExecutionError(){return p(this,E).executionError}setExecutionError(e){if(p(this,E).executionError)throw new Error("Execution error already set.");p(this,E).executionError=e}getType(){let e=p(this,E).type;if(!e)throw new Error("Environment type not set.");return e}setType(e){p(this,E).type=e}get variables(){return p(this,E).variables}registerDeferredFunction(e){let t=(0,zt.randomUUID)();return p(this,E).deferredFunctions.set(t,e),t}clearDeferredFunction(e){p(this,E).deferredFunctions.delete(e)}async runDeferredFunctions(){for(let[e,t]of p(this,E).deferredFunctions)try{await t(this)}catch(n){this.commandkit.emit("unhandledDeferredFunctionRejection",n)}finally{this.clearDeferredFunction(e)}}clearAllDeferredFunctions(){p(this,E).deferredFunctions.clear()}markStart(e){p(this,E).marker=e,p(this,E).markStart=performance.now()}markEnd(){p(this,E).markEnd||(p(this,E).markEnd=performance.now())}getMarker(){return p(this,E).marker}getExecutionTime(){return Math.abs(p(this,E).markEnd-p(this,E).markStart)}};E=new WeakMap,i(at,"CommandKitEnvironment");var ve=at;function Jt(){throw j(w.ExitMiddleware)}i(Jt,"exitMiddleware");function Yt(){throw j(w.ForwardedCommand)}i(Yt,"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");b(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??A();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})),Yt()}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(){Jt()}};Q=new WeakMap,i(ae,"Context");var st=ae,le,lt=class lt extends st{constructor(){super(...arguments);b(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 Se,Xt,ct=class ct{constructor(e){this.handler=e;b(this,Se)}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 Me.Message?null:t,message:t instanceof Me.Message?t:null,forwarded:!1,customArgs:{setCommandRunner:i(c=>{s=c},"setCommandRunner")},messageCommandParser:e.messageCommandParser}),l=!1;if(e.middlewares.length&&await me(a,async()=>{for(let c of e.middlewares)if(c.data.beforeExecute)try{await c.data.beforeExecute(m)}catch(d){if(F(d,w.ExitMiddleware)){l=!0;return}if(F(d,[w.ForwardedCommand,w.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=St(a,async()=>(a.registerDeferredFunction(I=>{I.markEnd();let v=I.getExecutionError(),y=I.getMarker(),R=`${I.getExecutionTime().toFixed(2)}ms`;if(v){C.error(`[${y} - ${R}] Error executing command: ${v.stack||v}`);return}C.info(`[${y} - ${R}] Command executed successfully`)}),d(m.clone())),S(this,Se,Xt).bind(this)),g=s!=null?s(f):f;a.markStart(e.command.data.command.name),await n.plugins.execute(async(I,v)=>v.executeCommand(I,a,t,e,g))||await g()}catch(f){F(f,w.ExitMiddleware)&&(l=!0),F(f,[w.ForwardedCommand,w.ExitMiddleware])||C.error(f)}}!l&&e.middlewares.length&&await me(a,async()=>{for(let c of e.middlewares)if(c.data.afterExecute)try{await c.data.afterExecute(m)}catch(d){if(F(d,w.ExitMiddleware))return;throw d}})}getExecutionMode(e){return e instanceof Me.Message?D.Message:e.isChatInputCommand()?D.ChatInputCommand:e.isAutocomplete()?D.Autocomplete:e.isMessageContextMenuCommand()?D.MessageContextMenu:e.isUserContextMenuCommand()?D.UserContextMenu:null}};Se=new WeakSet,Xt=i(async function(){let e=Rt();await e.runDeferredFunctions(),e.clearAllDeferredFunctions(),await this.handler.commandkit.plugins.execute(async(t,n)=>{await n.onAfterCommand(t,e)})},"#finalizer"),i(ct,"AppCommandRunner");var Ie=ct;var H=require("fs/promises"),N=require("path");var Qt=require("fs");async function Re(o=!1){let e=(0,N.join)(process.cwd(),"node_modules","commandkit-types");if(!O&&!o)return e;let t=(0,N.join)(e,"package.json"),n=(0,N.join)(e,"index.js"),r=(0,N.join)(e,"index.d.ts"),s=(0,N.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
5
|
`,c=`// Auto-generated command types
|
|
@@ -11,6 +11,6 @@ declare module 'commandkit' {
|
|
|
11
11
|
${o}
|
|
12
12
|
}
|
|
13
13
|
export {};
|
|
14
|
-
`,t=(0,N.join)(process.cwd(),"node_modules","commandkit-types");if(!(0,Qt.existsSync)(t))return;let n=(0,N.join)(t,"command.d.ts");await(0,H.writeFile)(n,e,{encoding:"utf-8"})}i(Zt,"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 ve(this.commandkit)}loadedCommands=new M.Collection;loadedMiddlewares=new M.Collection;commandNameToId=new Map;subcommandPathToId=new Map;registrar;onInteraction=null;onMessageCreate=null;commandRunner=new Ie(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],T=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 Fe=R===g.length-1&&!T?"\u2514\u2500":"\u251C\u2500",Mn=l!==e?w:c,In=y.data.command.name,Sn=y.command.middlewares.length>0?h.magenta(" (\u03BB)"):"";console.log(`${h.green(`${Mn}${Fe}`)} ${h.yellow(In)}${Sn}`)}),T){let y=r[l].sort();y.forEach((R,te)=>{let Fe=te===y.length-1;a(R,w,Fe,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 T,I;let d=this.commandNameToId.get(c);if(!d)return null;let f=this.loadedCommands.get(d);return!f||e.guildId&&((T=f.guilds)!=null&&T.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 $(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 Zt(`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(`${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,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"),nn=require("fs"),dt=require("fs/promises"),k=require("path");var Zn=/^\+middleware\.(m|c)?(j|t)sx?$/,en=/^\+([^+().][^().]*)\.middleware\.(m|c)?(j|t)sx?$/,tn=/^\+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,nn.existsSync)(this.options.entrypoint)}isCommand(e){return er.test(e)}isMiddleware(e){return Zn.test(e)||tn.test(e)||en.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,k.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,k.join)(e,r.name),s)}}}async handle(e,t=null){let n=e.name,r=(0,k.join)(e.parentPath,e.name);if(this.isCommand(n)){let s={id:crypto.randomUUID(),name:(0,k.basename)(r,(0,k.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,k.basename)(r,(0,k.extname)(r)),path:r,relativePath:this.replaceEntrypoint(r),parentPath:e.parentPath,global:tn.test(n),command:en.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,k.normalize)(e).replace(this.options.entrypoint,"")}};i(pt,"CommandsRouter");var Ke=pt;var rn=require("discord.js"),on=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 rn.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,on.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 an=require("discord.js");var Ct=class Ct{constructor(e){this.commandkit=e}loadedEvents=new an.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(re(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 T=!1,I={name:r,args:g,namespace:a??null,once:!1,metadata:n.event,accept(){T||(T=!0)}};await this.commandkit.plugins.execute(async(w,y)=>{var R;if(!T)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 T=!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 m){if(T)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 ne&&(C.debug(`Event propagation stopped for ${r}${a?` of namespace ${a}`:""}`),T=!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 Ae=Ct;var mn=require("fs"),un=require("path");var nr=require("rimraf"),gt=require("path"),le=G(require("fs"));var ln=require("child_process");var L;function rr(o){process.stdout.write(o),process.stdout.write(`
|
|
15
|
-
`)}i(rr,"write");function sn(o){rr(h.red(`Error: ${o}`)),process.exit(1)}i(sn,"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(
|
|
14
|
+
`,t=(0,N.join)(process.cwd(),"node_modules","commandkit-types");if(!(0,Qt.existsSync)(t))return;let n=(0,N.join)(t,"command.d.ts");await(0,H.writeFile)(n,e,{encoding:"utf-8"})}i(Zt,"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 we(this.commandkit)}loadedCommands=new M.Collection;loadedMiddlewares=new M.Collection;commandNameToId=new Map;subcommandPathToId=new Map;registrar;onInteraction=null;onMessageCreate=null;commandRunner=new Ie(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],T=r[l]&&r[l].length>0,I=d?"\u2514\u2500":"\u251C\u2500",v=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 $e=R===g.length-1&&!T?"\u2514\u2500":"\u251C\u2500",Mn=l!==e?v:c,In=y.data.command.name,Sn=y.command.middlewares.length>0?h.magenta(" (\u03BB)"):"";console.log(`${h.green(`${Mn}${$e}`)} ${h.yellow(In)}${Sn}`)}),T){let y=r[l].sort();y.forEach((R,ne)=>{let $e=ne===y.length-1;a(R,v,$e,v)})}},"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 T,I;let d=this.commandNameToId.get(c);if(!d)return null;let f=this.loadedCommands.get(d);return!f||e.guildId&&((T=f.guilds)!=null&&T.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((v,y)=>(v[y.name]=y.type,v),{}))??{}});try{t=n.getFullCommand().split(" ")[0]}catch(c){return F(c,w.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 Zt(`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"),nn=require("fs"),dt=require("fs/promises"),k=require("path");var Zn=/^\+middleware\.(m|c)?(j|t)sx?$/,en=/^\+([^+().][^().]*)\.middleware\.(m|c)?(j|t)sx?$/,tn=/^\+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,nn.existsSync)(this.options.entrypoint)}isCommand(e){return er.test(e)}isMiddleware(e){return Zn.test(e)||tn.test(e)||en.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,k.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,k.join)(e,r.name),s)}}}async handle(e,t=null){let n=e.name,r=(0,k.join)(e.parentPath,e.name);if(this.isCommand(n)){let s={id:crypto.randomUUID(),name:(0,k.basename)(r,(0,k.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,k.basename)(r,(0,k.extname)(r)),path:r,relativePath:this.replaceEntrypoint(r),parentPath:e.parentPath,global:tn.test(n),command:en.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,k.normalize)(e).replace(this.options.entrypoint,"")}};i(pt,"CommandsRouter");var Ke=pt;var rn=require("discord.js"),on=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 rn.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,on.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 an=require("discord.js");var Ct=class Ct{constructor(e){this.commandkit=e}loadedEvents=new an.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 T=!1,I={name:r,args:g,namespace:a??null,once:!1,metadata:n.event,accept(){T||(T=!0)}};await this.commandkit.plugins.execute(async(v,y)=>{var R;if(!T)return(R=y.willEmitEvent)==null?void 0:R.call(y,v,I)}).catch(Object),await Xe({event:r,namespace:a??null,data:n.event,commandkit:this.commandkit,arguments:g},async()=>{for(let v of l)try{await v.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 T=!1,I=!1,v={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,v)}).catch(Object);for(let y of m){if(T)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}`:""}`),T=!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 Ae=Ct;var mn=require("fs"),un=require("path");var nr=require("rimraf"),gt=require("path"),ee=G(require("fs"));var ln=require("child_process");var L;function rr(o){process.stdout.write(o),process.stdout.write(`
|
|
15
|
+
`)}i(rr,"write");function sn(o){rr(h.red(`Error: ${o}`)),process.exit(1)}i(sn,"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,ln.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{sn("TypeScript is not installed and could not be installed automatically. Please install it manually.")}sn(e||"TypeScript must be installed to use TypeScript config files.")}return L}i(ar,"loadTypeScript");async function cn(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(cn,"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,un.join)(o,e))}i(cr,"getPossibleConfigPaths");function mr(o){let e=cr(o);for(let t of e)if((0,mn.existsSync)(t))return{path:t,isTypeScript:/\.ts$/.test(t)};return null}i(mr,"findConfigFile");var xt=null;async function dn(o=process.cwd()){if(xt)return xt;let e=mr(o);if(!e)return be();let t=await cn(e.path);return xt=t,t}i(dn,"loadConfigFile");function pn(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 he.ReloadCommands:o.commandHandler.reloadCommands(),m=!0;break;case he.ReloadEvents:o.eventHandler.reloadEvents(),m=!0;break;case he.Unknown:m=!1;break;default:break}}finally{r&&process.send&&process.send({type:"commandkit-hmr-ack",id:r,handled:m||s})}})}i(pn,"registerDevHooks");var gn=require("fs");var fn=G(require("events"));var yt=class yt{constructor(e){this.commandkit=e}emitter=new fn.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 ke=yt;var hn=require("discord.js");var bt=class bt extends hn.Collection{};i(bt,"FlagStore");var Be=bt;var xn,Oe=new Set,Le=new Set;function ur(o){Oe.add(o)}i(ur,"onBootstrap");function dr(o){Le.add(o)}i(dr,"onApplicationBootstrap");var te,B,yn,bn,En,wn,vn,U=class U extends Cn.default{constructor(t){if(U.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;b(this,B);b(this,te,!1);x(this,"eventInterceptor");x(this,"config",{defaultLocale:Fe.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 Ae(this));x(this,"plugins");x(this,"events",new ke(this));this.plugins=new xe(this),U.instance||(U.instance=this),xn=U.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 pe(this.client),O)try{pn(this),await Re()}catch(n){process.env.COMMANDKIT_DEBUG_TYPEGEN&&C.error(n)}if(await this.loadPlugins(),await S(this,B,En).call(this),this.commandHandler.registerCommandHandler(),this.incrementClientListenersCount(),t!==!1&&!this.options.client.isReady()){this.client.once(Fe.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,bn).call(this)}}async loadPlugins(){let n=(await dn()).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 Vt()}getPath(t){let n=this.getAppDirectory();if(!n)return null;switch(t){case"commands":return(0,Et.join)(n,"commands");case"events":return(0,Et.join)(n,"events");default:return t}}};te=new WeakMap,B=new WeakSet,yn=i(async function(){for(let t of Oe)try{await t(this)}catch(n){C.error("Error while executing bootstrap hook: ",n)}finally{Oe.delete(t)}Oe.clear()},"#bootstrapHooks"),bn=i(async function(){for(let t of Le)try{await t(this)}catch(n){C.error("Error while executing application bootstrap hook: ",n)}finally{Le.delete(t)}Le.clear()},"#applicationBootstrapHooks"),En=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,vn).call(this),await S(this,B,wn).call(this)},"#init"),wn=i(async function(){if(this.commandsRouter.isValidPath()){let t=await this.commandsRouter.scan();O&&(0,gn.writeFileSync)("./.commandkit/commands.json",JSON.stringify(t,null,2))}await this.commandHandler.loadCommands(),this.commandHandler.printBanner()},"#initCommands"),vn=i(async function(){this.eventsRouter.isValidPath()&&await this.eventsRouter.scan(),await this.eventHandler.loadEvents()},"#initEvents"),i(U,"CommandKit"),x(U,"createElement",$t),x(U,"Fragment",Ft),x(U,"instance");var ue=U;0&&(module.exports={CommandKit,commandkit,onApplicationBootstrap,onBootstrap});
|
|
16
16
|
//# sourceMappingURL=CommandKit.js.map
|