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
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";var On=Object.create;var Z=Object.defineProperty;var Ln=Object.getOwnPropertyDescriptor;var
|
|
2
|
-
${r} ${h.dim(Ee.corner)}`,...t.map(s=>a(s))):this.logger.log(`${n} ${h.dim(Ee.corner)}`,...t.map(s=>a(s)))}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(Xe,"DefaultLogger");var ve=Xe;function er(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]=(...a)=>{e.provider[r](...a)};return n}i(er,"createLogger");var C=er({provider:new ve});var Qe=class Qe{constructor(e){this.commandkit=e}plugins=new Vt.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 Y(M.PluginCaptureHandle)}async execute(e){let t;for(let n of this.plugins.values())try{t=await e(this,n)}catch(r){if(F(r,M.PluginCaptureHandle))return!0;C.error(`Plugin "${n.name}" failed`,(r==null?void 0:r.stack)||r)}return t}};i(Qe,"CommandKitPluginRuntime");var we=Qe;var tr=require("fs/promises");var Ze=class Ze extends te{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(Ze,"MacroPlugin");var Me=Ze;var qt={plugins:[new Me({enabled:!0})],esbuildPlugins:[],compilerOptions:{macro:{development:!1}},static:!0,typescript:{ignoreBuildErrors:!1},distDir:"dist",env:{},sourceMap:{development:!0,production:!0},typedCommands:!0};var nr=qt;function Ie(){return nr}i(Ie,"getConfig");var zt=require("async_hooks");var rr=Symbol("commandkitEventWorker"),Jt=new zt.AsyncLocalStorage;function et(o,e){return Reflect.set(o,rr,!0),Jt.run(o,e)}i(et,"runInEventWorkerContext");var tt=null;function Yt(){if(tt)return tt;let o=(0,rt.join)(process.cwd(),L?".commandkit":Ie().distDir);(0,nt.existsSync)(o)||(o=process.cwd());let e=["app"].map(t=>(0,rt.join)(o,t));for(let t of e)if((0,nt.existsSync)(t))return tt=t,t;return null}i(Yt,"findAppDirectory");var ot=class ot extends Error{constructor(){super("Event propagation stopped"),this.name="StopEventPropagationError"}};i(ot,"StopEventPropagationError");var se=ot;var St=require("path");var S=require("discord.js");var Xt=z(require("path"));function le(o,e=!1){return`${"file://"+Xt.default.resolve(o).replace(/\\\\|\\/g,"/")}${e?`?ts=${Date.now()}`:""}`}i(le,"toFileURL");var D=require("discord.js");var X,ne,ce,at=class at{constructor(e,t,n){this.message=e;this.prefix=t;this.schema=n;y(this,X,null);y(this,ne,null);y(this,ce,[])}getArgs(){return this.parse(),p(this,ce)}get options(){return p(this,ne)||E(this,ne,new it(this)),p(this,ne)}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,X))return p(this,X);let e=this.message.content,t=this.getPrefix();if(!t)throw Y(M.InvalidCommandPrefix);let n=e.slice(t.length).trim().split(" "),r=n.shift();E(this,ce,n);let a,s;if(r!=null&&r.includes(":")){let[,m,u]=r.split(":");!u&&m?s=m:u&&m&&(a=m,s=u)}let c=this.schema([r,a,s].filter(Boolean).join(" ").trim()),l=n.map(m=>{try{let[u,f]=m.split(":");if(!(u in c))return null;switch(c[u]){case D.ApplicationCommandOptionType.Boolean:return{name:u,value:f==="true"};case D.ApplicationCommandOptionType.Integer:return{name:u,value:parseInt(f,10)};case D.ApplicationCommandOptionType.Number:return{name:u,value:parseFloat(f)};case D.ApplicationCommandOptionType.String:return{name:u,value:f};case D.ApplicationCommandOptionType.User:return{name:u,value:this.message.mentions.users.find(g=>g.id===f.replace(/[<@!>]/g,""))};case D.ApplicationCommandOptionType.Channel:return{name:u,value:this.message.mentions.channels.find(g=>g.id===f.replace(/[<#>]/g,""))};case D.ApplicationCommandOptionType.Role:return{name:u,value:this.message.mentions.roles.find(g=>g.id===f.replace(/[<@&>]/g,""))};case D.ApplicationCommandOptionType.Attachment:return{name:u,value:this.message.attachments.find(g=>g.name===f)};default:return null}}catch{return null}}).filter(m=>m!==null);return E(this,X,{command:r,options:l,subcommand:s,subcommandGroup:a}),p(this,X)}};X=new WeakMap,ne=new WeakMap,ce=new WeakMap,i(at,"MessageCommandParser");var Se=at,st=class st{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 a;let n=this.assertOption(e,t),r=(a=this.parser.message.guild)==null?void 0:a.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 D.GuildMember||n instanceof D.User||n instanceof D.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(st,"MessageCommandOptions");var it=st;var U=require("discord.js");var lt=class lt{constructor(e){this.commandkit=e;this.api.setToken(this.commandkit.client.token??process.env.DISCORD_TOKEN??process.env.TOKEN??"")}api=new U.REST;getCommandsData(){return this.commandkit.commandHandler.getCommandsArray().flatMap(n=>{let r="toJSON"in n.data.command?n.data.command.toJSON():n.data.command,a=[r];return n.data.userContextMenu&&r.type!==U.ApplicationCommandType.User&&a.push({...r,type:U.ApplicationCommandType.User,options:void 0,description_localizations:void 0,description:void 0}),n.data.messageContextMenu&&r.type!==U.ApplicationCommandType.Message&&a.push({...r,type:U.ApplicationCommandType.Message,description_localizations:void 0,description:void 0,options:void 0}),a})}async register(){let e=this.getCommandsData(),t=!1,n={preventDefault(){t=!0},commands:e};if(await this.commandkit.plugins.execute(async(s,c)=>{if(!t)return c.onBeforeRegisterCommands(s,n)}),t)return;if(!this.commandkit.client.isReady())throw new Error("Cannot register commands before the client is ready");let r=e.filter(s=>{var c;return(c=s.guilds)==null?void 0:c.filter(Boolean).length}).map(s=>{var c;return{...s,guilds:Array.from(new Set((c=s.guilds)==null?void 0:c.filter(Boolean)))}}),a=e.filter(s=>{var c;return!((c=s.guilds)!=null&&c.filter(Boolean).length)});await this.updateGlobalCommands(a),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,a)=>{if(!t)return a.onBeforeRegisterGlobalCommands(r,n)});try{let r=await this.api.put(U.Routes.applicationCommands(this.commandkit.client.user.id),{body:e.map(a=>({...a,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,a)=>{if(!t)return a.onBeforePrepareGuildCommandsRegistration(r,n)}),!t)try{let r=new Map;if(e.forEach(s=>{var c;(c=s.guilds)!=null&&c.length&&s.guilds.forEach(l=>{r.has(l)||r.set(l,[]),r.get(l).push(s)})}),!r.size)return;let a=0;for(let[s,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 u=await this.api.put(U.Routes.applicationGuildCommands(this.commandkit.client.user.id,s),{body:c.map(f=>({...f,guilds:void 0}))});a+=u.length}C.info(`\u2728 Refreshed ${a} guild application (/) commands`)}catch(r){C.error("Failed to update guild application (/) commands",r)}}};i(lt,"CommandRegistrar");var Re=lt;var Ke=require("discord.js");var Qt=require("crypto");var v,ct=class ct{constructor(e){this.commandkit=e;y(this,v,{executionError:null,type:null,variables:new Map,deferredFunctions:new Map,marker:"",markStart:0,markEnd:0,context:null})}setContext(e){p(this,v).context=e}get context(){return p(this,v).context}getExecutionError(){return p(this,v).executionError}setExecutionError(e){if(p(this,v).executionError)throw new Error("Execution error already set.");p(this,v).executionError=e}getType(){let e=p(this,v).type;if(!e)throw new Error("Environment type not set.");return e}setType(e){p(this,v).type=e}get variables(){return p(this,v).variables}registerDeferredFunction(e){let t=(0,Qt.randomUUID)();return p(this,v).deferredFunctions.set(t,e),t}clearDeferredFunction(e){p(this,v).deferredFunctions.delete(e)}async runDeferredFunctions(){for(let[e,t]of p(this,v).deferredFunctions)try{await t(this)}catch(n){this.commandkit.emit("unhandledDeferredFunctionRejection",n)}finally{this.clearDeferredFunction(e)}}clearAllDeferredFunctions(){p(this,v).deferredFunctions.clear()}markStart(e){p(this,v).marker=e,p(this,v).markStart=performance.now()}markEnd(){p(this,v).markEnd||(p(this,v).markEnd=performance.now())}getMarker(){return p(this,v).marker}getExecutionTime(){return Math.abs(p(this,v).markEnd-p(this,v).markStart)}};v=new WeakMap,i(ct,"CommandKitEnvironment");var Pe=ct;function Zt(){throw Y(M.ExitMiddleware)}i(Zt,"exitMiddleware");function en(){throw Y(M.ForwardedCommand)}i(en,"redirect");var T={ChatInputCommand:"chatInput",MessageContextMenu:"messageContextMenu",UserContextMenu:"userContextMenu",Autocomplete:"autocomplete",Message:"message"},re,me=class me{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");y(this,re);x(this,"_locale",null);this.interaction=t.interaction,this.message=t.message,this.client=e.client,E(this,re,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,re)}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??k();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},a=n.variables.get("execHandlerKind");if(!a)throw new Error("No execution handler kind found.");let s=r[a];if(!s)throw new Error(`No handler found for ${a}`);n.variables.set("forwardedBy",this.commandName),n.variables.set("forwardedTo",e),await s(this.clone({forwarded:!0})),en()}get executionMode(){return this.config.executionMode}isInteraction(){return this.executionMode===T.ChatInputCommand||this.executionMode===T.Autocomplete||this.executionMode===T.MessageContextMenu||this.executionMode===T.UserContextMenu}isChatInputCommand(){return this.executionMode===T.ChatInputCommand}isAutocomplete(){return this.executionMode===T.Autocomplete}isMessageContextMenu(){return this.executionMode===T.MessageContextMenu}isUserContextMenu(){return this.executionMode===T.UserContextMenu}isMessage(){return this.executionMode===T.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 me(this.commandkit,{...this.config,...e,store:p(this,re)}):new me(this.commandkit,this.config)}isMiddleware(){return this instanceof ue}args(){return this.isMessage()?this.config.messageCommandParser.getArgs():[]}exit(){Zt()}};re=new WeakMap,i(me,"Context");var mt=me,de,ut=class ut extends mt{constructor(){super(...arguments);y(this,de,!1)}get cancelled(){return p(this,de)}cancel(){E(this,de,!0)}setCommandRunner(t){var n,r;(r=(n=this.config.customArgs)==null?void 0:n.setCommandRunner)==null||r.call(n,t)}};de=new WeakMap,i(ut,"MiddlewareContext");var ue=ut;var Te,tn,dt=class dt{constructor(e){this.handler=e;y(this,Te)}async runCommand(e,t){let{commandkit:n}=this.handler,r=this.getExecutionMode(t),a=null,s=new Pe(n);s.setType("COMMAND_HANDLER"),s.variables.set("commandHandlerType","app"),s.variables.set("currentCommandName",e.command.command.name),s.variables.set("execHandlerKind",r);let c=new ue(n,{command:e.command,environment:s,executionMode:r,interaction:t instanceof Ke.Message?null:t,message:t instanceof Ke.Message?t:null,forwarded:!1,customArgs:{setCommandRunner:i(m=>{a=m},"setCommandRunner")},messageCommandParser:e.messageCommandParser}),l=!1;if(e.middlewares.length&&await Ae(s,async()=>{for(let m of e.middlewares)if(m.data.beforeExecute)try{await m.data.beforeExecute(c)}catch(u){if(F(u,M.ExitMiddleware)){l=!0;return}if(F(u,[M.ForwardedCommand,M.InvalidCommandPrefix]))continue;throw u}}),!c.cancelled){let u=e.command.data[r];if(u||C.warn(`Command ${e.command.command.name} has no handler for ${r}`),u)try{let f=nn(s,async()=>(s.registerDeferredFunction(P=>{P.markEnd();let I=P.getExecutionError(),b=P.getMarker(),K=`${P.getExecutionTime().toFixed(2)}ms`;if(I){C.error(`[${b} - ${K}] Error executing command: ${I.stack||I}`);return}C.info(`[${b} - ${K}] Command executed successfully`)}),u(c.clone())),w(this,Te,tn).bind(this)),g=a!=null?a(f):f;s.markStart(e.command.data.command.name),await n.plugins.execute(async(P,I)=>I.executeCommand(P,s,t,e,g))||await g()}catch(f){F(f,M.ExitMiddleware)&&(l=!0),F(f,[M.ForwardedCommand,M.ExitMiddleware])||C.error(f)}}!l&&e.middlewares.length&&await Ae(s,async()=>{for(let m of e.middlewares)if(m.data.afterExecute)try{await m.data.afterExecute(c)}catch(u){if(F(u,M.ExitMiddleware))return;throw u}})}getExecutionMode(e){return e instanceof Ke.Message?T.Message:e.isChatInputCommand()?T.ChatInputCommand:e.isAutocomplete()?T.Autocomplete:e.isMessageContextMenuCommand()?T.MessageContextMenu:e.isUserContextMenuCommand()?T.UserContextMenu:null}};Te=new WeakSet,tn=i(async function(){let e=rn();await e.runDeferredFunctions(),e.clearAllDeferredFunctions(),await this.handler.commandkit.plugins.execute(async(t,n)=>{await n.onAfterCommand(t,e)})},"#finalizer"),i(dt,"AppCommandRunner");var De=dt;var W=require("fs/promises"),_=require("path");var on=require("fs");async function ke(o=!1){let e=(0,_.join)(process.cwd(),"node_modules","commandkit-types");if(!L&&!o)return e;let t=(0,_.join)(e,"package.json"),n=(0,_.join)(e,"index.js"),r=(0,_.join)(e,"index.d.ts"),a=(0,_.join)(e,"command.d.ts"),s={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 On=Object.create;var Z=Object.defineProperty;var Ln=Object.getOwnPropertyDescriptor;var Fn=Object.getOwnPropertyNames;var $n=Object.getPrototypeOf,Un=Object.prototype.hasOwnProperty;var Kt=o=>{throw TypeError(o)};var Nn=(o,e,t)=>e in o?Z(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var i=(o,e)=>Z(o,"name",{value:e,configurable:!0});var Hn=(o,e)=>{for(var t in e)Z(o,t,{get:e[t],enumerable:!0})},Dt=(o,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Fn(e))!Un.call(o,r)&&r!==t&&Z(o,r,{get:()=>e[r],enumerable:!(n=Ln(e,r))||n.enumerable});return o};var z=(o,e,t)=>(t=o!=null?On($n(o)):{},Dt(e||!o||!o.__esModule?Z(t,"default",{value:o,enumerable:!0}):t,o)),Gn=o=>Dt(Z({},"__esModule",{value:!0}),o);var x=(o,e,t)=>Nn(o,typeof e!="symbol"?e+"":e,t),_e=(o,e,t)=>e.has(o)||Kt("Cannot "+t);var p=(o,e,t)=>(_e(o,e,"read from private field"),t?t.call(o):e.get(o)),y=(o,e,t)=>e.has(o)?Kt("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(o):e.set(o,t),E=(o,e,t,n)=>(_e(o,e,"write to private field"),n?n.call(o,t):e.set(o,t),t),v=(o,e,t)=>(_e(o,e,"access private method"),t);var br={};Hn(br,{ButtonKit:()=>he});module.exports=Gn(br);var q=require("discord.js");var Kn=require("async_hooks");var wn=z(require("events"));var Tt=require("picocolors"),h=(0,Tt.createColors)(!0);var jn=require("discord.js");var _n=require("discord.js");var At=require("discord.js");var We=require("discord.js");var kt=require("discord.js");var Bt=require("discord.js");var Ot=require("discord.js");var Lt=require("discord.js");var Ft=require("discord.js");var Wn=require("discord.js");var J=require("discord.js");var Vn=require("discord.js");var Ut=require("discord.js");var Ce=require("discord.js");var qn=require("discord.js");var zn=require("discord.js");var Nt=new Set;function Jn(o,e="CommandKitWarning"){process.emitWarning(o,{code:e})}i(Jn,"emitWarning");function Ve(o){Nt.has(o)||(Nt.add(o),Jn(`${o} is unstable and may change in future versions.`,"CommandKitUnstableWarning"))}i(Ve,"warnUnstable");function Ht(o){return Ve("CommandKit JSX"),Array.isArray(o.children)?o.children.flat():[o.children]}i(Ht,"Fragment");function Gt(o,e,...t){return Ve("CommandKit JSX"),o({...e,children:e.children??t})}i(Gt,"createElement");var xe,jt,qe=class qe{constructor(e){this.client=e;y(this,xe);x(this,"subscribers",new Map);x(this,"globalHandlers",new Map);x(this,"cleanupTimer",null);v(this,xe,jt).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 a,s;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))),(s=(a=Reflect.get(t,"options")).onEnd)==null||s.call(a,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 a of r){let s=Reflect.get(a,"options");if(s.time&&Date.now()-s.registeredAt>s.time){this.unsubscribe(e,a,"time");continue}if(s.autoReset&&(s.registeredAt=Date.now()),!(s.filter&&!await s.filter(...n)))try{await a(...n)}catch(l){if(s.onError)await s.onError(l);else throw l}finally{s.once&&this.unsubscribe(e,a,"once")}}},"handler");return this.globalHandlers.set(e,t),t}};xe=new WeakSet,jt=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(qe,"EventInterceptor");var ge=qe;var Ge=require("discord.js");var nt=require("fs"),rt=require("path");var oa=Symbol("kCommandKitCacheTag"),L=process.env.COMMANDKIT_IS_DEV==="true",ia=process.env.COMMANDKIT_IS_TEST==="true",aa=process.env.COMMANDKIT_BOOTSTRAP_MODE||"development",ye={ReloadCommands:"reload-commands",ReloadEvents:"reload-events",Unknown:"unknown"};var _t=require("crypto");var Je=class Je{constructor(e){this.options=e}id=(0,_t.randomUUID)();loadedAt=Date.now();async activate(e){}async deactivate(e){}};i(Je,"PluginCommon");var ee=Je;function ze(o){return o instanceof ee}i(ze,"isPlugin");var Ye=class Ye extends ee{type="compiler";async transform(e){return null}async resolve(e){return null}async onBuildStart(){}async onBuildEnd(){}};i(Ye,"CompilerPlugin");var te=Ye;function Wt(o){return ze(o)&&o.type==="runtime"}i(Wt,"isRuntimePlugin");var Vt=require("discord.js");var M={ExitMiddleware:Symbol("kExitMiddleware"),ForwardedCommand:Symbol("kForwardedCommand"),InvalidCommandPrefix:Symbol("kInvalidCommandPrefix"),PluginCaptureHandle:Symbol("kPluginCaptureHandle")};function Y(o){let e=new Error;return Reflect.set(e,"code",o),e}i(Y,"createCommandKitError");function be(o){if(!(o instanceof Error))return!1;let e=Reflect.get(o,"code");for(let t in M)if(M[t]===e)return!0;return!1}i(be,"isCommandKitError");function $(o,e){if(!be(o))return!1;let t=Reflect.get(o,"code");return t?Array.isArray(e)?e.includes(t):t===e:!1}i($,"isErrorType");var Xn={autocomplete:"Autocomplete",messageContextMenu:"MessageContextMenu",userContextMenu:"UserContextMenu",chatInput:"ChatInputCommand",message:"Message"},Qn={0:h.blue,1:h.green,2:h.yellow,3:h.red,4:h.white},Zn={0:h.bgBlue,1:h.bgGreen,2:h.bgYellow,3:h.bgRed,4:h.bgWhite},Ee={vertical:"\u2502",horizontalDown:"\u252C",horizontalUp:"\u2534",verticalRight:"\u251C",corner:"\u2514"},Xe=class Xe{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"),a=e.getMilliseconds().toString().padStart(3,"0");return`${t}:${n}:${r}.${a}`}_getContext(){let e=k();if(!e)return"";let t=e.variables.get("execHandlerKind"),n=e.variables.get("commandHandlerType"),r=e.variables.get("currentCommandName");if(!t&&!n)return"";let a=Xn[t];if(!a&&!n)return"";let s=e.variables.get("forwardedBy"),c=e.variables.get("forwardedTo"),l=r?h.magenta(`/${r}`)+" ":"",m=c?`${h.yellowBright(`(${s||r} \u2192 ${c})`)} `:"";return h.dim(`${Ee.vertical} `)+h.cyanBright(`${l}${m}${a?h.gray(`[${a}]`):""}`.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`${Zn[e](h.whiteBright(` ${t} `))} `}_getPrefix(e){let t=this._formatTime(new Date);return`${this._getLevelLabel(e)}${h.dim(Ee.vertical)} ${h.dim(t)}`}_log(e,...t){let n=this._getPrefix(e),r=this._getContext(),a=Qn[e];r?this.logger.log(`${n}
|
|
2
|
+
${r} ${h.dim(Ee.corner)}`,...t.map(s=>a(s))):this.logger.log(`${n} ${h.dim(Ee.corner)}`,...t.map(s=>a(s)))}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(Xe,"DefaultLogger");var we=Xe;function er(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]=(...a)=>{e.provider[r](...a)};return n}i(er,"createLogger");var C=er({provider:new we});var Qe=class Qe{constructor(e){this.commandkit=e}plugins=new Vt.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 Y(M.PluginCaptureHandle)}async execute(e){let t;for(let n of this.plugins.values())try{t=await e(this,n)}catch(r){if($(r,M.PluginCaptureHandle))return!0;C.error(`Plugin "${n.name}" failed`,(r==null?void 0:r.stack)||r)}return t}};i(Qe,"CommandKitPluginRuntime");var ve=Qe;var tr=require("fs/promises");var Ze=class Ze extends te{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(Ze,"MacroPlugin");var Me=Ze;var qt={plugins:[new Me({enabled:!0})],esbuildPlugins:[],compilerOptions:{macro:{development:!1}},static:!0,typescript:{ignoreBuildErrors:!1},distDir:"dist",env:{},sourceMap:{development:!0,production:!0},typedCommands:!0};var nr=qt;function Ie(){return nr}i(Ie,"getConfig");var zt=require("async_hooks");var rr=Symbol("commandkitEventWorker"),Jt=new zt.AsyncLocalStorage;function et(o,e){return Reflect.set(o,rr,!0),Jt.run(o,e)}i(et,"runInEventWorkerContext");var tt=null;function Yt(){if(tt)return tt;let o=(0,rt.join)(process.cwd(),L?".commandkit":Ie().distDir);(0,nt.existsSync)(o)||(o=process.cwd());let e=["app"].map(t=>(0,rt.join)(o,t));for(let t of e)if((0,nt.existsSync)(t))return tt=t,t;return null}i(Yt,"findAppDirectory");var ot=class ot extends Error{constructor(){super("Event propagation stopped"),this.name="StopEventPropagationError"}};i(ot,"StopEventPropagationError");var le=ot;var St=require("path");var S=require("discord.js");var Xt=z(require("path"));function ce(o,e=!1){return`${"file://"+Xt.default.resolve(o).replace(/\\\\|\\/g,"/")}${e?`?ts=${Date.now()}`:""}`}i(ce,"toFileURL");var D=require("discord.js");var X,ne,me,at=class at{constructor(e,t,n){this.message=e;this.prefix=t;this.schema=n;y(this,X,null);y(this,ne,null);y(this,me,[])}getArgs(){return this.parse(),p(this,me)}get options(){return p(this,ne)||E(this,ne,new it(this)),p(this,ne)}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,X))return p(this,X);let e=this.message.content,t=this.getPrefix();if(!t)throw Y(M.InvalidCommandPrefix);let n=e.slice(t.length).trim().split(" "),r=n.shift();E(this,me,n);let a,s;if(r!=null&&r.includes(":")){let[,m,u]=r.split(":");!u&&m?s=m:u&&m&&(a=m,s=u)}let c=this.schema([r,a,s].filter(Boolean).join(" ").trim()),l=n.map(m=>{try{let[u,f]=m.split(":");if(!(u in c))return null;switch(c[u]){case D.ApplicationCommandOptionType.Boolean:return{name:u,value:f==="true"};case D.ApplicationCommandOptionType.Integer:return{name:u,value:parseInt(f,10)};case D.ApplicationCommandOptionType.Number:return{name:u,value:parseFloat(f)};case D.ApplicationCommandOptionType.String:return{name:u,value:f};case D.ApplicationCommandOptionType.User:return{name:u,value:this.message.mentions.users.find(g=>g.id===f.replace(/[<@!>]/g,""))};case D.ApplicationCommandOptionType.Channel:return{name:u,value:this.message.mentions.channels.find(g=>g.id===f.replace(/[<#>]/g,""))};case D.ApplicationCommandOptionType.Role:return{name:u,value:this.message.mentions.roles.find(g=>g.id===f.replace(/[<@&>]/g,""))};case D.ApplicationCommandOptionType.Attachment:return{name:u,value:this.message.attachments.find(g=>g.name===f)};default:return null}}catch{return null}}).filter(m=>m!==null);return E(this,X,{command:r,options:l,subcommand:s,subcommandGroup:a}),p(this,X)}};X=new WeakMap,ne=new WeakMap,me=new WeakMap,i(at,"MessageCommandParser");var Se=at,st=class st{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 a;let n=this.assertOption(e,t),r=(a=this.parser.message.guild)==null?void 0:a.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 D.GuildMember||n instanceof D.User||n instanceof D.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(st,"MessageCommandOptions");var it=st;var U=require("discord.js");var lt=class lt{constructor(e){this.commandkit=e;this.api.setToken(this.commandkit.client.token??process.env.DISCORD_TOKEN??process.env.TOKEN??"")}api=new U.REST;getCommandsData(){return this.commandkit.commandHandler.getCommandsArray().flatMap(n=>{let r="toJSON"in n.data.command?n.data.command.toJSON():n.data.command,a=[r];return n.data.userContextMenu&&r.type!==U.ApplicationCommandType.User&&a.push({...r,type:U.ApplicationCommandType.User,options:void 0,description_localizations:void 0,description:void 0}),n.data.messageContextMenu&&r.type!==U.ApplicationCommandType.Message&&a.push({...r,type:U.ApplicationCommandType.Message,description_localizations:void 0,description:void 0,options:void 0}),a})}async register(){let e=this.getCommandsData(),t=!1,n={preventDefault(){t=!0},commands:e};if(await this.commandkit.plugins.execute(async(s,c)=>{if(!t)return c.onBeforeRegisterCommands(s,n)}),t)return;if(!this.commandkit.client.isReady())throw new Error("Cannot register commands before the client is ready");let r=e.filter(s=>{var c;return(c=s.guilds)==null?void 0:c.filter(Boolean).length}).map(s=>{var c;return{...s,guilds:Array.from(new Set((c=s.guilds)==null?void 0:c.filter(Boolean)))}}),a=e.filter(s=>{var c;return!((c=s.guilds)!=null&&c.filter(Boolean).length)});await this.updateGlobalCommands(a),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,a)=>{if(!t)return a.onBeforeRegisterGlobalCommands(r,n)});try{let r=await this.api.put(U.Routes.applicationCommands(this.commandkit.client.user.id),{body:e.map(a=>({...a,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,a)=>{if(!t)return a.onBeforePrepareGuildCommandsRegistration(r,n)}),!t)try{let r=new Map;if(e.forEach(s=>{var c;(c=s.guilds)!=null&&c.length&&s.guilds.forEach(l=>{r.has(l)||r.set(l,[]),r.get(l).push(s)})}),!r.size)return;let a=0;for(let[s,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 u=await this.api.put(U.Routes.applicationGuildCommands(this.commandkit.client.user.id,s),{body:c.map(f=>({...f,guilds:void 0}))});a+=u.length}C.info(`\u2728 Refreshed ${a} guild application (/) commands`)}catch(r){C.error("Failed to update guild application (/) commands",r)}}};i(lt,"CommandRegistrar");var Re=lt;var Ke=require("discord.js");var Qt=require("crypto");var w,ct=class ct{constructor(e){this.commandkit=e;y(this,w,{executionError:null,type:null,variables:new Map,deferredFunctions:new Map,marker:"",markStart:0,markEnd:0,context:null})}setContext(e){p(this,w).context=e}get context(){return p(this,w).context}getExecutionError(){return p(this,w).executionError}setExecutionError(e){if(p(this,w).executionError)throw new Error("Execution error already set.");p(this,w).executionError=e}getType(){let e=p(this,w).type;if(!e)throw new Error("Environment type not set.");return e}setType(e){p(this,w).type=e}get variables(){return p(this,w).variables}registerDeferredFunction(e){let t=(0,Qt.randomUUID)();return p(this,w).deferredFunctions.set(t,e),t}clearDeferredFunction(e){p(this,w).deferredFunctions.delete(e)}async runDeferredFunctions(){for(let[e,t]of p(this,w).deferredFunctions)try{await t(this)}catch(n){this.commandkit.emit("unhandledDeferredFunctionRejection",n)}finally{this.clearDeferredFunction(e)}}clearAllDeferredFunctions(){p(this,w).deferredFunctions.clear()}markStart(e){p(this,w).marker=e,p(this,w).markStart=performance.now()}markEnd(){p(this,w).markEnd||(p(this,w).markEnd=performance.now())}getMarker(){return p(this,w).marker}getExecutionTime(){return Math.abs(p(this,w).markEnd-p(this,w).markStart)}};w=new WeakMap,i(ct,"CommandKitEnvironment");var Pe=ct;function Zt(){throw Y(M.ExitMiddleware)}i(Zt,"exitMiddleware");function en(){throw Y(M.ForwardedCommand)}i(en,"redirect");var T={ChatInputCommand:"chatInput",MessageContextMenu:"messageContextMenu",UserContextMenu:"userContextMenu",Autocomplete:"autocomplete",Message:"message"},re,ue=class ue{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");y(this,re);x(this,"_locale",null);this.interaction=t.interaction,this.message=t.message,this.client=e.client,E(this,re,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,re)}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??k();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},a=n.variables.get("execHandlerKind");if(!a)throw new Error("No execution handler kind found.");let s=r[a];if(!s)throw new Error(`No handler found for ${a}`);n.variables.set("forwardedBy",this.commandName),n.variables.set("forwardedTo",e),await s(this.clone({forwarded:!0})),en()}get executionMode(){return this.config.executionMode}isInteraction(){return this.executionMode===T.ChatInputCommand||this.executionMode===T.Autocomplete||this.executionMode===T.MessageContextMenu||this.executionMode===T.UserContextMenu}isChatInputCommand(){return this.executionMode===T.ChatInputCommand}isAutocomplete(){return this.executionMode===T.Autocomplete}isMessageContextMenu(){return this.executionMode===T.MessageContextMenu}isUserContextMenu(){return this.executionMode===T.UserContextMenu}isMessage(){return this.executionMode===T.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 ue(this.commandkit,{...this.config,...e,store:p(this,re)}):new ue(this.commandkit,this.config)}isMiddleware(){return this instanceof de}args(){return this.isMessage()?this.config.messageCommandParser.getArgs():[]}exit(){Zt()}};re=new WeakMap,i(ue,"Context");var mt=ue,pe,ut=class ut extends mt{constructor(){super(...arguments);y(this,pe,!1)}get cancelled(){return p(this,pe)}cancel(){E(this,pe,!0)}setCommandRunner(t){var n,r;(r=(n=this.config.customArgs)==null?void 0:n.setCommandRunner)==null||r.call(n,t)}};pe=new WeakMap,i(ut,"MiddlewareContext");var de=ut;var Te,tn,dt=class dt{constructor(e){this.handler=e;y(this,Te)}async runCommand(e,t){let{commandkit:n}=this.handler,r=this.getExecutionMode(t),a=null,s=new Pe(n);s.setType("COMMAND_HANDLER"),s.variables.set("commandHandlerType","app"),s.variables.set("currentCommandName",e.command.command.name),s.variables.set("execHandlerKind",r);let c=new de(n,{command:e.command,environment:s,executionMode:r,interaction:t instanceof Ke.Message?null:t,message:t instanceof Ke.Message?t:null,forwarded:!1,customArgs:{setCommandRunner:i(m=>{a=m},"setCommandRunner")},messageCommandParser:e.messageCommandParser}),l=!1;if(e.middlewares.length&&await Ae(s,async()=>{for(let m of e.middlewares)if(m.data.beforeExecute)try{await m.data.beforeExecute(c)}catch(u){if($(u,M.ExitMiddleware)){l=!0;return}if($(u,[M.ForwardedCommand,M.InvalidCommandPrefix]))continue;throw u}}),!c.cancelled){let u=e.command.data[r];if(u||C.warn(`Command ${e.command.command.name} has no handler for ${r}`),u)try{let f=nn(s,async()=>(s.registerDeferredFunction(P=>{P.markEnd();let I=P.getExecutionError(),b=P.getMarker(),K=`${P.getExecutionTime().toFixed(2)}ms`;if(I){C.error(`[${b} - ${K}] Error executing command: ${I.stack||I}`);return}C.info(`[${b} - ${K}] Command executed successfully`)}),u(c.clone())),v(this,Te,tn).bind(this)),g=a!=null?a(f):f;s.markStart(e.command.data.command.name),await n.plugins.execute(async(P,I)=>I.executeCommand(P,s,t,e,g))||await g()}catch(f){$(f,M.ExitMiddleware)&&(l=!0),$(f,[M.ForwardedCommand,M.ExitMiddleware])||C.error(f)}}!l&&e.middlewares.length&&await Ae(s,async()=>{for(let m of e.middlewares)if(m.data.afterExecute)try{await m.data.afterExecute(c)}catch(u){if($(u,M.ExitMiddleware))return;throw u}})}getExecutionMode(e){return e instanceof Ke.Message?T.Message:e.isChatInputCommand()?T.ChatInputCommand:e.isAutocomplete()?T.Autocomplete:e.isMessageContextMenuCommand()?T.MessageContextMenu:e.isUserContextMenuCommand()?T.UserContextMenu:null}};Te=new WeakSet,tn=i(async function(){let e=rn();await e.runDeferredFunctions(),e.clearAllDeferredFunctions(),await this.handler.commandkit.plugins.execute(async(t,n)=>{await n.onAfterCommand(t,e)})},"#finalizer"),i(dt,"AppCommandRunner");var De=dt;var W=require("fs/promises"),_=require("path");var on=require("fs");async function ke(o=!1){let e=(0,_.join)(process.cwd(),"node_modules","commandkit-types");if(!L&&!o)return e;let t=(0,_.join)(e,"package.json"),n=(0,_.join)(e,"index.js"),r=(0,_.join)(e,"index.d.ts"),a=(0,_.join)(e,"command.d.ts"),s={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
|
|
3
3
|
import './command';
|
|
4
4
|
export {};
|
|
5
5
|
`,m=`// Auto-generated command types
|
|
@@ -11,6 +11,6 @@ declare module 'commandkit' {
|
|
|
11
11
|
${o}
|
|
12
12
|
}
|
|
13
13
|
export {};
|
|
14
|
-
`,t=(0,_.join)(process.cwd(),"node_modules","commandkit-types");if(!(0,on.existsSync)(t))return;let n=(0,_.join)(t,"command.d.ts");await(0,W.writeFile)(n,e,{encoding:"utf-8"})}i(an,"rewriteCommandDeclaration");var or={command:i(o=>o instanceof S.SlashCommandBuilder||o instanceof S.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")},ir={beforeExecute:i(o=>typeof o=="function","beforeExecute"),afterExecute:i(o=>typeof o=="function","afterExecute")},pt=class pt{constructor(e){this.commandkit=e;this.registrar=new Re(this.commandkit)}loadedCommands=new S.Collection;loadedMiddlewares=new S.Collection;commandNameToId=new Map;subcommandPathToId=new Map;registrar;onInteraction=null;onMessageCreate=null;commandRunner=new De(this);externalCommandData=new S.Collection;externalMiddlewareData=new S.Collection;printBanner(){let e=crypto.randomUUID(),t=this.getCommandsArray().reduce((l,m)=>{let u=m.command.category||e;return l[u]=l[u]||[],l[u].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(":"),u=null;for(let f=m.length-1;f>0;f--){let g=m.slice(0,f).join(":");if(n.includes(g)){u=g;break}}u&&(r[u]=r[u]||[],r[u].push(l))}});let a=new Set,s=i((l,m="",u=!1,f="")=>{if(a.has(l))return;a.add(l);let g=t[l],A=r[l]&&r[l].length>0,P=u?"\u2514\u2500":"\u251C\u2500",I=f+(u?" ":"\u2502 ");if(l!==e){let b=l.includes(":")?l.split(":").pop():l;console.log(h.cyan(`${m}${P} ${h.bold(b)}`))}if(g.forEach((b,K)=>{let je=K===g.length-1&&!A?"\u2514\u2500":"\u251C\u2500",An=l!==e?I:m,kn=b.data.command.name,Bn=b.command.middlewares.length>0?h.magenta(" (\u03BB)"):"";console.log(`${h.green(`${An}${je}`)} ${h.yellow(kn)}${Bn}`)}),A){let b=r[l].sort();b.forEach((K,ae)=>{let je=ae===b.length-1;s(K,I,je,I)})}},"printCategory"),c=n.filter(l=>{if(l===e)return!0;if(l.includes(":")){let m=l.split(":");for(let u=1;u<m.length;u++){let f=m.slice(0,u).join(":");if(n.includes(f))return!1}return!0}return!0}).sort();c.forEach((l,m)=>{let u=m===c.length-1;s(l,"",u)})}getCommandsArray(){return Array.from(this.loadedCommands.values())}registerCommandHandler(){this.onInteraction??=async e=>{if(await this.commandkit.plugins.execute(async(a,s)=>s.onBeforeInteraction(a,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,a)=>a.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(S.Events.InteractionCreate,this.onInteraction),this.commandkit.client.on(S.Events.MessageCreate,this.onMessageCreate)}async prepareCommandRun(e,t){var c;let n;if(!t)if(e instanceof S.Message){if(e.author.bot)return null;let l=await this.commandkit.config.getMessageCommandPrefix(e);n=new Se(e,Array.isArray(l)?l:[l],m=>{var A,P;let u=this.commandNameToId.get(m);if(!u)return null;let f=this.loadedCommands.get(u);return!f||e.guildId&&((A=f.guilds)!=null&&A.length)&&!f.guilds.includes(e.guildId)?null:((P=("toJSON"in f.data.command?f.data.command.toJSON():f.data.command).options)==null?void 0:P.reduce((I,b)=>(I[b.name]=b.type,I),{}))??{}});try{t=n.getFullCommand().split(" ")[0]}catch(m){return F(m,M.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 a=this.loadedCommands.get(r);if(!a||(e instanceof S.CommandInteraction||e instanceof S.AutocompleteInteraction)&&e.guildId&&((c=a.guilds)!=null&&c.length)&&!a.guilds.includes(e.guildId))return null;let s=[];for(let l of a.command.middlewares){let m=this.loadedMiddlewares.get(l);m&&s.push(m)}return{command:a,middlewares:s,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((s,c)=>c.onBeforeCommandsLoad(s));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,a=this.externalMiddlewareData.size?n.concat(this.externalMiddlewareData):n;for(let[s,c]of a)await this.loadMiddleware(s,c);for(let[s,c]of r)await this.loadCommand(s,c);L&&await an(`type CommandTypeData = ${Array.from(this.loadedCommands.mapValues(s=>JSON.stringify(s.command.name)).values()).join(" | ")}`),await this.commandkit.plugins.execute((s,c)=>c.onAfterCommandsLoad(s))}async loadMiddleware(e,t){try{let n=await import(`${le(t.path)}?t=${Date.now()}`),r=0;for(let[a,s]of Object.entries(ir)){if(n[a]&&!await s(n[a]))throw new Error(`Invalid export for middleware ${e}: ${a} does not match expected value`);n[a]&&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(`${le(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[s,c]of Object.entries(or))if(s!=="command"&&n[s]&&r++,n[s]&&!await c(n[s]))throw new Error(`Invalid export for command ${t.name}: ${s} 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 a=n.command;await this.commandkit.plugins.execute(async(s,c)=>{let l=await c.prepareCommand(s,a);l&&(a=l)}),this.loadedCommands.set(e,{command:t,guilds:n.guilds,data:{...n,command:"toJSON"in a?a.toJSON():a}}),this.commandNameToId.set(t.name,e)}catch(n){C.error(`Failed to load command ${t.name} (${e})`,n)}}};i(pt,"AppCommandHandler");var Be=pt;var ft=require("discord.js"),cn=require("fs"),ht=require("fs/promises"),B=require("path");var ar=/^\+middleware\.(m|c)?(j|t)sx?$/,sn=/^\+([^+().][^().]*)\.middleware\.(m|c)?(j|t)sx?$/,ln=/^\+global-middleware\.(m|c)?(j|t)sx?$/,sr=/^([^+().][^().]*)\.(m|c)?(j|t)sx?$/,lr=/^\(.+\)$/,Ct=class Ct{constructor(e){this.options=e}commands=new ft.Collection;middlewares=new ft.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,cn.existsSync)(this.options.entrypoint)}isCommand(e){return sr.test(e)}isMiddleware(e){return ar.test(e)||ln.test(e)||sn.test(e)}isCategory(e){return lr.test(e)}clear(){this.commands.clear(),this.middlewares.clear()}async scan(){let e=await(0,ht.readdir)(this.options.entrypoint,{withFileTypes:!0});for(let t of e){if(t.name.startsWith("_"))continue;let n=(0,B.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,ht.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 a=this.isCategory(r.name)?`${t}:${r.name.slice(1,-1)}`:null;await this.traverse((0,B.join)(e,r.name),a)}}}async handle(e,t=null){let n=e.name,r=(0,B.join)(e.parentPath,e.name);if(this.isCommand(n)){let a={id:crypto.randomUUID(),name:(0,B.basename)(r,(0,B.extname)(r)),path:r,category:t,parentPath:e.parentPath,relativePath:this.replaceEntrypoint(r),middlewares:[]};this.commands.set(a.id,a)}else if(this.isMiddleware(n)){let a={id:crypto.randomUUID(),name:(0,B.basename)(r,(0,B.extname)(r)),path:r,relativePath:this.replaceEntrypoint(r),parentPath:e.parentPath,global:ln.test(n),command:sn.test(n)&&n.split(".")[0]||null};this.middlewares.set(a.id,a)}}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,B.normalize)(e).replace(this.options.entrypoint,"")}};i(Ct,"CommandsRouter");var Oe=Ct;var mn=require("discord.js"),un=require("fs"),gt=require("fs/promises"),Le=require("path");var xt=class xt{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 mn.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,un.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,gt.readdir)(e,{withFileTypes:!0});for(let n of t)if(n.isDirectory()){let r=(0,Le.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=[],a=!1){let s=await(0,gt.readdir)(t,{withFileTypes:!0}),c=a&&/^\(.+\)$/.test(e),l=c?e.slice(1,-1):n??null;s.sort((m,u)=>m.name.localeCompare(u.name));for(let m of s)if(!m.name.startsWith("_")){if(m.isDirectory()){let u=(0,Le.join)(t,m.name);await this.scanEvent(m.name,u,l,r);continue}m.isFile()&&/\.(m|c)?(j|t)sx?$/.test(m.name)&&r.push((0,Le.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(xt,"EventsRouter");var $e=xt;var dn=require("discord.js");var yt=class yt{constructor(e){this.commandkit=e}loadedEvents=new dn.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(le(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 a=r.length;a||C.warn(`Event ${n.event}${n.namespace?` of namespace ${n.namespace}`:""} does not have any listeners`);let s=`${n.namespace?`${n.namespace}:`:""}${n.event}`;this.loadedEvents.set(s,{name:n.event,namespace:n.namespace,event:n,listeners:r}),C.info(`\u2728 Loaded event ${n.event}${n.namespace?` of namespace ${n.namespace}`:""} with ${a} listener${a===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:a,namespace:s}=n,c=a.filter(g=>g.once),l=a.filter(g=>!g.once),m=new Set,u=i(async(...g)=>{let A=!1,P={name:r,args:g,namespace:s??null,once:!1,metadata:n.event,accept(){A||(A=!0)}};await this.commandkit.plugins.execute(async(I,b)=>{var K;if(!A)return(K=b.willEmitEvent)==null?void 0:K.call(b,I,P)}).catch(Object),await et({event:r,namespace:s??null,data:n.event,commandkit:this.commandkit,arguments:g},async()=>{for(let I of l)try{await I.handler(...g)}catch(b){if(b instanceof se){C.debug(`Event propagation stopped for ${r}${s?` of namespace ${s}`:""}`);break}C.error(`Error handling event ${r}${s?` of namespace ${s}`:""}`,b)}})},"mainHandler"),f=i(async(...g)=>{let A=!1,P=!1,I={name:r,args:g,namespace:s??null,once:!0,metadata:n.event,accept(){P||(P=!0)}};await this.commandkit.plugins.execute(async(b,K)=>{var ae;if(!P)return(ae=K.willEmitEvent)==null?void 0:ae.call(K,b,I)}).catch(Object);for(let b of c){if(A)break;await et({event:r,namespace:s??null,data:n.event,commandkit:this.commandkit,arguments:g},async()=>{try{if(m.has(b.handler))return;await b.handler(...g),m.add(b.handler)}catch(K){K instanceof se&&(C.debug(`Event propagation stopped for ${r}${s?` of namespace ${s}`:""}`),A=!0),C.error(`Error handling event ${r}${s?` of namespace ${s}`:""}`,K)}})}m.size===c.length&&l.length===0&&(this.loadedEvents.delete(t),C.info(`\u{1F9F9} Cleaned up completed once-only event ${r}${s?` of namespace ${s}`:""}`))},"onceHandler");this.loadedEvents.set(t,{...n,mainListener:l.length>0?{handler:u,once:!1}:void 0,executedOnceListeners:m}),s?(l.length>0&&this.commandkit.events.on(s,r,u),c.length>0&&this.commandkit.events.once(s,r,f)):(l.length>0&&e.on(r,u),c.length>0&&e.once(r,f)),C.info(`\u{1F50C} Registered event ${r}${s?` of namespace ${s}`:""} (${l.length} regular, ${c.length} once-only)`)}}unregisterAllClientListeners(){let e=this.commandkit.client;for(let[t,{name:n,mainListener:r,namespace:a}]of this.loadedEvents.entries())r?a?this.commandkit.events.off(a,n,r.handler):e.off(n,r.handler):a?this.commandkit.events.removeAllListeners(a,n):e.removeAllListeners(n),this.loadedEvents.delete(t),C.info(`\u{1F5D1}\uFE0F Unregistered event ${n}${a?` of namespace ${a}`:""}`)}};i(yt,"AppEventsHandler");var Fe=yt;var Cn=require("fs"),gn=require("path");var cr=require("rimraf"),bt=require("path"),pe=z(require("fs"));var fn=require("child_process");var $;function mr(o){process.stdout.write(o),process.stdout.write(`
|
|
15
|
-
`)}i(mr,"write");function pn(o){mr(h.red(`Error: ${o}`)),process.exit(1)}i(pn,"panic");async function ur(o){return/\.(c|m)?tsx?$/.test(o)?(process.features.typescript||await pr(),!0):!1}i(ur,"ensureTypeScript");var oe;function dr(){if(oe)return oe;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(pe.default.existsSync((0,bt.join)(process.cwd(),e))){oe=t;break}return oe||(oe="npm"),oe}i(dr,"detectPackageManager");async function pr(o){if($)return $;try{$=await import("typescript")}catch(e){if(e instanceof Error&&"code"in e&&e.code==="MODULE_NOT_FOUND")try{let t=dr();return(0,fn.execSync)(`${t} add typescript`,{stdio:"inherit",cwd:process.cwd()}),console.log(h.cyan("TypeScript has been installed automatically, restarting...")),$=await import("typescript"),$}catch{pn("TypeScript is not installed and could not be installed automatically. Please install it manually.")}pn(e||"TypeScript must be installed to use TypeScript config files.")}return $}i(pr,"loadTypeScript");async function hn(o){if(await fr(o),await ur(o)&&$){let{transpileModule:n}=$,r=pe.default.readFileSync(o,"utf8"),{outputText:a}=n(r,{compilerOptions:{module:$.ModuleKind.ESNext,target:$.ScriptTarget.ESNext,moduleResolution:$.ModuleResolutionKind.NodeNext},fileName:o}),s=await ke(),c=(0,bt.join)(s,"compiled-commandkit.config.mjs");pe.default.writeFileSync(c,a),o=c}return await import(`file://${o}`).then(n=>n.default||n)}i(hn,"loadConfigFileFromPath");async function fr(o){if(!pe.default.existsSync(o))throw new Error(`File not found: ${o}`)}i(fr,"ensureExists");var hr=["commandkit.config.js","commandkit.config.mjs","commandkit.config.cjs","commandkit.config.ts"];function Cr(o){return hr.map(e=>(0,gn.join)(o,e))}i(Cr,"getPossibleConfigPaths");function gr(o){let e=Cr(o);for(let t of e)if((0,Cn.existsSync)(t))return{path:t,isTypeScript:/\.ts$/.test(t)};return null}i(gr,"findConfigFile");var Et=null;async function xn(o=process.cwd()){if(Et)return Et;let e=gr(o);if(!e)return Ie();let t=await hn(e.path);return Et=t,t}i(xn,"loadConfigFile");function yn(o){L&&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 a=!1,s=!1,c=!1,l={accept(){a=!0},preventDefault(){s=!0},path:n,event:t};try{if(await o.plugins.execute(async(m,u)=>{var f;a||await((f=u.performHMR)==null?void 0:f.call(u,m,l))}),s)return;switch(t){case ye.ReloadCommands:o.commandHandler.reloadCommands(),c=!0;break;case ye.ReloadEvents:o.eventHandler.reloadEvents(),c=!0;break;case ye.Unknown:c=!1;break;default:break}}finally{r&&process.send&&process.send({type:"commandkit-hmr-ack",id:r,handled:c||a})}})}i(yn,"registerDevHooks");var wn=require("fs");var bn=z(require("events"));var vt=class vt{constructor(e){this.commandkit=e}emitter=new bn.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(vt,"CommandKitEventsChannel");var Ue=vt;var En=require("discord.js");var wt=class wt extends En.Collection{};i(wt,"FlagStore");var Ne=wt;var xr,Mt=new Set,It=new Set;var ie,O,Mn,In,Sn,Rn,Pn,N=class N extends vn.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;y(this,O);y(this,ie,!1);x(this,"eventInterceptor");x(this,"config",{defaultLocale:Ge.Locale.EnglishUS,getMessageCommandPrefix:i(()=>"!","getMessageCommandPrefix")});x(this,"store",new Map);x(this,"flags",new Ne);x(this,"commandsRouter");x(this,"eventsRouter");x(this,"commandHandler",new Be(this));x(this,"eventHandler",new Fe(this));x(this,"plugins");x(this,"events",new Ue(this));this.plugins=new we(this),N.instance||(N.instance=this),xr=N.instance,w(this,O,Mn).call(this)}async start(t){if(!p(this,ie)){if(!this.options.client)throw new Error(h.red('"client" is required when starting CommandKit.'));if(this.eventInterceptor=new ge(this.client),L)try{yn(this),await ke()}catch(n){process.env.COMMANDKIT_DEBUG_TYPEGEN&&C.error(n)}if(await this.loadPlugins(),await w(this,O,Sn).call(this),this.commandHandler.registerCommandHandler(),this.incrementClientListenersCount(),t!==!1&&!this.options.client.isReady()){this.client.once(Ge.Events.ClientReady,async()=>{await this.commandHandler.registrar.register()}),await this.plugins.execute((r,a)=>{var s;return(s=a.onBeforeClientLogin)==null?void 0:s.call(a,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,a)=>{var s;return(s=a.onAfterClientLogin)==null?void 0:s.call(a,r)})}else this.options.client.isReady()&&await this.commandHandler.registrar.register();E(this,ie,!0),await w(this,O,In).call(this)}}async loadPlugins(){let n=(await xn()).plugins.flat(2).filter(r=>Wt(r));if(n.length)for(let r of n)await this.plugins.softRegisterPlugin(r)}get started(){return p(this,ie)}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 Yt()}getPath(t){let n=this.getAppDirectory();if(!n)return null;switch(t){case"commands":return(0,St.join)(n,"commands");case"events":return(0,St.join)(n,"events");default:return t}}};ie=new WeakMap,O=new WeakSet,Mn=i(async function(){for(let t of Mt)try{await t(this)}catch(n){C.error("Error while executing bootstrap hook: ",n)}finally{Mt.delete(t)}Mt.clear()},"#bootstrapHooks"),In=i(async function(){for(let t of It)try{await t(this)}catch(n){C.error("Error while executing application bootstrap hook: ",n)}finally{It.delete(t)}It.clear()},"#applicationBootstrapHooks"),Sn=i(async function(){if(!this.getAppDirectory())return;let n=this.getPath("commands"),r=this.getPath("events");this.commandsRouter=new Oe({entrypoint:n}),await this.plugins.execute((a,s)=>s.onCommandsRouterInit(a)),this.eventsRouter=new $e({entrypoints:[r]}),await this.plugins.execute((a,s)=>s.onEventsRouterInit(a)),await w(this,O,Pn).call(this),await w(this,O,Rn).call(this)},"#init"),Rn=i(async function(){if(this.commandsRouter.isValidPath()){let t=await this.commandsRouter.scan();L&&(0,wn.writeFileSync)("./.commandkit/commands.json",JSON.stringify(t,null,2))}await this.commandHandler.loadCommands(),this.commandHandler.printBanner()},"#initCommands"),Pn=i(async function(){this.eventsRouter.isValidPath()&&await this.eventsRouter.scan(),await this.eventHandler.loadEvents()},"#initEvents"),i(N,"CommandKit"),x(N,"createElement",Gt),x(N,"Fragment",Ht),x(N,"instance");var He=N;var yr=Symbol("commandkitCommandWorker"),fe=new Kn.AsyncLocalStorage;function G(o){return fe.exit(o)}i(G,"exitContext");function Ae(o,e){return Reflect.set(o,yr,!0),fe.run(o,e)}i(Ae,"provideContext");function nn(o,e,t){return i((...r)=>Ae(o,async()=>{try{return await e(...r)}catch(a){be(a)||o.setExecutionError(a)}finally{typeof t=="function"&&setImmediate(async()=>{try{await t(...r)}catch{}})}}),"_fn")}i(nn,"makeContextAwareFunction");function j(o=!1){var t;let e=((t=fe.getStore())==null?void 0:t.commandkit)??He.instance;if(!e&&o)throw new Error("CommandKit instance not found.");return e}i(j,"getCommandKit");function k(){return fe.getStore()}i(k,"getContext");function rn(){let o=fe.getStore();if(!o)throw new Error("No commandkit environment found. Please make sure you are inside commandkit handler.");return o}i(rn,"useEnvironment");var V,R,Q,H,Dn,Tn,Rt,Pt=class Pt extends q.ButtonBuilder{constructor(){super(...arguments);y(this,H);y(this,V,null);y(this,R,{autoReset:!0,time:5*60*1e3,once:!1});y(this,Q,null)}onClick(t,n){var r,a,s,c;if(this.data.style===q.ButtonStyle.Link)throw new TypeError('Cannot setup "onClick" handler on link buttons.');if(!t)throw new TypeError('Cannot setup "onClick" without a handler function parameter.');return p(this,V)&&w(this,H,Rt).call(this),E(this,V,t),n&&E(this,R,{autoReset:n.autoReset??((r=p(this,R))==null?void 0:r.autoReset)??!0,time:n.time??((a=p(this,R))==null?void 0:a.time)??5*60*1e3,filter:n.filter??((s=p(this,R))==null?void 0:s.filter),onEnd:n.onEnd??((c=p(this,R))==null?void 0:c.onEnd)}),w(this,H,Tn).call(this),this}onEnd(t){if(this.data.style===q.ButtonStyle.Link)throw new TypeError('Cannot setup "onEnd" handler on link buttons.');if(!t)throw new TypeError('Cannot setup "onEnd" without a handler function parameter.');return p(this,R)??E(this,R,{}),p(this,R).onEnd=t,this}onError(t){if(!t)throw new TypeError('Cannot setup "onError" without a handler function parameter.');return p(this,R)??E(this,R,{}),p(this,R).onError=t,this}filter(t){return p(this,R)??E(this,R,{autoReset:!0,time:5*60*1e3}),p(this,R).filter=t,this}get customId(){return this.data.custom_id??this.data.customId}dispose(){return w(this,H,Rt).call(this),this}};V=new WeakMap,R=new WeakMap,Q=new WeakMap,H=new WeakSet,Dn=i(function(){let t=k();return t?G(()=>t.commandkit.eventInterceptor):j(!0).eventInterceptor},"#getEventInterceptor"),Tn=i(function(){if(this.data.style===q.ButtonStyle.Link||!p(this,R)||!p(this,V))return;if((this.customId??null)===null)throw new TypeError('Cannot setup "onClick" handler on a button without a custom id.');let n=w(this,H,Dn).call(this);E(this,Q,n.subscribe(q.Events.InteractionCreate,async r=>{var m,u;if(!r.isButton())return;let a=this.customId??null,s=r.customId;if(a&&s!==a)return;let c=(m=p(this,R))==null?void 0:m.filter;if(c&&!await c(r))return;let l=p(this,V);return l?l(r,this):(u=p(this,Q))==null?void 0:u.call(this)},p(this,R)))},"#setupInteractionCollector"),Rt=i(function(){var t;(t=p(this,Q))==null||t.call(this),E(this,Q,null),E(this,R,null),E(this,V,null)},"#destroyCollector"),i(Pt,"ButtonKit");var he=Pt;0&&(module.exports={ButtonKit});
|
|
14
|
+
`,t=(0,_.join)(process.cwd(),"node_modules","commandkit-types");if(!(0,on.existsSync)(t))return;let n=(0,_.join)(t,"command.d.ts");await(0,W.writeFile)(n,e,{encoding:"utf-8"})}i(an,"rewriteCommandDeclaration");var or={command:i(o=>o instanceof S.SlashCommandBuilder||o instanceof S.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")},ir={beforeExecute:i(o=>typeof o=="function","beforeExecute"),afterExecute:i(o=>typeof o=="function","afterExecute")},pt=class pt{constructor(e){this.commandkit=e;this.registrar=new Re(this.commandkit)}loadedCommands=new S.Collection;loadedMiddlewares=new S.Collection;commandNameToId=new Map;subcommandPathToId=new Map;registrar;onInteraction=null;onMessageCreate=null;commandRunner=new De(this);externalCommandData=new S.Collection;externalMiddlewareData=new S.Collection;printBanner(){let e=crypto.randomUUID(),t=this.getCommandsArray().reduce((l,m)=>{let u=m.command.category||e;return l[u]=l[u]||[],l[u].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(":"),u=null;for(let f=m.length-1;f>0;f--){let g=m.slice(0,f).join(":");if(n.includes(g)){u=g;break}}u&&(r[u]=r[u]||[],r[u].push(l))}});let a=new Set,s=i((l,m="",u=!1,f="")=>{if(a.has(l))return;a.add(l);let g=t[l],A=r[l]&&r[l].length>0,P=u?"\u2514\u2500":"\u251C\u2500",I=f+(u?" ":"\u2502 ");if(l!==e){let b=l.includes(":")?l.split(":").pop():l;console.log(h.cyan(`${m}${P} ${h.bold(b)}`))}if(g.forEach((b,K)=>{let je=K===g.length-1&&!A?"\u2514\u2500":"\u251C\u2500",An=l!==e?I:m,kn=b.data.command.name,Bn=b.command.middlewares.length>0?h.magenta(" (\u03BB)"):"";console.log(`${h.green(`${An}${je}`)} ${h.yellow(kn)}${Bn}`)}),A){let b=r[l].sort();b.forEach((K,se)=>{let je=se===b.length-1;s(K,I,je,I)})}},"printCategory"),c=n.filter(l=>{if(l===e)return!0;if(l.includes(":")){let m=l.split(":");for(let u=1;u<m.length;u++){let f=m.slice(0,u).join(":");if(n.includes(f))return!1}return!0}return!0}).sort();c.forEach((l,m)=>{let u=m===c.length-1;s(l,"",u)})}getCommandsArray(){return Array.from(this.loadedCommands.values())}registerCommandHandler(){this.onInteraction??=async e=>{if(await this.commandkit.plugins.execute(async(a,s)=>s.onBeforeInteraction(a,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,a)=>a.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(S.Events.InteractionCreate,this.onInteraction),this.commandkit.client.on(S.Events.MessageCreate,this.onMessageCreate)}async prepareCommandRun(e,t){var c;let n;if(!t)if(e instanceof S.Message){if(e.author.bot)return null;let l=await this.commandkit.config.getMessageCommandPrefix(e);n=new Se(e,Array.isArray(l)?l:[l],m=>{var A,P;let u=this.commandNameToId.get(m);if(!u)return null;let f=this.loadedCommands.get(u);return!f||e.guildId&&((A=f.guilds)!=null&&A.length)&&!f.guilds.includes(e.guildId)?null:((P=("toJSON"in f.data.command?f.data.command.toJSON():f.data.command).options)==null?void 0:P.reduce((I,b)=>(I[b.name]=b.type,I),{}))??{}});try{t=n.getFullCommand().split(" ")[0]}catch(m){return $(m,M.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 a=this.loadedCommands.get(r);if(!a||(e instanceof S.CommandInteraction||e instanceof S.AutocompleteInteraction)&&e.guildId&&((c=a.guilds)!=null&&c.length)&&!a.guilds.includes(e.guildId))return null;let s=[];for(let l of a.command.middlewares){let m=this.loadedMiddlewares.get(l);m&&s.push(m)}return{command:a,middlewares:s,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((s,c)=>c.onBeforeCommandsLoad(s));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,a=this.externalMiddlewareData.size?n.concat(this.externalMiddlewareData):n;for(let[s,c]of a)await this.loadMiddleware(s,c);for(let[s,c]of r)await this.loadCommand(s,c);L&&await an(`type CommandTypeData = ${Array.from(this.loadedCommands.mapValues(s=>JSON.stringify(s.command.name)).values()).join(" | ")}`),await this.commandkit.plugins.execute((s,c)=>c.onAfterCommandsLoad(s))}async loadMiddleware(e,t){try{let n=await import(`${ce(t.path)}?t=${Date.now()}`),r=0;for(let[a,s]of Object.entries(ir)){if(n[a]&&!await s(n[a]))throw new Error(`Invalid export for middleware ${e}: ${a} does not match expected value`);n[a]&&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(`${ce(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[s,c]of Object.entries(or))if(s!=="command"&&n[s]&&r++,n[s]&&!await c(n[s]))throw new Error(`Invalid export for command ${t.name}: ${s} 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 a=n.command;await this.commandkit.plugins.execute(async(s,c)=>{let l=await c.prepareCommand(s,a);l&&(a=l)}),this.loadedCommands.set(e,{command:t,guilds:n.guilds,data:{...n,command:"toJSON"in a?a.toJSON():a}}),this.commandNameToId.set(t.name,e)}catch(n){C.error(`Failed to load command ${t.name} (${e})`,n)}}};i(pt,"AppCommandHandler");var Be=pt;var ft=require("discord.js"),cn=require("fs"),ht=require("fs/promises"),B=require("path");var ar=/^\+middleware\.(m|c)?(j|t)sx?$/,sn=/^\+([^+().][^().]*)\.middleware\.(m|c)?(j|t)sx?$/,ln=/^\+global-middleware\.(m|c)?(j|t)sx?$/,sr=/^([^+().][^().]*)\.(m|c)?(j|t)sx?$/,lr=/^\(.+\)$/,Ct=class Ct{constructor(e){this.options=e}commands=new ft.Collection;middlewares=new ft.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,cn.existsSync)(this.options.entrypoint)}isCommand(e){return sr.test(e)}isMiddleware(e){return ar.test(e)||ln.test(e)||sn.test(e)}isCategory(e){return lr.test(e)}clear(){this.commands.clear(),this.middlewares.clear()}async scan(){let e=await(0,ht.readdir)(this.options.entrypoint,{withFileTypes:!0});for(let t of e){if(t.name.startsWith("_"))continue;let n=(0,B.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,ht.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 a=this.isCategory(r.name)?`${t}:${r.name.slice(1,-1)}`:null;await this.traverse((0,B.join)(e,r.name),a)}}}async handle(e,t=null){let n=e.name,r=(0,B.join)(e.parentPath,e.name);if(this.isCommand(n)){let a={id:crypto.randomUUID(),name:(0,B.basename)(r,(0,B.extname)(r)),path:r,category:t,parentPath:e.parentPath,relativePath:this.replaceEntrypoint(r),middlewares:[]};this.commands.set(a.id,a)}else if(this.isMiddleware(n)){let a={id:crypto.randomUUID(),name:(0,B.basename)(r,(0,B.extname)(r)),path:r,relativePath:this.replaceEntrypoint(r),parentPath:e.parentPath,global:ln.test(n),command:sn.test(n)&&n.split(".")[0]||null};this.middlewares.set(a.id,a)}}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,B.normalize)(e).replace(this.options.entrypoint,"")}};i(Ct,"CommandsRouter");var Oe=Ct;var mn=require("discord.js"),un=require("fs"),gt=require("fs/promises"),Le=require("path");var xt=class xt{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 mn.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,un.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,gt.readdir)(e,{withFileTypes:!0});for(let n of t)if(n.isDirectory()){let r=(0,Le.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=[],a=!1){let s=await(0,gt.readdir)(t,{withFileTypes:!0}),c=a&&/^\(.+\)$/.test(e),l=c?e.slice(1,-1):n??null;s.sort((m,u)=>m.name.localeCompare(u.name));for(let m of s)if(!m.name.startsWith("_")){if(m.isDirectory()){let u=(0,Le.join)(t,m.name);await this.scanEvent(m.name,u,l,r);continue}m.isFile()&&/\.(m|c)?(j|t)sx?$/.test(m.name)&&r.push((0,Le.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(xt,"EventsRouter");var Fe=xt;var dn=require("discord.js");var yt=class yt{constructor(e){this.commandkit=e}loadedEvents=new dn.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(ce(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 a=r.length;a||C.warn(`Event ${n.event}${n.namespace?` of namespace ${n.namespace}`:""} does not have any listeners`);let s=`${n.namespace?`${n.namespace}:`:""}${n.event}`;this.loadedEvents.set(s,{name:n.event,namespace:n.namespace,event:n,listeners:r}),C.info(`\u2728 Loaded event ${n.event}${n.namespace?` of namespace ${n.namespace}`:""} with ${a} listener${a===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:a,namespace:s}=n,c=a.filter(g=>g.once),l=a.filter(g=>!g.once),m=new Set,u=i(async(...g)=>{let A=!1,P={name:r,args:g,namespace:s??null,once:!1,metadata:n.event,accept(){A||(A=!0)}};await this.commandkit.plugins.execute(async(I,b)=>{var K;if(!A)return(K=b.willEmitEvent)==null?void 0:K.call(b,I,P)}).catch(Object),await et({event:r,namespace:s??null,data:n.event,commandkit:this.commandkit,arguments:g},async()=>{for(let I of l)try{await I.handler(...g)}catch(b){if(b instanceof le){C.debug(`Event propagation stopped for ${r}${s?` of namespace ${s}`:""}`);break}C.error(`Error handling event ${r}${s?` of namespace ${s}`:""}`,b)}})},"mainHandler"),f=i(async(...g)=>{let A=!1,P=!1,I={name:r,args:g,namespace:s??null,once:!0,metadata:n.event,accept(){P||(P=!0)}};await this.commandkit.plugins.execute(async(b,K)=>{var se;if(!P)return(se=K.willEmitEvent)==null?void 0:se.call(K,b,I)}).catch(Object);for(let b of c){if(A)break;await et({event:r,namespace:s??null,data:n.event,commandkit:this.commandkit,arguments:g},async()=>{try{if(m.has(b.handler))return;await b.handler(...g),m.add(b.handler)}catch(K){K instanceof le&&(C.debug(`Event propagation stopped for ${r}${s?` of namespace ${s}`:""}`),A=!0),C.error(`Error handling event ${r}${s?` of namespace ${s}`:""}`,K)}})}m.size===c.length&&l.length===0&&(this.loadedEvents.delete(t),C.info(`\u{1F9F9} Cleaned up completed once-only event ${r}${s?` of namespace ${s}`:""}`))},"onceHandler");this.loadedEvents.set(t,{...n,mainListener:l.length>0?{handler:u,once:!1}:void 0,executedOnceListeners:m}),s?(l.length>0&&this.commandkit.events.on(s,r,u),c.length>0&&this.commandkit.events.once(s,r,f)):(l.length>0&&e.on(r,u),c.length>0&&e.once(r,f)),C.info(`\u{1F50C} Registered event ${r}${s?` of namespace ${s}`:""} (${l.length} regular, ${c.length} once-only)`)}}unregisterAllClientListeners(){let e=this.commandkit.client;for(let[t,{name:n,mainListener:r,namespace:a}]of this.loadedEvents.entries())r?a?this.commandkit.events.off(a,n,r.handler):e.off(n,r.handler):a?this.commandkit.events.removeAllListeners(a,n):e.removeAllListeners(n),this.loadedEvents.delete(t),C.info(`\u{1F5D1}\uFE0F Unregistered event ${n}${a?` of namespace ${a}`:""}`)}};i(yt,"AppEventsHandler");var $e=yt;var Cn=require("fs"),gn=require("path");var cr=require("rimraf"),bt=require("path"),ie=z(require("fs"));var fn=require("child_process");var F;function mr(o){process.stdout.write(o),process.stdout.write(`
|
|
15
|
+
`)}i(mr,"write");function pn(o){mr(h.red(`Error: ${o}`)),process.exit(1)}i(pn,"panic");async function ur(o){return/\.(c|m)?tsx?$/.test(o)?(process.features.typescript||await pr(),!0):!1}i(ur,"ensureTypeScript");var oe;function dr(){if(oe)return oe;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(ie.default.existsSync((0,bt.join)(process.cwd(),e))){oe=t;break}return oe||(oe="npm"),oe}i(dr,"detectPackageManager");async function pr(o){if(F)return F;try{F=await import("typescript")}catch(e){if(e instanceof Error&&"code"in e&&e.code==="MODULE_NOT_FOUND")try{let t=dr();return(0,fn.execSync)(`${t} add typescript`,{stdio:"inherit",cwd:process.cwd()}),console.log(h.cyan("TypeScript has been installed automatically, restarting...")),F=await import("typescript"),F}catch{pn("TypeScript is not installed and could not be installed automatically. Please install it manually.")}pn(e||"TypeScript must be installed to use TypeScript config files.")}return F}i(pr,"loadTypeScript");async function hn(o){await fr(o);let e=await ur(o),t;if(e&&F){let{transpileModule:r}=F,a=ie.default.readFileSync(o,"utf8"),{outputText:s}=r(a,{compilerOptions:{module:F.ModuleKind.ESNext,target:F.ScriptTarget.ESNext,moduleResolution:F.ModuleResolutionKind.NodeNext},fileName:o});await ke();let c=process.cwd(),l=(0,bt.join)(c,"compiled-commandkit.config.mjs");ie.default.writeFileSync(l,s),t=l,o=l}let n=await import(`file://${o}`).then(r=>r.default||r);if(t)try{ie.default.unlinkSync(t)}catch{}return n}i(hn,"loadConfigFileFromPath");async function fr(o){if(!ie.default.existsSync(o))throw new Error(`File not found: ${o}`)}i(fr,"ensureExists");var hr=["commandkit.config.js","commandkit.config.mjs","commandkit.config.cjs","commandkit.config.ts"];function Cr(o){return hr.map(e=>(0,gn.join)(o,e))}i(Cr,"getPossibleConfigPaths");function gr(o){let e=Cr(o);for(let t of e)if((0,Cn.existsSync)(t))return{path:t,isTypeScript:/\.ts$/.test(t)};return null}i(gr,"findConfigFile");var Et=null;async function xn(o=process.cwd()){if(Et)return Et;let e=gr(o);if(!e)return Ie();let t=await hn(e.path);return Et=t,t}i(xn,"loadConfigFile");function yn(o){L&&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 a=!1,s=!1,c=!1,l={accept(){a=!0},preventDefault(){s=!0},path:n,event:t};try{if(await o.plugins.execute(async(m,u)=>{var f;a||await((f=u.performHMR)==null?void 0:f.call(u,m,l))}),s)return;switch(t){case ye.ReloadCommands:o.commandHandler.reloadCommands(),c=!0;break;case ye.ReloadEvents:o.eventHandler.reloadEvents(),c=!0;break;case ye.Unknown:c=!1;break;default:break}}finally{r&&process.send&&process.send({type:"commandkit-hmr-ack",id:r,handled:c||a})}})}i(yn,"registerDevHooks");var vn=require("fs");var bn=z(require("events"));var wt=class wt{constructor(e){this.commandkit=e}emitter=new bn.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(wt,"CommandKitEventsChannel");var Ue=wt;var En=require("discord.js");var vt=class vt extends En.Collection{};i(vt,"FlagStore");var Ne=vt;var xr,Mt=new Set,It=new Set;var ae,O,Mn,In,Sn,Rn,Pn,N=class N extends wn.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;y(this,O);y(this,ae,!1);x(this,"eventInterceptor");x(this,"config",{defaultLocale:Ge.Locale.EnglishUS,getMessageCommandPrefix:i(()=>"!","getMessageCommandPrefix")});x(this,"store",new Map);x(this,"flags",new Ne);x(this,"commandsRouter");x(this,"eventsRouter");x(this,"commandHandler",new Be(this));x(this,"eventHandler",new $e(this));x(this,"plugins");x(this,"events",new Ue(this));this.plugins=new ve(this),N.instance||(N.instance=this),xr=N.instance,v(this,O,Mn).call(this)}async start(t){if(!p(this,ae)){if(!this.options.client)throw new Error(h.red('"client" is required when starting CommandKit.'));if(this.eventInterceptor=new ge(this.client),L)try{yn(this),await ke()}catch(n){process.env.COMMANDKIT_DEBUG_TYPEGEN&&C.error(n)}if(await this.loadPlugins(),await v(this,O,Sn).call(this),this.commandHandler.registerCommandHandler(),this.incrementClientListenersCount(),t!==!1&&!this.options.client.isReady()){this.client.once(Ge.Events.ClientReady,async()=>{await this.commandHandler.registrar.register()}),await this.plugins.execute((r,a)=>{var s;return(s=a.onBeforeClientLogin)==null?void 0:s.call(a,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,a)=>{var s;return(s=a.onAfterClientLogin)==null?void 0:s.call(a,r)})}else this.options.client.isReady()&&await this.commandHandler.registrar.register();E(this,ae,!0),await v(this,O,In).call(this)}}async loadPlugins(){let n=(await xn()).plugins.flat(2).filter(r=>Wt(r));if(n.length)for(let r of n)await this.plugins.softRegisterPlugin(r)}get started(){return p(this,ae)}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 Yt()}getPath(t){let n=this.getAppDirectory();if(!n)return null;switch(t){case"commands":return(0,St.join)(n,"commands");case"events":return(0,St.join)(n,"events");default:return t}}};ae=new WeakMap,O=new WeakSet,Mn=i(async function(){for(let t of Mt)try{await t(this)}catch(n){C.error("Error while executing bootstrap hook: ",n)}finally{Mt.delete(t)}Mt.clear()},"#bootstrapHooks"),In=i(async function(){for(let t of It)try{await t(this)}catch(n){C.error("Error while executing application bootstrap hook: ",n)}finally{It.delete(t)}It.clear()},"#applicationBootstrapHooks"),Sn=i(async function(){if(!this.getAppDirectory())return;let n=this.getPath("commands"),r=this.getPath("events");this.commandsRouter=new Oe({entrypoint:n}),await this.plugins.execute((a,s)=>s.onCommandsRouterInit(a)),this.eventsRouter=new Fe({entrypoints:[r]}),await this.plugins.execute((a,s)=>s.onEventsRouterInit(a)),await v(this,O,Pn).call(this),await v(this,O,Rn).call(this)},"#init"),Rn=i(async function(){if(this.commandsRouter.isValidPath()){let t=await this.commandsRouter.scan();L&&(0,vn.writeFileSync)("./.commandkit/commands.json",JSON.stringify(t,null,2))}await this.commandHandler.loadCommands(),this.commandHandler.printBanner()},"#initCommands"),Pn=i(async function(){this.eventsRouter.isValidPath()&&await this.eventsRouter.scan(),await this.eventHandler.loadEvents()},"#initEvents"),i(N,"CommandKit"),x(N,"createElement",Gt),x(N,"Fragment",Ht),x(N,"instance");var He=N;var yr=Symbol("commandkitCommandWorker"),fe=new Kn.AsyncLocalStorage;function G(o){return fe.exit(o)}i(G,"exitContext");function Ae(o,e){return Reflect.set(o,yr,!0),fe.run(o,e)}i(Ae,"provideContext");function nn(o,e,t){return i((...r)=>Ae(o,async()=>{try{return await e(...r)}catch(a){be(a)||o.setExecutionError(a)}finally{typeof t=="function"&&setImmediate(async()=>{try{await t(...r)}catch{}})}}),"_fn")}i(nn,"makeContextAwareFunction");function j(o=!1){var t;let e=((t=fe.getStore())==null?void 0:t.commandkit)??He.instance;if(!e&&o)throw new Error("CommandKit instance not found.");return e}i(j,"getCommandKit");function k(){return fe.getStore()}i(k,"getContext");function rn(){let o=fe.getStore();if(!o)throw new Error("No commandkit environment found. Please make sure you are inside commandkit handler.");return o}i(rn,"useEnvironment");var V,R,Q,H,Dn,Tn,Rt,Pt=class Pt extends q.ButtonBuilder{constructor(){super(...arguments);y(this,H);y(this,V,null);y(this,R,{autoReset:!0,time:5*60*1e3,once:!1});y(this,Q,null)}onClick(t,n){var r,a,s,c;if(this.data.style===q.ButtonStyle.Link)throw new TypeError('Cannot setup "onClick" handler on link buttons.');if(!t)throw new TypeError('Cannot setup "onClick" without a handler function parameter.');return p(this,V)&&v(this,H,Rt).call(this),E(this,V,t),n&&E(this,R,{autoReset:n.autoReset??((r=p(this,R))==null?void 0:r.autoReset)??!0,time:n.time??((a=p(this,R))==null?void 0:a.time)??5*60*1e3,filter:n.filter??((s=p(this,R))==null?void 0:s.filter),onEnd:n.onEnd??((c=p(this,R))==null?void 0:c.onEnd)}),v(this,H,Tn).call(this),this}onEnd(t){if(this.data.style===q.ButtonStyle.Link)throw new TypeError('Cannot setup "onEnd" handler on link buttons.');if(!t)throw new TypeError('Cannot setup "onEnd" without a handler function parameter.');return p(this,R)??E(this,R,{}),p(this,R).onEnd=t,this}onError(t){if(!t)throw new TypeError('Cannot setup "onError" without a handler function parameter.');return p(this,R)??E(this,R,{}),p(this,R).onError=t,this}filter(t){return p(this,R)??E(this,R,{autoReset:!0,time:5*60*1e3}),p(this,R).filter=t,this}get customId(){return this.data.custom_id??this.data.customId}dispose(){return v(this,H,Rt).call(this),this}};V=new WeakMap,R=new WeakMap,Q=new WeakMap,H=new WeakSet,Dn=i(function(){let t=k();return t?G(()=>t.commandkit.eventInterceptor):j(!0).eventInterceptor},"#getEventInterceptor"),Tn=i(function(){if(this.data.style===q.ButtonStyle.Link||!p(this,R)||!p(this,V))return;if((this.customId??null)===null)throw new TypeError('Cannot setup "onClick" handler on a button without a custom id.');let n=v(this,H,Dn).call(this);E(this,Q,n.subscribe(q.Events.InteractionCreate,async r=>{var m,u;if(!r.isButton())return;let a=this.customId??null,s=r.customId;if(a&&s!==a)return;let c=(m=p(this,R))==null?void 0:m.filter;if(c&&!await c(r))return;let l=p(this,V);return l?l(r,this):(u=p(this,Q))==null?void 0:u.call(this)},p(this,R)))},"#setupInteractionCollector"),Rt=i(function(){var t;(t=p(this,Q))==null||t.call(this),E(this,Q,null),E(this,R,null),E(this,V,null)},"#destroyCollector"),i(Pt,"ButtonKit");var he=Pt;0&&(module.exports={ButtonKit});
|
|
16
16
|
//# sourceMappingURL=ButtonKit.js.map
|