commandkit 0.1.11-dev.20250213182706 → 0.1.11-dev.20250214040728

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,16 +1,16 @@
1
1
  var __defProp=Object.defineProperty;var __getOwnPropNames=Object.getOwnPropertyNames;var __typeError=msg=>{throw TypeError(msg)};var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0}),__require=(x=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(x,{get:(a,b)=>(typeof require<"u"?require:a)[b]}):x)(function(x){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+x+'" is not supported')});var __esm=(fn,res)=>function(){return fn&&(res=(0,fn[__getOwnPropNames(fn)[0]])(fn=0)),res};var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})};var __publicField=(obj,key,value)=>__defNormalProp(obj,typeof key!="symbol"?key+"":key,value),__accessCheck=(obj,member,msg)=>member.has(obj)||__typeError("Cannot "+msg);var __privateGet=(obj,member,getter)=>(__accessCheck(obj,member,"read from private field"),getter?getter.call(obj):member.get(obj)),__privateAdd=(obj,member,value)=>member.has(obj)?__typeError("Cannot add the same private member more than once"):member instanceof WeakSet?member.add(obj):member.set(obj,value),__privateSet=(obj,member,value,setter)=>(__accessCheck(obj,member,"write to private field"),setter?setter.call(obj,value):member.set(obj,value),value),__privateMethod=(obj,member,method)=>(__accessCheck(obj,member,"access private method"),method);import{fileURLToPath}from"url";import path from"path";var init_esm_shims=__esm({"../../node_modules/.pnpm/tsup@8.3.5_jiti@1.21.7_postcss@8.4.49_tsx@4.19.2_typescript@5.7.3_yaml@2.7.0/node_modules/tsup/assets/esm_shims.js"(){"use strict"}});import{rimrafSync}from"rimraf";import{join as join6}from"node:path";import fs2 from"node:fs";function write(message){process.stdout.write(message),process.stdout.write(`
2
- `)}function panic(message){write(Colors.red(`Error: ${message}`)),process.exit(1)}async function findCommandKitConfig(src){let cwd=process.cwd(),locations=src?[join6(cwd,src)]:possibleFileNames.map(name=>join6(cwd,name));for(let location of locations)try{return await loadConfigInner(location)}catch{continue}panic(`Could not locate commandkit config from ${cwd}`)}function ensureTypeScript(target){/\.(c|m)tsx?$/.test(target)&&!process.features.typescript&&panic("You are trying to load commandkit config file that is written in typescript. The current Node.js version does not have TypeScript feature enabled.")}async function loadConfigInner(target){let isJSON=target.endsWith(".json");return await ensureExists(target),ensureTypeScript(target),await import(`file://${target}`).then(conf=>conf.default||conf)}async function ensureExists(loc){await fs2.promises.access(loc,fs2.constants.F_OK)}function erase(dir){rimrafSync(dir)}async function copyLocaleFiles(_from,_to){let resolvedFrom=join6(process.cwd(),_from),resolvedTo=join6(process.cwd(),_to),localePaths=["app/locales","src/app/locales"],srcLocalePaths=localePaths.map(path4=>join6(resolvedFrom,path4)),destLocalePaths=localePaths.map(path4=>join6(resolvedTo,path4));for(let localePath of srcLocalePaths){if(!fs2.existsSync(localePath))continue;let destLocalePath=destLocalePaths[srcLocalePaths.indexOf(localePath)];fs2.existsSync(destLocalePath)||fs2.promises.mkdir(destLocalePath,{recursive:!0}),await fs2.promises.cp(localePath,destLocalePath,{recursive:!0,force:!0})}}var resetColor2,Colors,possibleFileNames,init_common=__esm({"src/cli/common.ts"(){"use strict";init_esm_shims();resetColor2="\x1B[0m",Colors={reset:__name(text=>`${text}${resetColor2}`,"reset"),bright:__name(text=>`\x1B[1m${text}${resetColor2}`,"bright"),dim:__name(text=>`\x1B[2m${text}${resetColor2}`,"dim"),underscore:__name(text=>`\x1B[4m${text}${resetColor2}`,"underscore"),blink:__name(text=>`\x1B[5m${text}${resetColor2}`,"blink"),reverse:__name(text=>`\x1B[7m${text}${resetColor2}`,"reverse"),hidden:__name(text=>`\x1B[8m${text}${resetColor2}`,"hidden"),black:__name(text=>`\x1B[30m${text}${resetColor2}`,"black"),red:__name(text=>`\x1B[31m${text}${resetColor2}`,"red"),green:__name(text=>`\x1B[32m${text}${resetColor2}`,"green"),yellow:__name(text=>`\x1B[33m${text}${resetColor2}`,"yellow"),blue:__name(text=>`\x1B[34m${text}${resetColor2}`,"blue"),magenta:__name(text=>`\x1B[35m${text}${resetColor2}`,"magenta"),cyan:__name(text=>`\x1B[36m${text}${resetColor2}`,"cyan"),white:__name(text=>`\x1B[37m${text}${resetColor2}`,"white"),bgBlack:__name(text=>`\x1B[40m${text}${resetColor2}`,"bgBlack"),bgRed:__name(text=>`\x1B[41m${text}${resetColor2}`,"bgRed"),bgGreen:__name(text=>`\x1B[42m${text}${resetColor2}`,"bgGreen"),bgYellow:__name(text=>`\x1B[43m${text}${resetColor2}`,"bgYellow"),bgBlue:__name(text=>`\x1B[44m${text}${resetColor2}`,"bgBlue"),bgMagenta:__name(text=>`\x1B[45m${text}${resetColor2}`,"bgMagenta"),bgCyan:__name(text=>`\x1B[46m${text}${resetColor2}`,"bgCyan"),bgWhite:__name(text=>`\x1B[47m${text}${resetColor2}`,"bgWhite")};__name(write,"write");__name(panic,"panic");possibleFileNames=["commandkit.json","commandkit.config.json","commandkit.js","commandkit.config.js","commandkit.mjs","commandkit.config.mjs","commandkit.cjs","commandkit.config.cjs","commandkit.ts","commandkit.mts","commandkit.cts"];__name(findCommandKitConfig,"findCommandKitConfig");__name(ensureTypeScript,"ensureTypeScript");__name(loadConfigInner,"loadConfigInner");__name(ensureExists,"ensureExists");__name(erase,"erase");__name(copyLocaleFiles,"copyLocaleFiles")}});import{randomUUID as randomUUID3}from"node:crypto";function catcher(fn){try{return fn(),!0}catch{return!1}}function parseEnv(src){for(let key in src){let value=src[key];if(typeof value=="string"){if(value.startsWith(VALUE_PREFIXES.JSON)){catcher(()=>src[key]=JSON.parse(value.replace(VALUE_PREFIXES.JSON,"")));continue}if(value.startsWith(VALUE_PREFIXES.DATE)){src[key]=new Date(value.replace(VALUE_PREFIXES.DATE,""));continue}if(value.includes(",")){src[key]=value.split(",").map(v=>v.trim());continue}if(/^[0-9]+n$/.test(value)){src[key]=BigInt(value);continue}if(value in valuesMap){src[key]=typeof valuesMap[value]=="function"?valuesMap[value]():valuesMap[value];continue}}}return src}var valuesMap,VALUE_PREFIXES,init_parse_env=__esm({"src/cli/parse-env.ts"(){"use strict";init_esm_shims();valuesMap={true:!0,false:!1,null:null,undefined:void 0,__UUIDv4__:__name(()=>randomUUID3(),"__UUIDv4__")},VALUE_PREFIXES={JSON:"JSON::",DATE:"DATE::"};__name(catcher,"catcher");__name(parseEnv,"parseEnv")}});import*as parser from"@babel/parser";import _traverse from"@babel/traverse";import _generate from"@babel/generator";import*as t from"@babel/types";var traverse,generate,IMPORT_PATH,DIRECTIVE,CACHE_IDENTIFIER,generateRandomString,cacheDirectivePlugin,init_use_cache=__esm({"src/cli/esbuild-plugins/use-cache.ts"(){"use strict";init_esm_shims();traverse=_traverse.default||_traverse,generate=_generate.default||_generate,IMPORT_PATH="commandkit",DIRECTIVE="use cache",CACHE_IDENTIFIER="super_duper_secret_internal_for_use_cache_directive_of_commandkit_cli_do_not_use_it_directly_or_you_will_be_fired_from_your_job_kthxbai",generateRandomString=__name((length=6)=>{let chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";return Array.from({length},()=>chars[Math.floor(Math.random()*chars.length)]).join("")},"generateRandomString"),cacheDirectivePlugin=__name(async(source,args)=>{let ast=parser.parse(source,{sourceType:"module",plugins:["typescript","jsx"]}),state={needsImport:!1,hasExistingImport:!1,cacheIdentifierName:CACHE_IDENTIFIER,modifications:[]};traverse(ast,{Program:{enter(path4){path4.scope.getBinding(CACHE_IDENTIFIER)&&(state.cacheIdentifierName=`${CACHE_IDENTIFIER}_${generateRandomString()}`)}},ImportDeclaration(path4){path4.node.source.value===IMPORT_PATH&&path4.node.specifiers.some(spec=>t.isImportSpecifier(spec)&&spec.imported.name===CACHE_IDENTIFIER)&&(state.hasExistingImport=!0,state.cacheIdentifierName!==CACHE_IDENTIFIER&&state.modifications.push(()=>{path4.node.specifiers.forEach(spec=>{t.isImportSpecifier(spec)&&spec.imported.name===CACHE_IDENTIFIER&&(spec.local.name=state.cacheIdentifierName)})}))},"FunctionDeclaration|FunctionExpression|ArrowFunctionExpression"(path4){var _a,_b,_c;let body=t.isBlockStatement(path4.node.body)?path4.node.body:null,hasUseCache=(_a=body==null?void 0:body.directives)==null?void 0:_a.some(d=>d.value.value===DIRECTIVE);if(!hasUseCache&&!t.isBlockStatement(path4.node.body)){let parentFunction=path4.findParent(p=>(p.isFunction()||p.isProgram())&&"directives"in p.node);if(!((_b=parentFunction==null?void 0:parentFunction.node.directives)!=null&&_b.some(d=>d.value.value===DIRECTIVE)))return}if(hasUseCache||!t.isBlockStatement(path4.node.body)){if(!path4.node.async)throw new Error(`"${DIRECTIVE}" directive may only be used in async functions at ${args.path}`);state.needsImport=!0;let name=t.isFunctionDeclaration(path4.node)?(_c=path4.node.id)==null?void 0:_c.name:void 0,newBody=t.isBlockStatement(path4.node.body)?t.blockStatement(path4.node.body.body,path4.node.body.directives.filter(d=>d.value.value!==DIRECTIVE)):path4.node.body,wrapped=t.callExpression(t.identifier(state.cacheIdentifierName),[t.arrowFunctionExpression(path4.node.params,newBody,!0)]);state.modifications.push(()=>{name?path4.replaceWith(t.variableDeclaration("const",[t.variableDeclarator(t.identifier(name),wrapped)])):t.isVariableDeclarator(path4.parent)?path4.parent.init=wrapped:path4.replaceWith(wrapped)})}}}),state.modifications.length>0&&(state.needsImport&&!state.hasExistingImport&&ast.program.body.unshift(t.importDeclaration([t.importSpecifier(t.identifier(state.cacheIdentifierName),t.identifier(CACHE_IDENTIFIER))],t.stringLiteral(IMPORT_PATH))),state.modifications.forEach(modify=>modify()));let{code}=generate(ast);return{contents:code,loader:args.path.split(".").pop()}},"cacheDirectivePlugin")}});import{MacroTransformer}from"use-macro";import{readFile as readFile2}from"node:fs/promises";var defaultConfig,commandkitPlugin,init_plugin=__esm({"src/cli/esbuild-plugins/plugin.ts"(){"use strict";init_esm_shims();init_use_cache();defaultConfig={"use-macro":!0,"use-cache":!0,"jsx-importsource":!0},commandkitPlugin=__name(config=>{config=Object.assign({},defaultConfig,config);let plugins=[{name:"use-macro",plugin:__name(async(content,args)=>{let transformer=new MacroTransformer,{contents}=await transformer.transform(content,args.path);return contents},"plugin")},{name:"use-cache",plugin:__name(async(content,args)=>{let{contents}=await cacheDirectivePlugin(content,args);return contents},"plugin")}].filter(p=>!!config[p.name]);return{name:"commandkit-transformer-plugin",setup(build3){if(!plugins.length)return;let fileFilter=/\.(c|m)?(t|j)sx?$/;build3.onLoad({filter:fileFilter},async args=>{let source=await readFile2(args.path,"utf8"),loader=args.path.split(".").pop(),contents=source;for(let _plugin of plugins){let{plugin,name}=_plugin;try{contents=await plugin(contents,args)}catch(e){let err=new Error(`Plugin ${name} failed with ${e}`);throw err.stack=e instanceof Error?e.stack:"",err}}return{contents,loader}})}}},"commandkitPlugin")}});var build_exports={};__export(build_exports,{bootstrapProductionBuild:()=>bootstrapProductionBuild,injectShims:()=>injectShims});import{readFile as readFile3,writeFile}from"node:fs/promises";import{join as join7}from"node:path";import{build}from"tsup";import ora from"ora";async function bootstrapProductionBuild(config){let{sourcemap=!1,minify=!1,outDir="dist",antiCrash=!0,src,main,requirePolyfill:polyfillRequire}=await findCommandKitConfig(config),status=ora(`Creating optimized production build...
2
+ `)}function panic(message){write(Colors.red(`Error: ${message}`)),process.exit(1)}async function findCommandKitConfig(src){let cwd=process.cwd(),locations=src?[join6(cwd,src)]:possibleFileNames.map(name=>join6(cwd,name));for(let location of locations)try{return await loadConfigInner(location)}catch{continue}panic(`Could not locate commandkit config from ${cwd}`)}function ensureTypeScript(target){/\.(c|m)tsx?$/.test(target)&&!process.features.typescript&&panic("You are trying to load commandkit config file that is written in typescript. The current Node.js version does not have TypeScript feature enabled.")}async function loadConfigInner(target){let isJSON=target.endsWith(".json");return await ensureExists(target),ensureTypeScript(target),await import(`file://${target}`).then(conf=>conf.default||conf)}async function ensureExists(loc){await fs2.promises.access(loc,fs2.constants.F_OK)}function erase(dir){rimrafSync(dir)}async function copyLocaleFiles(_from,_to){let resolvedFrom=join6(process.cwd(),_from),resolvedTo=join6(process.cwd(),_to),localePaths=["app/locales","src/app/locales"],srcLocalePaths=localePaths.map(path5=>join6(resolvedFrom,path5)),destLocalePaths=localePaths.map(path5=>join6(resolvedTo,path5));for(let localePath of srcLocalePaths){if(!fs2.existsSync(localePath))continue;let destLocalePath=destLocalePaths[srcLocalePaths.indexOf(localePath)];fs2.existsSync(destLocalePath)||fs2.promises.mkdir(destLocalePath,{recursive:!0}),await fs2.promises.cp(localePath,destLocalePath,{recursive:!0,force:!0})}}var resetColor2,Colors,possibleFileNames,init_common=__esm({"src/cli/common.ts"(){"use strict";init_esm_shims();resetColor2="\x1B[0m",Colors={reset:__name(text=>`${text}${resetColor2}`,"reset"),bright:__name(text=>`\x1B[1m${text}${resetColor2}`,"bright"),dim:__name(text=>`\x1B[2m${text}${resetColor2}`,"dim"),underscore:__name(text=>`\x1B[4m${text}${resetColor2}`,"underscore"),blink:__name(text=>`\x1B[5m${text}${resetColor2}`,"blink"),reverse:__name(text=>`\x1B[7m${text}${resetColor2}`,"reverse"),hidden:__name(text=>`\x1B[8m${text}${resetColor2}`,"hidden"),black:__name(text=>`\x1B[30m${text}${resetColor2}`,"black"),red:__name(text=>`\x1B[31m${text}${resetColor2}`,"red"),green:__name(text=>`\x1B[32m${text}${resetColor2}`,"green"),yellow:__name(text=>`\x1B[33m${text}${resetColor2}`,"yellow"),blue:__name(text=>`\x1B[34m${text}${resetColor2}`,"blue"),magenta:__name(text=>`\x1B[35m${text}${resetColor2}`,"magenta"),cyan:__name(text=>`\x1B[36m${text}${resetColor2}`,"cyan"),white:__name(text=>`\x1B[37m${text}${resetColor2}`,"white"),bgBlack:__name(text=>`\x1B[40m${text}${resetColor2}`,"bgBlack"),bgRed:__name(text=>`\x1B[41m${text}${resetColor2}`,"bgRed"),bgGreen:__name(text=>`\x1B[42m${text}${resetColor2}`,"bgGreen"),bgYellow:__name(text=>`\x1B[43m${text}${resetColor2}`,"bgYellow"),bgBlue:__name(text=>`\x1B[44m${text}${resetColor2}`,"bgBlue"),bgMagenta:__name(text=>`\x1B[45m${text}${resetColor2}`,"bgMagenta"),bgCyan:__name(text=>`\x1B[46m${text}${resetColor2}`,"bgCyan"),bgWhite:__name(text=>`\x1B[47m${text}${resetColor2}`,"bgWhite")};__name(write,"write");__name(panic,"panic");possibleFileNames=["commandkit.json","commandkit.config.json","commandkit.js","commandkit.config.js","commandkit.mjs","commandkit.config.mjs","commandkit.cjs","commandkit.config.cjs","commandkit.ts","commandkit.mts","commandkit.cts"];__name(findCommandKitConfig,"findCommandKitConfig");__name(ensureTypeScript,"ensureTypeScript");__name(loadConfigInner,"loadConfigInner");__name(ensureExists,"ensureExists");__name(erase,"erase");__name(copyLocaleFiles,"copyLocaleFiles")}});import{randomUUID as randomUUID3}from"node:crypto";function catcher(fn){try{return fn(),!0}catch{return!1}}function parseEnv(src){for(let key in src){let value=src[key];if(typeof value=="string"){if(value.startsWith(VALUE_PREFIXES.JSON)){catcher(()=>src[key]=JSON.parse(value.replace(VALUE_PREFIXES.JSON,"")));continue}if(value.startsWith(VALUE_PREFIXES.DATE)){src[key]=new Date(value.replace(VALUE_PREFIXES.DATE,""));continue}if(value.includes(",")){src[key]=value.split(",").map(v=>v.trim());continue}if(/^[0-9]+n$/.test(value)){src[key]=BigInt(value);continue}if(value in valuesMap){src[key]=typeof valuesMap[value]=="function"?valuesMap[value]():valuesMap[value];continue}}}return src}var valuesMap,VALUE_PREFIXES,init_parse_env=__esm({"src/cli/parse-env.ts"(){"use strict";init_esm_shims();valuesMap={true:!0,false:!1,null:null,undefined:void 0,__UUIDv4__:__name(()=>randomUUID3(),"__UUIDv4__")},VALUE_PREFIXES={JSON:"JSON::",DATE:"DATE::"};__name(catcher,"catcher");__name(parseEnv,"parseEnv")}});import*as parser from"@babel/parser";import _traverse from"@babel/traverse";import _generate from"@babel/generator";import*as t from"@babel/types";var traverse,generate,IMPORT_PATH,DIRECTIVE,CACHE_IDENTIFIER,generateRandomString,cacheDirectivePlugin,init_use_cache=__esm({"src/cli/esbuild-plugins/use-cache.ts"(){"use strict";init_esm_shims();traverse=_traverse.default||_traverse,generate=_generate.default||_generate,IMPORT_PATH="commandkit",DIRECTIVE="use cache",CACHE_IDENTIFIER="super_duper_secret_internal_for_use_cache_directive_of_commandkit_cli_do_not_use_it_directly_or_you_will_be_fired_from_your_job_kthxbai",generateRandomString=__name((length=6)=>{let chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";return Array.from({length},()=>chars[Math.floor(Math.random()*chars.length)]).join("")},"generateRandomString"),cacheDirectivePlugin=__name(async(source,args)=>{let ast=parser.parse(source,{sourceType:"module",plugins:["typescript","jsx"]}),state={needsImport:!1,hasExistingImport:!1,cacheIdentifierName:CACHE_IDENTIFIER,modifications:[]};traverse(ast,{Program:{enter(path5){path5.scope.getBinding(CACHE_IDENTIFIER)&&(state.cacheIdentifierName=`${CACHE_IDENTIFIER}_${generateRandomString()}`)}},ImportDeclaration(path5){path5.node.source.value===IMPORT_PATH&&path5.node.specifiers.some(spec=>t.isImportSpecifier(spec)&&spec.imported.name===CACHE_IDENTIFIER)&&(state.hasExistingImport=!0,state.cacheIdentifierName!==CACHE_IDENTIFIER&&state.modifications.push(()=>{path5.node.specifiers.forEach(spec=>{t.isImportSpecifier(spec)&&spec.imported.name===CACHE_IDENTIFIER&&(spec.local.name=state.cacheIdentifierName)})}))},"FunctionDeclaration|FunctionExpression|ArrowFunctionExpression"(path5){var _a,_b,_c;let body=t.isBlockStatement(path5.node.body)?path5.node.body:null,hasUseCache=(_a=body==null?void 0:body.directives)==null?void 0:_a.some(d=>d.value.value===DIRECTIVE);if(!hasUseCache&&!t.isBlockStatement(path5.node.body)){let parentFunction=path5.findParent(p=>(p.isFunction()||p.isProgram())&&"directives"in p.node);if(!((_b=parentFunction==null?void 0:parentFunction.node.directives)!=null&&_b.some(d=>d.value.value===DIRECTIVE)))return}if(hasUseCache||!t.isBlockStatement(path5.node.body)){if(!path5.node.async)throw new Error(`"${DIRECTIVE}" directive may only be used in async functions at ${args.path}`);state.needsImport=!0;let name=t.isFunctionDeclaration(path5.node)?(_c=path5.node.id)==null?void 0:_c.name:void 0,newBody=t.isBlockStatement(path5.node.body)?t.blockStatement(path5.node.body.body,path5.node.body.directives.filter(d=>d.value.value!==DIRECTIVE)):path5.node.body,wrapped=t.callExpression(t.identifier(state.cacheIdentifierName),[t.arrowFunctionExpression(path5.node.params,newBody,!0)]);state.modifications.push(()=>{name?path5.replaceWith(t.variableDeclaration("const",[t.variableDeclarator(t.identifier(name),wrapped)])):t.isVariableDeclarator(path5.parent)?path5.parent.init=wrapped:path5.replaceWith(wrapped)})}}}),state.modifications.length>0&&(state.needsImport&&!state.hasExistingImport&&ast.program.body.unshift(t.importDeclaration([t.importSpecifier(t.identifier(state.cacheIdentifierName),t.identifier(CACHE_IDENTIFIER))],t.stringLiteral(IMPORT_PATH))),state.modifications.forEach(modify=>modify()));let{code}=generate(ast);return{contents:code,loader:args.path.split(".").pop()}},"cacheDirectivePlugin")}});import{MacroTransformer}from"use-macro";import{readFile as readFile2}from"node:fs/promises";var defaultConfig,commandkitPlugin,init_plugin=__esm({"src/cli/esbuild-plugins/plugin.ts"(){"use strict";init_esm_shims();init_use_cache();defaultConfig={"use-macro":!0,"use-cache":!0,"jsx-importsource":!0},commandkitPlugin=__name(config=>{config=Object.assign({},defaultConfig,config);let plugins=[{name:"use-macro",plugin:__name(async(content,args)=>{let transformer=new MacroTransformer,{contents}=await transformer.transform(content,args.path);return contents},"plugin")},{name:"use-cache",plugin:__name(async(content,args)=>{let{contents}=await cacheDirectivePlugin(content,args);return contents},"plugin")}].filter(p=>!!config[p.name]);return{name:"commandkit-transformer-plugin",setup(build3){if(!plugins.length)return;let fileFilter=/\.(c|m)?(t|j)sx?$/;build3.onLoad({filter:fileFilter},async args=>{let source=await readFile2(args.path,"utf8"),loader=args.path.split(".").pop(),contents=source;for(let _plugin of plugins){let{plugin,name}=_plugin;try{contents=await plugin(contents,args)}catch(e){let err=new Error(`Plugin ${name} failed with ${e}`);throw err.stack=e instanceof Error?e.stack:"",err}}return{contents,loader}})}}},"commandkitPlugin")}});var build_exports={};__export(build_exports,{bootstrapProductionBuild:()=>bootstrapProductionBuild,injectShims:()=>injectShims});import{readFile as readFile3,writeFile}from"node:fs/promises";import{join as join7}from"node:path";import{build}from"tsup";import ora from"ora";async function bootstrapProductionBuild(config){let{sourcemap=!1,minify=!1,outDir="dist",antiCrash=!0,src,main,requirePolyfill:polyfillRequire}=await findCommandKitConfig(config),status=ora(`Creating optimized production build...
3
3
  `).start(),start=performance.now();erase(outDir);try{await build({clean:!0,format:["esm"],dts:!1,skipNodeModulesBundle:!0,minify,shims:!0,banner:{js:"/* Optimized production build generated by CommandKit */"},sourcemap,keepNames:!0,outDir,silent:!0,watch:!1,cjsInterop:!0,splitting:!1,entry:[src,"!dist","!.commandkit",`!${outDir}`],esbuildPlugins:[commandkitPlugin()],jsxFactory:"CommandKit.createElement",jsxFragment:"CommandKit.Fragment",async onSuccess(){await copyLocaleFiles(src,".commandkit")}}),await injectShims(outDir,main,antiCrash,polyfillRequire),status.succeed(Colors.green(`Build completed in ${(performance.now()-start).toFixed(2)}ms!`)),write(Colors.green(`
4
- Run ${Colors.magenta("commandkit start")} ${Colors.green("to start your bot.")}`))}catch(e){status.fail(`Build failed after ${(performance.now()-start).toFixed(2)}ms!`),panic(e)}}async function injectShims(outDir,main,antiCrash,polyfillRequire){let path4=join7(process.cwd(),outDir,main),head=[`
4
+ Run ${Colors.magenta("commandkit start")} ${Colors.green("to start your bot.")}`))}catch(e){status.fail(`Build failed after ${(performance.now()-start).toFixed(2)}ms!`),panic(e)}}async function injectShims(outDir,main,antiCrash,polyfillRequire){let path5=join7(process.cwd(),outDir,main),head=[`
5
5
 
6
6
  ;await (async()=>{`," 'use strict';"].join(`
7
7
  `),tail=`
8
8
  })();`,requireScript=polyfillRequire?["// --- CommandKit require() polyfill ---",' if (typeof require === "undefined") {',' const { createRequire } = await import("node:module");'," const __require = createRequire(import.meta.url);",' Object.defineProperty(globalThis, "require", {'," value: (id) => {"," return __require(id);"," },"," configurable: true,"," enumerable: false,"," writable: true,"," });"," }","// --- CommandKit require() polyfill ---"].join(`
9
9
  `):"",antiCrashScript=antiCrash?["// --- CommandKit Anti-Crash Monitor ---"," // 'uncaughtException' event is supposed to be used to perform synchronous cleanup before shutting down the process"," // instead of using it as a means to resume operation."," // But it exists here due to compatibility reasons with discord bot ecosystem."," const p = (t) => `\\x1b[33m${t}\\x1b[0m`, b = '[CommandKit Anti-Crash Monitor]', l = console.log, e1 = 'uncaughtException', e2 = 'unhandledRejection';"," if (!process.eventNames().includes(e1)) // skip if it is already handled"," process.on(e1, (e) => {"," l(p(`${b} Uncaught Exception`)); l(p(b), p(e.stack || e));"," })"," if (!process.eventNames().includes(e2)) // skip if it is already handled"," process.on(e2, (r) => {"," l(p(`${b} Unhandled promise rejection`)); l(p(`${b} ${r.stack || r}`));"," });","// --- CommandKit Anti-Crash Monitor ---"].join(`
10
- `):"",contents=await readFile3(path4,"utf-8"),finalScript=[head,requireScript,antiCrashScript,tail,`
10
+ `):"",contents=await readFile3(path5,"utf-8"),finalScript=[head,requireScript,antiCrashScript,tail,`
11
11
 
12
12
  `,contents].join(`
13
- `);return writeFile(path4,finalScript)}var init_build=__esm({"src/cli/build.ts"(){"use strict";init_esm_shims();init_common();init_plugin();__name(bootstrapProductionBuild,"bootstrapProductionBuild");__name(injectShims,"injectShims")}});var development_exports={};__export(development_exports,{bootstrapDevelopmentServer:()=>bootstrapDevelopmentServer});import{config as dotenv}from"dotenv";import{join as join8}from"node:path";import{build as build2}from"tsup";import child_process from"node:child_process";import ora2 from"ora";async function bootstrapDevelopmentServer(opts){let{src,main,watch=!!opts.noWatch,nodeOptions=[],envExtra=!0,clearRestartLogs=!0,outDir,requirePolyfill}=await findCommandKitConfig(opts.config);src||panic("Could not find src in commandkit.json"),main||panic("Could not find main in commandkit.json");let watchMode=watch,status=ora2(Colors.green(`Starting a development server...
13
+ `);return writeFile(path5,finalScript)}var init_build=__esm({"src/cli/build.ts"(){"use strict";init_esm_shims();init_common();init_plugin();__name(bootstrapProductionBuild,"bootstrapProductionBuild");__name(injectShims,"injectShims")}});var development_exports={};__export(development_exports,{bootstrapDevelopmentServer:()=>bootstrapDevelopmentServer});import{config as dotenv}from"dotenv";import{join as join8}from"node:path";import{build as build2}from"tsup";import child_process from"node:child_process";import ora2 from"ora";async function bootstrapDevelopmentServer(opts){let{src,main,watch=!!opts.noWatch,nodeOptions=[],envExtra=!0,clearRestartLogs=!0,outDir,requirePolyfill}=await findCommandKitConfig(opts.config);src||panic("Could not find src in commandkit.json"),main||panic("Could not find main in commandkit.json");let watchMode=watch,status=ora2(Colors.green(`Starting a development server...
14
14
  `)).start(),start=performance.now();watchMode&&!nodeOptions.includes("--watch")?nodeOptions.push("--watch"):!watchMode&&nodeOptions.includes("--watch")&&nodeOptions.splice(nodeOptions.indexOf("--watch"),1),nodeOptions.includes("--enable-source-maps")||nodeOptions.push("--enable-source-maps"),erase(".commandkit");try{await build2({clean:!0,format:["esm"],dts:!1,skipNodeModulesBundle:!0,minify:!1,shims:!0,sourcemap:"inline",keepNames:!0,outDir:".commandkit",silent:!0,entry:[src,"!dist","!.commandkit",`!${outDir}`].filter(Boolean),watch:watchMode,cjsInterop:!0,splitting:!1,jsxFactory:"CommandKit.createElement",jsxFragment:"CommandKit.Fragment",async onSuccess(){return await copyLocaleFiles(src,".commandkit"),await injectShims(".commandkit",main,!1,requirePolyfill)},esbuildPlugins:[commandkitPlugin({"use-macro":!1})]}),status.succeed(Colors.green(`Dev server started in ${(performance.now()-start).toFixed(2)}ms!
15
15
  `)),watchMode&&write(Colors.cyan(`Watching for file changes...
16
16
  `));let processEnv={},env=dotenv({path:join8(process.cwd(),".env"),processEnv});envExtra&&parseEnv(processEnv),env.error&&write(Colors.yellow(`[DOTENV] Warning: ${env.error.message}`)),env.parsed&&write(Colors.blue("[DOTENV] Loaded .env file!"));let ps=child_process.spawn("node",[...nodeOptions,join8(process.cwd(),".commandkit",main)],{env:{...process.env,...processEnv,NODE_ENV:"development",COMMANDKIT_DEV:!0,COMMANDKIT_PRODUCTION:!1},cwd:process.cwd()}),isLastLogRestarting=!1,hasStarted=!1;ps.stdout.on("data",data=>{let message=data.toString();if(FAILED_RUNNING_PATTERN.test(message)){write(Colors.cyan("Failed running the bot, waiting for changes...")),isLastLogRestarting=!1,hasStarted||(hasStarted=!0);return}if(clearRestartLogs&&!RESTARTING_MSG_PATTERN.test(message))write(message),isLastLogRestarting=!1;else{if(isLastLogRestarting||!hasStarted){hasStarted||(hasStarted=!0);return}write(Colors.cyan("\u2300 Restarting the bot...")),isLastLogRestarting=!0}hasStarted||(hasStarted=!0)}),ps.stderr.on("data",data=>{let message=data.toString();message.includes("ExperimentalWarning: Watch mode is an experimental feature and might change at any time")||write(Colors.red(message))}),ps.on("close",code=>{write(`
@@ -25,5 +25,5 @@ Run ${Colors.magenta("commandkit start")} ${Colors.green("to start your bot.")}`
25
25
  `),error)}),console.log(colors_default.green(`Edited command "${command.data.name}" in ${guildCommands.guild.name}.`));continue}targetCommand||(await guildCommands.create(command.data).catch(error=>{throw new Error(colors_default.red(`Failed to register command "${command.data.name}" in ${guildCommands.guild.name}.
26
26
  `),error)}),console.log(colors_default.green(`Registered command "${command.data.name}" in ${guildCommands.guild.name}.`)))}}__name(registerDevCommands,"registerDevCommands");init_esm_shims();init_esm_shims();import{MessageFlags}from"discord.js";function devOnly_default({interaction,targetCommand,handlerData}){var _a,_b;if(!interaction.isAutocomplete()&&(_a=targetCommand.options)!=null&&_a.devOnly){if(interaction.inGuild()&&!handlerData.devGuildIds.includes(interaction.guildId))return interaction.reply({content:"\u274C This command can only be used inside development servers.",flags:MessageFlags.Ephemeral}),!0;let guildMember=(_b=interaction.guild)==null?void 0:_b.members.cache.get(interaction.user.id),memberRoles=guildMember==null?void 0:guildMember.roles.cache,hasDevRole=!1;if(memberRoles==null||memberRoles.forEach(role=>{handlerData.devRoleIds.includes(role.id)&&(hasDevRole=!0)}),!(handlerData.devUserIds.includes(interaction.user.id)||hasDevRole))return interaction.reply({content:"\u274C This command can only be used by developers.",flags:MessageFlags.Ephemeral}),!0}}__name(devOnly_default,"default");init_esm_shims();import{EmbedBuilder,MessageFlags as MessageFlags2}from"discord.js";function permissions_default({interaction,targetCommand}){var _a,_b,_c,_d;if(interaction.isAutocomplete())return;let userPermissions=interaction.memberPermissions,userPermissionsRequired=(_a=targetCommand.options)==null?void 0:_a.userPermissions,missingUserPermissions=[];typeof userPermissionsRequired=="string"&&(userPermissionsRequired=[userPermissionsRequired]);let botPermissions=(_c=(_b=interaction.guild)==null?void 0:_b.members.me)==null?void 0:_c.permissions,botPermissionsRequired=(_d=targetCommand.options)==null?void 0:_d.botPermissions,missingBotPermissions=[];if(typeof botPermissionsRequired=="string"&&(botPermissionsRequired=[botPermissionsRequired]),!(userPermissionsRequired!=null&&userPermissionsRequired.length)&&!(botPermissionsRequired!=null&&botPermissionsRequired.length))return;if(userPermissions&&userPermissionsRequired)for(let permission of userPermissionsRequired)userPermissions.has(permission)||missingUserPermissions.push(permission);if(botPermissions&&botPermissionsRequired)for(let permission of botPermissionsRequired)botPermissions.has(permission)||missingBotPermissions.push(permission);if(!missingUserPermissions.length&&!missingBotPermissions.length)return;let pattern=/([a-z])([A-Z])|([A-Z]+)([A-Z][a-z])/g;missingUserPermissions=missingUserPermissions.map(str=>str.replace(pattern,"$1$3 $2$4")),missingBotPermissions=missingBotPermissions.map(str=>str.replace(pattern,"$1$3 $2$4"));let embedDescription="",formatter=new Intl.ListFormat("en",{style:"long",type:"conjunction"}),getPermissionWord=__name(permissions=>permissions.length===1?"permission":"permissions","getPermissionWord");if(missingUserPermissions.length){let formattedPermissions=missingUserPermissions.map(p=>`\`${p}\``),permissionsString=formatter.format(formattedPermissions);embedDescription+=`- You must have the ${permissionsString} ${getPermissionWord(missingUserPermissions)} to be able to run this command.
27
27
  `}if(missingBotPermissions.length){let formattedPermissions=missingBotPermissions.map(p=>`\`${p}\``),permissionsString=formatter.format(formattedPermissions);embedDescription+=`- I must have the ${permissionsString} ${getPermissionWord(missingBotPermissions)} to be able to execute this command.
28
- `}let embed=new EmbedBuilder().setTitle(":x: Missing permissions!").setDescription(embedDescription).setColor("Red");return interaction.reply({embeds:[embed],flags:MessageFlags2.Ephemeral}),!0}__name(permissions_default,"default");var validations_default=[devOnly_default,permissions_default];init_esm_shims();import{AsyncLocalStorage}from"node:async_hooks";init_esm_shims();var CommandKitErrorCodes={GuildOnlyException:Symbol("kGuildOnlyException"),DMOnlyException:Symbol("kDMOnlyException"),ExitMiddleware:Symbol("kExitMiddleware"),ForwardedCommand:Symbol("kForwardedCommand"),InvalidCommandPrefix:Symbol("kInvalidCommandPrefix")};function createCommandKitError(code){let error=new Error;return Reflect.set(error,"code",code),error}__name(createCommandKitError,"createCommandKitError");function isCommandKitError(error){if(!(error instanceof Error))return!1;let code=Reflect.get(error,"code");for(let key in CommandKitErrorCodes)if(CommandKitErrorCodes[key]===code)return!0;return!1}__name(isCommandKitError,"isCommandKitError");function isErrorType(error,code){if(!isCommandKitError(error))return!1;let errorCode=Reflect.get(error,"code");return errorCode?Array.isArray(code)?code.includes(errorCode):errorCode===code:!1}__name(isErrorType,"isErrorType");import{MessageFlags as MessageFlags3}from"discord.js";var context=new AsyncLocalStorage;function exitContext(fn){return context.exit(fn)}__name(exitContext,"exitContext");function makeContextAwareFunction(env,fn,finalizer){return __name((...args)=>context.run(env,async()=>{try{return await fn(...args)}catch(e){if(isCommandKitError(e)){let code=Reflect.get(e,"code"),interaction=env.variables.get("interaction");if(!interaction)return;switch(code){case CommandKitErrorCodes.GuildOnlyException:{interaction.isRepliable()&&await interaction.reply({content:"This command is only available in guilds.",flags:MessageFlags3.Ephemeral});return}case CommandKitErrorCodes.DMOnlyException:{interaction.isRepliable()&&await interaction.reply({content:"This command is only available in DMs.",flags:MessageFlags3.Ephemeral});return}}return}env.setExecutionError(e)}finally{if(typeof finalizer=="function")try{await finalizer(...args)}catch{}}}),"_fn")}__name(makeContextAwareFunction,"makeContextAwareFunction");function getCommandKit(strict=!1){var _a;let kit=((_a=context.getStore())==null?void 0:_a.commandkit)??CommandKit.instance;if(!kit&&strict)throw new Error("CommandKit instance not found.");return kit}__name(getCommandKit,"getCommandKit");function getContext(){return context.getStore()}__name(getContext,"getContext");function useEnvironment(){let ctx=context.getStore();if(!ctx)throw new Error("No commandkit environment found. Please make sure you are inside commandkit handler.");return ctx}__name(useEnvironment,"useEnvironment");function guildOnly(){let interaction=useEnvironment().variables.get("interaction");if(!interaction)throw new Error("No interaction found in environment.");if(!interaction.guild){let error=new Error("This command is only available in guilds.");throw Reflect.set(error,"code",CommandKitErrorCodes.GuildOnlyException),error}}__name(guildOnly,"guildOnly");function dmOnly(){let interaction=useEnvironment().variables.get("interaction");if(!interaction)throw new Error("No interaction found in environment.");if(interaction.guild){let error=new Error("This command is only available in DMs.");throw Reflect.set(error,"code",CommandKitErrorCodes.DMOnlyException),error}}__name(dmOnly,"dmOnly");init_esm_shims();import{randomUUID}from"node:crypto";var _data,_CommandKitEnvironment=class _CommandKitEnvironment{constructor(commandkit){this.commandkit=commandkit;__privateAdd(this,_data,{executionError:null,type:null,variables:new Map,deferredFunctions:new Map,marker:"",markStart:0,markEnd:0})}getExecutionError(){return __privateGet(this,_data).executionError}setExecutionError(error){if(__privateGet(this,_data).executionError)throw new Error("Execution error already set.");__privateGet(this,_data).executionError=error}getType(){let type=__privateGet(this,_data).type;if(!type)throw new Error("Environment type not set.");return type}setType(type){__privateGet(this,_data).type=type}get variables(){return __privateGet(this,_data).variables}registerDeferredFunction(fn){let id=randomUUID();return __privateGet(this,_data).deferredFunctions.set(id,fn),id}clearDeferredFunction(id){__privateGet(this,_data).deferredFunctions.delete(id)}async runDeferredFunctions(){for(let[id,fn]of __privateGet(this,_data).deferredFunctions)try{await fn(this)}catch(e){this.commandkit.emit("unhandledDeferredFunctionRejection",e)}finally{this.clearDeferredFunction(id)}}clearAllDeferredFunctions(){__privateGet(this,_data).deferredFunctions.clear()}markStart(marker){__privateGet(this,_data).marker=marker,__privateGet(this,_data).markStart=performance.now()}markEnd(){__privateGet(this,_data).markEnd||(__privateGet(this,_data).markEnd=performance.now())}getMarker(){return __privateGet(this,_data).marker}getExecutionTime(){return Math.abs(__privateGet(this,_data).markEnd-__privateGet(this,_data).markStart)}};_data=new WeakMap,__name(_CommandKitEnvironment,"CommandKitEnvironment");var CommandKitEnvironment=_CommandKitEnvironment,CommandKitEnvironmentType=(CommandKitEnvironmentType2=>(CommandKitEnvironmentType2.CommandHandler="COMMAND_HANDLER",CommandKitEnvironmentType2))(CommandKitEnvironmentType||{});function afterCommand(fn){let env=getContext();if(!env)throw new Error("after must be called inside commandkit handler.");return env.registerDeferredFunction(fn)}__name(afterCommand,"afterCommand");function cancelAfterCommand(id){let env=getContext();if(!env)throw new Error("cancelAfter must be called inside commandkit handler.");env.clearDeferredFunction(id)}__name(cancelAfterCommand,"cancelAfterCommand");init_esm_shims();init_esm_shims();var _Localization=class _Localization{constructor(commandkit,config){this.commandkit=commandkit;this.config=config;let strategy=this.commandkit.config.localizationStrategy,{locale,target}=this.config;this.t=(translatable,args)=>strategy.translate({args,key:translatable,locale,scope:target})}t;getStrategy(){return this.commandkit.config.localizationStrategy}getDefaultLocale(){return this.commandkit.config.defaultLocale}getLocale(){return this.config.locale}getTarget(){return this.config.target}};__name(_Localization,"Localization");var Localization=_Localization;var CommandExecutionMode={SlashCommand:"chatInput",MessageContextMenu:"messageContextMenu",UserContextMenu:"userContextMenu",Autocomplete:"autocomplete",Message:"message"},_Context=class _Context{constructor(commandkit,config){this.commandkit=commandkit;this.config=config;this.interaction=config.interaction,this.message=config.message}interaction;message;_locale=null;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(command){let target=await this.commandkit.appCommandsHandler.prepareCommandRun(this.isInteraction()?this.interaction:this.message);if(!target)throw new Error(`Command ${command} not found! If you are trying to forward to a legacy command, ctx.forwardCommand is not compatible with legacy commands.`);let env=this.config.environment??getContext();if(!env)throw new Error("No commandkit environment found.");let handlers={chatInput:target.command.data.chatInput,autocomplete:target.command.data.autocomplete,message:target.command.data.message,messageContextMenu:target.command.data.messageContextMenu,userContextMenu:target.command.data.userContextMenu},handlerKind=env.variables.get("execHandlerKind");if(!handlerKind)throw new Error("No execution handler kind found.");let handler=handlers[handlerKind];throw handler?(await handler(this.clone({forwarded:!0})),createCommandKitError(CommandKitErrorCodes.ForwardedCommand)):new Error(`No handler found for ${handlerKind}`)}get executionMode(){return this.config.executionMode}isInteraction(){return this.executionMode===CommandExecutionMode.SlashCommand||this.executionMode===CommandExecutionMode.Autocomplete||this.executionMode===CommandExecutionMode.MessageContextMenu||this.executionMode===CommandExecutionMode.UserContextMenu}isSlashCommand(){return this.executionMode===CommandExecutionMode.SlashCommand}isAutocomplete(){return this.executionMode===CommandExecutionMode.Autocomplete}isMessageContextMenu(){return this.executionMode===CommandExecutionMode.MessageContextMenu}isUserContextMenu(){return this.executionMode===CommandExecutionMode.UserContextMenu}isMessage(){return this.executionMode===CommandExecutionMode.Message}getCommandIdentifier(){return this.isInteraction()?this.interaction.commandName:this.message.content.split(" ")[0].slice(1)}getGuildLocale(){var _a;return this.isInteraction()?this.interaction.guildLocale:((_a=this.message.guild)==null?void 0:_a.preferredLocale)??null}getUserLocale(){return this.isInteraction()?this.interaction.locale:null}getLocale(preferUser=!1){if(this._locale)return this._locale;let locale=preferUser?this.getUserLocale():this.getGuildLocale();return locale||this.commandkit.config.defaultLocale}setLocale(locale){this._locale=locale}locale(locale){let selectedLocale=locale??this.getLocale();return new Localization(this.commandkit,{locale:selectedLocale,target:this.getCommandIdentifier()})}clone(config){return config?new _Context(this.commandkit,{...this.config,...config}):new _Context(this.commandkit,this.config)}isMiddleware(){return this instanceof MiddlewareContext}args(){return this.isMessage()?this.config.messageCommandParser.getArgs():[]}};__name(_Context,"Context");var Context=_Context,_cancel,_MiddlewareContext=class _MiddlewareContext extends Context{constructor(){super(...arguments);__privateAdd(this,_cancel,!1)}get cancelled(){return __privateGet(this,_cancel)}cancel(){__privateSet(this,_cancel,!0)}};_cancel=new WeakMap,__name(_MiddlewareContext,"MiddlewareContext");var MiddlewareContext=_MiddlewareContext;var _data2,_CommandHandler_instances,buildCommands_fn,buildBuiltInValidations_fn,commandFinalizer_fn,requestExternalHandler_fn,interactionHandler_fn,_CommandHandler=class _CommandHandler{constructor({...options}){__privateAdd(this,_CommandHandler_instances);__privateAdd(this,_data2);__privateSet(this,_data2,{...options,builtInValidations:[],commands:[]})}async init(){await __privateMethod(this,_CommandHandler_instances,buildCommands_fn).call(this),__privateMethod(this,_CommandHandler_instances,buildBuiltInValidations_fn).call(this);let devOnlyCommands=__privateGet(this,_data2).commands.filter(cmd=>{var _a;return(_a=cmd.options)==null?void 0:_a.devOnly});devOnlyCommands.length&&!__privateGet(this,_data2).devGuildIds.length&&process.emitWarning(colors_default.yellow('You have commands marked as "devOnly", but "devGuildIds" have not been set.')),devOnlyCommands.length&&!__privateGet(this,_data2).devUserIds.length&&!__privateGet(this,_data2).devRoleIds.length&&process.emitWarning(colors_default.yellow('You have commands marked as "devOnly", but "devUserIds" or "devRoleIds" have not been set.')),__privateGet(this,_data2).bulkRegister?await loadCommandsWithRest({client:__privateGet(this,_data2).client,devGuildIds:__privateGet(this,_data2).devGuildIds,commands:__privateGet(this,_data2).commands}):await registerCommands({client:__privateGet(this,_data2).client,devGuildIds:__privateGet(this,_data2).devGuildIds,commands:__privateGet(this,_data2).commands}),this.handleCommands()}handleCommands(){__privateGet(this,_data2).client.on(Events.InteractionCreate,interaction=>{let env=new CommandKitEnvironment(__privateGet(this,_data2).commandkitInstance);return env.setType("COMMAND_HANDLER"),makeContextAwareFunction(env,__privateMethod(this,_CommandHandler_instances,interactionHandler_fn).bind(this),__privateMethod(this,_CommandHandler_instances,commandFinalizer_fn).bind(this))(interaction)}),__privateGet(this,_data2).client.on(Events.MessageCreate,message=>{let env=new CommandKitEnvironment(__privateGet(this,_data2).commandkitInstance);return env.setType("COMMAND_HANDLER"),makeContextAwareFunction(env,__privateMethod(this,_CommandHandler_instances,requestExternalHandler_fn).bind(this),__privateMethod(this,_CommandHandler_instances,commandFinalizer_fn).bind(this))(message)})}get commands(){return __privateGet(this,_data2).commands}async reloadCommands(type){if(!__privateGet(this,_data2).commandsPath)throw new Error(colors_default.red('Cannot reload commands as "commandsPath" was not provided when instantiating CommandKit.'));__privateGet(this,_data2).commands=[],await __privateMethod(this,_CommandHandler_instances,buildCommands_fn).call(this),__privateGet(this,_data2).bulkRegister?await loadCommandsWithRest({client:__privateGet(this,_data2).client,devGuildIds:__privateGet(this,_data2).devGuildIds,commands:__privateGet(this,_data2).commands,reloading:!0,type}):await registerCommands({client:__privateGet(this,_data2).client,devGuildIds:__privateGet(this,_data2).devGuildIds,commands:__privateGet(this,_data2).commands,reloading:!0,type})}};_data2=new WeakMap,_CommandHandler_instances=new WeakSet,buildCommands_fn=__name(async function(){var _a;let allowedExtensions=/\.(js|mjs|cjs|ts)$/i,commandFilePaths=(await getFilePaths(__privateGet(this,_data2).commandsPath,!0)).filter(path4=>allowedExtensions.test(path4));for(let commandFilePath of commandFilePaths){let importedObj=await import(`${toFileURL(commandFilePath)}?t=${Date.now()}`),commandObj=clone(importedObj);typeof module<"u"&&typeof __require<"u"&&delete __require.cache[__require.resolve(commandFilePath)];let compactFilePath=commandFilePath.split(process.cwd())[1]||commandFilePath;if(commandObj.default&&(commandObj=commandObj.default),importedObj.default?commandObj.data=importedObj.default.data:commandObj.data=importedObj.data,!commandObj.data){process.emitWarning(colors_default.yellow(`Ignoring: Command file ${compactFilePath} does not export "data".`));continue}if(!commandObj.data.name){process.emitWarning(colors_default.yellow(`Ignoring: Command file ${compactFilePath} does not export "data.name".`));continue}if(!commandObj.run){process.emitWarning(colors_default.yellow(`Ignoring: Command file ${commandObj.data.name} does not export "run".`));continue}if(typeof commandObj.run!="function"){process.emitWarning(colors_default.yellow(`Ignoring: Command file ${commandObj.data.name} does not export "run" as a function.`));continue}commandObj.filePath=commandFilePath;let commandCategory=((_a=commandFilePath.split(__privateGet(this,_data2).commandsPath)[1])==null?void 0:_a.replace(/\\\\|\\/g,"/").split("/")[1])||null;commandCategory&&allowedExtensions.test(commandCategory)?commandObj.category=null:commandObj.category=commandCategory,__privateGet(this,_data2).commands.push(commandObj)}if(__privateGet(this,_data2).commandkitInstance.appCommandsHandler){let commands=__privateGet(this,_data2).commandkitInstance.appCommandsHandler.getCommandsArray();for(let cmd of commands){let idx=__privateGet(this,_data2).commands.findIndex(c=>c.data.name===cmd.name);idx!==-1?__privateGet(this,_data2).commands[idx]={data:cmd}:__privateGet(this,_data2).commands.push({data:cmd})}}},"#buildCommands"),buildBuiltInValidations_fn=__name(function(){for(let builtInValidationFunction of validations_default)__privateGet(this,_data2).builtInValidations.push(builtInValidationFunction)},"#buildBuiltInValidations"),commandFinalizer_fn=__name(async function(){let env=useEnvironment();await env.runDeferredFunctions(),env.clearAllDeferredFunctions()},"#commandFinalizer"),requestExternalHandler_fn=__name(async function(interaction){let handler=__privateGet(this,_data2).commandkitInstance.appCommandsHandler;if(!handler||!(interaction instanceof Message)&&!(interaction.isCommand()||interaction.isAutocomplete()))return!1;let targetCommand=await handler.prepareCommandRun(interaction);if(!targetCommand)return!1;let environment=useEnvironment();environment.variables.set("commandHandlerType","app");let{command,middlewares,messageCommandParser}=targetCommand,context2=new MiddlewareContext(__privateGet(this,_data2).commandkitInstance,{executionMode:interaction instanceof Message?CommandExecutionMode.Message:interaction.isChatInputCommand()?CommandExecutionMode.SlashCommand:interaction.isUserContextMenuCommand()?CommandExecutionMode.UserContextMenu:interaction.isMessageContextMenuCommand()?CommandExecutionMode.MessageContextMenu:interaction.isAutocomplete()?CommandExecutionMode.Autocomplete:null,interaction:interaction instanceof Message?null:interaction,message:interaction instanceof Message?interaction:null,messageCommandParser}),exec=__name(async()=>{var _a,_b,_c,_d,_e,_f,_g,_h,_i,_j;if(middlewares.length>0)for(let middleware of middlewares)try{await middleware.data.beforeExecute(context2)}catch(e){if(isErrorType(e,CommandKitErrorCodes.ExitMiddleware))break;if(isErrorType(e,[CommandKitErrorCodes.DMOnlyException,CommandKitErrorCodes.GuildOnlyException,CommandKitErrorCodes.ForwardedCommand]))return;throw e}let postStageRunner=!0;try{let commandContext=context2.clone({environment});if(interaction instanceof Message)environment.variables.set("execHandlerKind","message"),await((_b=(_a=command.data).message)==null?void 0:_b.call(_a,commandContext));else switch(!0){case interaction.isChatInputCommand():environment.variables.set("execHandlerKind","chatInput"),await((_d=(_c=command.data).chatInput)==null?void 0:_d.call(_c,commandContext));break;case interaction.isUserContextMenuCommand():environment.variables.set("execHandlerKind","userContextMenu"),await((_f=(_e=command.data).userContextMenu)==null?void 0:_f.call(_e,commandContext));break;case interaction.isMessageContextMenuCommand():environment.variables.set("execHandlerKind","messageContextMenu"),await((_h=(_g=command.data).messageContextMenu)==null?void 0:_h.call(_g,commandContext));break;case interaction.isAutocomplete():environment.variables.set("execHandlerKind","autocomplete"),await((_j=(_i=command.data).autocomplete)==null?void 0:_j.call(_i,commandContext));break;default:break}}catch(e){if(console.log(e),isErrorType(e,CommandKitErrorCodes.ExitMiddleware))postStageRunner=!1;else{if(isErrorType(e,[CommandKitErrorCodes.DMOnlyException,CommandKitErrorCodes.GuildOnlyException,CommandKitErrorCodes.ForwardedCommand]))return;throw e}}if(postStageRunner&&middlewares.length>0)for(let middleware of middlewares)try{await middleware.data.afterExecute(context2)}catch(e){if(isErrorType(e,CommandKitErrorCodes.ExitMiddleware))break;if(isErrorType(e,[CommandKitErrorCodes.DMOnlyException,CommandKitErrorCodes.GuildOnlyException,CommandKitErrorCodes.ForwardedCommand]))return;throw e}},"exec");if(!__privateGet(this,_data2).commandkitInstance.isDebuggingCommands())return exec();afterCommand(env=>{let error=env.getExecutionError(),marker=env.getMarker(),time=`${env.getExecutionTime().toFixed(2)}ms`;if(error){console.error(colors_default.red(`[${marker} - ${time}] Error executing command: ${error.stack||error}`));return}console.log(colors_default.cyan("(app \u2728)")+colors_default.reset(" ")+colors_default.green(`[${marker} - ${time}] Command executed successfully`))});try{return environment.markStart(`${command.data.command.name}`),await exec()}finally{environment.markEnd()}},"#requestExternalHandler"),interactionHandler_fn=__name(async function(interaction){try{if(await __privateMethod(this,_CommandHandler_instances,requestExternalHandler_fn).call(this,interaction)!==!1)return}catch(e){console.error(e)}if(!interaction.isChatInputCommand()&&!interaction.isContextMenuCommand()&&!interaction.isAutocomplete())return;let isAutocomplete=interaction.isAutocomplete(),targetCommand=__privateGet(this,_data2).commands.find(cmd=>cmd.data.name===interaction.commandName);if(!targetCommand)return;let env=useEnvironment();env.variables.set("commandHandlerType","legacy"),env.variables.set("interaction",interaction);let{data,options,run,autocomplete,...rest}=targetCommand;return isAutocomplete&&!autocomplete?void 0:__name(async()=>{let commandObj={data:targetCommand.data,options:targetCommand.options,...rest};if(__privateGet(this,_data2).validationHandler){let canRun2=!0;for(let validationFunction of __privateGet(this,_data2).validationHandler.validations)if(await validationFunction({interaction,commandObj,client:__privateGet(this,_data2).client,handler:__privateGet(this,_data2).commandkitInstance})){canRun2=!1;break}if(!canRun2)return}let canRun=!0;if(!__privateGet(this,_data2).skipBuiltInValidations){for(let validation of __privateGet(this,_data2).builtInValidations)if(validation({targetCommand,interaction,handlerData:__privateGet(this,_data2)})){canRun=!1;break}}if(!canRun)return;let command=targetCommand[isAutocomplete?"autocomplete":"run"],context2={interaction,client:__privateGet(this,_data2).client,handler:__privateGet(this,_data2).commandkitInstance};if(!__privateGet(this,_data2).commandkitInstance.isDebuggingCommands())return command(context2);afterCommand(env2=>{let error=env2.getExecutionError(),marker=env2.getMarker(),time=`${env2.getExecutionTime().toFixed(2)}ms`;if(error){console.error(colors_default.red(`[${marker} - ${time}] Error executing command: ${error.stack||error}`));return}console.log(colors_default.green(`[${marker} - ${time}] Command executed successfully`))});try{return env.markStart(interaction.commandName),await command(context2)}finally{env.markEnd()}},"executor")()},"#interactionHandler"),__name(_CommandHandler,"CommandHandler");var CommandHandler=_CommandHandler;init_esm_shims();var _data3,_listening,_EventHandler_instances,buildEvents_fn,registerEvents_fn,_EventHandler=class _EventHandler{constructor({...options}){__privateAdd(this,_EventHandler_instances);__privateAdd(this,_data3);__privateAdd(this,_listening,new Set);__privateSet(this,_data3,{...options,events:[]})}async init(){await __privateMethod(this,_EventHandler_instances,buildEvents_fn).call(this),__privateMethod(this,_EventHandler_instances,registerEvents_fn).call(this)}async registerExternal(entry){let{event,listeners}=entry,functions=await Promise.all(listeners.map(async l=>import(`${toFileURL(l)}?t=${Date.now()}`).then(m=>m.default))),existing=__privateGet(this,_data3).events.find(e=>e.name===event);existing?existing.functions.unshift(...functions):__privateGet(this,_data3).events.unshift({name:event,functions})}resyncListeners(){let client=__privateGet(this,_data3).client,handler=__privateGet(this,_data3).commandKitInstance;for(let eventObj of __privateGet(this,_data3).events)__privateGet(this,_listening).has(eventObj.name)||(client.on(eventObj.name,async(...params)=>{for(let eventFunction of eventObj.functions)if(await eventFunction(...params,client,handler))break}),__privateGet(this,_listening).add(eventObj.name))}get events(){return __privateGet(this,_data3).events}async reloadEvents(commandHandler){if(!__privateGet(this,_data3).eventsPath)throw new Error(colors_default.red('Cannot reload events as "eventsPath" was not provided when instantiating CommandKit.'));__privateGet(this,_data3).events=[],await __privateMethod(this,_EventHandler_instances,buildEvents_fn).call(this),__privateGet(this,_listening).clear(),__privateGet(this,_data3).client.removeAllListeners(),__privateMethod(this,_EventHandler_instances,registerEvents_fn).call(this),commandHandler==null||commandHandler.handleCommands()}};_data3=new WeakMap,_listening=new WeakMap,_EventHandler_instances=new WeakSet,buildEvents_fn=__name(async function(){let eventFolderPaths=await getFolderPaths(__privateGet(this,_data3).eventsPath);for(let eventFolderPath of eventFolderPaths){let eventName=eventFolderPath.replace(/\\\\|\\/g,"/").split("/").pop(),allowedExtensions=/\.(js|mjs|cjs|ts)$/i,eventFilePaths=(await getFilePaths(eventFolderPath,!0)).filter(path4=>allowedExtensions.test(path4)),eventObj=__privateGet(this,_data3).events.find(e=>e.name===eventName);eventObj||(eventObj={name:eventName,functions:[]},__privateGet(this,_data3).events.push(eventObj));for(let eventFilePath of eventFilePaths){let importedFunction=(await import(`${toFileURL(eventFilePath)}?t=${Date.now()}`)).default,eventFunction=clone(importedFunction);typeof module<"u"&&typeof __require<"u"&&delete __require.cache[__require.resolve(eventFilePath)],eventFunction!=null&&eventFunction.default&&(eventFunction=eventFunction.default);let compactFilePath=eventFilePath.split(process.cwd())[1]||eventFilePath;if(typeof eventFunction!="function"){process.emitWarning(colors_default.yellow(`Ignoring: Event file ${compactFilePath} does not export a function.`));continue}eventObj.functions.push(eventFunction)}}},"#buildEvents"),registerEvents_fn=__name(function(){let client=__privateGet(this,_data3).client,handler=__privateGet(this,_data3).commandKitInstance;for(let eventObj of __privateGet(this,_data3).events)client.on(eventObj.name,async(...params)=>{for(let eventFunction of eventObj.functions)if(await eventFunction(...params,client,handler))break}),__privateGet(this,_listening).add(eventObj.name)},"#registerEvents"),__name(_EventHandler,"EventHandler");var EventHandler=_EventHandler;init_esm_shims();var _data4,_ValidationHandler_instances,buildValidations_fn,_ValidationHandler=class _ValidationHandler{constructor({...options}){__privateAdd(this,_ValidationHandler_instances);__privateAdd(this,_data4);__privateSet(this,_data4,{...options,validations:[]})}async init(){__privateGet(this,_data4).validations=await __privateMethod(this,_ValidationHandler_instances,buildValidations_fn).call(this)}get validations(){return __privateGet(this,_data4).validations}async reloadValidations(){if(!__privateGet(this,_data4).validationsPath)throw new Error(colors_default.red('Cannot reload validations as "validationsPath" was not provided when instantiating CommandKit.'));let newValidations=await __privateMethod(this,_ValidationHandler_instances,buildValidations_fn).call(this);__privateGet(this,_data4).validations=newValidations}};_data4=new WeakMap,_ValidationHandler_instances=new WeakSet,buildValidations_fn=__name(async function(){let allowedExtensions=/\.(js|mjs|cjs|ts)$/i,validationFilePaths=(await getFilePaths(__privateGet(this,_data4).validationsPath,!0)).filter(path4=>allowedExtensions.test(path4)),validationFunctions=[];for(let validationFilePath of validationFilePaths){let importedFunction=(await import(`${toFileURL(validationFilePath)}?t=${Date.now()}`)).default,validationFunction=clone(importedFunction);typeof module<"u"&&typeof __require<"u"&&delete __require.cache[__require.resolve(validationFilePath)],validationFunction!=null&&validationFunction.default&&(validationFunction=validationFunction.default);let compactFilePath=validationFilePath.split(process.cwd())[1]||validationFilePath;if(typeof validationFunction!="function"){process.emitWarning(colors_default.yellow(`Ignoring: Validation file ${compactFilePath} does not export a function.`));continue}validationFunctions.push(validationFunction)}return validationFunctions},"#buildValidations"),__name(_ValidationHandler,"ValidationHandler");var ValidationHandler=_ValidationHandler;init_esm_shims();var _CacheProvider=class _CacheProvider{};__name(_CacheProvider,"CacheProvider");var CacheProvider=_CacheProvider;init_esm_shims();var _cache,_MemoryCache=class _MemoryCache extends CacheProvider{constructor(){super(...arguments);__privateAdd(this,_cache,new Map)}async get(key){let entry=__privateGet(this,_cache).get(key);if(entry){if(entry.ttl&&Date.now()>entry.ttl){__privateGet(this,_cache).delete(key);return}return entry}}async set(key,value,ttl){let entry={value,ttl:ttl!=null?Date.now()+ttl:void 0};__privateGet(this,_cache).set(key,entry)}async exists(key){return __privateGet(this,_cache).has(key)}async delete(key){__privateGet(this,_cache).delete(key)}async clear(){__privateGet(this,_cache).clear()}async expire(key,ttl){let entry=__privateGet(this,_cache).get(key);if(!entry)return;let _ttl=Date.now()+ttl;if(_ttl<Date.now()){__privateGet(this,_cache).delete(key);return}entry.ttl=_ttl}};_cache=new WeakMap,__name(_MemoryCache,"MemoryCache");var MemoryCache=_MemoryCache;init_esm_shims();init_esm_shims();import{ActionRowBuilder}from"discord.js";function ActionRow(props){let row=new ActionRowBuilder;return Array.isArray(props.children)?row.setComponents(...props.children):props.children&&row.setComponents(props.children),row}__name(ActionRow,"ActionRow");init_esm_shims();import{ButtonStyle,ButtonBuilder,Events as Events2}from"discord.js";var _onClickHandler,_contextData,_unsub,_ButtonKit_instances,getEventInterceptor_fn,setupInteractionCollector_fn,destroyCollector_fn,_ButtonKit=class _ButtonKit extends ButtonBuilder{constructor(){super(...arguments);__privateAdd(this,_ButtonKit_instances);__privateAdd(this,_onClickHandler,null);__privateAdd(this,_contextData,{autoReset:!0,time:5*60*1e3,once:!1});__privateAdd(this,_unsub,null)}onClick(handler,data){var _a,_b,_c,_d;if(this.data.style===ButtonStyle.Link)throw new TypeError('Cannot setup "onClick" handler on link buttons.');if(!handler)throw new TypeError('Cannot setup "onClick" without a handler function parameter.');return __privateGet(this,_onClickHandler)&&__privateMethod(this,_ButtonKit_instances,destroyCollector_fn).call(this),__privateSet(this,_onClickHandler,handler),data&&__privateSet(this,_contextData,{autoReset:data.autoReset??((_a=__privateGet(this,_contextData))==null?void 0:_a.autoReset)??!0,time:data.time??((_b=__privateGet(this,_contextData))==null?void 0:_b.time)??5*60*1e3,filter:data.filter??((_c=__privateGet(this,_contextData))==null?void 0:_c.filter),onEnd:data.onEnd??((_d=__privateGet(this,_contextData))==null?void 0:_d.onEnd)}),__privateMethod(this,_ButtonKit_instances,setupInteractionCollector_fn).call(this),this}onEnd(handler){if(this.data.style===ButtonStyle.Link)throw new TypeError('Cannot setup "onEnd" handler on link buttons.');if(!handler)throw new TypeError('Cannot setup "onEnd" without a handler function parameter.');return __privateGet(this,_contextData)??__privateSet(this,_contextData,{}),__privateGet(this,_contextData).onEnd=handler,this}onError(handler){if(!handler)throw new TypeError('Cannot setup "onError" without a handler function parameter.');return __privateGet(this,_contextData)??__privateSet(this,_contextData,{}),__privateGet(this,_contextData).onError=handler,this}filter(predicate){return __privateGet(this,_contextData)??__privateSet(this,_contextData,{autoReset:!0,time:5*60*1e3}),__privateGet(this,_contextData).filter=predicate,this}get customId(){return this.data.custom_id??this.data.customId}dispose(){return __privateMethod(this,_ButtonKit_instances,destroyCollector_fn).call(this),this}};_onClickHandler=new WeakMap,_contextData=new WeakMap,_unsub=new WeakMap,_ButtonKit_instances=new WeakSet,getEventInterceptor_fn=__name(function(){let ctx=getContext();return ctx?exitContext(()=>ctx.commandkit.eventInterceptor):getCommandKit(!0).eventInterceptor},"#getEventInterceptor"),setupInteractionCollector_fn=__name(function(){if(this.data.style===ButtonStyle.Link||!__privateGet(this,_contextData)||!__privateGet(this,_onClickHandler))return;if((this.customId??null)===null)throw new TypeError('Cannot setup "onClick" handler on a button without a custom id.');let interceptor=__privateMethod(this,_ButtonKit_instances,getEventInterceptor_fn).call(this);__privateSet(this,_unsub,interceptor.subscribe(Events2.InteractionCreate,async interaction=>{var _a,_b;if(!interaction.isButton())return;let myCustomId2=this.customId??null,interactionCustomId=interaction.customId;if(myCustomId2&&interactionCustomId!==myCustomId2)return;let filter=(_a=__privateGet(this,_contextData))==null?void 0:_a.filter;if(filter&&!await filter(interaction))return;let handler=__privateGet(this,_onClickHandler);return handler?handler(interaction,this):(_b=__privateGet(this,_unsub))==null?void 0:_b.call(this)},__privateGet(this,_contextData)))},"#setupInteractionCollector"),destroyCollector_fn=__name(function(){var _a;(_a=__privateGet(this,_unsub))==null||_a.call(this),__privateSet(this,_unsub,null),__privateSet(this,_contextData,null),__privateSet(this,_onClickHandler,null)},"#destroyCollector"),__name(_ButtonKit,"ButtonKit");var ButtonKit=_ButtonKit;init_esm_shims();import{ButtonStyle as ButtonStyle2}from"discord.js";function Button(props){let button=new ButtonKit;props.style??=ButtonStyle2.Primary,props.onClick&&(props.customId??=`buttonkit::${crypto.randomUUID()}`),props.customId&&button.setCustomId(props.customId),props.onClick&&button.onClick(props.onClick,props.options),props.disabled&&button.setDisabled(props.disabled),props.emoji&&button.setEmoji(props.emoji),props.skuId&&button.setSKUId(props.skuId),props.url&&button.setURL(props.url),props.style&&button.setStyle(props.style);let label=props.label||props.children;return label&&button.setLabel(Array.isArray(label)?label.join(" "):typeof label=="string"?label:String(label)),props.onEnd&&button.onEnd(props.onEnd),props.onError&&button.onError(props.onError),button}__name(Button,"Button");init_esm_shims();import{Events as Events3,ModalBuilder}from"discord.js";var _onSubmitHandler,_contextData2,_unsub2,_ModalKit_instances,getEventInterceptor_fn2,setupCollector_fn,destroyCollector_fn2,_ModalKit=class _ModalKit extends ModalBuilder{constructor(){super(...arguments);__privateAdd(this,_ModalKit_instances);__privateAdd(this,_onSubmitHandler,null);__privateAdd(this,_contextData2,{autoReset:!1,time:5*60*1e3,once:!0});__privateAdd(this,_unsub2,null)}onSubmit(handler,data){var _a,_b,_c,_d;if(!handler)throw new TypeError('Cannot setup "onClick" without a handler function parameter.');return __privateGet(this,_onSubmitHandler)&&__privateMethod(this,_ModalKit_instances,destroyCollector_fn2).call(this),__privateSet(this,_onSubmitHandler,handler),data&&__privateSet(this,_contextData2,{autoReset:data.autoReset??((_a=__privateGet(this,_contextData2))==null?void 0:_a.autoReset)??!0,time:data.time??((_b=__privateGet(this,_contextData2))==null?void 0:_b.time)??5*60*1e3,filter:data.filter??((_c=__privateGet(this,_contextData2))==null?void 0:_c.filter),onEnd:data.onEnd??((_d=__privateGet(this,_contextData2))==null?void 0:_d.onEnd)}),__privateMethod(this,_ModalKit_instances,setupCollector_fn).call(this),this}onEnd(handler){if(!handler)throw new TypeError('Cannot setup "onEnd" without a handler function parameter.');return __privateGet(this,_contextData2)??__privateSet(this,_contextData2,{}),__privateGet(this,_contextData2).onEnd=handler,this}onError(handler){if(!handler)throw new TypeError('Cannot setup "onError" without a handler function parameter.');return __privateGet(this,_contextData2)??__privateSet(this,_contextData2,{}),__privateGet(this,_contextData2).onError=handler,this}filter(predicate){return __privateGet(this,_contextData2)??__privateSet(this,_contextData2,{autoReset:!0,time:5*60*1e3}),__privateGet(this,_contextData2).filter=predicate,this}get customId(){return this.data.custom_id??this.data.customId}dispose(){return __privateMethod(this,_ModalKit_instances,destroyCollector_fn2).call(this),this}};_onSubmitHandler=new WeakMap,_contextData2=new WeakMap,_unsub2=new WeakMap,_ModalKit_instances=new WeakSet,getEventInterceptor_fn2=__name(function(){let ctx=getContext();return ctx?exitContext(()=>ctx.commandkit.eventInterceptor):getCommandKit(!0).eventInterceptor},"#getEventInterceptor"),setupCollector_fn=__name(function(){if(!__privateGet(this,_contextData2))return;if(!this.customId)throw new TypeError("Cannot setup an modal collector without a custom ID.");let interceptor=__privateMethod(this,_ModalKit_instances,getEventInterceptor_fn2).call(this);interceptor&&__privateSet(this,_unsub2,interceptor.subscribe(Events3.InteractionCreate,async interaction=>{var _a,_b;if(!interaction.isModalSubmit())return;let myCustomId=this.customId??null,interactionCustomId=interaction.customId;if(myCustomId&&interactionCustomId!==myCustomId)return;let filter=(_a=__privateGet(this,_contextData2))==null?void 0:_a.filter;if(filter&&!await filter(interaction))return;let handler=__privateGet(this,_onSubmitHandler);return handler?handler(interaction,this):(_b=__privateGet(this,_unsub2))==null?void 0:_b.call(this)},__privateGet(this,_contextData2)))},"#setupCollector"),destroyCollector_fn2=__name(function(){var _a;(_a=__privateGet(this,_unsub2))==null||_a.call(this),__privateSet(this,_unsub2,null),__privateSet(this,_onSubmitHandler,null),__privateSet(this,_contextData2,null)},"#destroyCollector"),__name(_ModalKit,"ModalKit");var ModalKit=_ModalKit;init_esm_shims();import{ActionRowBuilder as ActionRowBuilder2,TextInputBuilder,TextInputStyle}from"discord.js";function Modal(props){let modal=new ModalKit;if(props.title&&modal.setTitle(props.title),props.onSubmit&&(props.customId??=`modalkit::${crypto.randomUUID()}`),props.customId&&modal.setCustomId(props.customId),props.onSubmit&&modal.onSubmit(props.onSubmit,props.options),props.children){let childs=(Array.isArray(props.children)?props.children:[props.children]).map(c=>{if(c instanceof ActionRowBuilder2)return c;if(c instanceof TextInputBuilder)return new ActionRowBuilder2().addComponents(c)}).filter(c=>c!=null);modal.addComponents(childs)}return props.onEnd&&modal.onEnd(props.onEnd),props.onError&&modal.onError(props.onError),modal}__name(Modal,"Modal");function TextInput(props){let input=new TextInputBuilder().setStyle(props.style);return props.customId&&input.setCustomId(props.customId),props.label&&input.setLabel(props.label),props.placeholder&&input.setPlaceholder(props.placeholder),props.maxLength&&input.setMaxLength(props.maxLength),props.minLength&&input.setMinLength(props.minLength),props.value&&input.setValue(props.value),props.required&&input.setRequired(props.required),input}__name(TextInput,"TextInput");function ShortInput(props){return TextInput({...props,style:TextInputStyle.Short})}__name(ShortInput,"ShortInput");function ParagraphInput(props){return TextInput({...props,style:TextInputStyle.Paragraph})}__name(ParagraphInput,"ParagraphInput");init_esm_shims();init_esm_shims();var WARNED_KEYS=new Set;function emitWarning(message,code="CommandKitWarning"){process.emitWarning(message,{code})}__name(emitWarning,"emitWarning");function warnUnstable(name){WARNED_KEYS.has(name)||(WARNED_KEYS.add(name),emitWarning(`${name} is unstable and may change in future versions.`,"CommandKitUnstableWarning"))}__name(warnUnstable,"warnUnstable");var ElementType={ActionRow:"action-row",Button:"button-kit",Modal:"modal",TextInput:"text-input"};function isCommandKitElement(element){return!(typeof element!="object"||element===null||!Reflect.has(element,"type")||!Reflect.has(element,"data"))}__name(isCommandKitElement,"isCommandKitElement");function getElement(element){return element.data}__name(getElement,"getElement");function Fragment(props){return warnUnstable("CommandKit JSX"),Array.isArray(props.children)?props.children.flat():props.children}__name(Fragment,"Fragment");function createElement(type,props,...children){return warnUnstable("CommandKit JSX"),type({...props,children})}__name(createElement,"createElement");init_esm_shims();init_esm_shims();var _EventInterceptor_instances,cleanupLoop_fn,_EventInterceptor=class _EventInterceptor{constructor(client){this.client=client;__privateAdd(this,_EventInterceptor_instances);__publicField(this,"subscribers",new Map);__publicField(this,"globalHandlers",new Map);__publicField(this,"cleanupTimer",null);__privateMethod(this,_EventInterceptor_instances,cleanupLoop_fn).call(this)}destroy(){this.cleanupTimer&&(clearInterval(this.cleanupTimer),this.cleanupTimer=null);for(let[event,handlers]of this.subscribers)for(let handler of handlers)this.unsubscribe(event,handler,"destroy");this.subscribers.clear(),this.globalHandlers.clear()}hasSubscribers(event){return this.subscribers.has(event)}getSubscriberCount(event){let handlers=this.subscribers.get(event);return(handlers==null?void 0:handlers.size)??0}hasGlobalHandlers(){return this.globalHandlers.size>0}getGlobalHandlersCount(){return this.subscribers.size}subscribe(event,listener,options){return this.subscribers.has(event)||(this.subscribers.set(event,new Set),this.client.on(event,this.createGlobalHandler(event)),this.client.setMaxListeners(this.client.getMaxListeners()+1)),options??={},options.registeredAt=Date.now(),Reflect.set(listener,"options",options),this.subscribers.get(event).add(listener),()=>{this.unsubscribe(event,listener)}}unsubscribe(event,listener,reason){var _a,_b;let handlers=this.subscribers.get(event);handlers&&(handlers.delete(listener),handlers.size<1&&(this.subscribers.delete(event),this.client.removeListener(event,this.globalHandlers.get(event)),this.globalHandlers.delete(event),this.client.setMaxListeners(Math.max(this.client.getMaxListeners()-1,0))),(_b=(_a=Reflect.get(listener,"options")).onEnd)==null||_b.call(_a,reason??"unsubscribe"))}createGlobalHandler(event){if(this.globalHandlers.has(event))return this.globalHandlers.get(event);let handler=__name(async(...args)=>{let subscribers=this.subscribers.get(event);if(subscribers&&subscribers.size>0)for(let subscriber of subscribers){let options=Reflect.get(subscriber,"options");if(options.time&&Date.now()-options.registeredAt>options.time){this.unsubscribe(event,subscriber,"time");continue}if(options.autoReset&&(options.registeredAt=Date.now()),!(options.filter&&!await options.filter(...args)))try{await subscriber(...args)}catch(e){if(options.onError)await options.onError(e);else throw e}finally{options.once&&this.unsubscribe(event,subscriber,"once")}}},"handler");return this.globalHandlers.set(event,handler),handler}};_EventInterceptor_instances=new WeakSet,cleanupLoop_fn=__name(function(){this.cleanupTimer&&clearInterval(this.cleanupTimer),this.cleanupTimer=setInterval(()=>{for(let[event,handlers]of this.subscribers)for(let handler of handlers){let options=Reflect.get(handler,"options");options.time&&Date.now()-options.registeredAt>options.time&&this.unsubscribe(event,handler,"time")}},6e4).unref()},"#cleanupLoop"),__name(_EventInterceptor,"EventInterceptor");var EventInterceptor=_EventInterceptor;import{Locale as Locale2}from"discord.js";init_esm_shims();import{readFile}from"node:fs/promises";import{join}from"node:path";var _DefaultLocalizationStrategy=class _DefaultLocalizationStrategy{constructor(commandkit){this.commandkit=commandkit}translations=new Map;async locateTranslation(scope,locale){let localesPath=this.commandkit.getPath("locales");if(!localesPath)return null;let path4=join(localesPath,locale,`${scope}.json`);try{let data=await readFile(path4,"utf-8");return JSON.parse(data)}catch{return null}}async getTranslationStrict(scope,locale){let key=`${scope}:${locale}`;if(!this.translations.has(key)){let translation=await this.locateTranslation(scope,locale);if(!translation)throw new Error(`Translation not found for ${key}`);return this.translations.set(key,translation),translation}return this.translations.get(key)}async getTranslation(scope,locale){try{return this.getTranslationStrict(scope,locale)}catch{return null}}async translate(request){let{scope,key,args,locale}=request,translation=await this.getTranslation(scope,locale);if(!translation)return`${scope}.${key}`;let value=translation.translations[key];return this.applyTranslation(value,args)||`${scope}.${key}`}applyTranslation(translation,args){return!translation||!args?translation:translation.replace(/{([^}]+)}/g,(_,key)=>String(args[key]??`{${key}}`))}};__name(_DefaultLocalizationStrategy,"DefaultLocalizationStrategy");var DefaultLocalizationStrategy=_DefaultLocalizationStrategy;init_esm_shims();import{existsSync}from"node:fs";import{join as join2}from"node:path";init_esm_shims();var COMMANDKIT_CACHE_TAG=Symbol("kCommandKitCacheTag"),COMMANDKIT_IS_DEV=!!process.env.COMMANDKIT_DEV;var appDir=null;function findAppDirectory(){if(appDir)return appDir;let root=join2(process.cwd(),COMMANDKIT_IS_DEV?".commandkit":"dist");existsSync(root)||(root=process.cwd());let dirs=["app","src/app"].map(dir=>join2(root,dir));for(let dir of dirs)if(existsSync(dir))return appDir=dir,dir;return null}__name(findAppDirectory,"findAppDirectory");import{join as join5}from"node:path";init_esm_shims();import{Collection,ContextMenuCommandBuilder,Locale,Message as Message3,SlashCommandBuilder}from"discord.js";init_esm_shims();import{ApplicationCommandOptionType,GuildMember,User,Role}from"discord.js";var _parsed,_options,_args,_MessageCommandParser=class _MessageCommandParser{constructor(message,prefix,schema){this.message=message;this.prefix=prefix;this.schema=schema;__privateAdd(this,_parsed,null);__privateAdd(this,_options,null);__privateAdd(this,_args,[])}getArgs(){return this.parse(),__privateGet(this,_args)}get options(){return __privateGet(this,_options)||__privateSet(this,_options,new MessageCommandOptions(this)),__privateGet(this,_options)}getOption(name){var _a;return(_a=this.parse().options.find(o=>o.name===name))==null?void 0:_a.value}getCommand(){return this.parse().command}getSubcommand(){return this.parse().subcommand}getSubcommandGroup(){return this.parse().subcommandGroup}getPrefix(){for(let p of this.prefix)if(this.message.content.startsWith(p))return p}getFullCommand(){return[this.getCommand(),this.getSubcommandGroup(),this.getSubcommand()].filter(v=>v).join(" ")}parse(){if(__privateGet(this,_parsed))return __privateGet(this,_parsed);let content=this.message.content,prefix=this.getPrefix();if(!prefix)throw createCommandKitError(CommandKitErrorCodes.InvalidCommandPrefix);let parts=content.slice(prefix.length).trim().split(" "),command=parts.shift();__privateSet(this,_args,parts);let subcommandGroup,subcommand;if(command!=null&&command.includes(":")){let[,group,cmd]=command.split(":");!cmd&&group?subcommand=group:cmd&&group&&(subcommandGroup=group,subcommand=cmd)}let schema=this.schema([command,subcommandGroup,subcommand].filter(Boolean).join(" ").trim()),options=parts.map(part=>{try{let[name,value]=part.split(":");if(!(name in schema))return null;switch(schema[name]){case ApplicationCommandOptionType.Boolean:return{name,value:value==="true"};case ApplicationCommandOptionType.Integer:return{name,value:parseInt(value,10)};case ApplicationCommandOptionType.Number:return{name,value:parseFloat(value)};case ApplicationCommandOptionType.String:return{name,value};case ApplicationCommandOptionType.User:return{name,value:this.message.mentions.users.find(u=>u.id===value.replace(/[<@!>]/g,""))};case ApplicationCommandOptionType.Channel:return{name,value:this.message.mentions.channels.find(c=>c.id===value.replace(/[<#>]/g,""))};case ApplicationCommandOptionType.Role:return{name,value:this.message.mentions.roles.find(r=>r.id===value.replace(/[<@&>]/g,""))};case ApplicationCommandOptionType.Attachment:return{name,value:this.message.attachments.find(a=>a.name===value)};default:return null}}catch{return null}}).filter(v=>v!==null);return __privateSet(this,_parsed,{command,options,subcommand,subcommandGroup}),__privateGet(this,_parsed)}};_parsed=new WeakMap,_options=new WeakMap,_args=new WeakMap,__name(_MessageCommandParser,"MessageCommandParser");var MessageCommandParser=_MessageCommandParser,_MessageCommandOptions=class _MessageCommandOptions{constructor(parser2){this.parser=parser2}assertOption(name,required=!1){let option=this.parser.getOption(name);if(required&&option===void 0)throw new Error(`Option "${name}" is required.`);return option??null}getMember(name,required=!1){var _a;let user=this.assertOption(name,required),member=(_a=this.parser.message.guild)==null?void 0:_a.members.cache.get(user==null?void 0:user.id);if(required&&!member)throw new Error(`Member "${name}" is required.`);return member??null}getAttachment(name,required=!1){return this.assertOption(name,required)}getBoolean(name,required=!1){return this.assertOption(name,required)}getNumber(name,required=!1){return this.assertOption(name,required)}getString(name,required=!1){return this.assertOption(name,required)}getInteger(name,required=!1){return this.assertOption(name,required)}getUser(name,required=!1){return this.assertOption(name,required)}getChannel(name,required=!1){return this.assertOption(name,required)}getRole(name,required=!1){return this.assertOption(name,required)}getMentionable(name,required=!1){let target=this.assertOption(name,required);if(target instanceof GuildMember||target instanceof User||target instanceof Role)return target;if(required)throw new Error(`Mentionable "${name}" is required.`);return null}getSubcommand(required=!1){let sub=this.parser.getSubcommand();if(required&&sub===void 0)throw new Error("Subcommand is required.");return sub??null}getSubcommandGroup(required=!1){let sub=this.parser.getSubcommandGroup();if(required&&sub===void 0)throw new Error("Subcommand group is required.");return sub??null}};__name(_MessageCommandOptions,"MessageCommandOptions");var MessageCommandOptions=_MessageCommandOptions;var commandDataSchema={command:__name(c=>c instanceof SlashCommandBuilder||c instanceof ContextMenuCommandBuilder||c&&typeof c=="object","command"),chatInput:__name(c=>typeof c=="function","chatInput"),autocomplete:__name(c=>typeof c=="function","autocomplete"),message:__name(c=>typeof c=="function","message"),messageContextMenu:__name(c=>typeof c=="function","messageContextMenu"),userContextMenu:__name(c=>typeof c=="function","userContextMenu")},middlewareDataSchema={beforeExecute:__name(c=>typeof c=="function","beforeExecute"),afterExecute:__name(c=>typeof c=="function","afterExecute")},_AppCommandHandler=class _AppCommandHandler{constructor(commandkit){this.commandkit=commandkit}loadedCommands=new Collection;loadedMiddlewares=new Collection;getCommandsArray(){return Array.from(this.loadedCommands.values()).map(v=>"toJSON"in v&&typeof v.toJSON=="function"?v.toJSON():v.data.command)}async prepareCommandRun(source){let cmd,parser2;if(source instanceof Message3){if(source.author.bot)return null;let prefix=await this.commandkit.config.getMessageCommandPrefix(source);parser2=new MessageCommandParser(source,Array.isArray(prefix)?prefix:[prefix],command=>{let loadedCommand2=this.loadedCommands.find(c=>c.data.command.name===command);return loadedCommand2?("toJSON"in loadedCommand2.data.command?loadedCommand2.data.command.toJSON():loadedCommand2.data.command).options.reduce((acc,opt)=>(acc[opt.name]=opt.type,acc),{}):null});try{cmd=parser2.getFullCommand()}catch(e){return isErrorType(e,CommandKitErrorCodes.InvalidCommandPrefix)||console.error(e),null}}else{if(!source.isCommand())return null;if(cmd=source.commandName,source.isChatInputCommand()){let subcommandGroup=source.options.getSubcommandGroup(!1),subcommand=source.options.getSubcommand(!1);subcommandGroup&&(cmd+=` ${subcommandGroup}`),subcommand&&(cmd+=` ${subcommand}`)}}let loadedCommand=this.loadedCommands.find(c=>c.data.command.name===cmd);return loadedCommand?{command:loadedCommand,middlewares:loadedCommand.command.middlewares.map(m=>this.loadedMiddlewares.get(m)).filter(m=>!!m),messageCommandParser:parser2}:null}async loadCommands(){let commandsRouter=this.commandkit.commandsRouter;if(!commandsRouter)throw new Error("Commands router has not yet initialized");let{commands,middleware}=commandsRouter.getData();for(let[id,md]of middleware){let data=await import(`${toFileURL(md.fullPath)}?t=${Date.now()}`),handlerCount=0;for(let[key,validator]of Object.entries(middlewareDataSchema)){if(data[key]&&!await validator(data[key]))throw new Error(`Invalid export for middleware ${id}: ${key} does not match expected value`);data[key]&&handlerCount++}if(handlerCount===0)throw new Error(`Invalid export for middleware ${id}: at least one handler function must be provided`);this.loadedMiddlewares.set(id,{middleware:md,data})}for(let[name,command]of commands){let data=await import(`${toFileURL(command.fullPath)}?t=${Date.now()}`);if(!data.command)throw new Error(`Invalid export for command ${name}: no command definition found`);let handlerCount=0;for(let[key,validator]of Object.entries(commandDataSchema))if(key!=="command"&&data[key]&&handlerCount++,data[key]&&!await validator(data[key]))throw new Error(`Invalid export for command ${name}: ${key} does not match expected value`);if(handlerCount===0)throw new Error(`Invalid export for command ${name}: at least one handler function must be provided`);let localizedCommand=await this.applyLocalizations({...data.command});this.loadedCommands.set(name,{command,data:{...data,command:localizedCommand}})}}async applyLocalizations(command){var _a,_b,_c,_d,_e;let localization=this.commandkit.config.localizationStrategy,validLocales=Object.values(Locale).filter(v=>typeof v=="string");for(let locale of validLocales){let translation=await localization.locateTranslation(command.name,locale);if(translation!=null&&translation.command)if(command instanceof SlashCommandBuilder){translation.command.name&&command.setNameLocalization(locale,translation.command.name),translation.command.description&&command.setDescriptionLocalization(locale,translation.command.description);let raw=command.toJSON();if((_a=raw.options)!=null&&_a.length&&((_b=translation.command.options)!=null&&_b.length)){let opt=translation.command.options.slice(),o;for(;o=opt.shift();)(_c=raw.options)==null||_c.forEach(option=>{option.name===o.ref&&(option.name&&(option.name_localizations??={},option.name_localizations[locale]=o.name),option.description&&(option.description_localizations??={},option.description_localizations[locale]=o.description))})}}else{if(command instanceof ContextMenuCommandBuilder)return translation.command.name&&command.setNameLocalization(locale,translation.command.name),command.toJSON();if(command.name_localizations??={},command.name_localizations[locale]=translation.command.name,command.description&&(command.description_localizations??={},command.description_localizations[locale]=translation.command.description),(_d=command.options)!=null&&_d.length&&((_e=translation.command.options)!=null&&_e.length)){let opt=translation.command.options.slice(),o;for(;o=opt.shift();)command.options.forEach(option=>{option.name===o.ref&&(option.name&&(option.name_localizations??={},option.name_localizations[locale]=o.name),option.description&&(option.description_localizations??={},option.description_localizations[locale]=o.description))})}}}return command}};__name(_AppCommandHandler,"AppCommandHandler");var AppCommandHandler=_AppCommandHandler;init_esm_shims();init_esm_shims();import{existsSync as existsSync2}from"node:fs";import{readdir}from"node:fs/promises";import{join as join3}from"node:path";var _CommandsRouter=class _CommandsRouter{constructor(options){this.options=options;if(!options.entrypoint)throw new Error("Entrypoint directory must be provided");options.matcher??={},options.matcher.command??=/command\.(m|c)?(j|t)sx?$/,options.matcher.middleware??=/middleware\.(m|c)?(j|t)sx?$/}commands=new Map;middlewares=new Map;get entrypoint(){return this.options.entrypoint}get matchers(){return this.options.matcher}getData(){return{commands:this.commands,middleware:this.middlewares}}isValidPath(){return existsSync2(this.entrypoint)}execMatcher(matcher,path4){return typeof matcher=="string"?path4.endsWith(matcher):matcher instanceof RegExp?matcher.test(path4):matcher(path4)}resolveRelativePath(path4){let regex=new RegExp(`^${this.entrypoint}`);return path4.replace(regex,"")}match(commandOrSegment){if(!(commandOrSegment!=null&&commandOrSegment.length))return null;if(Array.isArray(commandOrSegment)&&commandOrSegment.length===1&&(commandOrSegment=commandOrSegment[0]),!Array.isArray(commandOrSegment)&&!commandOrSegment.includes(" ")){let command2=this.commands.get(commandOrSegment);if(!command2)return null;let middlewares2=command2.middlewares.map(id=>this.middlewares.get(id)).filter(m=>!!m);return{command:command2,middlewares:middlewares2}}let segments=Array.isArray(commandOrSegment)?commandOrSegment:commandOrSegment.split(" "),command=Array.from(this.commands.values()).find(cmd=>{let commandSegments=cmd.parentSegments;return commandSegments.length!==segments.length?!1:commandSegments.every((segment,index)=>segment==="[name]"?!0:segment===segments[index])});if(!command)return null;let middlewares=command.middlewares.map(id=>this.middlewares.get(id)).filter(m=>!!m);return{command,middlewares}}async reload(){return this.clear(),this.scan()}clear(){this.commands.clear(),this.middlewares.clear()}async scan(){let files=await this.scanDirectory(this.entrypoint,[]);for(let file of files){if(this.execMatcher(this.matchers.command,file)){let location=this.resolveRelativePath(file),parts=location.split("/"),parentSegments=[];parts.forEach((part,index,arr)=>{index!==arr.length-1&&(/\(.+\)/.test(part)||parentSegments.push(part.trim()))});let parent=parentSegments.join(" "),name=parts[parts.length-1].replace(/\.(m|c)?(j|t)sx?$/,""),command={name,middlewares:[],parent:parent||null,path:location,fullPath:file,parentSegments};this.commands.set(name,command)}if(this.execMatcher(this.matchers.middleware,file)){let location=this.resolveRelativePath(file),name=location.replace(/\.(m|c)?(j|t)sx?$/,""),command=Array.from(this.commands.values()).filter(command2=>command2.path.startsWith(location)),id=crypto.randomUUID(),middleware={id,name,path:location,fullPath:file};this.middlewares.set(id,middleware),command.forEach(cmd=>{cmd.middlewares.push(id)})}}return this.toJSON()}toJSON(){return{commands:Object.fromEntries(this.commands),middleware:Object.fromEntries(this.middlewares)}}async scanDirectory(dir,entries){let files=await readdir(dir,{withFileTypes:!0});for(let file of files)if(!(file.name==="node_modules"||file.parentPath.includes("node_modules"))){if(file.isDirectory()){let next=join3(dir,file.name);await this.scanDirectory(next,entries);continue}entries.push(join3(dir,file.name))}return entries}};__name(_CommandsRouter,"CommandsRouter");var CommandsRouter=_CommandsRouter;init_esm_shims();import{existsSync as existsSync3}from"node:fs";import{readdir as readdir2}from"node:fs/promises";import{join as join4}from"node:path";var _EventsRouter=class _EventsRouter{constructor(options){this.options=options;if(!options.entrypoint)throw new Error("Entrypoint directory must be provided")}events=new Map;match(event){return this.events.get(event)??null}get entrypoint(){return this.options.entrypoint}isValidPath(){return existsSync3(this.entrypoint)}clear(){this.events.clear()}async reload(){return this.clear(),this.scan()}async scan(){let dirs=await readdir2(this.entrypoint,{withFileTypes:!0});for(let dir of dirs)if(dir.isDirectory()){let path4=join4(this.entrypoint,dir.name),event=await this.scanEvent(dir.name,path4);this.events.set(event.event,event)}return Object.fromEntries(this.events)}toJSON(){return Object.fromEntries(this.events)}async scanEvent(event,path4,listeners=[]){let files=await readdir2(path4,{withFileTypes:!0});for(let file of files)if(!/node_modules/.test(file.name)){if(file.isDirectory()){let nextPath=join4(path4,file.name);await this.scanEvent(event,nextPath,listeners);continue}file.isFile()&&/\.(m|c)?(j|t)sx?$/.test(file.name)&&listeners.push(join4(file.parentPath,file.name))}return{event,path:path4,listeners}}};__name(_EventsRouter,"EventsRouter");var EventsRouter=_EventsRouter;var _data5,_CommandKit_instances,init_fn,initApp_fn,initCommands_fn,initEvents_fn,_CommandKit=class _CommandKit extends EventEmitter{constructor(options){if(_CommandKit.instance&&process.emitWarning("CommandKit instance already exists. Having multiple instance in same project is discouraged and it may lead to unexpected behavior.",{code:"MultiInstanceWarning"}),!options.client)throw new Error(colors_default.red('"client" is required when instantiating CommandKit.'));if(options.validationsPath&&!options.commandsPath)throw new Error(colors_default.red('"commandsPath" is required when "validationsPath" is set.'));super();__privateAdd(this,_CommandKit_instances);__privateAdd(this,_data5);__publicField(this,"eventInterceptor");__publicField(this,"config",{defaultLocale:Locale2.EnglishUS,localizationStrategy:new DefaultLocalizationStrategy(this),getMessageCommandPrefix:__name(()=>"!","getMessageCommandPrefix")});__publicField(this,"commandsRouter");__publicField(this,"eventsRouter");__publicField(this,"appCommandsHandler",new AppCommandHandler(this));options.debugCommands??=process.env.NODE_ENV!=="production",options.cacheProvider!==null&&(!options.cacheProvider||!(options.cacheProvider instanceof CacheProvider))&&(options.cacheProvider=new MemoryCache),this.eventInterceptor=new EventInterceptor(options.client),__privateSet(this,_data5,options),__privateMethod(this,_CommandKit_instances,init_fn).call(this).then(()=>{this.incrementClientListenersCount()}),_CommandKit.instance||(_CommandKit.instance=this)}setPrefixResolver(resolver){return this.config.getMessageCommandPrefix=resolver,this}setDefaultLocale(locale){return this.config.defaultLocale=locale,this}setLocalizationStrategy(strategy){return this.config.localizationStrategy=strategy,this}getCacheProvider(){return __privateGet(this,_data5).cacheProvider??null}isDebuggingCommands(){return __privateGet(this,_data5).debugCommands||!1}get client(){return __privateGet(this,_data5).client}get commandHandler(){return __privateGet(this,_data5).commandHandler}async reloadCommands(type){__privateGet(this,_data5).commandHandler&&await __privateGet(this,_data5).commandHandler.reloadCommands(type)}async reloadEvents(){__privateGet(this,_data5).eventHandler&&await __privateGet(this,_data5).eventHandler.reloadEvents(__privateGet(this,_data5).commandHandler)}async reloadValidations(){__privateGet(this,_data5).validationHandler&&await __privateGet(this,_data5).validationHandler.reloadValidations()}get commands(){return __privateGet(this,_data5).commandHandler?__privateGet(this,_data5).commandHandler.commands.map(cmd=>{let{run,autocomplete,...command}=cmd;return command}):[]}get commandsPath(){return __privateGet(this,_data5).commandsPath}get eventsPath(){return __privateGet(this,_data5).eventsPath}get validationsPath(){return __privateGet(this,_data5).validationsPath}get devUserIds(){return __privateGet(this,_data5).devUserIds||[]}get devGuildIds(){return __privateGet(this,_data5).devGuildIds||[]}get devRoleIds(){return __privateGet(this,_data5).devRoleIds||[]}incrementClientListenersCount(){__privateGet(this,_data5).client.setMaxListeners(__privateGet(this,_data5).client.getMaxListeners()+1)}decrementClientListenersCount(){__privateGet(this,_data5).client.setMaxListeners(__privateGet(this,_data5).client.getMaxListeners()-1)}getAppDirectory(){return findAppDirectory()}getPath(to){let appDir2=this.getAppDirectory();if(!appDir2)return null;switch(to){case"locales":return join5(appDir2,"locales");case"commands":return join5(appDir2,"commands");case"events":return join5(appDir2,"events");default:return to}}};_data5=new WeakMap,_CommandKit_instances=new WeakSet,init_fn=__name(async function(){if(__privateGet(this,_data5).eventsPath){let eventHandler=new EventHandler({client:__privateGet(this,_data5).client,eventsPath:__privateGet(this,_data5).eventsPath,commandKitInstance:this});await eventHandler.init(),__privateGet(this,_data5).eventHandler=eventHandler}if(__privateGet(this,_data5).validationsPath){let validationHandler=new ValidationHandler({validationsPath:__privateGet(this,_data5).validationsPath});await validationHandler.init(),__privateGet(this,_data5).validationHandler=validationHandler}if(__privateGet(this,_data5).commandsPath){let commandHandler=new CommandHandler({client:__privateGet(this,_data5).client,commandsPath:__privateGet(this,_data5).commandsPath,devGuildIds:__privateGet(this,_data5).devGuildIds||[],devUserIds:__privateGet(this,_data5).devUserIds||[],devRoleIds:__privateGet(this,_data5).devRoleIds||[],validationHandler:__privateGet(this,_data5).validationHandler,skipBuiltInValidations:__privateGet(this,_data5).skipBuiltInValidations||!1,commandkitInstance:this,bulkRegister:__privateGet(this,_data5).bulkRegister||!1});__privateGet(this,_data5).commandHandler=commandHandler,await __privateMethod(this,_CommandKit_instances,initApp_fn).call(this),await commandHandler.init()}},"#init"),initApp_fn=__name(async function(){if(!this.getAppDirectory())return;let commandsPath=this.getPath("commands"),events=this.getPath("events");this.commandsRouter=new CommandsRouter({entrypoint:commandsPath}),this.eventsRouter=new EventsRouter({entrypoint:events}),await __privateMethod(this,_CommandKit_instances,initEvents_fn).call(this),await __privateMethod(this,_CommandKit_instances,initCommands_fn).call(this)},"#initApp"),initCommands_fn=__name(async function(){this.commandsRouter.isValidPath()&&await this.commandsRouter.scan(),await this.appCommandsHandler.loadCommands()},"#initCommands"),initEvents_fn=__name(async function(){if(this.eventsRouter.isValidPath()&&await this.eventsRouter.scan(),!!__privateGet(this,_data5).eventHandler){for(let event of Object.values(this.eventsRouter.toJSON()))__privateGet(this,_data5).eventHandler.registerExternal(event);__privateGet(this,_data5).eventHandler.resyncListeners()}},"#initEvents"),__name(_CommandKit,"CommandKit"),__publicField(_CommandKit,"createElement",createElement),__publicField(_CommandKit,"Fragment",Fragment),__publicField(_CommandKit,"instance");var CommandKit=_CommandKit;init_esm_shims();var globalConfig={envExtra:!0,outDir:"dist",watch:!0,clearRestartLogs:!0,minify:!1,sourcemap:!1,nodeOptions:[],antiCrash:!0,requirePolyfill:!0};function getConfig(){return globalConfig}__name(getConfig,"getConfig");var requiredProps=["src","main"];function defineConfig(config){for(let prop of requiredProps)if(!config[prop])throw new Error(`[CommandKit Config] Missing required config property: ${prop}`);return globalConfig={...globalConfig,...config},globalConfig}__name(defineConfig,"defineConfig");init_esm_shims();init_esm_shims();import{AsyncLocalStorage as AsyncLocalStorage2}from"node:async_hooks";import ms from"ms";import{randomUUID as randomUUID2}from"node:crypto";var CACHED_FUNCTIONS_STORE=new WeakMap,TAG_FUNCTION_MAP=new Map,DEFAULT_TTL=ms("15m"),cacheContext=new AsyncLocalStorage2,__identificationKey=`__cache_identification_key_${Date.now()}__${Math.random()}__`,getDefaultCacheTag=__name(()=>({tag:randomUUID2(),ttl:DEFAULT_TTL}),"getDefaultCacheTag");function cache(fn,params){return params=Object.assign({},getDefaultCacheTag(),params),useCache(fn,__identificationKey,params)}__name(cache,"cache");function useCache(fn,id,tag){if(id!==void 0&&id!==__identificationKey)throw new TypeError("useCache may not be called directly.");let isLocal=id===__identificationKey,memoized=__name(async(...args)=>{let cache2=getCommandKit(!0).getCacheProvider();if(!cache2)throw new Error("CacheProvider was not found, please provide a cache provider to the CommandKit instance.");let context2=cacheContext.getStore();if(context2===void 0)throw new Error('useCache must be called inside a function decorated with "use cache" directive.');let entryKey=context2.params.tag,entry=await cache2.get(entryKey);if(entry!==void 0)return entry.value;let ttl=typeof context2.params.ttl=="string"?ms(context2.params.ttl):context2.params.ttl,writeCache=__name(async(...args2)=>{let result=await fn(...args2);return CACHED_FUNCTIONS_STORE.set(fn,{...context2.params,target:fn,memo:cacheContext.exit(()=>wrapper)}),entryKey!==context2.params.tag&&TAG_FUNCTION_MAP.delete(entryKey),TAG_FUNCTION_MAP.set(context2.params.tag,fn),await cache2.set(entryKey,result,ttl),result},"writeCache");return CACHED_FUNCTIONS_STORE.set(fn,{...context2.params,target:fn,memo:cacheContext.exit(()=>wrapper)}),TAG_FUNCTION_MAP.set(entryKey,fn),writeCache(...args)},"memoized"),wrapper=__name(async(...args)=>{let params=CACHED_FUNCTIONS_STORE.get(fn)??((isLocal?tag:null)||getDefaultCacheTag());return cacheContext.run({params,target:fn},()=>memoized(...args))},"wrapper");return wrapper}__name(useCache,"useCache");function cacheTag(tag){var _a;if(!tag)throw new TypeError("cacheTag must be called with a tag.");let context2=cacheContext.getStore();if(context2===void 0)throw new Error('cacheTag must be called inside cache() or a function decorated with "use cache" directive.');let tagObj;typeof tag=="string"?tagObj={tag,ttl:((_a=context2.params)==null?void 0:_a.ttl)??DEFAULT_TTL}:tagObj=tag,context2.params=tagObj}__name(cacheTag,"cacheTag");function cacheLife(life){if(life==null)throw new TypeError("cacheLife must be called with a time-to-live value.");let context2=cacheContext.getStore();if(context2===void 0)throw new Error('cacheLife must be called inside cache() or a function decorated with "use cache" directive.');typeof life=="string"?context2.params.ttl=ms(life):context2.params.ttl=life}__name(cacheLife,"cacheLife");async function invalidate(tag){let cache2=getCommandKit(!0).getCacheProvider();if(!cache2)throw new Error("CacheProvider was not found, please provide a cache provider to the CommandKit instance.");await cache2.delete(tag)}__name(invalidate,"invalidate");async function revalidate(tag,...args){let cache2=getCommandKit(!0).getCacheProvider();if(!cache2)throw new Error("CacheProvider was not found, please provide a cache provider to the CommandKit instance.");await cache2.delete(tag);let tagFn=TAG_FUNCTION_MAP.get(tag);if(!tagFn)return;let ctx=CACHED_FUNCTIONS_STORE.get(tagFn);if(ctx)return ctx.memo(...args)}__name(revalidate,"revalidate");init_esm_shims();init_esm_shims();init_esm_shims();init_esm_shims();function exitMiddleware(){throw createCommandKitError(CommandKitErrorCodes.ExitMiddleware)}__name(exitMiddleware,"exitMiddleware");function rethrow(error){if(isCommandKitError(error))throw error}__name(rethrow,"rethrow");init_esm_shims();async function bootstrapCommandkitCLI(argv,options){let{Command}=await import("commander"),{bootstrapDevelopmentServer:bootstrapDevelopmentServer2}=await Promise.resolve().then(()=>(init_development(),development_exports)),{bootstrapProductionServer:bootstrapProductionServer2}=await Promise.resolve().then(()=>(init_production(),production_exports)),{bootstrapProductionBuild:bootstrapProductionBuild2}=await Promise.resolve().then(()=>(init_build(),build_exports)),program=new Command("commandkit");program.command("dev").description("Start your bot in development mode.").option("-c, --config <path>","Path to your commandkit config file.","./commandkit.js").action(()=>{let options2=program.opts();bootstrapDevelopmentServer2(options2)}),program.command("start").description("Start your bot in production mode after running the build command.").option("-c, --config <path>","Path to your commandkit.json file.","./commandkit.js").action(()=>{let options2=program.opts();bootstrapProductionServer2(options2.config)}),program.command("build").description("Build your project for production usage.").option("-c, --config <path>","Path to your commandkit.json file.","./commandkit.json").action(()=>{let options2=program.opts();bootstrapProductionBuild2(options2.config)}),await program.parseAsync(argv,options)}__name(bootstrapCommandkitCLI,"bootstrapCommandkitCLI");var index_default=CommandKit,version="0.1.11-dev.20250213182706";export{ActionRow,AppCommandHandler,Button,ButtonKit,CacheProvider,CommandExecutionMode,CommandKit,CommandKitEnvironment,CommandKitEnvironmentType,Context,DefaultLocalizationStrategy,ElementType,EventInterceptor,Fragment,Localization,MemoryCache,MessageCommandOptions,MessageCommandParser,MiddlewareContext,Modal,ModalKit,ParagraphInput,ShortInput,TextInput,afterCommand,bootstrapCommandkitCLI,cache,cacheLife,cacheTag,cancelAfterCommand,createElement,index_default as default,defineConfig,dmOnly,exitContext,exitMiddleware,getCommandKit,getConfig,getContext,getElement,guildOnly,invalidate,isCommandKitElement,makeContextAwareFunction,rethrow,revalidate,useCache as super_duper_secret_internal_for_use_cache_directive_of_commandkit_cli_do_not_use_it_directly_or_you_will_be_fired_from_your_job_kthxbai,useEnvironment,version};
28
+ `}let embed=new EmbedBuilder().setTitle(":x: Missing permissions!").setDescription(embedDescription).setColor("Red");return interaction.reply({embeds:[embed],flags:MessageFlags2.Ephemeral}),!0}__name(permissions_default,"default");var validations_default=[devOnly_default,permissions_default];init_esm_shims();import{AsyncLocalStorage}from"node:async_hooks";init_esm_shims();var CommandKitErrorCodes={GuildOnlyException:Symbol("kGuildOnlyException"),DMOnlyException:Symbol("kDMOnlyException"),ExitMiddleware:Symbol("kExitMiddleware"),ForwardedCommand:Symbol("kForwardedCommand"),InvalidCommandPrefix:Symbol("kInvalidCommandPrefix")};function createCommandKitError(code){let error=new Error;return Reflect.set(error,"code",code),error}__name(createCommandKitError,"createCommandKitError");function isCommandKitError(error){if(!(error instanceof Error))return!1;let code=Reflect.get(error,"code");for(let key in CommandKitErrorCodes)if(CommandKitErrorCodes[key]===code)return!0;return!1}__name(isCommandKitError,"isCommandKitError");function isErrorType(error,code){if(!isCommandKitError(error))return!1;let errorCode=Reflect.get(error,"code");return errorCode?Array.isArray(code)?code.includes(errorCode):errorCode===code:!1}__name(isErrorType,"isErrorType");import{MessageFlags as MessageFlags3}from"discord.js";var context=new AsyncLocalStorage;function exitContext(fn){return context.exit(fn)}__name(exitContext,"exitContext");function makeContextAwareFunction(env,fn,finalizer){return __name((...args)=>context.run(env,async()=>{try{return await fn(...args)}catch(e){if(isCommandKitError(e)){let code=Reflect.get(e,"code"),interaction=env.variables.get("interaction");if(!interaction)return;switch(code){case CommandKitErrorCodes.GuildOnlyException:{interaction.isRepliable()&&await interaction.reply({content:"This command is only available in guilds.",flags:MessageFlags3.Ephemeral});return}case CommandKitErrorCodes.DMOnlyException:{interaction.isRepliable()&&await interaction.reply({content:"This command is only available in DMs.",flags:MessageFlags3.Ephemeral});return}}return}env.setExecutionError(e)}finally{if(typeof finalizer=="function")try{await finalizer(...args)}catch{}}}),"_fn")}__name(makeContextAwareFunction,"makeContextAwareFunction");function getCommandKit(strict=!1){var _a;let kit=((_a=context.getStore())==null?void 0:_a.commandkit)??CommandKit.instance;if(!kit&&strict)throw new Error("CommandKit instance not found.");return kit}__name(getCommandKit,"getCommandKit");function getContext(){return context.getStore()}__name(getContext,"getContext");function useEnvironment(){let ctx=context.getStore();if(!ctx)throw new Error("No commandkit environment found. Please make sure you are inside commandkit handler.");return ctx}__name(useEnvironment,"useEnvironment");function guildOnly(){let interaction=useEnvironment().variables.get("interaction");if(!interaction)throw new Error("No interaction found in environment.");if(!interaction.guild){let error=new Error("This command is only available in guilds.");throw Reflect.set(error,"code",CommandKitErrorCodes.GuildOnlyException),error}}__name(guildOnly,"guildOnly");function dmOnly(){let interaction=useEnvironment().variables.get("interaction");if(!interaction)throw new Error("No interaction found in environment.");if(interaction.guild){let error=new Error("This command is only available in DMs.");throw Reflect.set(error,"code",CommandKitErrorCodes.DMOnlyException),error}}__name(dmOnly,"dmOnly");init_esm_shims();import{randomUUID}from"node:crypto";var _data,_CommandKitEnvironment=class _CommandKitEnvironment{constructor(commandkit){this.commandkit=commandkit;__privateAdd(this,_data,{executionError:null,type:null,variables:new Map,deferredFunctions:new Map,marker:"",markStart:0,markEnd:0})}getExecutionError(){return __privateGet(this,_data).executionError}setExecutionError(error){if(__privateGet(this,_data).executionError)throw new Error("Execution error already set.");__privateGet(this,_data).executionError=error}getType(){let type=__privateGet(this,_data).type;if(!type)throw new Error("Environment type not set.");return type}setType(type){__privateGet(this,_data).type=type}get variables(){return __privateGet(this,_data).variables}registerDeferredFunction(fn){let id=randomUUID();return __privateGet(this,_data).deferredFunctions.set(id,fn),id}clearDeferredFunction(id){__privateGet(this,_data).deferredFunctions.delete(id)}async runDeferredFunctions(){for(let[id,fn]of __privateGet(this,_data).deferredFunctions)try{await fn(this)}catch(e){this.commandkit.emit("unhandledDeferredFunctionRejection",e)}finally{this.clearDeferredFunction(id)}}clearAllDeferredFunctions(){__privateGet(this,_data).deferredFunctions.clear()}markStart(marker){__privateGet(this,_data).marker=marker,__privateGet(this,_data).markStart=performance.now()}markEnd(){__privateGet(this,_data).markEnd||(__privateGet(this,_data).markEnd=performance.now())}getMarker(){return __privateGet(this,_data).marker}getExecutionTime(){return Math.abs(__privateGet(this,_data).markEnd-__privateGet(this,_data).markStart)}};_data=new WeakMap,__name(_CommandKitEnvironment,"CommandKitEnvironment");var CommandKitEnvironment=_CommandKitEnvironment,CommandKitEnvironmentType=(CommandKitEnvironmentType2=>(CommandKitEnvironmentType2.CommandHandler="COMMAND_HANDLER",CommandKitEnvironmentType2))(CommandKitEnvironmentType||{});function afterCommand(fn){let env=getContext();if(!env)throw new Error("after must be called inside commandkit handler.");return env.registerDeferredFunction(fn)}__name(afterCommand,"afterCommand");function cancelAfterCommand(id){let env=getContext();if(!env)throw new Error("cancelAfter must be called inside commandkit handler.");env.clearDeferredFunction(id)}__name(cancelAfterCommand,"cancelAfterCommand");init_esm_shims();init_esm_shims();var _Localization=class _Localization{constructor(commandkit,config){this.commandkit=commandkit;this.config=config;let strategy=this.commandkit.config.localizationStrategy,{locale,target}=this.config;this.t=(translatable,args)=>strategy.translate({args,key:translatable,locale,scope:target})}t;getStrategy(){return this.commandkit.config.localizationStrategy}getDefaultLocale(){return this.commandkit.config.defaultLocale}getLocale(){return this.config.locale}getTarget(){return this.config.target}};__name(_Localization,"Localization");var Localization=_Localization;var CommandExecutionMode={SlashCommand:"chatInput",MessageContextMenu:"messageContextMenu",UserContextMenu:"userContextMenu",Autocomplete:"autocomplete",Message:"message"},_Context=class _Context{constructor(commandkit,config){this.commandkit=commandkit;this.config=config;this.interaction=config.interaction,this.message=config.message}interaction;message;_locale=null;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(command){let target=await this.commandkit.appCommandsHandler.prepareCommandRun(this.isInteraction()?this.interaction:this.message);if(!target)throw new Error(`Command ${command} not found! If you are trying to forward to a legacy command, ctx.forwardCommand is not compatible with legacy commands.`);let env=this.config.environment??getContext();if(!env)throw new Error("No commandkit environment found.");let handlers={chatInput:target.command.data.chatInput,autocomplete:target.command.data.autocomplete,message:target.command.data.message,messageContextMenu:target.command.data.messageContextMenu,userContextMenu:target.command.data.userContextMenu},handlerKind=env.variables.get("execHandlerKind");if(!handlerKind)throw new Error("No execution handler kind found.");let handler=handlers[handlerKind];throw handler?(await handler(this.clone({forwarded:!0})),createCommandKitError(CommandKitErrorCodes.ForwardedCommand)):new Error(`No handler found for ${handlerKind}`)}get executionMode(){return this.config.executionMode}isInteraction(){return this.executionMode===CommandExecutionMode.SlashCommand||this.executionMode===CommandExecutionMode.Autocomplete||this.executionMode===CommandExecutionMode.MessageContextMenu||this.executionMode===CommandExecutionMode.UserContextMenu}isSlashCommand(){return this.executionMode===CommandExecutionMode.SlashCommand}isAutocomplete(){return this.executionMode===CommandExecutionMode.Autocomplete}isMessageContextMenu(){return this.executionMode===CommandExecutionMode.MessageContextMenu}isUserContextMenu(){return this.executionMode===CommandExecutionMode.UserContextMenu}isMessage(){return this.executionMode===CommandExecutionMode.Message}getCommandIdentifier(){return this.isInteraction()?this.interaction.commandName:this.message.content.split(" ")[0].slice(1)}getGuildLocale(){var _a;return this.isInteraction()?this.interaction.guildLocale:((_a=this.message.guild)==null?void 0:_a.preferredLocale)??null}getUserLocale(){return this.isInteraction()?this.interaction.locale:null}getLocale(preferUser=!1){if(this._locale)return this._locale;let locale=preferUser?this.getUserLocale():this.getGuildLocale();return locale||this.commandkit.config.defaultLocale}setLocale(locale){this._locale=locale}locale(locale){let selectedLocale=locale??this.getLocale();return new Localization(this.commandkit,{locale:selectedLocale,target:this.getCommandIdentifier()})}clone(config){return config?new _Context(this.commandkit,{...this.config,...config}):new _Context(this.commandkit,this.config)}isMiddleware(){return this instanceof MiddlewareContext}args(){return this.isMessage()?this.config.messageCommandParser.getArgs():[]}};__name(_Context,"Context");var Context=_Context,_cancel,_MiddlewareContext=class _MiddlewareContext extends Context{constructor(){super(...arguments);__privateAdd(this,_cancel,!1)}get cancelled(){return __privateGet(this,_cancel)}cancel(){__privateSet(this,_cancel,!0)}};_cancel=new WeakMap,__name(_MiddlewareContext,"MiddlewareContext");var MiddlewareContext=_MiddlewareContext;var _data2,_CommandHandler_instances,buildCommands_fn,buildBuiltInValidations_fn,commandFinalizer_fn,requestExternalHandler_fn,interactionHandler_fn,_CommandHandler=class _CommandHandler{constructor({...options}){__privateAdd(this,_CommandHandler_instances);__privateAdd(this,_data2);__privateSet(this,_data2,{...options,builtInValidations:[],commands:[]})}async init(){await __privateMethod(this,_CommandHandler_instances,buildCommands_fn).call(this),__privateMethod(this,_CommandHandler_instances,buildBuiltInValidations_fn).call(this);let devOnlyCommands=__privateGet(this,_data2).commands.filter(cmd=>{var _a;return(_a=cmd.options)==null?void 0:_a.devOnly});devOnlyCommands.length&&!__privateGet(this,_data2).devGuildIds.length&&process.emitWarning(colors_default.yellow('You have commands marked as "devOnly", but "devGuildIds" have not been set.')),devOnlyCommands.length&&!__privateGet(this,_data2).devUserIds.length&&!__privateGet(this,_data2).devRoleIds.length&&process.emitWarning(colors_default.yellow('You have commands marked as "devOnly", but "devUserIds" or "devRoleIds" have not been set.')),__privateGet(this,_data2).bulkRegister?await loadCommandsWithRest({client:__privateGet(this,_data2).client,devGuildIds:__privateGet(this,_data2).devGuildIds,commands:__privateGet(this,_data2).commands}):await registerCommands({client:__privateGet(this,_data2).client,devGuildIds:__privateGet(this,_data2).devGuildIds,commands:__privateGet(this,_data2).commands}),this.handleCommands()}handleCommands(){__privateGet(this,_data2).client.on(Events.InteractionCreate,interaction=>{let env=new CommandKitEnvironment(__privateGet(this,_data2).commandkitInstance);return env.setType("COMMAND_HANDLER"),makeContextAwareFunction(env,__privateMethod(this,_CommandHandler_instances,interactionHandler_fn).bind(this),__privateMethod(this,_CommandHandler_instances,commandFinalizer_fn).bind(this))(interaction)}),__privateGet(this,_data2).client.on(Events.MessageCreate,message=>{let env=new CommandKitEnvironment(__privateGet(this,_data2).commandkitInstance);return env.setType("COMMAND_HANDLER"),makeContextAwareFunction(env,__privateMethod(this,_CommandHandler_instances,requestExternalHandler_fn).bind(this),__privateMethod(this,_CommandHandler_instances,commandFinalizer_fn).bind(this))(message)})}get commands(){return __privateGet(this,_data2).commands}async reloadCommands(type){if(!__privateGet(this,_data2).commandsPath)throw new Error(colors_default.red('Cannot reload commands as "commandsPath" was not provided when instantiating CommandKit.'));__privateGet(this,_data2).commands=[],await __privateMethod(this,_CommandHandler_instances,buildCommands_fn).call(this),__privateGet(this,_data2).bulkRegister?await loadCommandsWithRest({client:__privateGet(this,_data2).client,devGuildIds:__privateGet(this,_data2).devGuildIds,commands:__privateGet(this,_data2).commands,reloading:!0,type}):await registerCommands({client:__privateGet(this,_data2).client,devGuildIds:__privateGet(this,_data2).devGuildIds,commands:__privateGet(this,_data2).commands,reloading:!0,type})}};_data2=new WeakMap,_CommandHandler_instances=new WeakSet,buildCommands_fn=__name(async function(){var _a;let allowedExtensions=/\.(js|mjs|cjs|ts)$/i,commandFilePaths=(await getFilePaths(__privateGet(this,_data2).commandsPath,!0)).filter(path5=>allowedExtensions.test(path5));for(let commandFilePath of commandFilePaths){let importedObj=await import(`${toFileURL(commandFilePath)}?t=${Date.now()}`),commandObj=clone(importedObj);typeof module<"u"&&typeof __require<"u"&&delete __require.cache[__require.resolve(commandFilePath)];let compactFilePath=commandFilePath.split(process.cwd())[1]||commandFilePath;if(commandObj.default&&(commandObj=commandObj.default),importedObj.default?commandObj.data=importedObj.default.data:commandObj.data=importedObj.data,!commandObj.data){process.emitWarning(colors_default.yellow(`Ignoring: Command file ${compactFilePath} does not export "data".`));continue}if(!commandObj.data.name){process.emitWarning(colors_default.yellow(`Ignoring: Command file ${compactFilePath} does not export "data.name".`));continue}if(!commandObj.run){process.emitWarning(colors_default.yellow(`Ignoring: Command file ${commandObj.data.name} does not export "run".`));continue}if(typeof commandObj.run!="function"){process.emitWarning(colors_default.yellow(`Ignoring: Command file ${commandObj.data.name} does not export "run" as a function.`));continue}commandObj.filePath=commandFilePath;let commandCategory=((_a=commandFilePath.split(__privateGet(this,_data2).commandsPath)[1])==null?void 0:_a.replace(/\\\\|\\/g,"/").split("/")[1])||null;commandCategory&&allowedExtensions.test(commandCategory)?commandObj.category=null:commandObj.category=commandCategory,__privateGet(this,_data2).commands.push(commandObj)}if(__privateGet(this,_data2).commandkitInstance.appCommandsHandler){let commands=__privateGet(this,_data2).commandkitInstance.appCommandsHandler.getCommandsArray();for(let cmd of commands){let idx=__privateGet(this,_data2).commands.findIndex(c=>c.data.name===cmd.name);idx!==-1?__privateGet(this,_data2).commands[idx]={data:cmd}:__privateGet(this,_data2).commands.push({data:cmd})}}},"#buildCommands"),buildBuiltInValidations_fn=__name(function(){for(let builtInValidationFunction of validations_default)__privateGet(this,_data2).builtInValidations.push(builtInValidationFunction)},"#buildBuiltInValidations"),commandFinalizer_fn=__name(async function(){let env=useEnvironment();await env.runDeferredFunctions(),env.clearAllDeferredFunctions()},"#commandFinalizer"),requestExternalHandler_fn=__name(async function(interaction){let handler=__privateGet(this,_data2).commandkitInstance.appCommandsHandler;if(!handler||!(interaction instanceof Message)&&!(interaction.isCommand()||interaction.isAutocomplete()))return 0;let targetCommand=await handler.prepareCommandRun(interaction);if(!targetCommand)return 0;let environment=useEnvironment();environment.variables.set("commandHandlerType","app");let{command,middlewares,messageCommandParser}=targetCommand,context2=new MiddlewareContext(__privateGet(this,_data2).commandkitInstance,{executionMode:interaction instanceof Message?CommandExecutionMode.Message:interaction.isChatInputCommand()?CommandExecutionMode.SlashCommand:interaction.isUserContextMenuCommand()?CommandExecutionMode.UserContextMenu:interaction.isMessageContextMenuCommand()?CommandExecutionMode.MessageContextMenu:interaction.isAutocomplete()?CommandExecutionMode.Autocomplete:null,interaction:interaction instanceof Message?null:interaction,message:interaction instanceof Message?interaction:null,messageCommandParser}),exec=__name(async()=>{var _a,_b,_c,_d,_e,_f,_g,_h,_i,_j;if(middlewares.length>0)for(let middleware of middlewares){if(context2.cancelled)return 1;try{await middleware.data.beforeExecute(context2)}catch(e){if(isErrorType(e,CommandKitErrorCodes.ExitMiddleware))break;if(isErrorType(e,[CommandKitErrorCodes.DMOnlyException,CommandKitErrorCodes.GuildOnlyException,CommandKitErrorCodes.ForwardedCommand]))return;throw e}}if(context2.cancelled)return 1;let postStageRunner=!0;try{let commandContext=context2.clone({environment});if(interaction instanceof Message)environment.variables.set("execHandlerKind","message"),await((_b=(_a=command.data).message)==null?void 0:_b.call(_a,commandContext));else switch(!0){case interaction.isChatInputCommand():environment.variables.set("execHandlerKind","chatInput"),await((_d=(_c=command.data).chatInput)==null?void 0:_d.call(_c,commandContext));break;case interaction.isUserContextMenuCommand():environment.variables.set("execHandlerKind","userContextMenu"),await((_f=(_e=command.data).userContextMenu)==null?void 0:_f.call(_e,commandContext));break;case interaction.isMessageContextMenuCommand():environment.variables.set("execHandlerKind","messageContextMenu"),await((_h=(_g=command.data).messageContextMenu)==null?void 0:_h.call(_g,commandContext));break;case interaction.isAutocomplete():environment.variables.set("execHandlerKind","autocomplete"),await((_j=(_i=command.data).autocomplete)==null?void 0:_j.call(_i,commandContext));break;default:break}}catch(e){if(console.log(e),isErrorType(e,CommandKitErrorCodes.ExitMiddleware))postStageRunner=!1;else{if(isErrorType(e,[CommandKitErrorCodes.DMOnlyException,CommandKitErrorCodes.GuildOnlyException,CommandKitErrorCodes.ForwardedCommand]))return;throw e}}if(postStageRunner&&middlewares.length>0)for(let middleware of middlewares)try{await middleware.data.afterExecute(context2)}catch(e){if(isErrorType(e,CommandKitErrorCodes.ExitMiddleware))break;if(isErrorType(e,[CommandKitErrorCodes.DMOnlyException,CommandKitErrorCodes.GuildOnlyException,CommandKitErrorCodes.ForwardedCommand]))return;throw e}},"exec");if(!__privateGet(this,_data2).commandkitInstance.isDebuggingCommands())return await exec(),1;afterCommand(env=>{let error=env.getExecutionError(),marker=env.getMarker(),time=`${env.getExecutionTime().toFixed(2)}ms`;if(error){console.error(colors_default.red(`[${marker} - ${time}] Error executing command: ${error.stack||error}`));return}console.log(colors_default.cyan("(app \u2728)")+colors_default.reset(" ")+colors_default.green(`[${marker} - ${time}] Command executed successfully`))});try{return environment.markStart(`${command.data.command.name}`),await exec(),1}finally{environment.markEnd()}},"#requestExternalHandler"),interactionHandler_fn=__name(async function(interaction){try{if(await __privateMethod(this,_CommandHandler_instances,requestExternalHandler_fn).call(this,interaction)===1)return}catch(e){console.error(e);return}if(!interaction.isChatInputCommand()&&!interaction.isContextMenuCommand()&&!interaction.isAutocomplete())return;let isAutocomplete=interaction.isAutocomplete(),targetCommand=__privateGet(this,_data2).commands.find(cmd=>cmd.data.name===interaction.commandName);if(!targetCommand)return;let env=useEnvironment();env.variables.set("commandHandlerType","legacy"),env.variables.set("interaction",interaction);let{data,options,run,autocomplete,...rest}=targetCommand;return isAutocomplete&&!autocomplete?void 0:__name(async()=>{let commandObj={data:targetCommand.data,options:targetCommand.options,...rest};if(__privateGet(this,_data2).validationHandler){let canRun2=!0;for(let validationFunction of __privateGet(this,_data2).validationHandler.validations)if(await validationFunction({interaction,commandObj,client:__privateGet(this,_data2).client,handler:__privateGet(this,_data2).commandkitInstance})){canRun2=!1;break}if(!canRun2)return}let canRun=!0;if(!__privateGet(this,_data2).skipBuiltInValidations){for(let validation of __privateGet(this,_data2).builtInValidations)if(validation({targetCommand,interaction,handlerData:__privateGet(this,_data2)})){canRun=!1;break}}if(!canRun)return;let command=targetCommand[isAutocomplete?"autocomplete":"run"];if(!command)return;let context2={interaction,client:__privateGet(this,_data2).client,handler:__privateGet(this,_data2).commandkitInstance};if(!__privateGet(this,_data2).commandkitInstance.isDebuggingCommands())return command(context2);afterCommand(env2=>{let error=env2.getExecutionError(),marker=env2.getMarker(),time=`${env2.getExecutionTime().toFixed(2)}ms`;if(error){console.error(colors_default.red(`[${marker} - ${time}] Error executing command: ${error.stack||error}`));return}console.log(colors_default.green(`[${marker} - ${time}] Command executed successfully`))});try{return env.markStart(interaction.commandName),await command(context2)}finally{env.markEnd()}},"executor")()},"#interactionHandler"),__name(_CommandHandler,"CommandHandler");var CommandHandler=_CommandHandler;init_esm_shims();var _data3,_listening,_EventHandler_instances,buildEvents_fn,registerEvents_fn,_EventHandler=class _EventHandler{constructor({...options}){__privateAdd(this,_EventHandler_instances);__privateAdd(this,_data3);__privateAdd(this,_listening,new Set);__privateSet(this,_data3,{...options,events:[]})}async init(){await __privateMethod(this,_EventHandler_instances,buildEvents_fn).call(this),__privateMethod(this,_EventHandler_instances,registerEvents_fn).call(this)}async registerExternal(entry){let{event,listeners}=entry,functions=await Promise.all(listeners.map(async l=>import(`${toFileURL(l)}?t=${Date.now()}`).then(m=>m.default))),existing=__privateGet(this,_data3).events.find(e=>e.name===event);existing?existing.functions.unshift(...functions):__privateGet(this,_data3).events.unshift({name:event,functions})}resyncListeners(){let client=__privateGet(this,_data3).client,handler=__privateGet(this,_data3).commandKitInstance;for(let eventObj of __privateGet(this,_data3).events)__privateGet(this,_listening).has(eventObj.name)||(client.on(eventObj.name,async(...params)=>{for(let eventFunction of eventObj.functions)if(await eventFunction(...params,client,handler))break}),__privateGet(this,_listening).add(eventObj.name))}get events(){return __privateGet(this,_data3).events}async reloadEvents(commandHandler){if(!__privateGet(this,_data3).eventsPath)throw new Error(colors_default.red('Cannot reload events as "eventsPath" was not provided when instantiating CommandKit.'));__privateGet(this,_data3).events=[],await __privateMethod(this,_EventHandler_instances,buildEvents_fn).call(this),__privateGet(this,_listening).clear(),__privateGet(this,_data3).client.removeAllListeners(),__privateMethod(this,_EventHandler_instances,registerEvents_fn).call(this),commandHandler==null||commandHandler.handleCommands()}};_data3=new WeakMap,_listening=new WeakMap,_EventHandler_instances=new WeakSet,buildEvents_fn=__name(async function(){let eventFolderPaths=await getFolderPaths(__privateGet(this,_data3).eventsPath);for(let eventFolderPath of eventFolderPaths){let eventName=eventFolderPath.replace(/\\\\|\\/g,"/").split("/").pop(),allowedExtensions=/\.(js|mjs|cjs|ts)$/i,eventFilePaths=(await getFilePaths(eventFolderPath,!0)).filter(path5=>allowedExtensions.test(path5)),eventObj=__privateGet(this,_data3).events.find(e=>e.name===eventName);eventObj||(eventObj={name:eventName,functions:[]},__privateGet(this,_data3).events.push(eventObj));for(let eventFilePath of eventFilePaths){let importedFunction=(await import(`${toFileURL(eventFilePath)}?t=${Date.now()}`)).default,eventFunction=clone(importedFunction);typeof module<"u"&&typeof __require<"u"&&delete __require.cache[__require.resolve(eventFilePath)],eventFunction!=null&&eventFunction.default&&(eventFunction=eventFunction.default);let compactFilePath=eventFilePath.split(process.cwd())[1]||eventFilePath;if(typeof eventFunction!="function"){process.emitWarning(colors_default.yellow(`Ignoring: Event file ${compactFilePath} does not export a function.`));continue}eventObj.functions.push(eventFunction)}}},"#buildEvents"),registerEvents_fn=__name(function(){let client=__privateGet(this,_data3).client,handler=__privateGet(this,_data3).commandKitInstance;for(let eventObj of __privateGet(this,_data3).events)client.on(eventObj.name,async(...params)=>{for(let eventFunction of eventObj.functions)if(await eventFunction(...params,client,handler))break}),__privateGet(this,_listening).add(eventObj.name)},"#registerEvents"),__name(_EventHandler,"EventHandler");var EventHandler=_EventHandler;init_esm_shims();var _data4,_ValidationHandler_instances,buildValidations_fn,_ValidationHandler=class _ValidationHandler{constructor({...options}){__privateAdd(this,_ValidationHandler_instances);__privateAdd(this,_data4);__privateSet(this,_data4,{...options,validations:[]})}async init(){__privateGet(this,_data4).validations=await __privateMethod(this,_ValidationHandler_instances,buildValidations_fn).call(this)}get validations(){return __privateGet(this,_data4).validations}async reloadValidations(){if(!__privateGet(this,_data4).validationsPath)throw new Error(colors_default.red('Cannot reload validations as "validationsPath" was not provided when instantiating CommandKit.'));let newValidations=await __privateMethod(this,_ValidationHandler_instances,buildValidations_fn).call(this);__privateGet(this,_data4).validations=newValidations}};_data4=new WeakMap,_ValidationHandler_instances=new WeakSet,buildValidations_fn=__name(async function(){let allowedExtensions=/\.(js|mjs|cjs|ts)$/i,validationFilePaths=(await getFilePaths(__privateGet(this,_data4).validationsPath,!0)).filter(path5=>allowedExtensions.test(path5)),validationFunctions=[];for(let validationFilePath of validationFilePaths){let importedFunction=(await import(`${toFileURL(validationFilePath)}?t=${Date.now()}`)).default,validationFunction=clone(importedFunction);typeof module<"u"&&typeof __require<"u"&&delete __require.cache[__require.resolve(validationFilePath)],validationFunction!=null&&validationFunction.default&&(validationFunction=validationFunction.default);let compactFilePath=validationFilePath.split(process.cwd())[1]||validationFilePath;if(typeof validationFunction!="function"){process.emitWarning(colors_default.yellow(`Ignoring: Validation file ${compactFilePath} does not export a function.`));continue}validationFunctions.push(validationFunction)}return validationFunctions},"#buildValidations"),__name(_ValidationHandler,"ValidationHandler");var ValidationHandler=_ValidationHandler;init_esm_shims();var _CacheProvider=class _CacheProvider{};__name(_CacheProvider,"CacheProvider");var CacheProvider=_CacheProvider;init_esm_shims();var _cache,_MemoryCache=class _MemoryCache extends CacheProvider{constructor(){super(...arguments);__privateAdd(this,_cache,new Map)}async get(key){let entry=__privateGet(this,_cache).get(key);if(entry){if(entry.ttl&&Date.now()>entry.ttl){__privateGet(this,_cache).delete(key);return}return entry}}async set(key,value,ttl){let entry={value,ttl:ttl!=null?Date.now()+ttl:void 0};__privateGet(this,_cache).set(key,entry)}async exists(key){return __privateGet(this,_cache).has(key)}async delete(key){__privateGet(this,_cache).delete(key)}async clear(){__privateGet(this,_cache).clear()}async expire(key,ttl){let entry=__privateGet(this,_cache).get(key);if(!entry)return;let _ttl=Date.now()+ttl;if(_ttl<Date.now()){__privateGet(this,_cache).delete(key);return}entry.ttl=_ttl}};_cache=new WeakMap,__name(_MemoryCache,"MemoryCache");var MemoryCache=_MemoryCache;init_esm_shims();init_esm_shims();import{ActionRowBuilder}from"discord.js";function ActionRow(props){let row=new ActionRowBuilder;return Array.isArray(props.children)?row.setComponents(...props.children):props.children&&row.setComponents(props.children),row}__name(ActionRow,"ActionRow");init_esm_shims();import{ButtonStyle,ButtonBuilder,Events as Events2}from"discord.js";var _onClickHandler,_contextData,_unsub,_ButtonKit_instances,getEventInterceptor_fn,setupInteractionCollector_fn,destroyCollector_fn,_ButtonKit=class _ButtonKit extends ButtonBuilder{constructor(){super(...arguments);__privateAdd(this,_ButtonKit_instances);__privateAdd(this,_onClickHandler,null);__privateAdd(this,_contextData,{autoReset:!0,time:5*60*1e3,once:!1});__privateAdd(this,_unsub,null)}onClick(handler,data){var _a,_b,_c,_d;if(this.data.style===ButtonStyle.Link)throw new TypeError('Cannot setup "onClick" handler on link buttons.');if(!handler)throw new TypeError('Cannot setup "onClick" without a handler function parameter.');return __privateGet(this,_onClickHandler)&&__privateMethod(this,_ButtonKit_instances,destroyCollector_fn).call(this),__privateSet(this,_onClickHandler,handler),data&&__privateSet(this,_contextData,{autoReset:data.autoReset??((_a=__privateGet(this,_contextData))==null?void 0:_a.autoReset)??!0,time:data.time??((_b=__privateGet(this,_contextData))==null?void 0:_b.time)??5*60*1e3,filter:data.filter??((_c=__privateGet(this,_contextData))==null?void 0:_c.filter),onEnd:data.onEnd??((_d=__privateGet(this,_contextData))==null?void 0:_d.onEnd)}),__privateMethod(this,_ButtonKit_instances,setupInteractionCollector_fn).call(this),this}onEnd(handler){if(this.data.style===ButtonStyle.Link)throw new TypeError('Cannot setup "onEnd" handler on link buttons.');if(!handler)throw new TypeError('Cannot setup "onEnd" without a handler function parameter.');return __privateGet(this,_contextData)??__privateSet(this,_contextData,{}),__privateGet(this,_contextData).onEnd=handler,this}onError(handler){if(!handler)throw new TypeError('Cannot setup "onError" without a handler function parameter.');return __privateGet(this,_contextData)??__privateSet(this,_contextData,{}),__privateGet(this,_contextData).onError=handler,this}filter(predicate){return __privateGet(this,_contextData)??__privateSet(this,_contextData,{autoReset:!0,time:5*60*1e3}),__privateGet(this,_contextData).filter=predicate,this}get customId(){return this.data.custom_id??this.data.customId}dispose(){return __privateMethod(this,_ButtonKit_instances,destroyCollector_fn).call(this),this}};_onClickHandler=new WeakMap,_contextData=new WeakMap,_unsub=new WeakMap,_ButtonKit_instances=new WeakSet,getEventInterceptor_fn=__name(function(){let ctx=getContext();return ctx?exitContext(()=>ctx.commandkit.eventInterceptor):getCommandKit(!0).eventInterceptor},"#getEventInterceptor"),setupInteractionCollector_fn=__name(function(){if(this.data.style===ButtonStyle.Link||!__privateGet(this,_contextData)||!__privateGet(this,_onClickHandler))return;if((this.customId??null)===null)throw new TypeError('Cannot setup "onClick" handler on a button without a custom id.');let interceptor=__privateMethod(this,_ButtonKit_instances,getEventInterceptor_fn).call(this);__privateSet(this,_unsub,interceptor.subscribe(Events2.InteractionCreate,async interaction=>{var _a,_b;if(!interaction.isButton())return;let myCustomId2=this.customId??null,interactionCustomId=interaction.customId;if(myCustomId2&&interactionCustomId!==myCustomId2)return;let filter=(_a=__privateGet(this,_contextData))==null?void 0:_a.filter;if(filter&&!await filter(interaction))return;let handler=__privateGet(this,_onClickHandler);return handler?handler(interaction,this):(_b=__privateGet(this,_unsub))==null?void 0:_b.call(this)},__privateGet(this,_contextData)))},"#setupInteractionCollector"),destroyCollector_fn=__name(function(){var _a;(_a=__privateGet(this,_unsub))==null||_a.call(this),__privateSet(this,_unsub,null),__privateSet(this,_contextData,null),__privateSet(this,_onClickHandler,null)},"#destroyCollector"),__name(_ButtonKit,"ButtonKit");var ButtonKit=_ButtonKit;init_esm_shims();import{ButtonStyle as ButtonStyle2}from"discord.js";function Button(props){let button=new ButtonKit;props.style??=ButtonStyle2.Primary,props.onClick&&(props.customId??=`buttonkit::${crypto.randomUUID()}`),props.customId&&button.setCustomId(props.customId),props.onClick&&button.onClick(props.onClick,props.options),props.disabled&&button.setDisabled(props.disabled),props.emoji&&button.setEmoji(props.emoji),props.skuId&&button.setSKUId(props.skuId),props.url&&button.setURL(props.url),props.style&&button.setStyle(props.style);let label=props.label||props.children;return label&&button.setLabel(Array.isArray(label)?label.join(" "):typeof label=="string"?label:String(label)),props.onEnd&&button.onEnd(props.onEnd),props.onError&&button.onError(props.onError),button}__name(Button,"Button");init_esm_shims();import{Events as Events3,ModalBuilder}from"discord.js";var _onSubmitHandler,_contextData2,_unsub2,_ModalKit_instances,getEventInterceptor_fn2,setupCollector_fn,destroyCollector_fn2,_ModalKit=class _ModalKit extends ModalBuilder{constructor(){super(...arguments);__privateAdd(this,_ModalKit_instances);__privateAdd(this,_onSubmitHandler,null);__privateAdd(this,_contextData2,{autoReset:!1,time:5*60*1e3,once:!0});__privateAdd(this,_unsub2,null)}onSubmit(handler,data){var _a,_b,_c,_d;if(!handler)throw new TypeError('Cannot setup "onClick" without a handler function parameter.');return __privateGet(this,_onSubmitHandler)&&__privateMethod(this,_ModalKit_instances,destroyCollector_fn2).call(this),__privateSet(this,_onSubmitHandler,handler),data&&__privateSet(this,_contextData2,{autoReset:data.autoReset??((_a=__privateGet(this,_contextData2))==null?void 0:_a.autoReset)??!0,time:data.time??((_b=__privateGet(this,_contextData2))==null?void 0:_b.time)??5*60*1e3,filter:data.filter??((_c=__privateGet(this,_contextData2))==null?void 0:_c.filter),onEnd:data.onEnd??((_d=__privateGet(this,_contextData2))==null?void 0:_d.onEnd)}),__privateMethod(this,_ModalKit_instances,setupCollector_fn).call(this),this}onEnd(handler){if(!handler)throw new TypeError('Cannot setup "onEnd" without a handler function parameter.');return __privateGet(this,_contextData2)??__privateSet(this,_contextData2,{}),__privateGet(this,_contextData2).onEnd=handler,this}onError(handler){if(!handler)throw new TypeError('Cannot setup "onError" without a handler function parameter.');return __privateGet(this,_contextData2)??__privateSet(this,_contextData2,{}),__privateGet(this,_contextData2).onError=handler,this}filter(predicate){return __privateGet(this,_contextData2)??__privateSet(this,_contextData2,{autoReset:!0,time:5*60*1e3}),__privateGet(this,_contextData2).filter=predicate,this}get customId(){return this.data.custom_id??this.data.customId}dispose(){return __privateMethod(this,_ModalKit_instances,destroyCollector_fn2).call(this),this}};_onSubmitHandler=new WeakMap,_contextData2=new WeakMap,_unsub2=new WeakMap,_ModalKit_instances=new WeakSet,getEventInterceptor_fn2=__name(function(){let ctx=getContext();return ctx?exitContext(()=>ctx.commandkit.eventInterceptor):getCommandKit(!0).eventInterceptor},"#getEventInterceptor"),setupCollector_fn=__name(function(){if(!__privateGet(this,_contextData2))return;if(!this.customId)throw new TypeError("Cannot setup an modal collector without a custom ID.");let interceptor=__privateMethod(this,_ModalKit_instances,getEventInterceptor_fn2).call(this);interceptor&&__privateSet(this,_unsub2,interceptor.subscribe(Events3.InteractionCreate,async interaction=>{var _a,_b;if(!interaction.isModalSubmit())return;let myCustomId=this.customId??null,interactionCustomId=interaction.customId;if(myCustomId&&interactionCustomId!==myCustomId)return;let filter=(_a=__privateGet(this,_contextData2))==null?void 0:_a.filter;if(filter&&!await filter(interaction))return;let handler=__privateGet(this,_onSubmitHandler);return handler?handler(interaction,this):(_b=__privateGet(this,_unsub2))==null?void 0:_b.call(this)},__privateGet(this,_contextData2)))},"#setupCollector"),destroyCollector_fn2=__name(function(){var _a;(_a=__privateGet(this,_unsub2))==null||_a.call(this),__privateSet(this,_unsub2,null),__privateSet(this,_onSubmitHandler,null),__privateSet(this,_contextData2,null)},"#destroyCollector"),__name(_ModalKit,"ModalKit");var ModalKit=_ModalKit;init_esm_shims();import{ActionRowBuilder as ActionRowBuilder2,TextInputBuilder,TextInputStyle}from"discord.js";function Modal(props){let modal=new ModalKit;if(props.title&&modal.setTitle(props.title),props.onSubmit&&(props.customId??=`modalkit::${crypto.randomUUID()}`),props.customId&&modal.setCustomId(props.customId),props.onSubmit&&modal.onSubmit(props.onSubmit,props.options),props.children){let childs=(Array.isArray(props.children)?props.children:[props.children]).map(c=>{if(c instanceof ActionRowBuilder2)return c;if(c instanceof TextInputBuilder)return new ActionRowBuilder2().addComponents(c)}).filter(c=>c!=null);modal.addComponents(childs)}return props.onEnd&&modal.onEnd(props.onEnd),props.onError&&modal.onError(props.onError),modal}__name(Modal,"Modal");function TextInput(props){let input=new TextInputBuilder().setStyle(props.style);return props.customId&&input.setCustomId(props.customId),props.label&&input.setLabel(props.label),props.placeholder&&input.setPlaceholder(props.placeholder),props.maxLength&&input.setMaxLength(props.maxLength),props.minLength&&input.setMinLength(props.minLength),props.value&&input.setValue(props.value),props.required&&input.setRequired(props.required),input}__name(TextInput,"TextInput");function ShortInput(props){return TextInput({...props,style:TextInputStyle.Short})}__name(ShortInput,"ShortInput");function ParagraphInput(props){return TextInput({...props,style:TextInputStyle.Paragraph})}__name(ParagraphInput,"ParagraphInput");init_esm_shims();init_esm_shims();var WARNED_KEYS=new Set;function emitWarning(message,code="CommandKitWarning"){process.emitWarning(message,{code})}__name(emitWarning,"emitWarning");function warnUnstable(name){WARNED_KEYS.has(name)||(WARNED_KEYS.add(name),emitWarning(`${name} is unstable and may change in future versions.`,"CommandKitUnstableWarning"))}__name(warnUnstable,"warnUnstable");var ElementType={ActionRow:"action-row",Button:"button-kit",Modal:"modal",TextInput:"text-input"};function isCommandKitElement(element){return!(typeof element!="object"||element===null||!Reflect.has(element,"type")||!Reflect.has(element,"data"))}__name(isCommandKitElement,"isCommandKitElement");function getElement(element){return element.data}__name(getElement,"getElement");function Fragment(props){return warnUnstable("CommandKit JSX"),Array.isArray(props.children)?props.children.flat():props.children}__name(Fragment,"Fragment");function createElement(type,props,...children){return warnUnstable("CommandKit JSX"),type({...props,children})}__name(createElement,"createElement");init_esm_shims();init_esm_shims();var _EventInterceptor_instances,cleanupLoop_fn,_EventInterceptor=class _EventInterceptor{constructor(client){this.client=client;__privateAdd(this,_EventInterceptor_instances);__publicField(this,"subscribers",new Map);__publicField(this,"globalHandlers",new Map);__publicField(this,"cleanupTimer",null);__privateMethod(this,_EventInterceptor_instances,cleanupLoop_fn).call(this)}destroy(){this.cleanupTimer&&(clearInterval(this.cleanupTimer),this.cleanupTimer=null);for(let[event,handlers]of this.subscribers)for(let handler of handlers)this.unsubscribe(event,handler,"destroy");this.subscribers.clear(),this.globalHandlers.clear()}hasSubscribers(event){return this.subscribers.has(event)}getSubscriberCount(event){let handlers=this.subscribers.get(event);return(handlers==null?void 0:handlers.size)??0}hasGlobalHandlers(){return this.globalHandlers.size>0}getGlobalHandlersCount(){return this.subscribers.size}subscribe(event,listener,options){return this.subscribers.has(event)||(this.subscribers.set(event,new Set),this.client.on(event,this.createGlobalHandler(event)),this.client.setMaxListeners(this.client.getMaxListeners()+1)),options??={},options.registeredAt=Date.now(),Reflect.set(listener,"options",options),this.subscribers.get(event).add(listener),()=>{this.unsubscribe(event,listener)}}unsubscribe(event,listener,reason){var _a,_b;let handlers=this.subscribers.get(event);handlers&&(handlers.delete(listener),handlers.size<1&&(this.subscribers.delete(event),this.client.removeListener(event,this.globalHandlers.get(event)),this.globalHandlers.delete(event),this.client.setMaxListeners(Math.max(this.client.getMaxListeners()-1,0))),(_b=(_a=Reflect.get(listener,"options")).onEnd)==null||_b.call(_a,reason??"unsubscribe"))}createGlobalHandler(event){if(this.globalHandlers.has(event))return this.globalHandlers.get(event);let handler=__name(async(...args)=>{let subscribers=this.subscribers.get(event);if(subscribers&&subscribers.size>0)for(let subscriber of subscribers){let options=Reflect.get(subscriber,"options");if(options.time&&Date.now()-options.registeredAt>options.time){this.unsubscribe(event,subscriber,"time");continue}if(options.autoReset&&(options.registeredAt=Date.now()),!(options.filter&&!await options.filter(...args)))try{await subscriber(...args)}catch(e){if(options.onError)await options.onError(e);else throw e}finally{options.once&&this.unsubscribe(event,subscriber,"once")}}},"handler");return this.globalHandlers.set(event,handler),handler}};_EventInterceptor_instances=new WeakSet,cleanupLoop_fn=__name(function(){this.cleanupTimer&&clearInterval(this.cleanupTimer),this.cleanupTimer=setInterval(()=>{for(let[event,handlers]of this.subscribers)for(let handler of handlers){let options=Reflect.get(handler,"options");options.time&&Date.now()-options.registeredAt>options.time&&this.unsubscribe(event,handler,"time")}},6e4).unref()},"#cleanupLoop"),__name(_EventInterceptor,"EventInterceptor");var EventInterceptor=_EventInterceptor;import{Locale as Locale2}from"discord.js";init_esm_shims();import{readFile}from"node:fs/promises";import{join}from"node:path";var _DefaultLocalizationStrategy=class _DefaultLocalizationStrategy{constructor(commandkit){this.commandkit=commandkit}translations=new Map;async locateTranslation(scope,locale){let localesPath=this.commandkit.getPath("locales");if(!localesPath)return null;let path5=join(localesPath,locale,`${scope}.json`);try{let data=await readFile(path5,"utf-8");return JSON.parse(data)}catch{return null}}async getTranslationStrict(scope,locale){let key=`${scope}:${locale}`;if(!this.translations.has(key)){let translation=await this.locateTranslation(scope,locale);if(!translation)throw new Error(`Translation not found for ${key}`);return this.translations.set(key,translation),translation}return this.translations.get(key)}async getTranslation(scope,locale){try{return this.getTranslationStrict(scope,locale)}catch{return null}}async translate(request){let{scope,key,args,locale}=request,translation=await this.getTranslation(scope,locale);if(!translation)return`${scope}.${key}`;let value=translation.translations[key];return this.applyTranslation(value,args)||`${scope}.${key}`}applyTranslation(translation,args){return!translation||!args?translation:translation.replace(/{([^}]+)}/g,(_,key)=>String(args[key]??`{${key}}`))}};__name(_DefaultLocalizationStrategy,"DefaultLocalizationStrategy");var DefaultLocalizationStrategy=_DefaultLocalizationStrategy;init_esm_shims();import{existsSync}from"node:fs";import{join as join2}from"node:path";init_esm_shims();var COMMANDKIT_CACHE_TAG=Symbol("kCommandKitCacheTag"),COMMANDKIT_IS_DEV=!!process.env.COMMANDKIT_DEV;var appDir=null;function findAppDirectory(){if(appDir)return appDir;let root=join2(process.cwd(),COMMANDKIT_IS_DEV?".commandkit":"dist");existsSync(root)||(root=process.cwd());let dirs=["app","src/app"].map(dir=>join2(root,dir));for(let dir of dirs)if(existsSync(dir))return appDir=dir,dir;return null}__name(findAppDirectory,"findAppDirectory");import{join as join5}from"node:path";init_esm_shims();import{Collection,ContextMenuCommandBuilder,Locale,Message as Message3,SlashCommandBuilder}from"discord.js";init_esm_shims();import{ApplicationCommandOptionType,GuildMember,User,Role}from"discord.js";var _parsed,_options,_args,_MessageCommandParser=class _MessageCommandParser{constructor(message,prefix,schema){this.message=message;this.prefix=prefix;this.schema=schema;__privateAdd(this,_parsed,null);__privateAdd(this,_options,null);__privateAdd(this,_args,[])}getArgs(){return this.parse(),__privateGet(this,_args)}get options(){return __privateGet(this,_options)||__privateSet(this,_options,new MessageCommandOptions(this)),__privateGet(this,_options)}getOption(name){var _a;return(_a=this.parse().options.find(o=>o.name===name))==null?void 0:_a.value}getCommand(){return this.parse().command}getSubcommand(){return this.parse().subcommand}getSubcommandGroup(){return this.parse().subcommandGroup}getPrefix(){for(let p of this.prefix)if(this.message.content.startsWith(p))return p}getFullCommand(){return[this.getCommand(),this.getSubcommandGroup(),this.getSubcommand()].filter(v=>v).join(" ")}parse(){if(__privateGet(this,_parsed))return __privateGet(this,_parsed);let content=this.message.content,prefix=this.getPrefix();if(!prefix)throw createCommandKitError(CommandKitErrorCodes.InvalidCommandPrefix);let parts=content.slice(prefix.length).trim().split(" "),command=parts.shift();__privateSet(this,_args,parts);let subcommandGroup,subcommand;if(command!=null&&command.includes(":")){let[,group,cmd]=command.split(":");!cmd&&group?subcommand=group:cmd&&group&&(subcommandGroup=group,subcommand=cmd)}let schema=this.schema([command,subcommandGroup,subcommand].filter(Boolean).join(" ").trim()),options=parts.map(part=>{try{let[name,value]=part.split(":");if(!(name in schema))return null;switch(schema[name]){case ApplicationCommandOptionType.Boolean:return{name,value:value==="true"};case ApplicationCommandOptionType.Integer:return{name,value:parseInt(value,10)};case ApplicationCommandOptionType.Number:return{name,value:parseFloat(value)};case ApplicationCommandOptionType.String:return{name,value};case ApplicationCommandOptionType.User:return{name,value:this.message.mentions.users.find(u=>u.id===value.replace(/[<@!>]/g,""))};case ApplicationCommandOptionType.Channel:return{name,value:this.message.mentions.channels.find(c=>c.id===value.replace(/[<#>]/g,""))};case ApplicationCommandOptionType.Role:return{name,value:this.message.mentions.roles.find(r=>r.id===value.replace(/[<@&>]/g,""))};case ApplicationCommandOptionType.Attachment:return{name,value:this.message.attachments.find(a=>a.name===value)};default:return null}}catch{return null}}).filter(v=>v!==null);return __privateSet(this,_parsed,{command,options,subcommand,subcommandGroup}),__privateGet(this,_parsed)}};_parsed=new WeakMap,_options=new WeakMap,_args=new WeakMap,__name(_MessageCommandParser,"MessageCommandParser");var MessageCommandParser=_MessageCommandParser,_MessageCommandOptions=class _MessageCommandOptions{constructor(parser2){this.parser=parser2}assertOption(name,required=!1){let option=this.parser.getOption(name);if(required&&option===void 0)throw new Error(`Option "${name}" is required.`);return option??null}getMember(name,required=!1){var _a;let user=this.assertOption(name,required),member=(_a=this.parser.message.guild)==null?void 0:_a.members.cache.get(user==null?void 0:user.id);if(required&&!member)throw new Error(`Member "${name}" is required.`);return member??null}getAttachment(name,required=!1){return this.assertOption(name,required)}getBoolean(name,required=!1){return this.assertOption(name,required)}getNumber(name,required=!1){return this.assertOption(name,required)}getString(name,required=!1){return this.assertOption(name,required)}getInteger(name,required=!1){return this.assertOption(name,required)}getUser(name,required=!1){return this.assertOption(name,required)}getChannel(name,required=!1){return this.assertOption(name,required)}getRole(name,required=!1){return this.assertOption(name,required)}getMentionable(name,required=!1){let target=this.assertOption(name,required);if(target instanceof GuildMember||target instanceof User||target instanceof Role)return target;if(required)throw new Error(`Mentionable "${name}" is required.`);return null}getSubcommand(required=!1){let sub=this.parser.getSubcommand();if(required&&sub===void 0)throw new Error("Subcommand is required.");return sub??null}getSubcommandGroup(required=!1){let sub=this.parser.getSubcommandGroup();if(required&&sub===void 0)throw new Error("Subcommand group is required.");return sub??null}};__name(_MessageCommandOptions,"MessageCommandOptions");var MessageCommandOptions=_MessageCommandOptions;var commandDataSchema={command:__name(c=>c instanceof SlashCommandBuilder||c instanceof ContextMenuCommandBuilder||c&&typeof c=="object","command"),chatInput:__name(c=>typeof c=="function","chatInput"),autocomplete:__name(c=>typeof c=="function","autocomplete"),message:__name(c=>typeof c=="function","message"),messageContextMenu:__name(c=>typeof c=="function","messageContextMenu"),userContextMenu:__name(c=>typeof c=="function","userContextMenu")},middlewareDataSchema={beforeExecute:__name(c=>typeof c=="function","beforeExecute"),afterExecute:__name(c=>typeof c=="function","afterExecute")},_AppCommandHandler=class _AppCommandHandler{constructor(commandkit){this.commandkit=commandkit}loadedCommands=new Collection;loadedMiddlewares=new Collection;getCommandsArray(){return Array.from(this.loadedCommands.values()).map(v=>"toJSON"in v&&typeof v.toJSON=="function"?v.toJSON():v.data.command)}async prepareCommandRun(source){let cmd,parser2;if(source instanceof Message3){if(source.author.bot)return null;let prefix=await this.commandkit.config.getMessageCommandPrefix(source);parser2=new MessageCommandParser(source,Array.isArray(prefix)?prefix:[prefix],command=>{var _a;let loadedCommand2=this.loadedCommands.find(c=>c.data.command.name===command);return loadedCommand2?((_a=("toJSON"in loadedCommand2.data.command?loadedCommand2.data.command.toJSON():loadedCommand2.data.command).options)==null?void 0:_a.reduce((acc,opt)=>(acc[opt.name]=opt.type,acc),{}))??{}:null});try{cmd=parser2.getFullCommand()}catch(e){return isErrorType(e,CommandKitErrorCodes.InvalidCommandPrefix)||console.error(e),null}}else{if(!source.isCommand())return null;if(cmd=source.commandName,source.isChatInputCommand()){let subcommandGroup=source.options.getSubcommandGroup(!1),subcommand=source.options.getSubcommand(!1);subcommandGroup&&(cmd+=` ${subcommandGroup}`),subcommand&&(cmd+=` ${subcommand}`)}}let loadedCommand=this.loadedCommands.find(c=>c.data.command.name===cmd);return loadedCommand?{command:loadedCommand,middlewares:loadedCommand.command.middlewares.map(m=>this.loadedMiddlewares.get(m)).filter(m=>!!m),messageCommandParser:parser2}:null}async loadCommands(){let commandsRouter=this.commandkit.commandsRouter;if(!commandsRouter)throw new Error("Commands router has not yet initialized");let{commands,middleware}=commandsRouter.getData();for(let[id,md]of middleware){let data=await import(`${toFileURL(md.fullPath)}?t=${Date.now()}`),handlerCount=0;for(let[key,validator]of Object.entries(middlewareDataSchema)){if(data[key]&&!await validator(data[key]))throw new Error(`Invalid export for middleware ${id}: ${key} does not match expected value`);data[key]&&handlerCount++}if(handlerCount===0)throw new Error(`Invalid export for middleware ${id}: at least one handler function must be provided`);this.loadedMiddlewares.set(id,{middleware:md,data})}for(let[name,command]of commands){let data=await import(`${toFileURL(command.fullPath)}?t=${Date.now()}`);if(!data.command)throw new Error(`Invalid export for command ${name}: no command definition found`);let handlerCount=0;for(let[key,validator]of Object.entries(commandDataSchema))if(key!=="command"&&data[key]&&handlerCount++,data[key]&&!await validator(data[key]))throw new Error(`Invalid export for command ${name}: ${key} does not match expected value`);if(handlerCount===0)throw new Error(`Invalid export for command ${name}: at least one handler function must be provided`);let localizedCommand=await this.applyLocalizations({...data.command});this.loadedCommands.set(name,{command,data:{...data,command:localizedCommand}})}}async applyLocalizations(command){var _a,_b,_c,_d,_e;let localization=this.commandkit.config.localizationStrategy,validLocales=Object.values(Locale).filter(v=>typeof v=="string");for(let locale of validLocales){let translation=await localization.locateTranslation(command.name,locale);if(translation!=null&&translation.command)if(command instanceof SlashCommandBuilder){translation.command.name&&command.setNameLocalization(locale,translation.command.name),translation.command.description&&command.setDescriptionLocalization(locale,translation.command.description);let raw=command.toJSON();if((_a=raw.options)!=null&&_a.length&&((_b=translation.command.options)!=null&&_b.length)){let opt=translation.command.options.slice(),o;for(;o=opt.shift();)(_c=raw.options)==null||_c.forEach(option=>{option.name===o.ref&&(option.name&&(option.name_localizations??={},option.name_localizations[locale]=o.name),option.description&&(option.description_localizations??={},option.description_localizations[locale]=o.description))})}}else{if(command instanceof ContextMenuCommandBuilder)return translation.command.name&&command.setNameLocalization(locale,translation.command.name),command.toJSON();if(command.name_localizations??={},command.name_localizations[locale]=translation.command.name,command.description&&(command.description_localizations??={},command.description_localizations[locale]=translation.command.description),(_d=command.options)!=null&&_d.length&&((_e=translation.command.options)!=null&&_e.length)){let opt=translation.command.options.slice(),o;for(;o=opt.shift();)command.options.forEach(option=>{option.name===o.ref&&(option.name&&(option.name_localizations??={},option.name_localizations[locale]=o.name),option.description&&(option.description_localizations??={},option.description_localizations[locale]=o.description))})}}}return command}};__name(_AppCommandHandler,"AppCommandHandler");var AppCommandHandler=_AppCommandHandler;init_esm_shims();init_esm_shims();import{existsSync as existsSync2}from"node:fs";import{readdir}from"node:fs/promises";import path4,{join as join3}from"node:path";var _CommandsRouter=class _CommandsRouter{constructor(options){this.options=options;if(!options.entrypoint)throw new Error("Entrypoint directory must be provided");options.matcher??={},options.matcher.command??=/command\.(m|c)?(j|t)sx?$/,options.matcher.middleware??=/middleware\.(m|c)?(j|t)sx?$/}commands=new Map;middlewares=new Map;get entrypoint(){return this.options.entrypoint}get matchers(){return this.options.matcher}getData(){return{commands:this.commands,middleware:this.middlewares}}isValidPath(){return existsSync2(this.entrypoint)}execMatcher(matcher,path5){return typeof matcher=="string"?path5.endsWith(matcher):matcher instanceof RegExp?matcher.test(path5):matcher(path5)}resolveRelativePath(path5){let regex=new RegExp(`^${this.entrypoint}`);return path5.replace(regex,"")}match(commandOrSegment){if(!(commandOrSegment!=null&&commandOrSegment.length))return null;if(Array.isArray(commandOrSegment)&&commandOrSegment.length===1&&(commandOrSegment=commandOrSegment[0]),!Array.isArray(commandOrSegment)&&!commandOrSegment.includes(" ")){let command2=this.commands.get(commandOrSegment);if(!command2)return null;let middlewares2=command2.middlewares.map(id=>this.middlewares.get(id)).filter(m=>!!m);return{command:command2,middlewares:middlewares2}}let segments=Array.isArray(commandOrSegment)?commandOrSegment:commandOrSegment.split(" "),command=Array.from(this.commands.values()).find(cmd=>{let commandSegments=cmd.parentSegments;return commandSegments.length!==segments.length?!1:commandSegments.every((segment,index)=>segment==="[name]"?!0:segment===segments[index])});if(!command)return null;let middlewares=command.middlewares.map(id=>this.middlewares.get(id)).filter(m=>!!m);return{command,middlewares}}async reload(){return this.clear(),this.scan()}clear(){this.commands.clear(),this.middlewares.clear()}async scan(){let files=await this.scanDirectory(this.entrypoint,[]);for(let file of files){if(this.execMatcher(this.matchers.command,file)){let location=this.resolveRelativePath(file),parts=location.split(path4.sep),parentSegments=[];parts.forEach((part,index,arr)=>{index!==arr.length-1&&(/\(.+\)/.test(part)||parentSegments.push(part.trim()))});let parent=parentSegments.join(" "),name=parts[parts.length-1].replace(/\.(m|c)?(j|t)sx?$/,""),command={name,middlewares:[],parent:parent||null,path:location,fullPath:file,parentSegments};this.commands.set(name,command)}if(this.execMatcher(this.matchers.middleware,file)){let location=this.resolveRelativePath(file),name=location.replace(/\.(m|c)?(j|t)sx?$/,""),middlewareDir=path4.dirname(location),command=Array.from(this.commands.values()).filter(command2=>{let commandDir=path4.dirname(command2.path);return commandDir===middlewareDir||commandDir.startsWith(middlewareDir)}),id=crypto.randomUUID(),middleware={id,name,path:location,fullPath:file};this.middlewares.set(id,middleware),command.forEach(cmd=>{cmd.middlewares.push(id)})}}return this.toJSON()}toJSON(){return{commands:Object.fromEntries(this.commands),middleware:Object.fromEntries(this.middlewares)}}async scanDirectory(dir,entries){let files=await readdir(dir,{withFileTypes:!0});for(let file of files)if(!(file.name==="node_modules"||file.parentPath.includes("node_modules"))){if(file.isDirectory()){let next=join3(dir,file.name);await this.scanDirectory(next,entries);continue}entries.push(join3(dir,file.name))}return entries}};__name(_CommandsRouter,"CommandsRouter");var CommandsRouter=_CommandsRouter;init_esm_shims();import{existsSync as existsSync3}from"node:fs";import{readdir as readdir2}from"node:fs/promises";import{join as join4}from"node:path";var _EventsRouter=class _EventsRouter{constructor(options){this.options=options;if(!options.entrypoint)throw new Error("Entrypoint directory must be provided")}events=new Map;match(event){return this.events.get(event)??null}get entrypoint(){return this.options.entrypoint}isValidPath(){return existsSync3(this.entrypoint)}clear(){this.events.clear()}async reload(){return this.clear(),this.scan()}async scan(){let dirs=await readdir2(this.entrypoint,{withFileTypes:!0});for(let dir of dirs)if(dir.isDirectory()){let path5=join4(this.entrypoint,dir.name),event=await this.scanEvent(dir.name,path5);this.events.set(event.event,event)}return Object.fromEntries(this.events)}toJSON(){return Object.fromEntries(this.events)}async scanEvent(event,path5,listeners=[]){let files=await readdir2(path5,{withFileTypes:!0});for(let file of files)if(!/node_modules/.test(file.name)){if(file.isDirectory()){let nextPath=join4(path5,file.name);await this.scanEvent(event,nextPath,listeners);continue}file.isFile()&&/\.(m|c)?(j|t)sx?$/.test(file.name)&&listeners.push(join4(file.parentPath,file.name))}return{event,path:path5,listeners}}};__name(_EventsRouter,"EventsRouter");var EventsRouter=_EventsRouter;var _data5,_CommandKit_instances,init_fn,initApp_fn,initCommands_fn,initEvents_fn,_CommandKit=class _CommandKit extends EventEmitter{constructor(options){if(_CommandKit.instance&&process.emitWarning("CommandKit instance already exists. Having multiple instance in same project is discouraged and it may lead to unexpected behavior.",{code:"MultiInstanceWarning"}),!options.client)throw new Error(colors_default.red('"client" is required when instantiating CommandKit.'));if(options.validationsPath&&!options.commandsPath)throw new Error(colors_default.red('"commandsPath" is required when "validationsPath" is set.'));super();__privateAdd(this,_CommandKit_instances);__privateAdd(this,_data5);__publicField(this,"eventInterceptor");__publicField(this,"config",{defaultLocale:Locale2.EnglishUS,localizationStrategy:new DefaultLocalizationStrategy(this),getMessageCommandPrefix:__name(()=>"!","getMessageCommandPrefix")});__publicField(this,"commandsRouter");__publicField(this,"eventsRouter");__publicField(this,"appCommandsHandler",new AppCommandHandler(this));options.debugCommands??=process.env.NODE_ENV!=="production",options.cacheProvider!==null&&(!options.cacheProvider||!(options.cacheProvider instanceof CacheProvider))&&(options.cacheProvider=new MemoryCache),this.eventInterceptor=new EventInterceptor(options.client),__privateSet(this,_data5,options),__privateMethod(this,_CommandKit_instances,init_fn).call(this).then(()=>{this.incrementClientListenersCount()}),_CommandKit.instance||(_CommandKit.instance=this)}setPrefixResolver(resolver){return this.config.getMessageCommandPrefix=resolver,this}setDefaultLocale(locale){return this.config.defaultLocale=locale,this}setLocalizationStrategy(strategy){return this.config.localizationStrategy=strategy,this}getCacheProvider(){return __privateGet(this,_data5).cacheProvider??null}isDebuggingCommands(){return __privateGet(this,_data5).debugCommands||!1}get client(){return __privateGet(this,_data5).client}get commandHandler(){return __privateGet(this,_data5).commandHandler}async reloadCommands(type){__privateGet(this,_data5).commandHandler&&await __privateGet(this,_data5).commandHandler.reloadCommands(type)}async reloadEvents(){__privateGet(this,_data5).eventHandler&&await __privateGet(this,_data5).eventHandler.reloadEvents(__privateGet(this,_data5).commandHandler)}async reloadValidations(){__privateGet(this,_data5).validationHandler&&await __privateGet(this,_data5).validationHandler.reloadValidations()}get commands(){return __privateGet(this,_data5).commandHandler?__privateGet(this,_data5).commandHandler.commands.map(cmd=>{let{run,autocomplete,...command}=cmd;return command}):[]}get commandsPath(){return __privateGet(this,_data5).commandsPath}get eventsPath(){return __privateGet(this,_data5).eventsPath}get validationsPath(){return __privateGet(this,_data5).validationsPath}get devUserIds(){return __privateGet(this,_data5).devUserIds||[]}get devGuildIds(){return __privateGet(this,_data5).devGuildIds||[]}get devRoleIds(){return __privateGet(this,_data5).devRoleIds||[]}incrementClientListenersCount(){__privateGet(this,_data5).client.setMaxListeners(__privateGet(this,_data5).client.getMaxListeners()+1)}decrementClientListenersCount(){__privateGet(this,_data5).client.setMaxListeners(__privateGet(this,_data5).client.getMaxListeners()-1)}getAppDirectory(){return findAppDirectory()}getPath(to){let appDir2=this.getAppDirectory();if(!appDir2)return null;switch(to){case"locales":return join5(appDir2,"locales");case"commands":return join5(appDir2,"commands");case"events":return join5(appDir2,"events");default:return to}}};_data5=new WeakMap,_CommandKit_instances=new WeakSet,init_fn=__name(async function(){if(__privateGet(this,_data5).eventsPath){let eventHandler=new EventHandler({client:__privateGet(this,_data5).client,eventsPath:__privateGet(this,_data5).eventsPath,commandKitInstance:this});await eventHandler.init(),__privateGet(this,_data5).eventHandler=eventHandler}if(__privateGet(this,_data5).validationsPath){let validationHandler=new ValidationHandler({validationsPath:__privateGet(this,_data5).validationsPath});await validationHandler.init(),__privateGet(this,_data5).validationHandler=validationHandler}if(__privateGet(this,_data5).commandsPath){let commandHandler=new CommandHandler({client:__privateGet(this,_data5).client,commandsPath:__privateGet(this,_data5).commandsPath,devGuildIds:__privateGet(this,_data5).devGuildIds||[],devUserIds:__privateGet(this,_data5).devUserIds||[],devRoleIds:__privateGet(this,_data5).devRoleIds||[],validationHandler:__privateGet(this,_data5).validationHandler,skipBuiltInValidations:__privateGet(this,_data5).skipBuiltInValidations||!1,commandkitInstance:this,bulkRegister:__privateGet(this,_data5).bulkRegister||!1});__privateGet(this,_data5).commandHandler=commandHandler,await __privateMethod(this,_CommandKit_instances,initApp_fn).call(this),await commandHandler.init()}},"#init"),initApp_fn=__name(async function(){if(!this.getAppDirectory())return;let commandsPath=this.getPath("commands"),events=this.getPath("events");this.commandsRouter=new CommandsRouter({entrypoint:commandsPath}),this.eventsRouter=new EventsRouter({entrypoint:events}),await __privateMethod(this,_CommandKit_instances,initEvents_fn).call(this),await __privateMethod(this,_CommandKit_instances,initCommands_fn).call(this)},"#initApp"),initCommands_fn=__name(async function(){this.commandsRouter.isValidPath()&&await this.commandsRouter.scan(),await this.appCommandsHandler.loadCommands()},"#initCommands"),initEvents_fn=__name(async function(){if(this.eventsRouter.isValidPath()&&await this.eventsRouter.scan(),!!__privateGet(this,_data5).eventHandler){for(let event of Object.values(this.eventsRouter.toJSON()))__privateGet(this,_data5).eventHandler.registerExternal(event);__privateGet(this,_data5).eventHandler.resyncListeners()}},"#initEvents"),__name(_CommandKit,"CommandKit"),__publicField(_CommandKit,"createElement",createElement),__publicField(_CommandKit,"Fragment",Fragment),__publicField(_CommandKit,"instance");var CommandKit=_CommandKit;init_esm_shims();var globalConfig={envExtra:!0,outDir:"dist",watch:!0,clearRestartLogs:!0,minify:!1,sourcemap:!1,nodeOptions:[],antiCrash:!0,requirePolyfill:!0};function getConfig(){return globalConfig}__name(getConfig,"getConfig");var requiredProps=["src","main"];function defineConfig(config){for(let prop of requiredProps)if(!config[prop])throw new Error(`[CommandKit Config] Missing required config property: ${prop}`);return globalConfig={...globalConfig,...config},globalConfig}__name(defineConfig,"defineConfig");init_esm_shims();init_esm_shims();import{AsyncLocalStorage as AsyncLocalStorage2}from"node:async_hooks";import ms from"ms";import{randomUUID as randomUUID2}from"node:crypto";var CACHED_FUNCTIONS_STORE=new WeakMap,TAG_FUNCTION_MAP=new Map,DEFAULT_TTL=ms("15m"),cacheContext=new AsyncLocalStorage2,__identificationKey=`__cache_identification_key_${Date.now()}__${Math.random()}__`,getDefaultCacheTag=__name(()=>({tag:randomUUID2(),ttl:DEFAULT_TTL}),"getDefaultCacheTag");function cache(fn,params){return params=Object.assign({},getDefaultCacheTag(),params),useCache(fn,__identificationKey,params)}__name(cache,"cache");function useCache(fn,id,tag){if(id!==void 0&&id!==__identificationKey)throw new TypeError("useCache may not be called directly.");let isLocal=id===__identificationKey,memoized=__name(async(...args)=>{let cache2=getCommandKit(!0).getCacheProvider();if(!cache2)throw new Error("CacheProvider was not found, please provide a cache provider to the CommandKit instance.");let context2=cacheContext.getStore();if(context2===void 0)throw new Error('useCache must be called inside a function decorated with "use cache" directive.');let entryKey=context2.params.tag,entry=await cache2.get(entryKey);if(entry!==void 0)return entry.value;let ttl=typeof context2.params.ttl=="string"?ms(context2.params.ttl):context2.params.ttl,writeCache=__name(async(...args2)=>{let result=await fn(...args2);return CACHED_FUNCTIONS_STORE.set(fn,{...context2.params,target:fn,memo:cacheContext.exit(()=>wrapper)}),entryKey!==context2.params.tag&&TAG_FUNCTION_MAP.delete(entryKey),TAG_FUNCTION_MAP.set(context2.params.tag,fn),await cache2.set(entryKey,result,ttl),result},"writeCache");return CACHED_FUNCTIONS_STORE.set(fn,{...context2.params,target:fn,memo:cacheContext.exit(()=>wrapper)}),TAG_FUNCTION_MAP.set(entryKey,fn),writeCache(...args)},"memoized"),wrapper=__name(async(...args)=>{let params=CACHED_FUNCTIONS_STORE.get(fn)??((isLocal?tag:null)||getDefaultCacheTag());return cacheContext.run({params,target:fn},()=>memoized(...args))},"wrapper");return wrapper}__name(useCache,"useCache");function cacheTag(tag){var _a;if(!tag)throw new TypeError("cacheTag must be called with a tag.");let context2=cacheContext.getStore();if(context2===void 0)throw new Error('cacheTag must be called inside cache() or a function decorated with "use cache" directive.');let tagObj;typeof tag=="string"?tagObj={tag,ttl:((_a=context2.params)==null?void 0:_a.ttl)??DEFAULT_TTL}:tagObj=tag,context2.params=tagObj}__name(cacheTag,"cacheTag");function cacheLife(life){if(life==null)throw new TypeError("cacheLife must be called with a time-to-live value.");let context2=cacheContext.getStore();if(context2===void 0)throw new Error('cacheLife must be called inside cache() or a function decorated with "use cache" directive.');typeof life=="string"?context2.params.ttl=ms(life):context2.params.ttl=life}__name(cacheLife,"cacheLife");async function invalidate(tag){let cache2=getCommandKit(!0).getCacheProvider();if(!cache2)throw new Error("CacheProvider was not found, please provide a cache provider to the CommandKit instance.");await cache2.delete(tag)}__name(invalidate,"invalidate");async function revalidate(tag,...args){let cache2=getCommandKit(!0).getCacheProvider();if(!cache2)throw new Error("CacheProvider was not found, please provide a cache provider to the CommandKit instance.");await cache2.delete(tag);let tagFn=TAG_FUNCTION_MAP.get(tag);if(!tagFn)return;let ctx=CACHED_FUNCTIONS_STORE.get(tagFn);if(ctx)return ctx.memo(...args)}__name(revalidate,"revalidate");init_esm_shims();init_esm_shims();init_esm_shims();init_esm_shims();function exitMiddleware(){throw createCommandKitError(CommandKitErrorCodes.ExitMiddleware)}__name(exitMiddleware,"exitMiddleware");function rethrow(error){if(isCommandKitError(error))throw error}__name(rethrow,"rethrow");init_esm_shims();async function bootstrapCommandkitCLI(argv,options){let{Command}=await import("commander"),{bootstrapDevelopmentServer:bootstrapDevelopmentServer2}=await Promise.resolve().then(()=>(init_development(),development_exports)),{bootstrapProductionServer:bootstrapProductionServer2}=await Promise.resolve().then(()=>(init_production(),production_exports)),{bootstrapProductionBuild:bootstrapProductionBuild2}=await Promise.resolve().then(()=>(init_build(),build_exports)),program=new Command("commandkit");program.command("dev").description("Start your bot in development mode.").option("-c, --config <path>","Path to your commandkit config file.","./commandkit.js").action(()=>{let options2=program.opts();bootstrapDevelopmentServer2(options2)}),program.command("start").description("Start your bot in production mode after running the build command.").option("-c, --config <path>","Path to your commandkit.json file.","./commandkit.js").action(()=>{let options2=program.opts();bootstrapProductionServer2(options2.config)}),program.command("build").description("Build your project for production usage.").option("-c, --config <path>","Path to your commandkit.json file.","./commandkit.json").action(()=>{let options2=program.opts();bootstrapProductionBuild2(options2.config)}),await program.parseAsync(argv,options)}__name(bootstrapCommandkitCLI,"bootstrapCommandkitCLI");var index_default=CommandKit,version="0.1.11-dev.20250214040728";export{ActionRow,AppCommandHandler,Button,ButtonKit,CacheProvider,CommandExecutionMode,CommandKit,CommandKitEnvironment,CommandKitEnvironmentType,Context,DefaultLocalizationStrategy,ElementType,EventInterceptor,Fragment,Localization,MemoryCache,MessageCommandOptions,MessageCommandParser,MiddlewareContext,Modal,ModalKit,ParagraphInput,ShortInput,TextInput,afterCommand,bootstrapCommandkitCLI,cache,cacheLife,cacheTag,cancelAfterCommand,createElement,index_default as default,defineConfig,dmOnly,exitContext,exitMiddleware,getCommandKit,getConfig,getContext,getElement,guildOnly,invalidate,isCommandKitElement,makeContextAwareFunction,rethrow,revalidate,useCache as super_duper_secret_internal_for_use_cache_directive_of_commandkit_cli_do_not_use_it_directly_or_you_will_be_fired_from_your_job_kthxbai,useEnvironment,version};
29
29
  //# sourceMappingURL=index.mjs.map