commandkit 1.0.0-dev.20250528125253 → 1.0.0-dev.20250529125116
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CommandKit.js +4 -4
- package/dist/CommandKit.js.map +1 -1
- package/dist/app/commands/AppCommandRunner.js +2 -2
- package/dist/app/commands/AppCommandRunner.js.map +1 -1
- package/dist/app/commands/Context.js +2 -2
- package/dist/app/commands/Context.js.map +1 -1
- package/dist/app/handlers/AppCommandHandler.js +3 -3
- package/dist/app/handlers/AppCommandHandler.js.map +1 -1
- package/dist/app/handlers/AppEventsHandler.js +2 -2
- package/dist/app/handlers/AppEventsHandler.js.map +1 -1
- package/dist/app/index.js +3 -3
- package/dist/app/index.js.map +1 -1
- package/dist/app/register/CommandRegistrar.js +2 -2
- package/dist/app/register/CommandRegistrar.js.map +1 -1
- package/dist/cli/app-process.js +2 -2
- package/dist/cli/app-process.js.map +1 -1
- package/dist/cli/build.js +2 -2
- package/dist/cli/build.js.map +1 -1
- package/dist/cli/common.js +4 -4
- package/dist/cli/common.js.map +1 -1
- package/dist/cli/development.js +8 -8
- package/dist/cli/development.js.map +1 -1
- package/dist/cli/generators.js +4 -4
- package/dist/cli/generators.js.map +1 -1
- package/dist/cli/information.js +1 -1
- package/dist/cli/information.js.map +1 -1
- package/dist/cli/init.js +15 -15
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/production.js +9 -9
- package/dist/cli/production.js.map +1 -1
- package/dist/cli/type-checker.js +2 -2
- package/dist/cli/type-checker.js.map +1 -1
- package/dist/components/index.js +4 -4
- package/dist/components/index.js.map +1 -1
- package/dist/components/v1/button/Button.js +4 -4
- package/dist/components/v1/button/Button.js.map +1 -1
- package/dist/components/v1/button/ButtonKit.js +4 -4
- package/dist/components/v1/button/ButtonKit.js.map +1 -1
- package/dist/components/v1/modal/Modal.js +4 -4
- package/dist/components/v1/modal/Modal.js.map +1 -1
- package/dist/components/v1/modal/ModalKit.js +4 -4
- package/dist/components/v1/modal/ModalKit.js.map +1 -1
- package/dist/components/v1/select-menu/ChannelSelectMenuKit.js +4 -4
- package/dist/components/v1/select-menu/ChannelSelectMenuKit.js.map +1 -1
- package/dist/components/v1/select-menu/MentionableSelectMenuKit.js +4 -4
- package/dist/components/v1/select-menu/MentionableSelectMenuKit.js.map +1 -1
- package/dist/components/v1/select-menu/RoleSelectMenuKit.js +4 -4
- package/dist/components/v1/select-menu/RoleSelectMenuKit.js.map +1 -1
- package/dist/components/v1/select-menu/SelectMenu.js +4 -4
- package/dist/components/v1/select-menu/SelectMenu.js.map +1 -1
- package/dist/components/v1/select-menu/StringSelectMenuKit.js +4 -4
- package/dist/components/v1/select-menu/StringSelectMenuKit.js.map +1 -1
- package/dist/components/v1/select-menu/UserSelectMenuKit.js +4 -4
- package/dist/components/v1/select-menu/UserSelectMenuKit.js.map +1 -1
- package/dist/config/config.js +2 -2
- package/dist/config/config.js.map +1 -1
- package/dist/config/default.js +2 -2
- package/dist/config/default.js.map +1 -1
- package/dist/config/loader.js +4 -4
- package/dist/config/loader.js.map +1 -1
- package/dist/context/async-context.js +4 -4
- package/dist/context/async-context.js.map +1 -1
- package/dist/context/environment.js +2 -2
- package/dist/context/environment.js.map +1 -1
- package/dist/flags/feature-flags.js +6 -6
- package/dist/flags/feature-flags.js.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/logger/DefaultLogger.js +2 -2
- package/dist/logger/DefaultLogger.js.map +1 -1
- package/dist/logger/Logger.js +2 -2
- package/dist/logger/Logger.js.map +1 -1
- package/dist/plugins/index.js +2 -2
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/plugin-runtime/CommandKitPluginRuntime.js +1 -1
- package/dist/plugins/plugin-runtime/CommandKitPluginRuntime.js.map +1 -1
- package/dist/plugins/plugin-runtime/CompilerPluginRuntime.js +1 -1
- package/dist/plugins/plugin-runtime/CompilerPluginRuntime.js.map +1 -1
- package/dist/plugins/plugin-runtime/builtin/CommonDirectiveTransformer.js +2 -2
- package/dist/plugins/plugin-runtime/builtin/CommonDirectiveTransformer.js.map +1 -1
- package/dist/plugins/plugin-runtime/builtin/MacroPlugin.js +2 -2
- package/dist/plugins/plugin-runtime/builtin/MacroPlugin.js.map +1 -1
- package/dist/utils/dev-hooks.js +1 -1
- package/dist/utils/dev-hooks.js.map +1 -1
- package/dist/utils/utilities.js +1 -1
- package/dist/utils/utilities.js.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/flag.cjs +6 -0
- package/flag.d.ts +1 -0
- package/package.json +10 -3
package/dist/cli/type-checker.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`)}s(J,"write");function
|
|
1
|
+
"use strict";var F=Object.create;var u=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,$=Object.prototype.hasOwnProperty;var s=(t,e)=>u(t,"name",{value:e,configurable:!0});var R=(t,e)=>{for(var o in e)u(t,o,{get:e[o],enumerable:!0})},k=(t,e,o,c)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of b(e))!$.call(t,r)&&r!==o&&u(t,r,{get:()=>e[r],enumerable:!(c=P(e,r))||c.enumerable});return t};var S=(t,e,o)=>(o=t!=null?F(j(t)):{},k(e||!t||!t.__esModule?u(o,"default",{value:t,enumerable:!0}):o,t)),A=t=>k(u({},"__esModule",{value:!0}),t);var q={};R(q,{performTypeCheck:()=>B});module.exports=A(q);var _=require("fs");var H=require("rimraf"),D=require("path"),N=S(require("fs"));var C=require("picocolors"),n=(0,C.createColors)(!0);var M=require("fs/promises"),I=require("path");var X=Symbol("kCommandKitCacheTag"),K=process.env.COMMANDKIT_IS_DEV==="true",Y=process.env.COMMANDKIT_IS_TEST==="true",Z=process.env.COMMANDKIT_BOOTSTRAP_MODE||"development";var L=require("fs");var O=require("child_process");var l;function J(t){process.stdout.write(t),process.stdout.write(`
|
|
2
|
+
`)}s(J,"write");function h(t){J(n.red(`Error: ${t}`)),process.exit(1)}s(h,"panic");var m;function U(){if(m)return m;let t={"yarn.lock":"yarn","pnpm-lock.yaml":"pnpm","package-lock.json":"npm","bun.lock":"bun","bun.lockb":"bun"};for(let[e,o]of Object.entries(t))if(N.default.existsSync((0,D.join)(process.cwd(),e))){m=o;break}return m||(m="npm"),m}s(U,"detectPackageManager");async function E(t){if(l)return l;try{l=await import("typescript")}catch(e){if(e instanceof Error&&"code"in e&&e.code==="MODULE_NOT_FOUND")try{let o=U();return(0,O.execSync)(`${o} add typescript`,{stdio:"inherit",cwd:process.cwd()}),console.log(n.cyan("TypeScript has been installed automatically, restarting...")),l=await import("typescript"),l}catch{h("TypeScript is not installed and could not be installed automatically. Please install it manually.")}h(e||"TypeScript must be installed to use TypeScript config files.")}return l}s(E,"loadTypeScript");var x=require("path");var G="TypeScript must be installed in order to use the type checker. Please install it using `npm install typescript` or `yarn add typescript`";function V(t,e,o){let c=t.flattenDiagnosticMessageText(e.messageText,`
|
|
3
3
|
`);if(!e.file)return`${n.red("error")}: ${c}`;let{line:r,character:a}=t.getLineAndCharacterOfPosition(e.file,e.start),p=(0,x.relative)(o,e.file.fileName),d=`${r+1}:${a+1}`,i=e.code?`TS${e.code}`:"";return[`${n.bold(n.cyan(p))}:${n.bold(n.yellow(d))} - ${n.red("error")} ${n.gray(i)}`,`${c}`].join(`
|
|
4
4
|
`)}s(V,"formatDiagnostic");async function B(t){let e=(0,x.join)(t,"tsconfig.json");if(!(0,_.existsSync)(e))return;let o=await E(G),c={getCanonicalFileName:s(i=>i,"getCanonicalFileName"),getCurrentDirectory:o.sys.getCurrentDirectory,getNewLine:s(()=>o.sys.newLine,"getNewLine")},r=o.readConfigFile(e,o.sys.readFile);r.error&&(console.error(n.red(`Error reading tsconfig.json: ${o.formatDiagnostic(r.error,c)}`)),process.exit(1));let a=o.parseJsonConfigFileContent(r.config,o.sys,t);a.options.noEmit=!0;let p=o.createProgram({rootNames:a.fileNames,options:a.options,projectReferences:a.projectReferences}),d=[...p.getOptionsDiagnostics(),...p.getGlobalDiagnostics(),...p.getSyntacticDiagnostics(),...p.getSemanticDiagnostics()];if(d.length>0){console.log(""),console.error(n.bold(n.red("Type checking failed with the following errors:"))),console.log("");let i=new Map;for(let y of d){let f=y.file?y.file.fileName:"Global";i.has(f)||i.set(f,[]),i.get(f).push(y)}let T=d.length,w=0;for(let[y,f]of i)for(let v of f)w++,console.log(V(o,v,t)),w<T&&console.log("");console.log(""),console.error(n.bold(n.red(`Found ${T} error${T>1?"s":""}`))),console.log(""),process.exit(1)}console.log(n.green("\u2713 Type checking completed successfully."))}s(B,"performTypeCheck");0&&(module.exports={performTypeCheck});
|
|
5
5
|
//# sourceMappingURL=type-checker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/type-checker.ts","../../src/cli/common.ts","../../src/utils/colors.ts","../../src/utils/types-package.ts","../../src/utils/constants.ts"],"sourcesContent":["import { existsSync } from 'node:fs';\nimport { loadTypeScript } from './common';\nimport { join, relative } from 'node:path';\nimport colors from '../utils/colors';\n\nconst TS_NOT_FOUND_ERR = `TypeScript must be installed in order to use the type checker. Please install it using \\`npm install typescript\\` or \\`yarn add typescript\\``;\n\n/**\n * Formats a TypeScript diagnostic message in a pretty, readable format\n */\nfunction formatDiagnostic(\nts: typeof import('typescript'),\ndiagnostic: import('typescript').Diagnostic,\ncwd: string)\n: string {\n const messageText = ts.flattenDiagnosticMessageText(\n diagnostic.messageText,\n '\\n'\n );\n\n if (!diagnostic.file) {\n return `${colors.red('error')}: ${messageText}`;\n }\n\n const { line, character } = ts.getLineAndCharacterOfPosition(\n diagnostic.file,\n diagnostic.start!\n );\n const fileName = relative(cwd, diagnostic.file.fileName);\n const position = `${line + 1}:${character + 1}`;\n const errorCode = diagnostic.code ? `TS${diagnostic.code}` : '';\n\n // Format the error message nicely\n return [\n `${colors.bold(colors.cyan(fileName))}:${colors.bold(colors.yellow(position))} - ${colors.red('error')} ${colors.gray(errorCode)}`,\n `${messageText}`].\n join('\\n');\n}\n\n/**\n * Performs a type check on the project using TypeScript.\n * @param path The project root or cwd\n */\nexport async function performTypeCheck(path: string) {\n const tsconfigPath = join(path, 'tsconfig.json');\n\n if (!existsSync(tsconfigPath)) return;\n\n const ts = await loadTypeScript(TS_NOT_FOUND_ERR);\n\n // Format host for error reporting\n const formatHost = {\n getCanonicalFileName: (path: string) => path,\n getCurrentDirectory: ts.sys.getCurrentDirectory,\n getNewLine: () => ts.sys.newLine\n };\n\n // Read tsconfig.json\n const configFile = ts.readConfigFile(tsconfigPath, ts.sys.readFile);\n\n if (configFile.error) {\n console.error(\n colors.red(\n `Error reading tsconfig.json: ${ts.formatDiagnostic(configFile.error, formatHost)}`\n )\n );\n process.exit(1);\n }\n\n // Parse the config file\n const parsedConfig = ts.parseJsonConfigFileContent(\n configFile.config,\n ts.sys,\n path\n );\n\n // Force noEmit to true as we only want type checking\n parsedConfig.options.noEmit = true;\n\n // Create a program\n const program = ts.createProgram({\n rootNames: parsedConfig.fileNames,\n options: parsedConfig.options,\n projectReferences: parsedConfig.projectReferences\n });\n\n // Get the diagnostics\n const diagnostics = [\n ...program.getOptionsDiagnostics(),\n ...program.getGlobalDiagnostics(),\n ...program.getSyntacticDiagnostics(),\n ...program.getSemanticDiagnostics()];\n\n\n // Report any errors\n if (diagnostics.length > 0) {\n console.log('');\n console.error(\n colors.bold(\n colors.red('Type checking failed with the following errors:')\n )\n );\n console.log('');\n\n // Group diagnostics by file for better readability\n const byFile = new Map<string, import('typescript').Diagnostic[]>();\n\n for (const diagnostic of diagnostics) {\n const fileName = diagnostic.file ? diagnostic.file.fileName : 'Global';\n if (!byFile.has(fileName)) {\n byFile.set(fileName, []);\n }\n byFile.get(fileName)!.push(diagnostic);\n }\n\n // Pretty-print each diagnostic\n const totalErrors = diagnostics.length;\n let counter = 0;\n\n for (const [_, fileDiags] of byFile) {\n for (const diagnostic of fileDiags) {\n counter++;\n console.log(formatDiagnostic(ts, diagnostic, path));\n // Add separator between errors for better readability, except for the last one\n if (counter < totalErrors) {\n console.log('');\n }\n }\n }\n\n console.log('');\n console.error(\n colors.bold(\n colors.red(`Found ${totalErrors} error${totalErrors > 1 ? 's' : ''}`)\n )\n );\n console.log('');\n\n process.exit(1);\n }\n\n console.log(colors.green('✓ Type checking completed successfully.'));\n}","import { rimrafSync } from 'rimraf';\nimport { join } from 'node:path';\nimport fs from 'node:fs';\nimport colors from '../utils/colors';\nimport { ResolvedCommandKitConfig } from '../config/utils';\nimport { generateTypesPackage } from '../utils/types-package';\nimport { execSync } from 'node:child_process';\n\nlet ts: typeof import('typescript') | undefined;\n\nexport function write(message: any) {\n process.stdout.write(message);\n process.stdout.write('\\n');\n}\n\nexport function findEntrypoint(dir: string) {\n const target = join(dir, 'sharding-manager.js');\n\n // if sharding manager exists, return that file instead\n if (fs.existsSync(target)) return target;\n\n return join(dir, 'index.js');\n}\n\n/**\n * @returns {never}\n */\nexport function panic(message: any): never {\n write(colors.red(`Error: ${message}`));\n process.exit(1);\n}\n\nexport function findPackageJSON() {\n const cwd = process.cwd();\n const target = join(cwd, 'package.json');\n\n if (!fs.existsSync(target)) {\n panic('Could not find package.json in current directory.');\n }\n\n return JSON.parse(fs.readFileSync(target, 'utf8'));\n}\n\nasync function ensureTypeScript(target: string) {\n const isTypeScript = /\\.(c|m)?tsx?$/.test(target);\n\n if (!isTypeScript) return false;\n if (process.features.typescript) return true;\n\n await loadTypeScript();\n\n return true;\n}\n\nlet packageManager: string;\n\nfunction detectPackageManager() {\n if (packageManager) return packageManager;\n\n const lockfiles = {\n 'yarn.lock': 'yarn',\n 'pnpm-lock.yaml': 'pnpm',\n 'package-lock.json': 'npm',\n 'bun.lock': 'bun',\n 'bun.lockb': 'bun'\n };\n\n for (const [lockfile, manager] of Object.entries(lockfiles)) {\n if (fs.existsSync(join(process.cwd(), lockfile))) {\n packageManager = manager;\n break;\n }\n }\n\n if (!packageManager) {\n packageManager = 'npm';\n }\n\n return packageManager;\n}\n\nexport async function loadTypeScript(e?: string) {\n if (ts) return ts;\n\n try {\n ts = await import('typescript');\n } catch (e) {\n if (e instanceof Error && 'code' in e && e.code === 'MODULE_NOT_FOUND') {\n try {\n const packageManager = detectPackageManager();\n\n execSync(`${packageManager} add typescript`, {\n stdio: 'inherit',\n cwd: process.cwd()\n });\n\n console.log(\n colors.cyan(\n `TypeScript has been installed automatically, restarting...`\n )\n );\n\n ts = await import('typescript');\n\n return ts;\n } catch {\n panic(\n 'TypeScript is not installed and could not be installed automatically. Please install it manually.'\n );\n }\n }\n panic(e || 'TypeScript must be installed to use TypeScript config files.');\n }\n\n return ts;\n}\n\nexport async function loadConfigFileFromPath(\ntarget: string)\n: Promise<ResolvedCommandKitConfig> {\n await ensureExists(target);\n\n const isTs = await ensureTypeScript(target);\n\n if (isTs && ts) {\n const { transpileModule } = ts;\n const src = fs.readFileSync(target, 'utf8');\n const { outputText } = transpileModule(src, {\n compilerOptions: {\n module: ts.ModuleKind.ESNext,\n target: ts.ScriptTarget.ESNext,\n moduleResolution: ts.ModuleResolutionKind.NodeNext\n },\n fileName: target\n });\n\n const nodeModulesPath = await generateTypesPackage();\n\n const tmpFile = join(nodeModulesPath, 'compiled-commandkit.config.mjs');\n\n fs.writeFileSync(tmpFile, outputText);\n\n target = tmpFile;\n }\n\n /**\n * @type {import('..').CommandKitConfig}\n */\n const config = await import(`file://${target}`).then(\n (conf) => conf.default || conf\n );\n\n return config;\n}\n\nasync function ensureExists(loc: string) {\n const exists = fs.existsSync(loc);\n\n if (!exists) {\n throw new Error(`File not found: ${loc}`);\n }\n}\n\nexport function erase(dir: string) {\n rimrafSync(dir);\n}\n\nexport async function copyLocaleFiles(_from: string, _to: string) {\n const resolvedFrom = join(process.cwd(), _from);\n const resolvedTo = join(process.cwd(), _to);\n\n const localePaths = ['app/locales'];\n const srcLocalePaths = localePaths.map((path) => join(resolvedFrom, path));\n const destLocalePaths = localePaths.map((path) => join(resolvedTo, path));\n\n for (const localePath of srcLocalePaths) {\n if (!fs.existsSync(localePath)) {\n continue;\n }\n\n // copy localePath to destLocalePath\n const destLocalePath = destLocalePaths[srcLocalePaths.indexOf(localePath)];\n\n if (!fs.existsSync(destLocalePath)) {\n fs.promises.mkdir(destLocalePath, { recursive: true });\n }\n\n await fs.promises.cp(localePath, destLocalePath, {\n recursive: true,\n force: true\n });\n }\n}","import { createColors } from 'picocolors';\n\nexport default createColors(true);","import { mkdir, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { COMMANDKIT_IS_DEV } from './constants';\nimport { existsSync } from 'node:fs';\n\nexport async function generateTypesPackage(force = false) {\n const location = join(process.cwd(), 'node_modules', 'commandkit-types');\n if (!COMMANDKIT_IS_DEV && !force) return location;\n const packageJSON = join(location, 'package.json');\n const index = join(location, 'index.js');\n const types = join(location, 'index.d.ts');\n const command = join(location, 'command.d.ts');\n\n const packageJSONContent = {\n name: 'commandkit-types',\n version: '1.0.0',\n description: 'CommandKit types package',\n type: 'commonjs',\n main: 'index.js',\n types: 'index.d.ts'\n };\n\n const indexContent = `module.exports = {};`;\n\n // Restructuring the type declarations to properly extend rather than replace types\n const typesContent = `// Main types index file - imports all type declarations\nimport './command';\nexport {};\n`;\n\n // Properly set up command types to extend the CommandTypeData interface\n const commandTypesContent = `// Auto-generated command types\n export {};\ndeclare module 'commandkit' {\n type CommandTypeData = string\n}`;\n\n await mkdir(location, { recursive: true }).catch(() => {});\n await writeFile(packageJSON, JSON.stringify(packageJSONContent, null, 2));\n await writeFile(index, indexContent);\n await writeFile(types, typesContent);\n await writeFile(command, commandTypesContent);\n\n return location;\n}\n\nexport async function rewriteCommandDeclaration(data: string) {\n const commandTypesContent = `// Auto-generated command types\n declare module 'commandkit' {\n ${data}\n}\n export {};\n`;\n\n const location = join(process.cwd(), 'node_modules', 'commandkit-types');\n\n if (!existsSync(location)) return;\n\n const type = join(location, 'command.d.ts');\n\n await writeFile(type, commandTypesContent, { encoding: 'utf-8' });\n}","export const COMMANDKIT_CACHE_TAG = Symbol('kCommandKitCacheTag');\n\nexport const COMMANDKIT_IS_DEV = process.env.COMMANDKIT_IS_DEV === 'true';\n\nexport const COMMANDKIT_IS_TEST = process.env.COMMANDKIT_IS_TEST === 'true';\n\nexport const COMMANDKIT_BOOTSTRAP_MODE = (process.env.\nCOMMANDKIT_BOOTSTRAP_MODE || 'development') as 'development' | 'production';\n\n/**\n * Types of Hot Module Replacement events\n */\nexport const HMREventType = {\n ReloadCommands: 'reload-commands',\n ReloadEvents: 'reload-events',\n Unknown: 'unknown'\n} as const;\n\nexport type HMREventType = (typeof HMREventType)[keyof typeof HMREventType];"],"mappings":"6mBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA2B,cCA3B,IAAAC,EAA2B,kBAC3BC,EAAqB,gBACrBC,EAAe,iBCFf,IAAAC,EAA6B,sBAEtBC,KAAQ,gBAAa,EAAI,ECFhC,IAAAC,EAAiC,uBACjCC,EAAqB,gBCDd,IAAMC,EAAuB,OAAO,qBAAqB,EAEnDC,EAAoB,QAAQ,IAAI,oBAAsB,OAEtDC,EAAqB,QAAQ,IAAI,qBAAuB,OAExDC,EAA6B,QAAQ,IAClD,2BAA6B,cDJ7B,IAAAC,EAA2B,cFG3B,IAAAC,EAAyB,yBAEzB,IAAIC,EAEG,SAASC,EAAMC,EAAc,CAClC,QAAQ,OAAO,MAAMA,CAAO,EAC5B,QAAQ,OAAO,MAAM;AAAA,CAAI,CAC3B,CAHgBC,EAAAF,EAAA,SAiBT,SAASG,EAAMC,EAAqB,CACzCC,EAAMC,EAAO,IAAI,UAAUF,CAAO,EAAE,CAAC,EACrC,QAAQ,KAAK,CAAC,CAChB,CAHgBG,EAAAJ,EAAA,SA2BhB,IAAIK,EAEJ,SAASC,GAAuB,CAC9B,GAAID,EAAgB,OAAOA,EAE3B,IAAME,EAAY,CAChB,YAAa,OACb,iBAAkB,OAClB,oBAAqB,MACrB,WAAY,MACZ,YAAa,KACf,EAEA,OAAW,CAACC,EAAUC,CAAO,IAAK,OAAO,QAAQF,CAAS,EACxD,GAAI,EAAAG,QAAG,cAAW,QAAK,QAAQ,IAAI,EAAGF,CAAQ,CAAC,EAAG,CAChDH,EAAiBI,EACjB,KACF,CAGF,OAAKJ,IACHA,EAAiB,OAGZA,CACT,CAvBSM,EAAAL,EAAA,wBAyBT,eAAsBM,EAAeC,EAAY,CAC/C,GAAIC,EAAI,OAAOA,EAEf,GAAI,CACFA,EAAK,KAAM,QAAO,YAAY,CAChC,OAAS,EAAG,CACV,GAAI,aAAa,OAAS,SAAU,GAAK,EAAE,OAAS,mBAClD,GAAI,CACF,IAAMT,EAAiBC,EAAqB,EAE5C,qBAAS,GAAGD,CAAc,kBAAmB,CAC3C,MAAO,UACP,IAAK,QAAQ,IAAI,CACnB,CAAC,EAED,QAAQ,IACNU,EAAO,KACL,4DACF,CACF,EAEAD,EAAK,KAAM,QAAO,YAAY,EAEvBA,CACT,MAAQ,CACNE,EACE,mGACF,CACF,CAEFA,EAAM,GAAK,8DAA8D,CAC3E,CAEA,OAAOF,CACT,CAlCsBH,EAAAC,EAAA,kBD/EtB,IAAAK,EAA+B,gBAG/B,IAAMC,EAAmB,2IAKzB,SAASC,EACTC,EACAC,EACAC,EACS,CACP,IAAMC,EAAcH,EAAG,6BACrBC,EAAW,YACX;AAAA,CACF,EAEA,GAAI,CAACA,EAAW,KACd,MAAO,GAAGG,EAAO,IAAI,OAAO,CAAC,KAAKD,CAAW,GAG/C,GAAM,CAAE,KAAAE,EAAM,UAAAC,CAAU,EAAIN,EAAG,8BAC7BC,EAAW,KACXA,EAAW,KACb,EACMM,KAAW,YAASL,EAAKD,EAAW,KAAK,QAAQ,EACjDO,EAAW,GAAGH,EAAO,CAAC,IAAIC,EAAY,CAAC,GACvCG,EAAYR,EAAW,KAAO,KAAKA,EAAW,IAAI,GAAK,GAG7D,MAAO,CACP,GAAGG,EAAO,KAAKA,EAAO,KAAKG,CAAQ,CAAC,CAAC,IAAIH,EAAO,KAAKA,EAAO,OAAOI,CAAQ,CAAC,CAAC,MAAMJ,EAAO,IAAI,OAAO,CAAC,IAAIA,EAAO,KAAKK,CAAS,CAAC,GAChI,GAAGN,CAAW,EAAE,EAChB,KAAK;AAAA,CAAI,CACX,CA3BSO,EAAAX,EAAA,oBAiCT,eAAsBY,EAAiBC,EAAc,CACnD,IAAMC,KAAe,QAAKD,EAAM,eAAe,EAE/C,GAAI,IAAC,cAAWC,CAAY,EAAG,OAE/B,IAAMb,EAAK,MAAMc,EAAehB,CAAgB,EAG1CiB,EAAa,CACjB,qBAAsBL,EAACE,GAAiBA,EAAlB,wBACtB,oBAAqBZ,EAAG,IAAI,oBAC5B,WAAYU,EAAA,IAAMV,EAAG,IAAI,QAAb,aACd,EAGMgB,EAAahB,EAAG,eAAea,EAAcb,EAAG,IAAI,QAAQ,EAE9DgB,EAAW,QACb,QAAQ,MACNZ,EAAO,IACL,gCAAgCJ,EAAG,iBAAiBgB,EAAW,MAAOD,CAAU,CAAC,EACnF,CACF,EACA,QAAQ,KAAK,CAAC,GAIhB,IAAME,EAAejB,EAAG,2BACtBgB,EAAW,OACXhB,EAAG,IACHY,CACF,EAGAK,EAAa,QAAQ,OAAS,GAG9B,IAAMC,EAAUlB,EAAG,cAAc,CAC/B,UAAWiB,EAAa,UACxB,QAASA,EAAa,QACtB,kBAAmBA,EAAa,iBAClC,CAAC,EAGKE,EAAc,CACpB,GAAGD,EAAQ,sBAAsB,EACjC,GAAGA,EAAQ,qBAAqB,EAChC,GAAGA,EAAQ,wBAAwB,EACnC,GAAGA,EAAQ,uBAAuB,CAAC,EAInC,GAAIC,EAAY,OAAS,EAAG,CAC1B,QAAQ,IAAI,EAAE,EACd,QAAQ,MACNf,EAAO,KACLA,EAAO,IAAI,iDAAiD,CAC9D,CACF,EACA,QAAQ,IAAI,EAAE,EAGd,IAAMgB,EAAS,IAAI,IAEnB,QAAWnB,KAAckB,EAAa,CACpC,IAAMZ,EAAWN,EAAW,KAAOA,EAAW,KAAK,SAAW,SACzDmB,EAAO,IAAIb,CAAQ,GACtBa,EAAO,IAAIb,EAAU,CAAC,CAAC,EAEzBa,EAAO,IAAIb,CAAQ,EAAG,KAAKN,CAAU,CACvC,CAGA,IAAMoB,EAAcF,EAAY,OAC5BG,EAAU,EAEd,OAAW,CAACC,EAAGC,CAAS,IAAKJ,EAC3B,QAAWnB,KAAcuB,EACvBF,IACA,QAAQ,IAAIvB,EAAiBC,EAAIC,EAAYW,CAAI,CAAC,EAE9CU,EAAUD,GACZ,QAAQ,IAAI,EAAE,EAKpB,QAAQ,IAAI,EAAE,EACd,QAAQ,MACNjB,EAAO,KACLA,EAAO,IAAI,SAASiB,CAAW,SAASA,EAAc,EAAI,IAAM,EAAE,EAAE,CACtE,CACF,EACA,QAAQ,IAAI,EAAE,EAEd,QAAQ,KAAK,CAAC,CAChB,CAEA,QAAQ,IAAIjB,EAAO,MAAM,8CAAyC,CAAC,CACrE,CAnGsBM,EAAAC,EAAA","names":["type_checker_exports","__export","performTypeCheck","__toCommonJS","import_node_fs","import_rimraf","import_node_path","import_node_fs","import_picocolors","colors_default","import_promises","import_node_path","COMMANDKIT_CACHE_TAG","COMMANDKIT_IS_DEV","COMMANDKIT_IS_TEST","COMMANDKIT_BOOTSTRAP_MODE","import_node_fs","import_node_child_process","ts","write","message","__name","panic","message","write","colors_default","__name","packageManager","detectPackageManager","lockfiles","lockfile","manager","fs","__name","loadTypeScript","e","ts","colors_default","panic","import_node_path","TS_NOT_FOUND_ERR","formatDiagnostic","ts","diagnostic","cwd","messageText","colors_default","line","character","fileName","position","errorCode","__name","performTypeCheck","path","tsconfigPath","loadTypeScript","formatHost","configFile","parsedConfig","program","diagnostics","byFile","totalErrors","counter","_","fileDiags"]}
|
|
1
|
+
{"version":3,"sources":["../../src/cli/type-checker.ts","../../src/cli/common.ts","../../src/utils/colors.ts","../../src/utils/types-package.ts","../../src/utils/constants.ts"],"sourcesContent":["import { existsSync } from 'node:fs';\nimport { loadTypeScript } from './common';\nimport { join, relative } from 'node:path';\nimport colors from '../utils/colors';\n\nconst TS_NOT_FOUND_ERR = `TypeScript must be installed in order to use the type checker. Please install it using \\`npm install typescript\\` or \\`yarn add typescript\\``;\n\n/**\n * Formats a TypeScript diagnostic message in a pretty, readable format\n */\nfunction formatDiagnostic(\nts: typeof import('typescript'),\ndiagnostic: import('typescript').Diagnostic,\ncwd: string)\n: string {\n const messageText = ts.flattenDiagnosticMessageText(\n diagnostic.messageText,\n '\\n'\n );\n\n if (!diagnostic.file) {\n return `${colors.red('error')}: ${messageText}`;\n }\n\n const { line, character } = ts.getLineAndCharacterOfPosition(\n diagnostic.file,\n diagnostic.start!\n );\n const fileName = relative(cwd, diagnostic.file.fileName);\n const position = `${line + 1}:${character + 1}`;\n const errorCode = diagnostic.code ? `TS${diagnostic.code}` : '';\n\n // Format the error message nicely\n return [\n `${colors.bold(colors.cyan(fileName))}:${colors.bold(colors.yellow(position))} - ${colors.red('error')} ${colors.gray(errorCode)}`,\n `${messageText}`].\n join('\\n');\n}\n\n/**\n * Performs a type check on the project using TypeScript.\n * @param path The project root or cwd\n */\nexport async function performTypeCheck(path: string) {\n const tsconfigPath = join(path, 'tsconfig.json');\n\n if (!existsSync(tsconfigPath)) return;\n\n const ts = await loadTypeScript(TS_NOT_FOUND_ERR);\n\n // Format host for error reporting\n const formatHost = {\n getCanonicalFileName: (path: string) => path,\n getCurrentDirectory: ts.sys.getCurrentDirectory,\n getNewLine: () => ts.sys.newLine\n };\n\n // Read tsconfig.json\n const configFile = ts.readConfigFile(tsconfigPath, ts.sys.readFile);\n\n if (configFile.error) {\n console.error(\n colors.red(\n `Error reading tsconfig.json: ${ts.formatDiagnostic(configFile.error, formatHost)}`\n )\n );\n process.exit(1);\n }\n\n // Parse the config file\n const parsedConfig = ts.parseJsonConfigFileContent(\n configFile.config,\n ts.sys,\n path\n );\n\n // Force noEmit to true as we only want type checking\n parsedConfig.options.noEmit = true;\n\n // Create a program\n const program = ts.createProgram({\n rootNames: parsedConfig.fileNames,\n options: parsedConfig.options,\n projectReferences: parsedConfig.projectReferences\n });\n\n // Get the diagnostics\n const diagnostics = [\n ...program.getOptionsDiagnostics(),\n ...program.getGlobalDiagnostics(),\n ...program.getSyntacticDiagnostics(),\n ...program.getSemanticDiagnostics()];\n\n\n // Report any errors\n if (diagnostics.length > 0) {\n console.log('');\n console.error(\n colors.bold(\n colors.red('Type checking failed with the following errors:')\n )\n );\n console.log('');\n\n // Group diagnostics by file for better readability\n const byFile = new Map<string, import('typescript').Diagnostic[]>();\n\n for (const diagnostic of diagnostics) {\n const fileName = diagnostic.file ? diagnostic.file.fileName : 'Global';\n if (!byFile.has(fileName)) {\n byFile.set(fileName, []);\n }\n byFile.get(fileName)!.push(diagnostic);\n }\n\n // Pretty-print each diagnostic\n const totalErrors = diagnostics.length;\n let counter = 0;\n\n for (const [_, fileDiags] of byFile) {\n for (const diagnostic of fileDiags) {\n counter++;\n console.log(formatDiagnostic(ts, diagnostic, path));\n // Add separator between errors for better readability, except for the last one\n if (counter < totalErrors) {\n console.log('');\n }\n }\n }\n\n console.log('');\n console.error(\n colors.bold(\n colors.red(`Found ${totalErrors} error${totalErrors > 1 ? 's' : ''}`)\n )\n );\n console.log('');\n\n process.exit(1);\n }\n\n console.log(colors.green('✓ Type checking completed successfully.'));\n}","import { rimrafSync } from 'rimraf';\nimport { join } from 'node:path';\nimport fs from 'node:fs';\nimport colors from '../utils/colors';\nimport { ResolvedCommandKitConfig } from '../config/utils';\nimport { generateTypesPackage } from '../utils/types-package';\nimport { execSync } from 'node:child_process';\n\nlet ts: typeof import('typescript') | undefined;\n\nexport function write(message: any) {\n process.stdout.write(message);\n process.stdout.write('\\n');\n}\n\nexport function findEntrypoint(dir: string) {\n const target = join(dir, 'sharding-manager.js');\n\n // if sharding manager exists, return that file instead\n if (fs.existsSync(target)) return target;\n\n return join(dir, 'index.js');\n}\n\n/**\n * @returns {never}\n */\nexport function panic(message: any): never {\n write(colors.red(`Error: ${message}`));\n process.exit(1);\n}\n\nexport function findPackageJSON() {\n const cwd = process.cwd();\n const target = join(cwd, 'package.json');\n\n if (!fs.existsSync(target)) {\n panic('Could not find package.json in current directory.');\n }\n\n return JSON.parse(fs.readFileSync(target, 'utf8'));\n}\n\nasync function ensureTypeScript(target: string) {\n const isTypeScript = /\\.(c|m)?tsx?$/.test(target);\n\n if (!isTypeScript) return false;\n if (process.features.typescript) return true;\n\n await loadTypeScript();\n\n return true;\n}\n\nlet packageManager: string;\n\nfunction detectPackageManager() {\n if (packageManager) return packageManager;\n\n const lockfiles = {\n 'yarn.lock': 'yarn',\n 'pnpm-lock.yaml': 'pnpm',\n 'package-lock.json': 'npm',\n 'bun.lock': 'bun',\n 'bun.lockb': 'bun'\n };\n\n for (const [lockfile, manager] of Object.entries(lockfiles)) {\n if (fs.existsSync(join(process.cwd(), lockfile))) {\n packageManager = manager;\n break;\n }\n }\n\n if (!packageManager) {\n packageManager = 'npm';\n }\n\n return packageManager;\n}\n\nexport async function loadTypeScript(e?: string) {\n if (ts) return ts;\n\n try {\n ts = await import('typescript');\n } catch (e) {\n if (e instanceof Error && 'code' in e && e.code === 'MODULE_NOT_FOUND') {\n try {\n const packageManager = detectPackageManager();\n\n execSync(`${packageManager} add typescript`, {\n stdio: 'inherit',\n cwd: process.cwd()\n });\n\n console.log(\n colors.cyan(\n `TypeScript has been installed automatically, restarting...`\n )\n );\n\n ts = await import('typescript');\n\n return ts;\n } catch {\n panic(\n 'TypeScript is not installed and could not be installed automatically. Please install it manually.'\n );\n }\n }\n panic(e || 'TypeScript must be installed to use TypeScript config files.');\n }\n\n return ts;\n}\n\nexport async function loadConfigFileFromPath(\ntarget: string)\n: Promise<ResolvedCommandKitConfig> {\n await ensureExists(target);\n\n const isTs = await ensureTypeScript(target);\n\n let generatedFilePath: string | undefined;\n\n if (isTs && ts) {\n const { transpileModule } = ts;\n const src = fs.readFileSync(target, 'utf8');\n const { outputText } = transpileModule(src, {\n compilerOptions: {\n module: ts.ModuleKind.ESNext,\n target: ts.ScriptTarget.ESNext,\n moduleResolution: ts.ModuleResolutionKind.NodeNext\n },\n fileName: target\n });\n\n await generateTypesPackage();\n\n const nodeModulesPath = process.cwd();\n\n const tmpFile = join(nodeModulesPath, 'compiled-commandkit.config.mjs');\n\n fs.writeFileSync(tmpFile, outputText);\n\n generatedFilePath = tmpFile;\n\n target = tmpFile;\n }\n\n /**\n * @type {import('..').CommandKitConfig}\n */\n const config = await import(`file://${target}`).then(\n (conf) => conf.default || conf\n );\n\n if (generatedFilePath) {\n try {\n fs.unlinkSync(generatedFilePath);\n } catch {\n\n //\n }}\n\n return config;\n}\n\nasync function ensureExists(loc: string) {\n const exists = fs.existsSync(loc);\n\n if (!exists) {\n throw new Error(`File not found: ${loc}`);\n }\n}\n\nexport function erase(dir: string) {\n rimrafSync(dir);\n}\n\nexport async function copyLocaleFiles(_from: string, _to: string) {\n const resolvedFrom = join(process.cwd(), _from);\n const resolvedTo = join(process.cwd(), _to);\n\n const localePaths = ['app/locales'];\n const srcLocalePaths = localePaths.map((path) => join(resolvedFrom, path));\n const destLocalePaths = localePaths.map((path) => join(resolvedTo, path));\n\n for (const localePath of srcLocalePaths) {\n if (!fs.existsSync(localePath)) {\n continue;\n }\n\n // copy localePath to destLocalePath\n const destLocalePath = destLocalePaths[srcLocalePaths.indexOf(localePath)];\n\n if (!fs.existsSync(destLocalePath)) {\n fs.promises.mkdir(destLocalePath, { recursive: true });\n }\n\n await fs.promises.cp(localePath, destLocalePath, {\n recursive: true,\n force: true\n });\n }\n}","import { createColors } from 'picocolors';\n\nexport default createColors(true);","import { mkdir, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { COMMANDKIT_IS_DEV } from './constants';\nimport { existsSync } from 'node:fs';\n\nexport async function generateTypesPackage(force = false) {\n const location = join(process.cwd(), 'node_modules', 'commandkit-types');\n if (!COMMANDKIT_IS_DEV && !force) return location;\n const packageJSON = join(location, 'package.json');\n const index = join(location, 'index.js');\n const types = join(location, 'index.d.ts');\n const command = join(location, 'command.d.ts');\n\n const packageJSONContent = {\n name: 'commandkit-types',\n version: '1.0.0',\n description: 'CommandKit types package',\n type: 'commonjs',\n main: 'index.js',\n types: 'index.d.ts'\n };\n\n const indexContent = `module.exports = {};`;\n\n // Restructuring the type declarations to properly extend rather than replace types\n const typesContent = `// Main types index file - imports all type declarations\nimport './command';\nexport {};\n`;\n\n // Properly set up command types to extend the CommandTypeData interface\n const commandTypesContent = `// Auto-generated command types\n export {};\ndeclare module 'commandkit' {\n type CommandTypeData = string\n}`;\n\n await mkdir(location, { recursive: true }).catch(() => {});\n await writeFile(packageJSON, JSON.stringify(packageJSONContent, null, 2));\n await writeFile(index, indexContent);\n await writeFile(types, typesContent);\n await writeFile(command, commandTypesContent);\n\n return location;\n}\n\nexport async function rewriteCommandDeclaration(data: string) {\n const commandTypesContent = `// Auto-generated command types\n declare module 'commandkit' {\n ${data}\n}\n export {};\n`;\n\n const location = join(process.cwd(), 'node_modules', 'commandkit-types');\n\n if (!existsSync(location)) return;\n\n const type = join(location, 'command.d.ts');\n\n await writeFile(type, commandTypesContent, { encoding: 'utf-8' });\n}","export const COMMANDKIT_CACHE_TAG = Symbol('kCommandKitCacheTag');\n\nexport const COMMANDKIT_IS_DEV = process.env.COMMANDKIT_IS_DEV === 'true';\n\nexport const COMMANDKIT_IS_TEST = process.env.COMMANDKIT_IS_TEST === 'true';\n\nexport const COMMANDKIT_BOOTSTRAP_MODE = (process.env.\nCOMMANDKIT_BOOTSTRAP_MODE || 'development') as 'development' | 'production';\n\n/**\n * Types of Hot Module Replacement events\n */\nexport const HMREventType = {\n ReloadCommands: 'reload-commands',\n ReloadEvents: 'reload-events',\n Unknown: 'unknown'\n} as const;\n\nexport type HMREventType = (typeof HMREventType)[keyof typeof HMREventType];"],"mappings":"6mBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA2B,cCA3B,IAAAC,EAA2B,kBAC3BC,EAAqB,gBACrBC,EAAe,iBCFf,IAAAC,EAA6B,sBAEtBC,KAAQ,gBAAa,EAAI,ECFhC,IAAAC,EAAiC,uBACjCC,EAAqB,gBCDd,IAAMC,EAAuB,OAAO,qBAAqB,EAEnDC,EAAoB,QAAQ,IAAI,oBAAsB,OAEtDC,EAAqB,QAAQ,IAAI,qBAAuB,OAExDC,EAA6B,QAAQ,IAClD,2BAA6B,cDJ7B,IAAAC,EAA2B,cFG3B,IAAAC,EAAyB,yBAEzB,IAAIC,EAEG,SAASC,EAAMC,EAAc,CAClC,QAAQ,OAAO,MAAMA,CAAO,EAC5B,QAAQ,OAAO,MAAM;AAAA,CAAI,CAC3B,CAHgBC,EAAAF,EAAA,SAiBT,SAASG,EAAMC,EAAqB,CACzCC,EAAMC,EAAO,IAAI,UAAUF,CAAO,EAAE,CAAC,EACrC,QAAQ,KAAK,CAAC,CAChB,CAHgBG,EAAAJ,EAAA,SA2BhB,IAAIK,EAEJ,SAASC,GAAuB,CAC9B,GAAID,EAAgB,OAAOA,EAE3B,IAAME,EAAY,CAChB,YAAa,OACb,iBAAkB,OAClB,oBAAqB,MACrB,WAAY,MACZ,YAAa,KACf,EAEA,OAAW,CAACC,EAAUC,CAAO,IAAK,OAAO,QAAQF,CAAS,EACxD,GAAI,EAAAG,QAAG,cAAW,QAAK,QAAQ,IAAI,EAAGF,CAAQ,CAAC,EAAG,CAChDH,EAAiBI,EACjB,KACF,CAGF,OAAKJ,IACHA,EAAiB,OAGZA,CACT,CAvBSM,EAAAL,EAAA,wBAyBT,eAAsBM,EAAeC,EAAY,CAC/C,GAAIC,EAAI,OAAOA,EAEf,GAAI,CACFA,EAAK,KAAM,QAAO,YAAY,CAChC,OAAS,EAAG,CACV,GAAI,aAAa,OAAS,SAAU,GAAK,EAAE,OAAS,mBAClD,GAAI,CACF,IAAMT,EAAiBC,EAAqB,EAE5C,qBAAS,GAAGD,CAAc,kBAAmB,CAC3C,MAAO,UACP,IAAK,QAAQ,IAAI,CACnB,CAAC,EAED,QAAQ,IACNU,EAAO,KACL,4DACF,CACF,EAEAD,EAAK,KAAM,QAAO,YAAY,EAEvBA,CACT,MAAQ,CACNE,EACE,mGACF,CACF,CAEFA,EAAM,GAAK,8DAA8D,CAC3E,CAEA,OAAOF,CACT,CAlCsBH,EAAAC,EAAA,kBD/EtB,IAAAK,EAA+B,gBAG/B,IAAMC,EAAmB,2IAKzB,SAASC,EACTC,EACAC,EACAC,EACS,CACP,IAAMC,EAAcH,EAAG,6BACrBC,EAAW,YACX;AAAA,CACF,EAEA,GAAI,CAACA,EAAW,KACd,MAAO,GAAGG,EAAO,IAAI,OAAO,CAAC,KAAKD,CAAW,GAG/C,GAAM,CAAE,KAAAE,EAAM,UAAAC,CAAU,EAAIN,EAAG,8BAC7BC,EAAW,KACXA,EAAW,KACb,EACMM,KAAW,YAASL,EAAKD,EAAW,KAAK,QAAQ,EACjDO,EAAW,GAAGH,EAAO,CAAC,IAAIC,EAAY,CAAC,GACvCG,EAAYR,EAAW,KAAO,KAAKA,EAAW,IAAI,GAAK,GAG7D,MAAO,CACP,GAAGG,EAAO,KAAKA,EAAO,KAAKG,CAAQ,CAAC,CAAC,IAAIH,EAAO,KAAKA,EAAO,OAAOI,CAAQ,CAAC,CAAC,MAAMJ,EAAO,IAAI,OAAO,CAAC,IAAIA,EAAO,KAAKK,CAAS,CAAC,GAChI,GAAGN,CAAW,EAAE,EAChB,KAAK;AAAA,CAAI,CACX,CA3BSO,EAAAX,EAAA,oBAiCT,eAAsBY,EAAiBC,EAAc,CACnD,IAAMC,KAAe,QAAKD,EAAM,eAAe,EAE/C,GAAI,IAAC,cAAWC,CAAY,EAAG,OAE/B,IAAMb,EAAK,MAAMc,EAAehB,CAAgB,EAG1CiB,EAAa,CACjB,qBAAsBL,EAACE,GAAiBA,EAAlB,wBACtB,oBAAqBZ,EAAG,IAAI,oBAC5B,WAAYU,EAAA,IAAMV,EAAG,IAAI,QAAb,aACd,EAGMgB,EAAahB,EAAG,eAAea,EAAcb,EAAG,IAAI,QAAQ,EAE9DgB,EAAW,QACb,QAAQ,MACNZ,EAAO,IACL,gCAAgCJ,EAAG,iBAAiBgB,EAAW,MAAOD,CAAU,CAAC,EACnF,CACF,EACA,QAAQ,KAAK,CAAC,GAIhB,IAAME,EAAejB,EAAG,2BACtBgB,EAAW,OACXhB,EAAG,IACHY,CACF,EAGAK,EAAa,QAAQ,OAAS,GAG9B,IAAMC,EAAUlB,EAAG,cAAc,CAC/B,UAAWiB,EAAa,UACxB,QAASA,EAAa,QACtB,kBAAmBA,EAAa,iBAClC,CAAC,EAGKE,EAAc,CACpB,GAAGD,EAAQ,sBAAsB,EACjC,GAAGA,EAAQ,qBAAqB,EAChC,GAAGA,EAAQ,wBAAwB,EACnC,GAAGA,EAAQ,uBAAuB,CAAC,EAInC,GAAIC,EAAY,OAAS,EAAG,CAC1B,QAAQ,IAAI,EAAE,EACd,QAAQ,MACNf,EAAO,KACLA,EAAO,IAAI,iDAAiD,CAC9D,CACF,EACA,QAAQ,IAAI,EAAE,EAGd,IAAMgB,EAAS,IAAI,IAEnB,QAAWnB,KAAckB,EAAa,CACpC,IAAMZ,EAAWN,EAAW,KAAOA,EAAW,KAAK,SAAW,SACzDmB,EAAO,IAAIb,CAAQ,GACtBa,EAAO,IAAIb,EAAU,CAAC,CAAC,EAEzBa,EAAO,IAAIb,CAAQ,EAAG,KAAKN,CAAU,CACvC,CAGA,IAAMoB,EAAcF,EAAY,OAC5BG,EAAU,EAEd,OAAW,CAACC,EAAGC,CAAS,IAAKJ,EAC3B,QAAWnB,KAAcuB,EACvBF,IACA,QAAQ,IAAIvB,EAAiBC,EAAIC,EAAYW,CAAI,CAAC,EAE9CU,EAAUD,GACZ,QAAQ,IAAI,EAAE,EAKpB,QAAQ,IAAI,EAAE,EACd,QAAQ,MACNjB,EAAO,KACLA,EAAO,IAAI,SAASiB,CAAW,SAASA,EAAc,EAAI,IAAM,EAAE,EAAE,CACtE,CACF,EACA,QAAQ,IAAI,EAAE,EAEd,QAAQ,KAAK,CAAC,CAChB,CAEA,QAAQ,IAAIjB,EAAO,MAAM,8CAAyC,CAAC,CACrE,CAnGsBM,EAAAC,EAAA","names":["type_checker_exports","__export","performTypeCheck","__toCommonJS","import_node_fs","import_rimraf","import_node_path","import_node_fs","import_picocolors","colors_default","import_promises","import_node_path","COMMANDKIT_CACHE_TAG","COMMANDKIT_IS_DEV","COMMANDKIT_IS_TEST","COMMANDKIT_BOOTSTRAP_MODE","import_node_fs","import_node_child_process","ts","write","message","__name","panic","message","write","colors_default","__name","packageManager","detectPackageManager","lockfiles","lockfile","manager","fs","__name","loadTypeScript","e","ts","colors_default","panic","import_node_path","TS_NOT_FOUND_ERR","formatDiagnostic","ts","diagnostic","cwd","messageText","colors_default","line","character","fileName","position","errorCode","__name","performTypeCheck","path","tsconfigPath","loadTypeScript","formatHost","configFile","parsedConfig","program","diagnostics","byFile","totalErrors","counter","_","fileDiags"]}
|
package/dist/components/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";var jr=Object.create;var Ie=Object.defineProperty;var _r=Object.getOwnPropertyDescriptor;var Wr=Object.getOwnPropertyNames;var Vr=Object.getPrototypeOf,qr=Object.prototype.hasOwnProperty;var Dn=n=>{throw TypeError(n)};var zr=(n,e,t)=>e in n?Ie(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var i=(n,e)=>Ie(n,"name",{value:e,configurable:!0});var Jr=(n,e)=>{for(var t in e)Ie(n,t,{get:e[t],enumerable:!0})},Tn=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Wr(e))!qr.call(n,o)&&o!==t&&Ie(n,o,{get:()=>e[o],enumerable:!(r=_r(e,o))||r.enumerable});return n};var ce=(n,e,t)=>(t=n!=null?jr(Vr(n)):{},Tn(e||!n||!n.__esModule?Ie(t,"default",{value:n,enumerable:!0}):t,n)),Yr=n=>Tn(Ie({},"__esModule",{value:!0}),n);var E=(n,e,t)=>zr(n,typeof e!="symbol"?e+"":e,t),Dt=(n,e,t)=>e.has(n)||Dn("Cannot "+t);var s=(n,e,t)=>(Dt(n,e,"read from private field"),t?t.call(n):e.get(n)),h=(n,e,t)=>e.has(n)?Dn("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,t),d=(n,e,t,r)=>(Dt(n,e,"write to private field"),r?r.call(n,t):e.set(n,t),t),C=(n,e,t)=>(Dt(n,e,"access private method"),t);var Wo={};Jr(Wo,{ActionRow:()=>Xr,Button:()=>
|
|
2
|
-
${o} ${x.dim(et.corner)}`,...t.map(a=>l(a))):this.logger.log(`${r} ${x.dim(et.corner)}`,...t.map(a=>l(a)))}debug(...e){this._log(0,...e)}error(...e){this._log(3,...e)}log(...e){this._log(4,...e)}info(...e){this._log(1,...e)}warn(...e){this._log(2,...e)}};i(Ot,"DefaultLogger");var tt=Ot;function no(n){let e=n;if(!(e!=null&&e.provider))throw new Error("A logger provider must be provided.");let t=["log","error","warn","info","debug"],r={configure(o){e=o}};for(let o of t)r[o]=(...l)=>{e.provider[o](...l)};return r}i(no,"createLogger");var y=no({provider:new tt});var Lt=class Lt{constructor(e){this.commandkit=e}plugins=new $n.Collection;getPlugins(){return this.plugins}getPlugin(e){return this.plugins.get(e)??null}async softRegisterPlugin(e){let t=e.name;if(!this.plugins.has(t))try{await e.activate(this),this.plugins.set(t,e)}catch(r){throw new Error(`Failed to activate plugin "${t}": ${(r==null?void 0:r.stack)||r}`)}}async registerPlugin(e){let t=e.name;if(this.plugins.has(t))throw new Error(`Plugin with name "${t}" already exists.`);try{await e.activate(this),this.plugins.set(t,e)}catch(r){throw new Error(`Failed to activate plugin "${t}": ${(r==null?void 0:r.stack)||r}`)}}async unregisterPlugin(e){let t=e.name;if(!this.plugins.has(t))throw new Error(`Plugin with name "${t}" does not exist.`);this.plugins.delete(t);try{await e.deactivate(this)}catch(r){throw new Error(`Failed to deactivate plugin "${t}": ${(r==null?void 0:r.stack)||r}`)}}async unregisterAllPlugins(){for(let e of this.plugins.values())await this.unregisterPlugin(e)}capture(){throw me(M.PluginCaptureHandle)}async execute(e){let t;for(let r of this.plugins.values())try{t=await e(this,r)}catch(o){if(q(o,M.PluginCaptureHandle))return!0;y.error(`Plugin "${r.name}" failed`,(o==null?void 0:o.stack)||o)}return t}};i(Lt,"CommandKitPluginRuntime");var nt=Lt;var ro=require("fs/promises");var $t=class $t extends Re{name="MacroPlugin";macroTransformer;async activate(){let e=await import("use-macro");this.macroTransformer=new e.MacroTransformer}async deactivate(){this.macroTransformer=null}async transform(e){if(!this.options.enabled)return null;let{contents:t,loader:r}=await this.macroTransformer.transform(e.contents.toString(),e.path);return{contents:t,loader:r}}};i($t,"MacroPlugin");var rt=$t;var Fn={plugins:[new rt({enabled:!0})],esbuildPlugins:[],compilerOptions:{macro:{development:!1}},static:!0,typescript:{ignoreBuildErrors:!1},distDir:"dist",env:{},sourceMap:{development:!0,production:!0},typedCommands:!0};var oo=Fn;function ot(){return oo}i(ot,"getConfig");var Un=require("async_hooks");var io=Symbol("commandkitEventWorker"),Nn=new Un.AsyncLocalStorage;function Ft(n,e){return Reflect.set(n,io,!0),Nn.run(n,e)}i(Ft,"runInEventWorkerContext");var Ut=null;function Hn(){if(Ut)return Ut;let n=(0,Ht.join)(process.cwd(),W?".commandkit":ot().distDir);(0,Nt.existsSync)(n)||(n=process.cwd());let e=["app"].map(t=>(0,Ht.join)(n,t));for(let t of e)if((0,Nt.existsSync)(t))return Ut=t,t;return null}i(Hn,"findAppDirectory");var Gt=class Gt extends Error{constructor(){super("Event propagation stopped"),this.name="StopEventPropagationError"}};i(Gt,"StopEventPropagationError");var Oe=Gt;var un=require("path");var R=require("discord.js");var Gn=ce(require("path"));function Le(n,e=!1){return`${"file://"+Gn.default.resolve(n).replace(/\\\\|\\/g,"/")}${e?`?ts=${Date.now()}`:""}`}i(Le,"toFileURL");var $=require("discord.js");var ue,Pe,$e,_t=class _t{constructor(e,t,r){this.message=e;this.prefix=t;this.schema=r;h(this,ue,null);h(this,Pe,null);h(this,$e,[])}getArgs(){return this.parse(),s(this,$e)}get options(){return s(this,Pe)||d(this,Pe,new jt(this)),s(this,Pe)}getOption(e){var t;return(t=this.parse().options.find(r=>r.name===e))==null?void 0:t.value}getCommand(){return this.parse().command}getSubcommand(){return this.parse().subcommand}getSubcommandGroup(){return this.parse().subcommandGroup}getPrefix(){for(let e of this.prefix)if(this.message.content.startsWith(e))return e}getFullCommand(){return[this.getCommand(),this.getSubcommandGroup(),this.getSubcommand()].filter(e=>e).join(" ")}parse(){if(s(this,ue))return s(this,ue);let e=this.message.content,t=this.getPrefix();if(!t)throw me(M.InvalidCommandPrefix);let r=e.slice(t.length).trim().split(" "),o=r.shift();d(this,$e,r);let l,a;if(o!=null&&o.includes(":")){let[,u,p]=o.split(":");!p&&u?a=u:p&&u&&(l=u,a=p)}let c=this.schema([o,l,a].filter(Boolean).join(" ").trim()),m=r.map(u=>{try{let[p,g]=u.split(":");if(!(p in c))return null;switch(c[p]){case $.ApplicationCommandOptionType.Boolean:return{name:p,value:g==="true"};case $.ApplicationCommandOptionType.Integer:return{name:p,value:parseInt(g,10)};case $.ApplicationCommandOptionType.Number:return{name:p,value:parseFloat(g)};case $.ApplicationCommandOptionType.String:return{name:p,value:g};case $.ApplicationCommandOptionType.User:return{name:p,value:this.message.mentions.users.find(b=>b.id===g.replace(/[<@!>]/g,""))};case $.ApplicationCommandOptionType.Channel:return{name:p,value:this.message.mentions.channels.find(b=>b.id===g.replace(/[<#>]/g,""))};case $.ApplicationCommandOptionType.Role:return{name:p,value:this.message.mentions.roles.find(b=>b.id===g.replace(/[<@&>]/g,""))};case $.ApplicationCommandOptionType.Attachment:return{name:p,value:this.message.attachments.find(b=>b.name===g)};default:return null}}catch{return null}}).filter(u=>u!==null);return d(this,ue,{command:o,options:m,subcommand:a,subcommandGroup:l}),s(this,ue)}};ue=new WeakMap,Pe=new WeakMap,$e=new WeakMap,i(_t,"MessageCommandParser");var it=_t,Wt=class Wt{constructor(e){this.parser=e}assertOption(e,t=!1){let r=this.parser.getOption(e);if(t&&r===void 0)throw new Error(`Option "${e}" is required.`);return r??null}getMember(e,t=!1){var l;let r=this.assertOption(e,t),o=(l=this.parser.message.guild)==null?void 0:l.members.cache.get(r==null?void 0:r.id);if(t&&!o)throw new Error(`Member "${e}" is required.`);return o??null}getAttachment(e,t=!1){return this.assertOption(e,t)}getBoolean(e,t=!1){return this.assertOption(e,t)}getNumber(e,t=!1){return this.assertOption(e,t)}getString(e,t=!1){return this.assertOption(e,t)}getInteger(e,t=!1){return this.assertOption(e,t)}getUser(e,t=!1){return this.assertOption(e,t)}getChannel(e,t=!1){return this.assertOption(e,t)}getRole(e,t=!1){return this.assertOption(e,t)}getMentionable(e,t=!1){let r=this.assertOption(e,t);if(r instanceof $.GuildMember||r instanceof $.User||r instanceof $.Role)return r;if(t)throw new Error(`Mentionable "${e}" is required.`);return null}getSubcommand(e=!1){let t=this.parser.getSubcommand();if(e&&t===void 0)throw new Error("Subcommand is required.");return t??null}getSubcommandGroup(e=!1){let t=this.parser.getSubcommandGroup();if(e&&t===void 0)throw new Error("Subcommand group is required.");return t??null}};i(Wt,"MessageCommandOptions");var jt=Wt;var z=require("discord.js");var Vt=class Vt{constructor(e){this.commandkit=e;this.api.setToken(this.commandkit.client.token??process.env.DISCORD_TOKEN??process.env.TOKEN??"")}api=new z.REST;getCommandsData(){return this.commandkit.commandHandler.getCommandsArray().flatMap(r=>{let o="toJSON"in r.data.command?r.data.command.toJSON():r.data.command,l=[o];return r.data.userContextMenu&&o.type!==z.ApplicationCommandType.User&&l.push({...o,type:z.ApplicationCommandType.User,options:void 0,description_localizations:void 0,description:void 0}),r.data.messageContextMenu&&o.type!==z.ApplicationCommandType.Message&&l.push({...o,type:z.ApplicationCommandType.Message,description_localizations:void 0,description:void 0,options:void 0}),l})}async register(){let e=this.getCommandsData(),t=!1,r={preventDefault(){t=!0},commands:e};if(await this.commandkit.plugins.execute(async(a,c)=>{if(!t)return c.onBeforeRegisterCommands(a,r)}),t)return;if(!this.commandkit.client.isReady())throw new Error("Cannot register commands before the client is ready");let o=e.filter(a=>{var c;return(c=a.guilds)==null?void 0:c.filter(Boolean).length}).map(a=>{var c;return{...a,guilds:Array.from(new Set((c=a.guilds)==null?void 0:c.filter(Boolean)))}}),l=e.filter(a=>{var c;return!((c=a.guilds)!=null&&c.filter(Boolean).length)});await this.updateGlobalCommands(l),await this.updateGuildCommands(o)}async updateGlobalCommands(e){if(!e.length)return;let t=!1,r={preventDefault(){t=!0},commands:e};await this.commandkit.plugins.execute(async(o,l)=>{if(!t)return l.onBeforeRegisterGlobalCommands(o,r)});try{let o=await this.api.put(z.Routes.applicationCommands(this.commandkit.client.user.id),{body:e.map(l=>({...l,guilds:void 0}))});y.info(`\u2728 Refreshed ${o.length} global application (/) commands`)}catch(o){y.error("Failed to update global application (/) commands",o)}}async updateGuildCommands(e){if(!e.length)return;let t=!1,r={preventDefault(){t=!0},commands:e};if(await this.commandkit.plugins.execute(async(o,l)=>{if(!t)return l.onBeforePrepareGuildCommandsRegistration(o,r)}),!t)try{let o=new Map;if(e.forEach(a=>{var c;(c=a.guilds)!=null&&c.length&&a.guilds.forEach(m=>{o.has(m)||o.set(m,[]),o.get(m).push(a)})}),!o.size)return;let l=0;for(let[a,c]of o){let m=!1,u={preventDefault(){m=!0},commands:c};if(await this.commandkit.plugins.execute(async(g,b)=>{if(!m)return b.onBeforeRegisterGuildCommands(g,u)}),m)continue;let p=await this.api.put(z.Routes.applicationGuildCommands(this.commandkit.client.user.id,a),{body:c.map(g=>({...g,guilds:void 0}))});l+=p.length}y.info(`\u2728 Refreshed ${l} guild application (/) commands`)}catch(o){y.error("Failed to update guild application (/) commands",o)}}};i(Vt,"CommandRegistrar");var at=Vt;var lt=require("discord.js");var jn=require("crypto");var w,qt=class qt{constructor(e){this.commandkit=e;h(this,w,{executionError:null,type:null,variables:new Map,deferredFunctions:new Map,marker:"",markStart:0,markEnd:0,context:null})}setContext(e){s(this,w).context=e}get context(){return s(this,w).context}getExecutionError(){return s(this,w).executionError}setExecutionError(e){if(s(this,w).executionError)throw new Error("Execution error already set.");s(this,w).executionError=e}getType(){let e=s(this,w).type;if(!e)throw new Error("Environment type not set.");return e}setType(e){s(this,w).type=e}get variables(){return s(this,w).variables}registerDeferredFunction(e){let t=(0,jn.randomUUID)();return s(this,w).deferredFunctions.set(t,e),t}clearDeferredFunction(e){s(this,w).deferredFunctions.delete(e)}async runDeferredFunctions(){for(let[e,t]of s(this,w).deferredFunctions)try{await t(this)}catch(r){this.commandkit.emit("unhandledDeferredFunctionRejection",r)}finally{this.clearDeferredFunction(e)}}clearAllDeferredFunctions(){s(this,w).deferredFunctions.clear()}markStart(e){s(this,w).marker=e,s(this,w).markStart=performance.now()}markEnd(){s(this,w).markEnd||(s(this,w).markEnd=performance.now())}getMarker(){return s(this,w).marker}getExecutionTime(){return Math.abs(s(this,w).markEnd-s(this,w).markStart)}};w=new WeakMap,i(qt,"CommandKitEnvironment");var st=qt;function _n(){throw me(M.ExitMiddleware)}i(_n,"exitMiddleware");function Wn(){throw me(M.ForwardedCommand)}i(Wn,"redirect");var F={ChatInputCommand:"chatInput",MessageContextMenu:"messageContextMenu",UserContextMenu:"userContextMenu",Autocomplete:"autocomplete",Message:"message"},Ke,Fe=class Fe{constructor(e,t){this.commandkit=e;this.config=t;E(this,"interaction");E(this,"message");E(this,"guild");E(this,"guildId");E(this,"channel");E(this,"channelId");E(this,"client");E(this,"command");h(this,Ke);E(this,"_locale",null);this.interaction=t.interaction,this.message=t.message,this.client=e.client,d(this,Ke,t.store??new Map),this.command=t.command,t.interaction&&(this.guild=t.interaction.guild,this.guildId=t.interaction.guildId,this.channel=t.interaction.channel,this.channelId=t.interaction.channelId),t.message&&(this.guild=t.message.guild,this.guildId=t.message.guildId,this.channel=t.message.channel,this.channelId=t.message.channelId),this.config.environment&&this.config.environment.setContext(this)}get store(){return s(this,Ke)}get commandName(){return this.isInteraction()?this.interaction.commandName:this.config.messageCommandParser.getCommand()}get options(){return this.isMessage()?this.config.messageCommandParser.options:this.interaction.options}get forwarded(){return this.config.forwarded??!1}async forwardCommand(e){let t=await this.commandkit.commandHandler.prepareCommandRun(this.isInteraction()?this.interaction:this.message,e);if(!t)throw new Error(`Command ${e} not found`);let r=this.config.environment??I();if(!r)throw new Error("No commandkit environment found.");let o={chatInput:t.command.data.chatInput,autocomplete:t.command.data.autocomplete,message:t.command.data.message,messageContextMenu:t.command.data.messageContextMenu,userContextMenu:t.command.data.userContextMenu},l=r.variables.get("execHandlerKind");if(!l)throw new Error("No execution handler kind found.");let a=o[l];if(!a)throw new Error(`No handler found for ${l}`);r.variables.set("forwardedBy",this.commandName),r.variables.set("forwardedTo",e),await a(this.clone({forwarded:!0})),Wn()}get executionMode(){return this.config.executionMode}isInteraction(){return this.executionMode===F.ChatInputCommand||this.executionMode===F.Autocomplete||this.executionMode===F.MessageContextMenu||this.executionMode===F.UserContextMenu}isChatInputCommand(){return this.executionMode===F.ChatInputCommand}isAutocomplete(){return this.executionMode===F.Autocomplete}isMessageContextMenu(){return this.executionMode===F.MessageContextMenu}isUserContextMenu(){return this.executionMode===F.UserContextMenu}isMessage(){return this.executionMode===F.Message}getCommandIdentifier(){return this.isInteraction()?this.interaction.commandName:this.message.content.split(" ")[0].slice(1)}getGuildLocale(){var e;return this.isInteraction()?this.interaction.guildLocale:((e=this.message.guild)==null?void 0:e.preferredLocale)??null}getUserLocale(){return this.isInteraction()?this.interaction.locale:null}getLocale(e=!1){if(this._locale)return this._locale;let t=e?this.getUserLocale():this.getGuildLocale();return t||this.commandkit.config.defaultLocale}setLocale(e){this._locale=e}clone(e){return e?new Fe(this.commandkit,{...this.config,...e,store:s(this,Ke)}):new Fe(this.commandkit,this.config)}isMiddleware(){return this instanceof Ue}args(){return this.isMessage()?this.config.messageCommandParser.getArgs():[]}exit(){_n()}};Ke=new WeakMap,i(Fe,"Context");var zt=Fe,Ne,Jt=class Jt extends zt{constructor(){super(...arguments);h(this,Ne,!1)}get cancelled(){return s(this,Ne)}cancel(){d(this,Ne,!0)}setCommandRunner(t){var r,o;(o=(r=this.config.customArgs)==null?void 0:r.setCommandRunner)==null||o.call(r,t)}};Ne=new WeakMap,i(Jt,"MiddlewareContext");var Ue=Jt;var mt,Vn,Yt=class Yt{constructor(e){this.handler=e;h(this,mt)}async runCommand(e,t){let{commandkit:r}=this.handler,o=this.getExecutionMode(t),l=null,a=new st(r);a.setType("COMMAND_HANDLER"),a.variables.set("commandHandlerType","app"),a.variables.set("currentCommandName",e.command.command.name),a.variables.set("execHandlerKind",o);let c=new Ue(r,{command:e.command,environment:a,executionMode:o,interaction:t instanceof lt.Message?null:t,message:t instanceof lt.Message?t:null,forwarded:!1,customArgs:{setCommandRunner:i(u=>{l=u},"setCommandRunner")},messageCommandParser:e.messageCommandParser}),m=!1;if(e.middlewares.length&&await ut(a,async()=>{for(let u of e.middlewares)if(u.data.beforeExecute)try{await u.data.beforeExecute(c)}catch(p){if(q(p,M.ExitMiddleware)){m=!0;return}if(q(p,[M.ForwardedCommand,M.InvalidCommandPrefix]))continue;throw p}}),!c.cancelled){let p=e.command.data[o];if(p||y.warn(`Command ${e.command.command.name} has no handler for ${o}`),p)try{let g=qn(a,async()=>(a.registerDeferredFunction(O=>{O.markEnd();let S=O.getExecutionError(),v=O.getMarker(),L=`${O.getExecutionTime().toFixed(2)}ms`;if(S){y.error(`[${v} - ${L}] Error executing command: ${S.stack||S}`);return}y.info(`[${v} - ${L}] Command executed successfully`)}),p(c.clone())),C(this,mt,Vn).bind(this)),b=l!=null?l(g):g;a.markStart(e.command.data.command.name),await r.plugins.execute(async(O,S)=>S.executeCommand(O,a,t,e,b))||await b()}catch(g){q(g,M.ExitMiddleware)&&(m=!0),q(g,[M.ForwardedCommand,M.ExitMiddleware])||y.error(g)}}!m&&e.middlewares.length&&await ut(a,async()=>{for(let u of e.middlewares)if(u.data.afterExecute)try{await u.data.afterExecute(c)}catch(p){if(q(p,M.ExitMiddleware))return;throw p}})}getExecutionMode(e){return e instanceof lt.Message?F.Message:e.isChatInputCommand()?F.ChatInputCommand:e.isAutocomplete()?F.Autocomplete:e.isMessageContextMenuCommand()?F.MessageContextMenu:e.isUserContextMenuCommand()?F.UserContextMenu:null}};mt=new WeakSet,Vn=i(async function(){let e=zn();await e.runDeferredFunctions(),e.clearAllDeferredFunctions(),await this.handler.commandkit.plugins.execute(async(t,r)=>{await r.onAfterCommand(t,e)})},"#finalizer"),i(Yt,"AppCommandRunner");var ct=Yt;var ae=require("fs/promises"),ie=require("path");var Jn=require("fs");async function dt(n=!1){let e=(0,ie.join)(process.cwd(),"node_modules","commandkit-types");if(!W&&!n)return e;let t=(0,ie.join)(e,"package.json"),r=(0,ie.join)(e,"index.js"),o=(0,ie.join)(e,"index.d.ts"),l=(0,ie.join)(e,"command.d.ts"),a={name:"commandkit-types",version:"1.0.0",description:"CommandKit types package",type:"commonjs",main:"index.js",types:"index.d.ts"},c="module.exports = {};",m=`// Main types index file - imports all type declarations
|
|
1
|
+
"use strict";var jr=Object.create;var Ie=Object.defineProperty;var _r=Object.getOwnPropertyDescriptor;var Wr=Object.getOwnPropertyNames;var Vr=Object.getPrototypeOf,qr=Object.prototype.hasOwnProperty;var Dn=n=>{throw TypeError(n)};var zr=(n,e,t)=>e in n?Ie(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var i=(n,e)=>Ie(n,"name",{value:e,configurable:!0});var Jr=(n,e)=>{for(var t in e)Ie(n,t,{get:e[t],enumerable:!0})},Tn=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Wr(e))!qr.call(n,o)&&o!==t&&Ie(n,o,{get:()=>e[o],enumerable:!(r=_r(e,o))||r.enumerable});return n};var ce=(n,e,t)=>(t=n!=null?jr(Vr(n)):{},Tn(e||!n||!n.__esModule?Ie(t,"default",{value:n,enumerable:!0}):t,n)),Yr=n=>Tn(Ie({},"__esModule",{value:!0}),n);var E=(n,e,t)=>zr(n,typeof e!="symbol"?e+"":e,t),Dt=(n,e,t)=>e.has(n)||Dn("Cannot "+t);var s=(n,e,t)=>(Dt(n,e,"read from private field"),t?t.call(n):e.get(n)),h=(n,e,t)=>e.has(n)?Dn("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,t),d=(n,e,t,r)=>(Dt(n,e,"write to private field"),r?r.call(n,t):e.set(n,t),t),C=(n,e,t)=>(Dt(n,e,"access private method"),t);var Wo={};Jr(Wo,{ActionRow:()=>Xr,Button:()=>vo,ButtonKit:()=>je,ChannelSelectMenu:()=>Ao,ChannelSelectMenuKit:()=>Ve,Container:()=>ko,ElementType:()=>Go,EventInterceptor:()=>Oe,File:()=>Bo,Fragment:()=>dn,MediaGallery:()=>Oo,MediaGalleryItem:()=>Lo,MentionableSelectMenu:()=>To,MentionableSelectMenuKit:()=>qe,Modal:()=>Mo,ModalKit:()=>_e,ParagraphInput:()=>So,RoleSelectMenu:()=>Do,RoleSelectMenuKit:()=>Je,Section:()=>Fo,Separator:()=>Uo,ShortInput:()=>Io,StringSelectMenu:()=>Ro,StringSelectMenuKit:()=>We,StringSelectMenuOption:()=>Po,TextDisplay:()=>No,TextInput:()=>xn,Thumbnail:()=>$o,UserSelectMenu:()=>Ko,UserSelectMenuKit:()=>ze,createElement:()=>pn,getElement:()=>_o,isCommandKitElement:()=>jo,jsx:()=>pn,jsxs:()=>pn});module.exports=Yr(Wo);var An=require("discord.js");function Xr(n){let e=new An.ActionRowBuilder;return Array.isArray(n.children)?e.setComponents(...n.children):n.children&&e.setComponents(n.children),e}i(Xr,"ActionRow");var le=require("discord.js");var yr=require("async_hooks");var dr=ce(require("events"));var kn=require("picocolors"),x=(0,kn.createColors)(!0);var Xe,Bn,Tt=class Tt{constructor(e){this.client=e;h(this,Xe);E(this,"subscribers",new Map);E(this,"globalHandlers",new Map);E(this,"cleanupTimer",null);C(this,Xe,Bn).call(this)}destroy(){this.cleanupTimer&&(clearInterval(this.cleanupTimer),this.cleanupTimer=null);for(let[e,t]of this.subscribers)for(let r of t)this.unsubscribe(e,r,"destroy");this.subscribers.clear(),this.globalHandlers.clear()}hasSubscribers(e){return this.subscribers.has(e)}getSubscriberCount(e){let t=this.subscribers.get(e);return(t==null?void 0:t.size)??0}hasGlobalHandlers(){return this.globalHandlers.size>0}getGlobalHandlersCount(){return this.subscribers.size}subscribe(e,t,r){return this.subscribers.has(e)||(this.subscribers.set(e,new Set),this.client.on(e,this.createGlobalHandler(e)),this.client.setMaxListeners(this.client.getMaxListeners()+1)),r??={},r.registeredAt=Date.now(),Reflect.set(t,"options",r),this.subscribers.get(e).add(t),()=>{this.unsubscribe(e,t)}}unsubscribe(e,t,r){var l,a;let o=this.subscribers.get(e);o&&(o.delete(t),o.size<1&&(this.subscribers.delete(e),this.client.removeListener(e,this.globalHandlers.get(e)),this.globalHandlers.delete(e),this.client.setMaxListeners(Math.max(this.client.getMaxListeners()-1,0))),(a=(l=Reflect.get(t,"options")).onEnd)==null||a.call(l,r??"unsubscribe"))}createGlobalHandler(e){if(this.globalHandlers.has(e))return this.globalHandlers.get(e);let t=i(async(...r)=>{let o=this.subscribers.get(e);if(o&&o.size>0)for(let l of o){let a=Reflect.get(l,"options");if(a.time&&Date.now()-a.registeredAt>a.time){this.unsubscribe(e,l,"time");continue}if(a.autoReset&&(a.registeredAt=Date.now()),!(a.filter&&!await a.filter(...r)))try{await l(...r)}catch(m){if(a.onError)await a.onError(m);else throw m}finally{a.once&&this.unsubscribe(e,l,"once")}}},"handler");return this.globalHandlers.set(e,t),t}};Xe=new WeakSet,Bn=i(function(){this.cleanupTimer&&clearInterval(this.cleanupTimer),this.cleanupTimer=setInterval(()=>{for(let[e,t]of this.subscribers)for(let r of t){let o=Reflect.get(r,"options");o.time&&Date.now()-o.registeredAt>o.time&&this.unsubscribe(e,r,"time")}},6e4).unref()},"#cleanupLoop"),i(Tt,"EventInterceptor");var Oe=Tt;var Et=require("discord.js");var Nt=require("fs"),Ht=require("path");var ni=Symbol("kCommandKitCacheTag"),W=process.env.COMMANDKIT_IS_DEV==="true",ri=process.env.COMMANDKIT_IS_TEST==="true",oi=process.env.COMMANDKIT_BOOTSTRAP_MODE||"development",Qe={ReloadCommands:"reload-commands",ReloadEvents:"reload-events",Unknown:"unknown"};var On=require("crypto");var kt=class kt{constructor(e){this.options=e}id=(0,On.randomUUID)();loadedAt=Date.now();async activate(e){}async deactivate(e){}};i(kt,"PluginCommon");var Se=kt;function At(n){return n instanceof Se}i(At,"isPlugin");var Bt=class Bt extends Se{type="compiler";async transform(e){return null}async resolve(e){return null}async onBuildStart(){}async onBuildEnd(){}};i(Bt,"CompilerPlugin");var Re=Bt;function Ln(n){return At(n)&&n.type==="runtime"}i(Ln,"isRuntimePlugin");var Fn=require("discord.js");var M={ExitMiddleware:Symbol("kExitMiddleware"),ForwardedCommand:Symbol("kForwardedCommand"),InvalidCommandPrefix:Symbol("kInvalidCommandPrefix"),PluginCaptureHandle:Symbol("kPluginCaptureHandle")};function me(n){let e=new Error;return Reflect.set(e,"code",n),e}i(me,"createCommandKitError");function Ze(n){if(!(n instanceof Error))return!1;let e=Reflect.get(n,"code");for(let t in M)if(M[t]===e)return!0;return!1}i(Ze,"isCommandKitError");function q(n,e){if(!Ze(n))return!1;let t=Reflect.get(n,"code");return t?Array.isArray(e)?e.includes(t):t===e:!1}i(q,"isErrorType");var Zr={autocomplete:"Autocomplete",messageContextMenu:"MessageContextMenu",userContextMenu:"UserContextMenu",chatInput:"ChatInputCommand",message:"Message"},eo={0:x.blue,1:x.green,2:x.yellow,3:x.red,4:x.white},to={0:x.bgBlue,1:x.bgGreen,2:x.bgYellow,3:x.bgRed,4:x.bgWhite},et={vertical:"\u2502",horizontalDown:"\u252C",horizontalUp:"\u2534",verticalRight:"\u251C",corner:"\u2514"},Ot=class Ot{constructor(e=process.stdout,t=process.stderr){this.stdout=e;this.stderr=t;this.logger=new console.Console(this.stdout,this.stderr)}logger;_formatTime(e){let t=e.getHours().toString().padStart(2,"0"),r=e.getMinutes().toString().padStart(2,"0"),o=e.getSeconds().toString().padStart(2,"0"),l=e.getMilliseconds().toString().padStart(3,"0");return`${t}:${r}:${o}.${l}`}_getContext(){let e=I();if(!e)return"";let t=e.variables.get("execHandlerKind"),r=e.variables.get("commandHandlerType"),o=e.variables.get("currentCommandName");if(!t&&!r)return"";let l=Zr[t];if(!l&&!r)return"";let a=e.variables.get("forwardedBy"),c=e.variables.get("forwardedTo"),m=o?x.magenta(`/${o}`)+" ":"",u=c?`${x.yellowBright(`(${a||o} \u2192 ${c})`)} `:"";return x.dim(`${et.vertical} `)+x.cyanBright(`${m}${u}${l?x.gray(`[${l}]`):""}`.trim())}_getLevelLabel(e){let t;switch(e){case 0:t="[DEBUG]";break;case 1:t="[INFO]";break;case 2:t="[WARN]";break;case 3:t="[ERROR]";break;default:t="[LOG]"}return`${to[e](x.whiteBright(` ${t} `))} `}_getPrefix(e){let t=this._formatTime(new Date);return`${this._getLevelLabel(e)}${x.dim(et.vertical)} ${x.dim(t)}`}_log(e,...t){let r=this._getPrefix(e),o=this._getContext(),l=eo[e];o?this.logger.log(`${r}
|
|
2
|
+
${o} ${x.dim(et.corner)}`,...t.map(a=>l(a))):this.logger.log(`${r} ${x.dim(et.corner)}`,...t.map(a=>l(a)))}debug(...e){this._log(0,...e)}error(...e){this._log(3,...e)}log(...e){this._log(4,...e)}info(...e){this._log(1,...e)}warn(...e){this._log(2,...e)}};i(Ot,"DefaultLogger");var tt=Ot;function no(n){let e=n;if(!(e!=null&&e.provider))throw new Error("A logger provider must be provided.");let t=["log","error","warn","info","debug"],r={configure(o){e=o}};for(let o of t)r[o]=(...l)=>{e.provider[o](...l)};return r}i(no,"createLogger");var y=no({provider:new tt});var Lt=class Lt{constructor(e){this.commandkit=e}plugins=new Fn.Collection;getPlugins(){return this.plugins}getPlugin(e){return this.plugins.get(e)??null}async softRegisterPlugin(e){let t=e.name;if(!this.plugins.has(t))try{await e.activate(this),this.plugins.set(t,e)}catch(r){throw new Error(`Failed to activate plugin "${t}": ${(r==null?void 0:r.stack)||r}`)}}async registerPlugin(e){let t=e.name;if(this.plugins.has(t))throw new Error(`Plugin with name "${t}" already exists.`);try{await e.activate(this),this.plugins.set(t,e)}catch(r){throw new Error(`Failed to activate plugin "${t}": ${(r==null?void 0:r.stack)||r}`)}}async unregisterPlugin(e){let t=e.name;if(!this.plugins.has(t))throw new Error(`Plugin with name "${t}" does not exist.`);this.plugins.delete(t);try{await e.deactivate(this)}catch(r){throw new Error(`Failed to deactivate plugin "${t}": ${(r==null?void 0:r.stack)||r}`)}}async unregisterAllPlugins(){for(let e of this.plugins.values())await this.unregisterPlugin(e)}capture(){throw me(M.PluginCaptureHandle)}async execute(e){let t;for(let r of this.plugins.values())try{t=await e(this,r)}catch(o){if(q(o,M.PluginCaptureHandle))return!0;y.error(`Plugin "${r.name}" failed`,(o==null?void 0:o.stack)||o)}return t}};i(Lt,"CommandKitPluginRuntime");var nt=Lt;var ro=require("fs/promises");var Ft=class Ft extends Re{name="MacroPlugin";macroTransformer;async activate(){let e=await import("use-macro");this.macroTransformer=new e.MacroTransformer}async deactivate(){this.macroTransformer=null}async transform(e){if(!this.options.enabled)return null;let{contents:t,loader:r}=await this.macroTransformer.transform(e.contents.toString(),e.path);return{contents:t,loader:r}}};i(Ft,"MacroPlugin");var rt=Ft;var $n={plugins:[new rt({enabled:!0})],esbuildPlugins:[],compilerOptions:{macro:{development:!1}},static:!0,typescript:{ignoreBuildErrors:!1},distDir:"dist",env:{},sourceMap:{development:!0,production:!0},typedCommands:!0};var oo=$n;function ot(){return oo}i(ot,"getConfig");var Un=require("async_hooks");var io=Symbol("commandkitEventWorker"),Nn=new Un.AsyncLocalStorage;function $t(n,e){return Reflect.set(n,io,!0),Nn.run(n,e)}i($t,"runInEventWorkerContext");var Ut=null;function Hn(){if(Ut)return Ut;let n=(0,Ht.join)(process.cwd(),W?".commandkit":ot().distDir);(0,Nt.existsSync)(n)||(n=process.cwd());let e=["app"].map(t=>(0,Ht.join)(n,t));for(let t of e)if((0,Nt.existsSync)(t))return Ut=t,t;return null}i(Hn,"findAppDirectory");var Gt=class Gt extends Error{constructor(){super("Event propagation stopped"),this.name="StopEventPropagationError"}};i(Gt,"StopEventPropagationError");var Le=Gt;var un=require("path");var R=require("discord.js");var Gn=ce(require("path"));function Fe(n,e=!1){return`${"file://"+Gn.default.resolve(n).replace(/\\\\|\\/g,"/")}${e?`?ts=${Date.now()}`:""}`}i(Fe,"toFileURL");var F=require("discord.js");var ue,Pe,$e,_t=class _t{constructor(e,t,r){this.message=e;this.prefix=t;this.schema=r;h(this,ue,null);h(this,Pe,null);h(this,$e,[])}getArgs(){return this.parse(),s(this,$e)}get options(){return s(this,Pe)||d(this,Pe,new jt(this)),s(this,Pe)}getOption(e){var t;return(t=this.parse().options.find(r=>r.name===e))==null?void 0:t.value}getCommand(){return this.parse().command}getSubcommand(){return this.parse().subcommand}getSubcommandGroup(){return this.parse().subcommandGroup}getPrefix(){for(let e of this.prefix)if(this.message.content.startsWith(e))return e}getFullCommand(){return[this.getCommand(),this.getSubcommandGroup(),this.getSubcommand()].filter(e=>e).join(" ")}parse(){if(s(this,ue))return s(this,ue);let e=this.message.content,t=this.getPrefix();if(!t)throw me(M.InvalidCommandPrefix);let r=e.slice(t.length).trim().split(" "),o=r.shift();d(this,$e,r);let l,a;if(o!=null&&o.includes(":")){let[,u,p]=o.split(":");!p&&u?a=u:p&&u&&(l=u,a=p)}let c=this.schema([o,l,a].filter(Boolean).join(" ").trim()),m=r.map(u=>{try{let[p,g]=u.split(":");if(!(p in c))return null;switch(c[p]){case F.ApplicationCommandOptionType.Boolean:return{name:p,value:g==="true"};case F.ApplicationCommandOptionType.Integer:return{name:p,value:parseInt(g,10)};case F.ApplicationCommandOptionType.Number:return{name:p,value:parseFloat(g)};case F.ApplicationCommandOptionType.String:return{name:p,value:g};case F.ApplicationCommandOptionType.User:return{name:p,value:this.message.mentions.users.find(b=>b.id===g.replace(/[<@!>]/g,""))};case F.ApplicationCommandOptionType.Channel:return{name:p,value:this.message.mentions.channels.find(b=>b.id===g.replace(/[<#>]/g,""))};case F.ApplicationCommandOptionType.Role:return{name:p,value:this.message.mentions.roles.find(b=>b.id===g.replace(/[<@&>]/g,""))};case F.ApplicationCommandOptionType.Attachment:return{name:p,value:this.message.attachments.find(b=>b.name===g)};default:return null}}catch{return null}}).filter(u=>u!==null);return d(this,ue,{command:o,options:m,subcommand:a,subcommandGroup:l}),s(this,ue)}};ue=new WeakMap,Pe=new WeakMap,$e=new WeakMap,i(_t,"MessageCommandParser");var it=_t,Wt=class Wt{constructor(e){this.parser=e}assertOption(e,t=!1){let r=this.parser.getOption(e);if(t&&r===void 0)throw new Error(`Option "${e}" is required.`);return r??null}getMember(e,t=!1){var l;let r=this.assertOption(e,t),o=(l=this.parser.message.guild)==null?void 0:l.members.cache.get(r==null?void 0:r.id);if(t&&!o)throw new Error(`Member "${e}" is required.`);return o??null}getAttachment(e,t=!1){return this.assertOption(e,t)}getBoolean(e,t=!1){return this.assertOption(e,t)}getNumber(e,t=!1){return this.assertOption(e,t)}getString(e,t=!1){return this.assertOption(e,t)}getInteger(e,t=!1){return this.assertOption(e,t)}getUser(e,t=!1){return this.assertOption(e,t)}getChannel(e,t=!1){return this.assertOption(e,t)}getRole(e,t=!1){return this.assertOption(e,t)}getMentionable(e,t=!1){let r=this.assertOption(e,t);if(r instanceof F.GuildMember||r instanceof F.User||r instanceof F.Role)return r;if(t)throw new Error(`Mentionable "${e}" is required.`);return null}getSubcommand(e=!1){let t=this.parser.getSubcommand();if(e&&t===void 0)throw new Error("Subcommand is required.");return t??null}getSubcommandGroup(e=!1){let t=this.parser.getSubcommandGroup();if(e&&t===void 0)throw new Error("Subcommand group is required.");return t??null}};i(Wt,"MessageCommandOptions");var jt=Wt;var z=require("discord.js");var Vt=class Vt{constructor(e){this.commandkit=e;this.api.setToken(this.commandkit.client.token??process.env.DISCORD_TOKEN??process.env.TOKEN??"")}api=new z.REST;getCommandsData(){return this.commandkit.commandHandler.getCommandsArray().flatMap(r=>{let o="toJSON"in r.data.command?r.data.command.toJSON():r.data.command,l=[o];return r.data.userContextMenu&&o.type!==z.ApplicationCommandType.User&&l.push({...o,type:z.ApplicationCommandType.User,options:void 0,description_localizations:void 0,description:void 0}),r.data.messageContextMenu&&o.type!==z.ApplicationCommandType.Message&&l.push({...o,type:z.ApplicationCommandType.Message,description_localizations:void 0,description:void 0,options:void 0}),l})}async register(){let e=this.getCommandsData(),t=!1,r={preventDefault(){t=!0},commands:e};if(await this.commandkit.plugins.execute(async(a,c)=>{if(!t)return c.onBeforeRegisterCommands(a,r)}),t)return;if(!this.commandkit.client.isReady())throw new Error("Cannot register commands before the client is ready");let o=e.filter(a=>{var c;return(c=a.guilds)==null?void 0:c.filter(Boolean).length}).map(a=>{var c;return{...a,guilds:Array.from(new Set((c=a.guilds)==null?void 0:c.filter(Boolean)))}}),l=e.filter(a=>{var c;return!((c=a.guilds)!=null&&c.filter(Boolean).length)});await this.updateGlobalCommands(l),await this.updateGuildCommands(o)}async updateGlobalCommands(e){if(!e.length)return;let t=!1,r={preventDefault(){t=!0},commands:e};await this.commandkit.plugins.execute(async(o,l)=>{if(!t)return l.onBeforeRegisterGlobalCommands(o,r)});try{let o=await this.api.put(z.Routes.applicationCommands(this.commandkit.client.user.id),{body:e.map(l=>({...l,guilds:void 0}))});y.info(`\u2728 Refreshed ${o.length} global application (/) commands`)}catch(o){y.error("Failed to update global application (/) commands",o)}}async updateGuildCommands(e){if(!e.length)return;let t=!1,r={preventDefault(){t=!0},commands:e};if(await this.commandkit.plugins.execute(async(o,l)=>{if(!t)return l.onBeforePrepareGuildCommandsRegistration(o,r)}),!t)try{let o=new Map;if(e.forEach(a=>{var c;(c=a.guilds)!=null&&c.length&&a.guilds.forEach(m=>{o.has(m)||o.set(m,[]),o.get(m).push(a)})}),!o.size)return;let l=0;for(let[a,c]of o){let m=!1,u={preventDefault(){m=!0},commands:c};if(await this.commandkit.plugins.execute(async(g,b)=>{if(!m)return b.onBeforeRegisterGuildCommands(g,u)}),m)continue;let p=await this.api.put(z.Routes.applicationGuildCommands(this.commandkit.client.user.id,a),{body:c.map(g=>({...g,guilds:void 0}))});l+=p.length}y.info(`\u2728 Refreshed ${l} guild application (/) commands`)}catch(o){y.error("Failed to update guild application (/) commands",o)}}};i(Vt,"CommandRegistrar");var at=Vt;var lt=require("discord.js");var jn=require("crypto");var v,qt=class qt{constructor(e){this.commandkit=e;h(this,v,{executionError:null,type:null,variables:new Map,deferredFunctions:new Map,marker:"",markStart:0,markEnd:0,context:null})}setContext(e){s(this,v).context=e}get context(){return s(this,v).context}getExecutionError(){return s(this,v).executionError}setExecutionError(e){if(s(this,v).executionError)throw new Error("Execution error already set.");s(this,v).executionError=e}getType(){let e=s(this,v).type;if(!e)throw new Error("Environment type not set.");return e}setType(e){s(this,v).type=e}get variables(){return s(this,v).variables}registerDeferredFunction(e){let t=(0,jn.randomUUID)();return s(this,v).deferredFunctions.set(t,e),t}clearDeferredFunction(e){s(this,v).deferredFunctions.delete(e)}async runDeferredFunctions(){for(let[e,t]of s(this,v).deferredFunctions)try{await t(this)}catch(r){this.commandkit.emit("unhandledDeferredFunctionRejection",r)}finally{this.clearDeferredFunction(e)}}clearAllDeferredFunctions(){s(this,v).deferredFunctions.clear()}markStart(e){s(this,v).marker=e,s(this,v).markStart=performance.now()}markEnd(){s(this,v).markEnd||(s(this,v).markEnd=performance.now())}getMarker(){return s(this,v).marker}getExecutionTime(){return Math.abs(s(this,v).markEnd-s(this,v).markStart)}};v=new WeakMap,i(qt,"CommandKitEnvironment");var st=qt;function _n(){throw me(M.ExitMiddleware)}i(_n,"exitMiddleware");function Wn(){throw me(M.ForwardedCommand)}i(Wn,"redirect");var $={ChatInputCommand:"chatInput",MessageContextMenu:"messageContextMenu",UserContextMenu:"userContextMenu",Autocomplete:"autocomplete",Message:"message"},Ke,Ue=class Ue{constructor(e,t){this.commandkit=e;this.config=t;E(this,"interaction");E(this,"message");E(this,"guild");E(this,"guildId");E(this,"channel");E(this,"channelId");E(this,"client");E(this,"command");h(this,Ke);E(this,"_locale",null);this.interaction=t.interaction,this.message=t.message,this.client=e.client,d(this,Ke,t.store??new Map),this.command=t.command,t.interaction&&(this.guild=t.interaction.guild,this.guildId=t.interaction.guildId,this.channel=t.interaction.channel,this.channelId=t.interaction.channelId),t.message&&(this.guild=t.message.guild,this.guildId=t.message.guildId,this.channel=t.message.channel,this.channelId=t.message.channelId),this.config.environment&&this.config.environment.setContext(this)}get store(){return s(this,Ke)}get commandName(){return this.isInteraction()?this.interaction.commandName:this.config.messageCommandParser.getCommand()}get options(){return this.isMessage()?this.config.messageCommandParser.options:this.interaction.options}get forwarded(){return this.config.forwarded??!1}async forwardCommand(e){let t=await this.commandkit.commandHandler.prepareCommandRun(this.isInteraction()?this.interaction:this.message,e);if(!t)throw new Error(`Command ${e} not found`);let r=this.config.environment??I();if(!r)throw new Error("No commandkit environment found.");let o={chatInput:t.command.data.chatInput,autocomplete:t.command.data.autocomplete,message:t.command.data.message,messageContextMenu:t.command.data.messageContextMenu,userContextMenu:t.command.data.userContextMenu},l=r.variables.get("execHandlerKind");if(!l)throw new Error("No execution handler kind found.");let a=o[l];if(!a)throw new Error(`No handler found for ${l}`);r.variables.set("forwardedBy",this.commandName),r.variables.set("forwardedTo",e),await a(this.clone({forwarded:!0})),Wn()}get executionMode(){return this.config.executionMode}isInteraction(){return this.executionMode===$.ChatInputCommand||this.executionMode===$.Autocomplete||this.executionMode===$.MessageContextMenu||this.executionMode===$.UserContextMenu}isChatInputCommand(){return this.executionMode===$.ChatInputCommand}isAutocomplete(){return this.executionMode===$.Autocomplete}isMessageContextMenu(){return this.executionMode===$.MessageContextMenu}isUserContextMenu(){return this.executionMode===$.UserContextMenu}isMessage(){return this.executionMode===$.Message}getCommandIdentifier(){return this.isInteraction()?this.interaction.commandName:this.message.content.split(" ")[0].slice(1)}getGuildLocale(){var e;return this.isInteraction()?this.interaction.guildLocale:((e=this.message.guild)==null?void 0:e.preferredLocale)??null}getUserLocale(){return this.isInteraction()?this.interaction.locale:null}getLocale(e=!1){if(this._locale)return this._locale;let t=e?this.getUserLocale():this.getGuildLocale();return t||this.commandkit.config.defaultLocale}setLocale(e){this._locale=e}clone(e){return e?new Ue(this.commandkit,{...this.config,...e,store:s(this,Ke)}):new Ue(this.commandkit,this.config)}isMiddleware(){return this instanceof Ne}args(){return this.isMessage()?this.config.messageCommandParser.getArgs():[]}exit(){_n()}};Ke=new WeakMap,i(Ue,"Context");var zt=Ue,He,Jt=class Jt extends zt{constructor(){super(...arguments);h(this,He,!1)}get cancelled(){return s(this,He)}cancel(){d(this,He,!0)}setCommandRunner(t){var r,o;(o=(r=this.config.customArgs)==null?void 0:r.setCommandRunner)==null||o.call(r,t)}};He=new WeakMap,i(Jt,"MiddlewareContext");var Ne=Jt;var mt,Vn,Yt=class Yt{constructor(e){this.handler=e;h(this,mt)}async runCommand(e,t){let{commandkit:r}=this.handler,o=this.getExecutionMode(t),l=null,a=new st(r);a.setType("COMMAND_HANDLER"),a.variables.set("commandHandlerType","app"),a.variables.set("currentCommandName",e.command.command.name),a.variables.set("execHandlerKind",o);let c=new Ne(r,{command:e.command,environment:a,executionMode:o,interaction:t instanceof lt.Message?null:t,message:t instanceof lt.Message?t:null,forwarded:!1,customArgs:{setCommandRunner:i(u=>{l=u},"setCommandRunner")},messageCommandParser:e.messageCommandParser}),m=!1;if(e.middlewares.length&&await ut(a,async()=>{for(let u of e.middlewares)if(u.data.beforeExecute)try{await u.data.beforeExecute(c)}catch(p){if(q(p,M.ExitMiddleware)){m=!0;return}if(q(p,[M.ForwardedCommand,M.InvalidCommandPrefix]))continue;throw p}}),!c.cancelled){let p=e.command.data[o];if(p||y.warn(`Command ${e.command.command.name} has no handler for ${o}`),p)try{let g=qn(a,async()=>(a.registerDeferredFunction(O=>{O.markEnd();let S=O.getExecutionError(),w=O.getMarker(),L=`${O.getExecutionTime().toFixed(2)}ms`;if(S){y.error(`[${w} - ${L}] Error executing command: ${S.stack||S}`);return}y.info(`[${w} - ${L}] Command executed successfully`)}),p(c.clone())),C(this,mt,Vn).bind(this)),b=l!=null?l(g):g;a.markStart(e.command.data.command.name),await r.plugins.execute(async(O,S)=>S.executeCommand(O,a,t,e,b))||await b()}catch(g){q(g,M.ExitMiddleware)&&(m=!0),q(g,[M.ForwardedCommand,M.ExitMiddleware])||y.error(g)}}!m&&e.middlewares.length&&await ut(a,async()=>{for(let u of e.middlewares)if(u.data.afterExecute)try{await u.data.afterExecute(c)}catch(p){if(q(p,M.ExitMiddleware))return;throw p}})}getExecutionMode(e){return e instanceof lt.Message?$.Message:e.isChatInputCommand()?$.ChatInputCommand:e.isAutocomplete()?$.Autocomplete:e.isMessageContextMenuCommand()?$.MessageContextMenu:e.isUserContextMenuCommand()?$.UserContextMenu:null}};mt=new WeakSet,Vn=i(async function(){let e=zn();await e.runDeferredFunctions(),e.clearAllDeferredFunctions(),await this.handler.commandkit.plugins.execute(async(t,r)=>{await r.onAfterCommand(t,e)})},"#finalizer"),i(Yt,"AppCommandRunner");var ct=Yt;var ae=require("fs/promises"),ie=require("path");var Jn=require("fs");async function dt(n=!1){let e=(0,ie.join)(process.cwd(),"node_modules","commandkit-types");if(!W&&!n)return e;let t=(0,ie.join)(e,"package.json"),r=(0,ie.join)(e,"index.js"),o=(0,ie.join)(e,"index.d.ts"),l=(0,ie.join)(e,"command.d.ts"),a={name:"commandkit-types",version:"1.0.0",description:"CommandKit types package",type:"commonjs",main:"index.js",types:"index.d.ts"},c="module.exports = {};",m=`// Main types index file - imports all type declarations
|
|
3
3
|
import './command';
|
|
4
4
|
export {};
|
|
5
5
|
`,u=`// Auto-generated command types
|
|
@@ -11,6 +11,6 @@ declare module 'commandkit' {
|
|
|
11
11
|
${n}
|
|
12
12
|
}
|
|
13
13
|
export {};
|
|
14
|
-
`,t=(0,ie.join)(process.cwd(),"node_modules","commandkit-types");if(!(0,Jn.existsSync)(t))return;let r=(0,ie.join)(t,"command.d.ts");await(0,ae.writeFile)(r,e,{encoding:"utf-8"})}i(Yn,"rewriteCommandDeclaration");var ao={command:i(n=>n instanceof R.SlashCommandBuilder||n instanceof R.ContextMenuCommandBuilder||n&&typeof n=="object","command"),chatInput:i(n=>typeof n=="function","chatInput"),autocomplete:i(n=>typeof n=="function","autocomplete"),message:i(n=>typeof n=="function","message"),messageContextMenu:i(n=>typeof n=="function","messageContextMenu"),userContextMenu:i(n=>typeof n=="function","userContextMenu")},so={beforeExecute:i(n=>typeof n=="function","beforeExecute"),afterExecute:i(n=>typeof n=="function","afterExecute")},Xt=class Xt{constructor(e){this.commandkit=e;this.registrar=new at(this.commandkit)}loadedCommands=new R.Collection;loadedMiddlewares=new R.Collection;commandNameToId=new Map;subcommandPathToId=new Map;registrar;onInteraction=null;onMessageCreate=null;commandRunner=new ct(this);externalCommandData=new R.Collection;externalMiddlewareData=new R.Collection;printBanner(){let e=crypto.randomUUID(),t=this.getCommandsArray().reduce((m,u)=>{let p=u.command.category||e;return m[p]=m[p]||[],m[p].push(u),m},{});console.log(x.green(`Loaded ${x.magenta(this.loadedCommands.size.toString())} commands:`));let r=Object.keys(t).sort(),o={};r.forEach(m=>{if(m!==e&&m.includes(":")){let u=m.split(":"),p=null;for(let g=u.length-1;g>0;g--){let b=u.slice(0,g).join(":");if(r.includes(b)){p=b;break}}p&&(o[p]=o[p]||[],o[p].push(m))}});let l=new Set,a=i((m,u="",p=!1,g="")=>{if(l.has(m))return;l.add(m);let b=t[m],G=o[m]&&o[m].length>0,O=p?"\u2514\u2500":"\u251C\u2500",S=g+(p?" ":"\u2502 ");if(m!==e){let v=m.includes(":")?m.split(":").pop():m;console.log(x.cyan(`${u}${O} ${x.bold(v)}`))}if(b.forEach((v,L)=>{let Kt=L===b.length-1&&!G?"\u2514\u2500":"\u251C\u2500",Nr=m!==e?S:u,Hr=v.data.command.name,Gr=v.command.middlewares.length>0?x.magenta(" (\u03BB)"):"";console.log(`${x.green(`${Nr}${Kt}`)} ${x.yellow(Hr)}${Gr}`)}),G){let v=o[m].sort();v.forEach((L,ke)=>{let Kt=ke===v.length-1;a(L,S,Kt,S)})}},"printCategory"),c=r.filter(m=>{if(m===e)return!0;if(m.includes(":")){let u=m.split(":");for(let p=1;p<u.length;p++){let g=u.slice(0,p).join(":");if(r.includes(g))return!1}return!0}return!0}).sort();c.forEach((m,u)=>{let p=u===c.length-1;a(m,"",p)})}getCommandsArray(){return Array.from(this.loadedCommands.values())}registerCommandHandler(){this.onInteraction??=async e=>{if(await this.commandkit.plugins.execute(async(l,a)=>a.onBeforeInteraction(l,e))||!(e.isCommand()||e.isAutocomplete()||e.isUserContextMenuCommand()||e.isMessageContextMenuCommand()))return;let o=await this.prepareCommandRun(e);if(o)return this.commandRunner.runCommand(o,e)},this.onMessageCreate??=async e=>{if(await this.commandkit.plugins.execute(async(o,l)=>l.onBeforeMessageCommand(o,e))||e.author.bot)return;let r=await this.prepareCommandRun(e);if(r)return this.commandRunner.runCommand(r,e)},this.commandkit.client.on(R.Events.InteractionCreate,this.onInteraction),this.commandkit.client.on(R.Events.MessageCreate,this.onMessageCreate)}async prepareCommandRun(e,t){var c;let r;if(!t)if(e instanceof R.Message){if(e.author.bot)return null;let m=await this.commandkit.config.getMessageCommandPrefix(e);r=new it(e,Array.isArray(m)?m:[m],u=>{var G,O;let p=this.commandNameToId.get(u);if(!p)return null;let g=this.loadedCommands.get(p);return!g||e.guildId&&((G=g.guilds)!=null&&G.length)&&!g.guilds.includes(e.guildId)?null:((O=("toJSON"in g.data.command?g.data.command.toJSON():g.data.command).options)==null?void 0:O.reduce((S,v)=>(S[v.name]=v.type,S),{}))??{}});try{t=r.getFullCommand().split(" ")[0]}catch(u){return q(u,M.InvalidCommandPrefix)||y.error(u),null}}else{if(!(e.isChatInputCommand()||e.isAutocomplete()||e.isContextMenuCommand()))return null;t=e.commandName}let o=this.commandNameToId.get(t);if(!o)return null;let l=this.loadedCommands.get(o);if(!l||(e instanceof R.CommandInteraction||e instanceof R.AutocompleteInteraction)&&e.guildId&&((c=l.guilds)!=null&&c.length)&&!l.guilds.includes(e.guildId))return null;let a=[];for(let m of l.command.middlewares){let u=this.loadedMiddlewares.get(m);u&&a.push(u)}return{command:l,middlewares:a,messageCommandParser:r}}async reloadCommands(){this.loadedCommands.clear(),this.loadedMiddlewares.clear(),this.commandNameToId.clear(),this.subcommandPathToId.clear(),this.externalCommandData.clear(),this.externalMiddlewareData.clear(),await this.loadCommands()}async addExternalMiddleware(e){for(let t of e)t.id&&this.externalMiddlewareData.set(t.id,t)}async addExternalCommands(e){for(let t of e)t.id&&this.externalCommandData.set(t.id,t)}async registerExternalLoadedMiddleware(e){for(let t of e)this.loadedMiddlewares.set(t.middleware.id,t)}async registerExternalLoadedCommands(e){for(let t of e)this.loadedCommands.set(t.command.id,t),this.commandNameToId.set(t.command.name,t.command.id)}async loadCommands(){await this.commandkit.plugins.execute((a,c)=>c.onBeforeCommandsLoad(a));let e=this.commandkit.commandsRouter;if(!e)throw new Error("Commands router has not yet initialized");let{commands:t,middlewares:r}=e.getData(),o=this.externalCommandData.size?t.concat(this.externalCommandData):t,l=this.externalMiddlewareData.size?r.concat(this.externalMiddlewareData):r;for(let[a,c]of l)await this.loadMiddleware(a,c);for(let[a,c]of o)await this.loadCommand(a,c);W&&await Yn(`type CommandTypeData = ${Array.from(this.loadedCommands.mapValues(a=>JSON.stringify(a.command.name)).values()).join(" | ")}`),await this.commandkit.plugins.execute((a,c)=>c.onAfterCommandsLoad(a))}async loadMiddleware(e,t){try{let r=await import(`${Le(t.path)}?t=${Date.now()}`),o=0;for(let[l,a]of Object.entries(so)){if(r[l]&&!await a(r[l]))throw new Error(`Invalid export for middleware ${e}: ${l} does not match expected value`);r[l]&&o++}if(o===0)throw new Error(`Invalid export for middleware ${e}: at least one handler function must be provided`);this.loadedMiddlewares.set(e,{middleware:t,data:r})}catch(r){y.error(`Failed to load middleware ${e}`,r)}}async loadCommand(e,t){try{if(t.path===null){this.loadedCommands.set(e,{command:t,data:{command:{name:t.name,description:`${t.name} commands`,type:1}}});return}let r=await import(`${Le(t.path)}?t=${Date.now()}`);if(!r.command)throw new Error(`Invalid export for command ${t.name}: no command definition found`);let o=0;for(let[a,c]of Object.entries(ao))if(a!=="command"&&r[a]&&o++,r[a]&&!await c(r[a]))throw new Error(`Invalid export for command ${t.name}: ${a} does not match expected value`);if(o===0)throw new Error(`Invalid export for command ${t.name}: at least one handler function must be provided`);let l=r.command;await this.commandkit.plugins.execute(async(a,c)=>{let m=await c.prepareCommand(a,l);m&&(l=m)}),this.loadedCommands.set(e,{command:t,guilds:r.guilds,data:{...r,command:"toJSON"in l?l.toJSON():l}}),this.commandNameToId.set(t.name,e)}catch(r){y.error(`Failed to load command ${t.name} (${e})`,r)}}};i(Xt,"AppCommandHandler");var pt=Xt;var Qt=require("discord.js"),Zn=require("fs"),Zt=require("fs/promises"),j=require("path");var lo=/^\+middleware\.(m|c)?(j|t)sx?$/,Xn=/^\+([^+().][^().]*)\.middleware\.(m|c)?(j|t)sx?$/,Qn=/^\+global-middleware\.(m|c)?(j|t)sx?$/,co=/^([^+().][^().]*)\.(m|c)?(j|t)sx?$/,mo=/^\(.+\)$/,en=class en{constructor(e){this.options=e}commands=new Qt.Collection;middlewares=new Qt.Collection;populate(e){for(let[t,r]of Object.entries(e.commands))this.commands.set(t,r);for(let[t,r]of Object.entries(e.middlewares))this.middlewares.set(t,r)}isValidPath(){return(0,Zn.existsSync)(this.options.entrypoint)}isCommand(e){return co.test(e)}isMiddleware(e){return lo.test(e)||Qn.test(e)||Xn.test(e)}isCategory(e){return mo.test(e)}clear(){this.commands.clear(),this.middlewares.clear()}async scan(){let e=await(0,Zt.readdir)(this.options.entrypoint,{withFileTypes:!0});for(let t of e){if(t.name.startsWith("_"))continue;let r=(0,j.join)(this.options.entrypoint,t.name);if(t.isDirectory()){let o=this.isCategory(t.name)?t.name.slice(1,-1):null;await this.traverse(r,o)}else await this.handle(t)}return await this.applyMiddlewares(),this.toJSON()}getData(){return{commands:this.commands,middlewares:this.middlewares}}toJSON(){return{commands:Object.fromEntries(this.commands.entries()),middlewares:Object.fromEntries(this.middlewares.entries())}}async traverse(e,t){let r=await(0,Zt.readdir)(e,{withFileTypes:!0});for(let o of r)if(!o.name.startsWith("_")){if(o.isFile())(this.isCommand(o.name)||this.isMiddleware(o.name))&&await this.handle(o,t);else if(o.isDirectory()&&this.isCategory(o.name)&&t){let l=this.isCategory(o.name)?`${t}:${o.name.slice(1,-1)}`:null;await this.traverse((0,j.join)(e,o.name),l)}}}async handle(e,t=null){let r=e.name,o=(0,j.join)(e.parentPath,e.name);if(this.isCommand(r)){let l={id:crypto.randomUUID(),name:(0,j.basename)(o,(0,j.extname)(o)),path:o,category:t,parentPath:e.parentPath,relativePath:this.replaceEntrypoint(o),middlewares:[]};this.commands.set(l.id,l)}else if(this.isMiddleware(r)){let l={id:crypto.randomUUID(),name:(0,j.basename)(o,(0,j.extname)(o)),path:o,relativePath:this.replaceEntrypoint(o),parentPath:e.parentPath,global:Qn.test(r),command:Xn.test(r)&&r.split(".")[0]||null};this.middlewares.set(l.id,l)}}applyMiddlewares(){this.commands.forEach(e=>{let t=e.parentPath,r=Array.from(this.middlewares.values()).filter(o=>o.global?!0:o.command?o.command===e.name:o.parentPath===t).map(o=>o.id);e.middlewares=Array.from(new Set([...e.middlewares,...r]))})}replaceEntrypoint(e){return(0,j.normalize)(e).replace(this.options.entrypoint,"")}};i(en,"CommandsRouter");var ft=en;var er=require("discord.js"),tr=require("fs"),tn=require("fs/promises"),ht=require("path");var nn=class nn{constructor(e){this.options=e;var t;if(e.entrypoints&&(e.entrypoints=Array.from(new Set(e.entrypoints))),!((t=e.entrypoints)!=null&&t.length))throw new Error("Entrypoint directory must be provided")}events=new er.Collection;addEntrypoints(e){this.options.entrypoints=Array.from(new Set([...this.options.entrypoints,...e]))}match(e){return this.events.get(e)??null}get entrypoints(){return this.options.entrypoints}isValidPath(){return this.entrypoints.every(e=>(0,tr.existsSync)(e))}clear(){this.events.clear()}async reload(){return this.clear(),this.scan()}async scan(){for(let e of this.entrypoints){let t=await(0,tn.readdir)(e,{withFileTypes:!0});for(let r of t)if(r.isDirectory()){let o=(0,ht.join)(e,r.name);await this.scanEvent(r.name,o,null,[],!0)}}return Object.fromEntries(this.events)}toJSON(){return Object.fromEntries(this.events)}async scanEvent(e,t,r=null,o=[],l=!1){let a=await(0,tn.readdir)(t,{withFileTypes:!0}),c=l&&/^\(.+\)$/.test(e),m=c?e.slice(1,-1):r??null;a.sort((u,p)=>u.name.localeCompare(p.name));for(let u of a)if(!u.name.startsWith("_")){if(u.isDirectory()){let p=(0,ht.join)(t,u.name);await this.scanEvent(u.name,p,m,o);continue}u.isFile()&&/\.(m|c)?(j|t)sx?$/.test(u.name)&&o.push((0,ht.join)(u.parentPath,u.name))}if(!c){let u=this.events.get(e);if(u){u.listeners=Array.from(new Set([...u.listeners,...o]));return}this.events.set(e,{event:e,path:t,listeners:o,namespace:m})}}};i(nn,"EventsRouter");var Ct=nn;var nr=require("discord.js");var rn=class rn{constructor(e){this.commandkit=e}loadedEvents=new nr.Collection;getEvents(){return this.loadedEvents.size===0?[]:this.loadedEvents.toJSON().map(t=>({name:t.name,namespace:t.namespace,onceListeners:t.listeners.filter(r=>r.once).length,regularListeners:t.listeners.filter(r=>!r.once).length,metadata:t.event}))}async reloadEvents(){this.unregisterAll(),await this.loadEvents()}async loadEvents(){await this.commandkit.plugins.execute((r,o)=>o.onBeforeEventsLoad(r));let t=await this.commandkit.eventsRouter.scan();for(let r of Object.values(t)){let o=[];for(let c of r.listeners){let m=await import(Le(c,!0));(!m.default||typeof m.default!="function")&&y.error(`Event handler for ${r.event}${r.namespace?` of namespace ${r.namespace}`:""} does not have a default export or is not a function`),o.push({handler:m.default,once:!!m.once})}let l=o.length;l||y.warn(`Event ${r.event}${r.namespace?` of namespace ${r.namespace}`:""} does not have any listeners`);let a=`${r.namespace?`${r.namespace}:`:""}${r.event}`;this.loadedEvents.set(a,{name:r.event,namespace:r.namespace,event:r,listeners:o}),y.info(`\u2728 Loaded event ${r.event}${r.namespace?` of namespace ${r.namespace}`:""} with ${l} listener${l===1?"":"s"}`)}this.registerAllClientEvents(),await this.commandkit.plugins.execute((r,o)=>o.onAfterEventsLoad(r))}unregisterAll(){this.unregisterAllClientListeners(),this.loadedEvents.clear()}registerAllClientEvents(){let e=this.commandkit.client;for(let[t,r]of this.loadedEvents.entries()){let{name:o,listeners:l,namespace:a}=r,c=l.filter(b=>b.once),m=l.filter(b=>!b.once),u=new Set,p=i(async(...b)=>{let G=!1,O={name:o,args:b,namespace:a??null,once:!1,metadata:r.event,accept(){G||(G=!0)}};await this.commandkit.plugins.execute(async(S,v)=>{var L;if(!G)return(L=v.willEmitEvent)==null?void 0:L.call(v,S,O)}).catch(Object),await Ft({event:o,namespace:a??null,data:r.event,commandkit:this.commandkit,arguments:b},async()=>{for(let S of m)try{await S.handler(...b)}catch(v){if(v instanceof Oe){y.debug(`Event propagation stopped for ${o}${a?` of namespace ${a}`:""}`);break}y.error(`Error handling event ${o}${a?` of namespace ${a}`:""}`,v)}})},"mainHandler"),g=i(async(...b)=>{let G=!1,O=!1,S={name:o,args:b,namespace:a??null,once:!0,metadata:r.event,accept(){O||(O=!0)}};await this.commandkit.plugins.execute(async(v,L)=>{var ke;if(!O)return(ke=L.willEmitEvent)==null?void 0:ke.call(L,v,S)}).catch(Object);for(let v of c){if(G)break;await Ft({event:o,namespace:a??null,data:r.event,commandkit:this.commandkit,arguments:b},async()=>{try{if(u.has(v.handler))return;await v.handler(...b),u.add(v.handler)}catch(L){L instanceof Oe&&(y.debug(`Event propagation stopped for ${o}${a?` of namespace ${a}`:""}`),G=!0),y.error(`Error handling event ${o}${a?` of namespace ${a}`:""}`,L)}})}u.size===c.length&&m.length===0&&(this.loadedEvents.delete(t),y.info(`\u{1F9F9} Cleaned up completed once-only event ${o}${a?` of namespace ${a}`:""}`))},"onceHandler");this.loadedEvents.set(t,{...r,mainListener:m.length>0?{handler:p,once:!1}:void 0,executedOnceListeners:u}),a?(m.length>0&&this.commandkit.events.on(a,o,p),c.length>0&&this.commandkit.events.once(a,o,g)):(m.length>0&&e.on(o,p),c.length>0&&e.once(o,g)),y.info(`\u{1F50C} Registered event ${o}${a?` of namespace ${a}`:""} (${m.length} regular, ${c.length} once-only)`)}}unregisterAllClientListeners(){let e=this.commandkit.client;for(let[t,{name:r,mainListener:o,namespace:l}]of this.loadedEvents.entries())o?l?this.commandkit.events.off(l,r,o.handler):e.off(r,o.handler):l?this.commandkit.events.removeAllListeners(l,r):e.removeAllListeners(r),this.loadedEvents.delete(t),y.info(`\u{1F5D1}\uFE0F Unregistered event ${r}${l?` of namespace ${l}`:""}`)}};i(rn,"AppEventsHandler");var gt=rn;var ar=require("fs"),sr=require("path");var uo=require("rimraf"),on=require("path"),He=ce(require("fs"));var or=require("child_process");var V;function po(n){process.stdout.write(n),process.stdout.write(`
|
|
15
|
-
`)}i(po,"write");function rr(n){po(x.red(`Error: ${n}`)),process.exit(1)}i(rr,"panic");async function fo(n){return/\.(c|m)?tsx?$/.test(n)?(process.features.typescript||await Co(),!0):!1}i(fo,"ensureTypeScript");var De;function ho(){if(De)return De;let n={"yarn.lock":"yarn","pnpm-lock.yaml":"pnpm","package-lock.json":"npm","bun.lock":"bun","bun.lockb":"bun"};for(let[e,t]of Object.entries(n))if(He.default.existsSync((0,on.join)(process.cwd(),e))){De=t;break}return De||(De="npm"),De}i(ho,"detectPackageManager");async function Co(n){if(V)return V;try{V=await import("typescript")}catch(e){if(e instanceof Error&&"code"in e&&e.code==="MODULE_NOT_FOUND")try{let t=ho();return(0,or.execSync)(`${t} add typescript`,{stdio:"inherit",cwd:process.cwd()}),console.log(x.cyan("TypeScript has been installed automatically, restarting...")),V=await import("typescript"),V}catch{rr("TypeScript is not installed and could not be installed automatically. Please install it manually.")}rr(e||"TypeScript must be installed to use TypeScript config files.")}return V}i(Co,"loadTypeScript");async function ir(n){if(await go(n),await fo(n)&&V){let{transpileModule:r}=V,o=He.default.readFileSync(n,"utf8"),{outputText:l}=r(o,{compilerOptions:{module:V.ModuleKind.ESNext,target:V.ScriptTarget.ESNext,moduleResolution:V.ModuleResolutionKind.NodeNext},fileName:n}),a=await dt(),c=(0,on.join)(a,"compiled-commandkit.config.mjs");He.default.writeFileSync(c,l),n=c}return await import(`file://${n}`).then(r=>r.default||r)}i(ir,"loadConfigFileFromPath");async function go(n){if(!He.default.existsSync(n))throw new Error(`File not found: ${n}`)}i(go,"ensureExists");var xo=["commandkit.config.js","commandkit.config.mjs","commandkit.config.cjs","commandkit.config.ts"];function yo(n){return xo.map(e=>(0,sr.join)(n,e))}i(yo,"getPossibleConfigPaths");function bo(n){let e=yo(n);for(let t of e)if((0,ar.existsSync)(t))return{path:t,isTypeScript:/\.ts$/.test(t)};return null}i(bo,"findConfigFile");var an=null;async function lr(n=process.cwd()){if(an)return an;let e=bo(n);if(!e)return ot();let t=await ir(e.path);return an=t,t}i(lr,"loadConfigFile");function cr(n){W&&process.on("message",async e=>{if(typeof e!="object"||e===null)return;let{event:t,path:r,id:o}=e;if(!t)return;process.env.COMMANDKIT_DEBUG_HMR==="true"&&y.info(`Received HMR event: ${t}${r?` for ${r}`:""}`);let l=!1,a=!1,c=!1,m={accept(){l=!0},preventDefault(){a=!0},path:r,event:t};try{if(await n.plugins.execute(async(u,p)=>{var g;l||await((g=p.performHMR)==null?void 0:g.call(p,u,m))}),a)return;switch(t){case Qe.ReloadCommands:n.commandHandler.reloadCommands(),c=!0;break;case Qe.ReloadEvents:n.eventHandler.reloadEvents(),c=!0;break;case Qe.Unknown:c=!1;break;default:break}}finally{o&&process.send&&process.send({type:"commandkit-hmr-ack",id:o,handled:c||l})}})}i(cr,"registerDevHooks");var pr=require("fs");var mr=ce(require("events"));var sn=class sn{constructor(e){this.commandkit=e}emitter=new mr.default;to(e){return{on:this.on.bind(this,e),off:this.off.bind(this,e),once:this.once.bind(this,e),emit:this.emit.bind(this,e),removeAllListeners:this.removeAllListeners.bind(this,e)}}on(e,t,r){this.emitter.on(`${e}:${t}`,r)}off(e,t,r){this.emitter.off(`${e}:${t}`,r)}once(e,t,r){this.emitter.once(`${e}:${t}`,r)}emit(e,t,...r){return this.emitter.emit(`${e}:${t}`,...r)}removeAllListeners(e,t){t?this.emitter.removeAllListeners(`${e}:${t}`):this.emitter.removeAllListeners(e)}};i(sn,"CommandKitEventsChannel");var xt=sn;var ur=require("discord.js");var ln=class ln extends ur.Collection{};i(ln,"FlagStore");var yt=ln;var Eo,cn=new Set,mn=new Set;var Te,_,fr,hr,Cr,gr,xr,J=class J extends dr.default{constructor(t){if(J.instance&&process.emitWarning("CommandKit instance already exists. Having multiple instance in same project is discouraged and it may lead to unexpected behavior.",{code:"MultiInstanceWarning"}),!t.client)throw new Error(x.red('"client" is required when instantiating CommandKit.'));super();this.options=t;h(this,_);h(this,Te,!1);E(this,"eventInterceptor");E(this,"config",{defaultLocale:Et.Locale.EnglishUS,getMessageCommandPrefix:i(()=>"!","getMessageCommandPrefix")});E(this,"store",new Map);E(this,"flags",new yt);E(this,"commandsRouter");E(this,"eventsRouter");E(this,"commandHandler",new pt(this));E(this,"eventHandler",new gt(this));E(this,"plugins");E(this,"events",new xt(this));this.plugins=new nt(this),J.instance||(J.instance=this),Eo=J.instance,C(this,_,fr).call(this)}async start(t){if(!s(this,Te)){if(!this.options.client)throw new Error(x.red('"client" is required when starting CommandKit.'));if(this.eventInterceptor=new Be(this.client),W)try{cr(this),await dt()}catch(r){process.env.COMMANDKIT_DEBUG_TYPEGEN&&y.error(r)}if(await this.loadPlugins(),await C(this,_,Cr).call(this),this.commandHandler.registerCommandHandler(),this.incrementClientListenersCount(),t!==!1&&!this.options.client.isReady()){this.client.once(Et.Events.ClientReady,async()=>{await this.commandHandler.registrar.register()}),await this.plugins.execute((o,l)=>{var a;return(a=l.onBeforeClientLogin)==null?void 0:a.call(l,o)});let r=t??this.options.client.token??process.env.TOKEN??process.env.DISCORD_TOKEN;await this.options.client.login(r),await this.plugins.execute((o,l)=>{var a;return(a=l.onAfterClientLogin)==null?void 0:a.call(l,o)})}else this.options.client.isReady()&&await this.commandHandler.registrar.register();d(this,Te,!0),await C(this,_,hr).call(this)}}async loadPlugins(){let r=(await lr()).plugins.flat(2).filter(o=>Ln(o));if(r.length)for(let o of r)await this.plugins.softRegisterPlugin(o)}get started(){return s(this,Te)}setPrefixResolver(t){return this.config.getMessageCommandPrefix=t,this}setDefaultLocale(t){return this.config.defaultLocale=t,this}get client(){return this.options.client}async reloadCommands(){await this.commandHandler.reloadCommands()}async reloadEvents(){await this.eventHandler.reloadEvents()}incrementClientListenersCount(){this.options.client.setMaxListeners(this.options.client.getMaxListeners()+1)}decrementClientListenersCount(){this.options.client.setMaxListeners(this.options.client.getMaxListeners()-1)}getAppDirectory(){return Hn()}getPath(t){let r=this.getAppDirectory();if(!r)return null;switch(t){case"commands":return(0,un.join)(r,"commands");case"events":return(0,un.join)(r,"events");default:return t}}};Te=new WeakMap,_=new WeakSet,fr=i(async function(){for(let t of cn)try{await t(this)}catch(r){y.error("Error while executing bootstrap hook: ",r)}finally{cn.delete(t)}cn.clear()},"#bootstrapHooks"),hr=i(async function(){for(let t of mn)try{await t(this)}catch(r){y.error("Error while executing application bootstrap hook: ",r)}finally{mn.delete(t)}mn.clear()},"#applicationBootstrapHooks"),Cr=i(async function(){if(!this.getAppDirectory())return;let r=this.getPath("commands"),o=this.getPath("events");this.commandsRouter=new ft({entrypoint:r}),await this.plugins.execute((l,a)=>a.onCommandsRouterInit(l)),this.eventsRouter=new Ct({entrypoints:[o]}),await this.plugins.execute((l,a)=>a.onEventsRouterInit(l)),await C(this,_,xr).call(this),await C(this,_,gr).call(this)},"#init"),gr=i(async function(){if(this.commandsRouter.isValidPath()){let t=await this.commandsRouter.scan();W&&(0,pr.writeFileSync)("./.commandkit/commands.json",JSON.stringify(t,null,2))}await this.commandHandler.loadCommands(),this.commandHandler.printBanner()},"#initCommands"),xr=i(async function(){this.eventsRouter.isValidPath()&&await this.eventsRouter.scan(),await this.eventHandler.loadEvents()},"#initEvents"),i(J,"CommandKit"),E(J,"createElement",pn),E(J,"Fragment",dn),E(J,"instance");var bt=J;var vo=Symbol("commandkitCommandWorker"),Ge=new yr.AsyncLocalStorage;function U(n){return Ge.exit(n)}i(U,"exitContext");function ut(n,e){return Reflect.set(n,vo,!0),Ge.run(n,e)}i(ut,"provideContext");function qn(n,e,t){return i((...o)=>ut(n,async()=>{try{return await e(...o)}catch(l){Ze(l)||n.setExecutionError(l)}finally{typeof t=="function"&&setImmediate(async()=>{try{await t(...o)}catch{}})}}),"_fn")}i(qn,"makeContextAwareFunction");function N(n=!1){var t;let e=((t=Ge.getStore())==null?void 0:t.commandkit)??bt.instance;if(!e&&n)throw new Error("CommandKit instance not found.");return e}i(N,"getCommandKit");function I(){return Ge.getStore()}i(I,"getContext");function zn(){let n=Ge.getStore();if(!n)throw new Error("No commandkit environment found. Please make sure you are inside commandkit handler.");return n}i(zn,"useEnvironment");var se,P,de,Y,br,Er,fn,hn=class hn extends le.ButtonBuilder{constructor(){super(...arguments);h(this,Y);h(this,se,null);h(this,P,{autoReset:!0,time:5*60*1e3,once:!1});h(this,de,null)}onClick(t,r){var o,l,a,c;if(this.data.style===le.ButtonStyle.Link)throw new TypeError('Cannot setup "onClick" handler on link buttons.');if(!t)throw new TypeError('Cannot setup "onClick" without a handler function parameter.');return s(this,se)&&C(this,Y,fn).call(this),d(this,se,t),r&&d(this,P,{autoReset:r.autoReset??((o=s(this,P))==null?void 0:o.autoReset)??!0,time:r.time??((l=s(this,P))==null?void 0:l.time)??5*60*1e3,filter:r.filter??((a=s(this,P))==null?void 0:a.filter),onEnd:r.onEnd??((c=s(this,P))==null?void 0:c.onEnd)}),C(this,Y,Er).call(this),this}onEnd(t){if(this.data.style===le.ButtonStyle.Link)throw new TypeError('Cannot setup "onEnd" handler on link buttons.');if(!t)throw new TypeError('Cannot setup "onEnd" without a handler function parameter.');return s(this,P)??d(this,P,{}),s(this,P).onEnd=t,this}onError(t){if(!t)throw new TypeError('Cannot setup "onError" without a handler function parameter.');return s(this,P)??d(this,P,{}),s(this,P).onError=t,this}filter(t){return s(this,P)??d(this,P,{autoReset:!0,time:5*60*1e3}),s(this,P).filter=t,this}get customId(){return this.data.custom_id??this.data.customId}dispose(){return C(this,Y,fn).call(this),this}};se=new WeakMap,P=new WeakMap,de=new WeakMap,Y=new WeakSet,br=i(function(){let t=I();return t?U(()=>t.commandkit.eventInterceptor):N(!0).eventInterceptor},"#getEventInterceptor"),Er=i(function(){if(this.data.style===le.ButtonStyle.Link||!s(this,P)||!s(this,se))return;if((this.customId??null)===null)throw new TypeError('Cannot setup "onClick" handler on a button without a custom id.');let r=C(this,Y,br).call(this);d(this,de,r.subscribe(le.Events.InteractionCreate,async o=>{var u,p;if(!o.isButton())return;let l=this.customId??null,a=o.customId;if(l&&a!==l)return;let c=(u=s(this,P))==null?void 0:u.filter;if(c&&!await c(o))return;let m=s(this,se);return m?m(o,this):(p=s(this,de))==null?void 0:p.call(this)},s(this,P)))},"#setupInteractionCollector"),fn=i(function(){var t;(t=s(this,de))==null||t.call(this),d(this,de,null),d(this,P,null),d(this,se,null)},"#destroyCollector"),i(hn,"ButtonKit");var je=hn;var vr=require("discord.js");function wo(n){let e=new je;n.style??=vr.ButtonStyle.Primary,n.onClick&&(n.customId??=`buttonkit::${crypto.randomUUID()}`),n.customId&&e.setCustomId(n.customId),n.onClick&&e.onClick(n.onClick,n.options),n.disabled&&e.setDisabled(n.disabled),n.emoji&&e.setEmoji(n.emoji),n.skuId&&e.setSKUId(n.skuId),n.url&&e.setURL(n.url),n.style&&e.setStyle(n.style);let t=n.label||n.children;return t&&e.setLabel(Array.isArray(t)?t.join(" "):typeof t=="string"?t:String(t)),n.onEnd&&e.onEnd(n.onEnd),n.onError&&e.onError(n.onError),e}i(wo,"Button");var vt=require("discord.js");var pe,K,fe,X,wr,Mr,Cn,gn=class gn extends vt.ModalBuilder{constructor(){super(...arguments);h(this,X);h(this,pe,null);h(this,K,{autoReset:!1,time:5*60*1e3,once:!0});h(this,fe,null)}onSubmit(t,r){var o,l,a,c;if(!t)throw new TypeError('Cannot setup "onClick" without a handler function parameter.');return s(this,pe)&&C(this,X,Cn).call(this),d(this,pe,t),r&&d(this,K,{autoReset:r.autoReset??((o=s(this,K))==null?void 0:o.autoReset)??!0,time:r.time??((l=s(this,K))==null?void 0:l.time)??5*60*1e3,filter:r.filter??((a=s(this,K))==null?void 0:a.filter),onEnd:r.onEnd??((c=s(this,K))==null?void 0:c.onEnd)}),C(this,X,Mr).call(this),this}onEnd(t){if(!t)throw new TypeError('Cannot setup "onEnd" without a handler function parameter.');return s(this,K)??d(this,K,{}),s(this,K).onEnd=t,this}onError(t){if(!t)throw new TypeError('Cannot setup "onError" without a handler function parameter.');return s(this,K)??d(this,K,{}),s(this,K).onError=t,this}filter(t){return s(this,K)??d(this,K,{autoReset:!0,time:5*60*1e3}),s(this,K).filter=t,this}get customId(){return this.data.custom_id??this.data.customId}dispose(){return C(this,X,Cn).call(this),this}};pe=new WeakMap,K=new WeakMap,fe=new WeakMap,X=new WeakSet,wr=i(function(){let t=I();return t?U(()=>t.commandkit.eventInterceptor):N(!0).eventInterceptor},"#getEventInterceptor"),Mr=i(function(){if(!s(this,K))return;if(!this.customId)throw new TypeError("Cannot setup an modal collector without a custom ID.");let t=C(this,X,wr).call(this);t&&d(this,fe,t.subscribe(vt.Events.InteractionCreate,async r=>{var m,u;if(!r.isModalSubmit())return;let o=this.customId??null,l=r.customId;if(o&&l!==o)return;let a=(m=s(this,K))==null?void 0:m.filter;if(a&&!await a(r))return;let c=s(this,pe);return c?c(r,this):(u=s(this,fe))==null?void 0:u.call(this)},s(this,K)))},"#setupCollector"),Cn=i(function(){var t;(t=s(this,fe))==null||t.call(this),d(this,fe,null),d(this,pe,null),d(this,K,null)},"#destroyCollector"),i(gn,"ModalKit");var _e=gn;var Q=require("discord.js");function Mo(n){let e=new _e;if(n.title&&e.setTitle(n.title),n.onSubmit&&(n.customId??=`modalkit::${crypto.randomUUID()}`),n.customId&&e.setCustomId(n.customId),n.onSubmit&&e.onSubmit(n.onSubmit,n.options),n.children){let t=(Array.isArray(n.children)?n.children:[n.children]).map(r=>{if(r instanceof Q.ActionRowBuilder)return r;if(r instanceof Q.TextInputBuilder)return new Q.ActionRowBuilder().addComponents(r)}).filter(r=>r!=null);e.addComponents(t)}return n.onEnd&&e.onEnd(n.onEnd),n.onError&&e.onError(n.onError),e}i(Mo,"Modal");function xn(n){let e=new Q.TextInputBuilder().setStyle(n.style);return n.customId&&e.setCustomId(n.customId),n.label&&e.setLabel(n.label),n.placeholder&&e.setPlaceholder(n.placeholder),n.maxLength&&e.setMaxLength(n.maxLength),n.minLength&&e.setMinLength(n.minLength),n.value&&e.setValue(n.value),n.required&&e.setRequired(n.required),e}i(xn,"TextInput");function Io(n){return xn({...n,style:Q.TextInputStyle.Short})}i(Io,"ShortInput");function So(n){return xn({...n,style:Q.TextInputStyle.Paragraph})}i(So,"ParagraphInput");var wt=require("discord.js");var he,D,Ce,Z,Ir,Sr,yn,bn=class bn extends wt.StringSelectMenuBuilder{constructor(){super(...arguments);h(this,Z);h(this,he,null);h(this,D,{autoReset:!1,time:5*60*1e3,once:!0});h(this,Ce,null)}onSelect(t,r){var o,l,a,c;if(!t)throw new TypeError('Cannot setup "onClick" without a handler function parameter.');return s(this,he)&&C(this,Z,yn).call(this),d(this,he,t),r&&d(this,D,{autoReset:r.autoReset??((o=s(this,D))==null?void 0:o.autoReset)??!0,time:r.time??((l=s(this,D))==null?void 0:l.time)??5*60*1e3,filter:r.filter??((a=s(this,D))==null?void 0:a.filter),onEnd:r.onEnd??((c=s(this,D))==null?void 0:c.onEnd)}),C(this,Z,Sr).call(this),this}onEnd(t){if(!t)throw new TypeError('Cannot setup "onEnd" without a handler function parameter.');return s(this,D)??d(this,D,{}),s(this,D).onEnd=t,this}onError(t){if(!t)throw new TypeError('Cannot setup "onError" without a handler function parameter.');return s(this,D)??d(this,D,{}),s(this,D).onError=t,this}filter(t){return s(this,D)??d(this,D,{autoReset:!0,time:5*60*1e3}),s(this,D).filter=t,this}get customId(){return this.data.custom_id??this.data.customId}dispose(){return C(this,Z,yn).call(this),this}};he=new WeakMap,D=new WeakMap,Ce=new WeakMap,Z=new WeakSet,Ir=i(function(){let t=I();return t?U(()=>t.commandkit.eventInterceptor):N(!0).eventInterceptor},"#getEventInterceptor"),Sr=i(function(){if(!s(this,D))return;if(!this.customId)throw new TypeError("Cannot setup an modal collector without a custom ID.");let t=C(this,Z,Ir).call(this);t&&d(this,Ce,t.subscribe(wt.Events.InteractionCreate,async r=>{var m,u;if(!r.isStringSelectMenu())return;let o=this.customId??null,l=r.customId;if(o&&l!==o)return;let a=(m=s(this,D))==null?void 0:m.filter;if(a&&!await a(r))return;let c=s(this,he);return c?c(r,this):(u=s(this,Ce))==null?void 0:u.call(this)},s(this,D)))},"#setupCollector"),yn=i(function(){var t;(t=s(this,Ce))==null||t.call(this),d(this,Ce,null),d(this,he,null),d(this,D,null)},"#destroyCollector"),i(bn,"StringSelectMenuKit");var We=bn;var Mt=require("discord.js");var ge,T,xe,ee,Rr,Pr,En,vn=class vn extends Mt.ChannelSelectMenuBuilder{constructor(){super(...arguments);h(this,ee);h(this,ge,null);h(this,T,{autoReset:!1,time:5*60*1e3,once:!0});h(this,xe,null)}onSelect(t,r){var o,l,a,c;if(!t)throw new TypeError('Cannot setup "onClick" without a handler function parameter.');return s(this,ge)&&C(this,ee,En).call(this),d(this,ge,t),r&&d(this,T,{autoReset:r.autoReset??((o=s(this,T))==null?void 0:o.autoReset)??!0,time:r.time??((l=s(this,T))==null?void 0:l.time)??5*60*1e3,filter:r.filter??((a=s(this,T))==null?void 0:a.filter),onEnd:r.onEnd??((c=s(this,T))==null?void 0:c.onEnd)}),C(this,ee,Pr).call(this),this}onEnd(t){if(!t)throw new TypeError('Cannot setup "onEnd" without a handler function parameter.');return s(this,T)??d(this,T,{}),s(this,T).onEnd=t,this}onError(t){if(!t)throw new TypeError('Cannot setup "onError" without a handler function parameter.');return s(this,T)??d(this,T,{}),s(this,T).onError=t,this}filter(t){return s(this,T)??d(this,T,{autoReset:!0,time:5*60*1e3}),s(this,T).filter=t,this}get customId(){return this.data.custom_id??this.data.customId}dispose(){return C(this,ee,En).call(this),this}};ge=new WeakMap,T=new WeakMap,xe=new WeakMap,ee=new WeakSet,Rr=i(function(){let t=I();return t?U(()=>t.commandkit.eventInterceptor):N(!0).eventInterceptor},"#getEventInterceptor"),Pr=i(function(){if(!s(this,T))return;if(!this.customId)throw new TypeError("Cannot setup an modal collector without a custom ID.");let t=C(this,ee,Rr).call(this);t&&d(this,xe,t.subscribe(Mt.Events.InteractionCreate,async r=>{var m,u;if(!r.isChannelSelectMenu())return;let o=this.customId??null,l=r.customId;if(o&&l!==o)return;let a=(m=s(this,T))==null?void 0:m.filter;if(a&&!await a(r))return;let c=s(this,ge);return c?c(r,this):(u=s(this,xe))==null?void 0:u.call(this)},s(this,T)))},"#setupCollector"),En=i(function(){var t;(t=s(this,xe))==null||t.call(this),d(this,xe,null),d(this,ge,null),d(this,T,null)},"#destroyCollector"),i(vn,"ChannelSelectMenuKit");var Ve=vn;var It=require("discord.js");var ye,A,be,te,Kr,Dr,wn,Mn=class Mn extends It.MentionableSelectMenuBuilder{constructor(){super(...arguments);h(this,te);h(this,ye,null);h(this,A,{autoReset:!1,time:5*60*1e3,once:!0});h(this,be,null)}onSelect(t,r){var o,l,a,c;if(!t)throw new TypeError('Cannot setup "onClick" without a handler function parameter.');return s(this,ye)&&C(this,te,wn).call(this),d(this,ye,t),r&&d(this,A,{autoReset:r.autoReset??((o=s(this,A))==null?void 0:o.autoReset)??!0,time:r.time??((l=s(this,A))==null?void 0:l.time)??5*60*1e3,filter:r.filter??((a=s(this,A))==null?void 0:a.filter),onEnd:r.onEnd??((c=s(this,A))==null?void 0:c.onEnd)}),C(this,te,Dr).call(this),this}onEnd(t){if(!t)throw new TypeError('Cannot setup "onEnd" without a handler function parameter.');return s(this,A)??d(this,A,{}),s(this,A).onEnd=t,this}onError(t){if(!t)throw new TypeError('Cannot setup "onError" without a handler function parameter.');return s(this,A)??d(this,A,{}),s(this,A).onError=t,this}filter(t){return s(this,A)??d(this,A,{autoReset:!0,time:5*60*1e3}),s(this,A).filter=t,this}get customId(){return this.data.custom_id??this.data.customId}dispose(){return C(this,te,wn).call(this),this}};ye=new WeakMap,A=new WeakMap,be=new WeakMap,te=new WeakSet,Kr=i(function(){let t=I();return t?U(()=>t.commandkit.eventInterceptor):N(!0).eventInterceptor},"#getEventInterceptor"),Dr=i(function(){if(!s(this,A))return;if(!this.customId)throw new TypeError("Cannot setup an modal collector without a custom ID.");let t=C(this,te,Kr).call(this);t&&d(this,be,t.subscribe(It.Events.InteractionCreate,async r=>{var m,u;if(!r.isMentionableSelectMenu())return;let o=this.customId??null,l=r.customId;if(o&&l!==o)return;let a=(m=s(this,A))==null?void 0:m.filter;if(a&&!await a(r))return;let c=s(this,ye);return c?c(r,this):(u=s(this,be))==null?void 0:u.call(this)},s(this,A)))},"#setupCollector"),wn=i(function(){var t;(t=s(this,be))==null||t.call(this),d(this,be,null),d(this,ye,null),d(this,A,null)},"#destroyCollector"),i(Mn,"MentionableSelectMenuKit");var qe=Mn;var St=require("discord.js");var Ee,k,ve,ne,Tr,Ar,In,Sn=class Sn extends St.UserSelectMenuBuilder{constructor(){super(...arguments);h(this,ne);h(this,Ee,null);h(this,k,{autoReset:!1,time:5*60*1e3,once:!0});h(this,ve,null)}onSelect(t,r){var o,l,a,c;if(!t)throw new TypeError('Cannot setup "onClick" without a handler function parameter.');return s(this,Ee)&&C(this,ne,In).call(this),d(this,Ee,t),r&&d(this,k,{autoReset:r.autoReset??((o=s(this,k))==null?void 0:o.autoReset)??!0,time:r.time??((l=s(this,k))==null?void 0:l.time)??5*60*1e3,filter:r.filter??((a=s(this,k))==null?void 0:a.filter),onEnd:r.onEnd??((c=s(this,k))==null?void 0:c.onEnd)}),C(this,ne,Ar).call(this),this}onEnd(t){if(!t)throw new TypeError('Cannot setup "onEnd" without a handler function parameter.');return s(this,k)??d(this,k,{}),s(this,k).onEnd=t,this}onError(t){if(!t)throw new TypeError('Cannot setup "onError" without a handler function parameter.');return s(this,k)??d(this,k,{}),s(this,k).onError=t,this}filter(t){return s(this,k)??d(this,k,{autoReset:!0,time:5*60*1e3}),s(this,k).filter=t,this}get customId(){return this.data.custom_id??this.data.customId}dispose(){return C(this,ne,In).call(this),this}};Ee=new WeakMap,k=new WeakMap,ve=new WeakMap,ne=new WeakSet,Tr=i(function(){let t=I();return t?U(()=>t.commandkit.eventInterceptor):N(!0).eventInterceptor},"#getEventInterceptor"),Ar=i(function(){if(!s(this,k))return;if(!this.customId)throw new TypeError("Cannot setup an modal collector without a custom ID.");let t=C(this,ne,Tr).call(this);t&&d(this,ve,t.subscribe(St.Events.InteractionCreate,async r=>{var m,u;if(!r.isUserSelectMenu())return;let o=this.customId??null,l=r.customId;if(o&&l!==o)return;let a=(m=s(this,k))==null?void 0:m.filter;if(a&&!await a(r))return;let c=s(this,Ee);return c?c(r,this):(u=s(this,ve))==null?void 0:u.call(this)},s(this,k)))},"#setupCollector"),In=i(function(){var t;(t=s(this,ve))==null||t.call(this),d(this,ve,null),d(this,Ee,null),d(this,k,null)},"#destroyCollector"),i(Sn,"UserSelectMenuKit");var ze=Sn;var Rt=require("discord.js");var we,B,Me,re,kr,Br,Rn,Pn=class Pn extends Rt.RoleSelectMenuBuilder{constructor(){super(...arguments);h(this,re);h(this,we,null);h(this,B,{autoReset:!1,time:5*60*1e3,once:!0});h(this,Me,null)}onSelect(t,r){var o,l,a,c;if(!t)throw new TypeError('Cannot setup "onClick" without a handler function parameter.');return s(this,we)&&C(this,re,Rn).call(this),d(this,we,t),r&&d(this,B,{autoReset:r.autoReset??((o=s(this,B))==null?void 0:o.autoReset)??!0,time:r.time??((l=s(this,B))==null?void 0:l.time)??5*60*1e3,filter:r.filter??((a=s(this,B))==null?void 0:a.filter),onEnd:r.onEnd??((c=s(this,B))==null?void 0:c.onEnd)}),C(this,re,Br).call(this),this}onEnd(t){if(!t)throw new TypeError('Cannot setup "onEnd" without a handler function parameter.');return s(this,B)??d(this,B,{}),s(this,B).onEnd=t,this}onError(t){if(!t)throw new TypeError('Cannot setup "onError" without a handler function parameter.');return s(this,B)??d(this,B,{}),s(this,B).onError=t,this}filter(t){return s(this,B)??d(this,B,{autoReset:!0,time:5*60*1e3}),s(this,B).filter=t,this}get customId(){return this.data.custom_id??this.data.customId}dispose(){return C(this,re,Rn).call(this),this}};we=new WeakMap,B=new WeakMap,Me=new WeakMap,re=new WeakSet,kr=i(function(){let t=I();return t?U(()=>t.commandkit.eventInterceptor):N(!0).eventInterceptor},"#getEventInterceptor"),Br=i(function(){if(!s(this,B))return;if(!this.customId)throw new TypeError("Cannot setup an modal collector without a custom ID.");let t=C(this,re,kr).call(this);t&&d(this,Me,t.subscribe(Rt.Events.InteractionCreate,async r=>{var m,u;if(!r.isRoleSelectMenu())return;let o=this.customId??null,l=r.customId;if(o&&l!==o)return;let a=(m=s(this,B))==null?void 0:m.filter;if(a&&!await a(r))return;let c=s(this,we);return c?c(r,this):(u=s(this,Me))==null?void 0:u.call(this)},s(this,B)))},"#setupCollector"),Rn=i(function(){var t;(t=s(this,Me))==null||t.call(this),d(this,Me,null),d(this,we,null),d(this,B,null)},"#destroyCollector"),i(Pn,"RoleSelectMenuKit");var Je=Pn;var Or=require("discord.js");function Ye(n,e){n.setCustomId(e.customId??`select-menu::${crypto.randomUUID()}`),e.maxValues!=null&&n.setMaxValues(e.maxValues),e.minValues!=null&&n.setMinValues(e.minValues),e.placeholder&&n.setPlaceholder(e.placeholder),e.disabled&&n.setDisabled(e.disabled),e.onEnd&&n.onEnd(e.onEnd),e.onError&&n.onError(e.onError),e.onSelect&&n.onSelect(e.onSelect,e.options)}i(Ye,"applyPropsToBuilder");function Ro(n){let e=new We;return Ye(e,n),n.children&&e.setOptions(Array.isArray(n.children)?n.children:[n.children]),n.children&&e.setOptions(Array.isArray(n.children)?n.children:[n.children]),e}i(Ro,"StringSelectMenu");function Po(n){return new Or.StringSelectMenuOptionBuilder(n)}i(Po,"StringSelectMenuOption");function Ko(n){let e=new ze;return Ye(e,n),n.defaultValues&&e.setDefaultUsers(Array.isArray(n.defaultValues)?n.defaultValues:[n.defaultValues]),e}i(Ko,"UserSelectMenu");function Do(n){let e=new Je;return Ye(e,n),n.defaultValues&&e.setDefaultRoles(Array.isArray(n.defaultValues)?n.defaultValues:[n.defaultValues]),e}i(Do,"RoleSelectMenu");function To(n){let e=new qe;return Ye(e,n),n.defaultValues&&e.setDefaultValues(Array.isArray(n.defaultValues)?n.defaultValues:[n.defaultValues]),e}i(To,"MentionableSelectMenu");function Ao(n){let e=new Ve;return Ye(e,n),n.defaultValues&&e.setDefaultChannels(Array.isArray(n.defaultValues)?n.defaultValues:[n.defaultValues]),n.channelTypes&&e.setChannelTypes(Array.isArray(n.channelTypes)?n.channelTypes:[n.channelTypes]),e}i(Ao,"ChannelSelectMenu");var H=require("discord.js");function Ae(n,e){n.id!=null&&e.setId(n.id)}i(Ae,"applyId");function ko(n){let e=new H.ContainerBuilder;if(Ae(n,e),typeof n.accentColor!=null&&e.setAccentColor(n.accentColor),n.spoiler!=null&&e.setSpoiler(n.spoiler),n.children!=null){if(Array.isArray(n.children)||(n.children=[n.children]),n.children.length===0)return e;for(let t of n.children.flat())t instanceof H.TextDisplayBuilder&&e.addTextDisplayComponents(t),t instanceof H.FileBuilder&&e.addFileComponents(t),t instanceof H.ActionRowBuilder&&e.addActionRowComponents(t),t instanceof H.SeparatorBuilder&&e.addSeparatorComponents(t),t instanceof H.SectionBuilder&&e.addSectionComponents(t),t instanceof H.MediaGalleryBuilder&&e.addMediaGalleryComponents(t)}return e}i(ko,"Container");var Lr=require("discord.js");function Bo(n){let e=new Lr.FileBuilder(n);return n.url!=null&&e.setURL(n.url),e}i(Bo,"File");var Pt=require("discord.js");function Oo(n){let e=new Pt.MediaGalleryBuilder;return Ae(n,e),n.children!=null&&(Array.isArray(n.children)||(n.children=[n.children]),e.addItems(n.children.flat())),e}i(Oo,"MediaGallery");function Lo(n){let e=new Pt.MediaGalleryItemBuilder;return n.description!=null&&e.setDescription(n.description),n.spoiler!=null&&e.setSpoiler(n.spoiler),n.url!=null&&e.setURL(n.url),e}i(Lo,"MediaGalleryItem");var oe=require("discord.js");function $o(n){let e=new oe.SectionBuilder;if(Ae(n,e),n.children!=null){Array.isArray(n.children)||(n.children=[n.children]);for(let t of n.children.flat())t instanceof oe.ThumbnailBuilder?e.setThumbnailAccessory(t):t instanceof oe.ButtonBuilder?e.setButtonAccessory(t):t instanceof oe.TextDisplayBuilder&&e.addTextDisplayComponents(t)}return e}i($o,"Section");function Fo(n){return new oe.ThumbnailBuilder({description:n.description,spoiler:n.spoiler,id:n.id,media:{url:n.url}})}i(Fo,"Thumbnail");var $r=require("discord.js");function Uo(n){return new $r.SeparatorBuilder(n)}i(Uo,"Separator");var Fr=require("discord.js");function No(n){let e=new Fr.TextDisplayBuilder(n);return!n.content&&n.children&&(Array.isArray(n.children)?e.setContent(n.children.join(" ")):e.setContent(typeof n.children=="string"?n.children:String(n.children))),e}i(No,"TextDisplay");var Ur=new Set;function Ho(n,e="CommandKitWarning"){process.emitWarning(n,{code:e})}i(Ho,"emitWarning");function Kn(n){Ur.has(n)||(Ur.add(n),Ho(`${n} is unstable and may change in future versions.`,"CommandKitUnstableWarning"))}i(Kn,"warnUnstable");var Go={ActionRow:"action-row",Button:"button-kit",Modal:"modal",TextInput:"text-input"};function jo(n){return!(typeof n!="object"||n===null||!Reflect.has(n,"type")||!Reflect.has(n,"data"))}i(jo,"isCommandKitElement");function _o(n){return n.data}i(_o,"getElement");function dn(n){return Kn("CommandKit JSX"),Array.isArray(n.children)?n.children.flat():[n.children]}i(dn,"Fragment");function pn(n,e,...t){return Kn("CommandKit JSX"),n({...e,children:e.children??t})}i(pn,"createElement");0&&(module.exports={ActionRow,Button,ButtonKit,ChannelSelectMenu,ChannelSelectMenuKit,Container,ElementType,EventInterceptor,File,Fragment,MediaGallery,MediaGalleryItem,MentionableSelectMenu,MentionableSelectMenuKit,Modal,ModalKit,ParagraphInput,RoleSelectMenu,RoleSelectMenuKit,Section,Separator,ShortInput,StringSelectMenu,StringSelectMenuKit,StringSelectMenuOption,TextDisplay,TextInput,Thumbnail,UserSelectMenu,UserSelectMenuKit,createElement,getElement,isCommandKitElement,jsx,jsxs});
|
|
14
|
+
`,t=(0,ie.join)(process.cwd(),"node_modules","commandkit-types");if(!(0,Jn.existsSync)(t))return;let r=(0,ie.join)(t,"command.d.ts");await(0,ae.writeFile)(r,e,{encoding:"utf-8"})}i(Yn,"rewriteCommandDeclaration");var ao={command:i(n=>n instanceof R.SlashCommandBuilder||n instanceof R.ContextMenuCommandBuilder||n&&typeof n=="object","command"),chatInput:i(n=>typeof n=="function","chatInput"),autocomplete:i(n=>typeof n=="function","autocomplete"),message:i(n=>typeof n=="function","message"),messageContextMenu:i(n=>typeof n=="function","messageContextMenu"),userContextMenu:i(n=>typeof n=="function","userContextMenu")},so={beforeExecute:i(n=>typeof n=="function","beforeExecute"),afterExecute:i(n=>typeof n=="function","afterExecute")},Xt=class Xt{constructor(e){this.commandkit=e;this.registrar=new at(this.commandkit)}loadedCommands=new R.Collection;loadedMiddlewares=new R.Collection;commandNameToId=new Map;subcommandPathToId=new Map;registrar;onInteraction=null;onMessageCreate=null;commandRunner=new ct(this);externalCommandData=new R.Collection;externalMiddlewareData=new R.Collection;printBanner(){let e=crypto.randomUUID(),t=this.getCommandsArray().reduce((m,u)=>{let p=u.command.category||e;return m[p]=m[p]||[],m[p].push(u),m},{});console.log(x.green(`Loaded ${x.magenta(this.loadedCommands.size.toString())} commands:`));let r=Object.keys(t).sort(),o={};r.forEach(m=>{if(m!==e&&m.includes(":")){let u=m.split(":"),p=null;for(let g=u.length-1;g>0;g--){let b=u.slice(0,g).join(":");if(r.includes(b)){p=b;break}}p&&(o[p]=o[p]||[],o[p].push(m))}});let l=new Set,a=i((m,u="",p=!1,g="")=>{if(l.has(m))return;l.add(m);let b=t[m],G=o[m]&&o[m].length>0,O=p?"\u2514\u2500":"\u251C\u2500",S=g+(p?" ":"\u2502 ");if(m!==e){let w=m.includes(":")?m.split(":").pop():m;console.log(x.cyan(`${u}${O} ${x.bold(w)}`))}if(b.forEach((w,L)=>{let Kt=L===b.length-1&&!G?"\u2514\u2500":"\u251C\u2500",Nr=m!==e?S:u,Hr=w.data.command.name,Gr=w.command.middlewares.length>0?x.magenta(" (\u03BB)"):"";console.log(`${x.green(`${Nr}${Kt}`)} ${x.yellow(Hr)}${Gr}`)}),G){let w=o[m].sort();w.forEach((L,Be)=>{let Kt=Be===w.length-1;a(L,S,Kt,S)})}},"printCategory"),c=r.filter(m=>{if(m===e)return!0;if(m.includes(":")){let u=m.split(":");for(let p=1;p<u.length;p++){let g=u.slice(0,p).join(":");if(r.includes(g))return!1}return!0}return!0}).sort();c.forEach((m,u)=>{let p=u===c.length-1;a(m,"",p)})}getCommandsArray(){return Array.from(this.loadedCommands.values())}registerCommandHandler(){this.onInteraction??=async e=>{if(await this.commandkit.plugins.execute(async(l,a)=>a.onBeforeInteraction(l,e))||!(e.isCommand()||e.isAutocomplete()||e.isUserContextMenuCommand()||e.isMessageContextMenuCommand()))return;let o=await this.prepareCommandRun(e);if(o)return this.commandRunner.runCommand(o,e)},this.onMessageCreate??=async e=>{if(await this.commandkit.plugins.execute(async(o,l)=>l.onBeforeMessageCommand(o,e))||e.author.bot)return;let r=await this.prepareCommandRun(e);if(r)return this.commandRunner.runCommand(r,e)},this.commandkit.client.on(R.Events.InteractionCreate,this.onInteraction),this.commandkit.client.on(R.Events.MessageCreate,this.onMessageCreate)}async prepareCommandRun(e,t){var c;let r;if(!t)if(e instanceof R.Message){if(e.author.bot)return null;let m=await this.commandkit.config.getMessageCommandPrefix(e);r=new it(e,Array.isArray(m)?m:[m],u=>{var G,O;let p=this.commandNameToId.get(u);if(!p)return null;let g=this.loadedCommands.get(p);return!g||e.guildId&&((G=g.guilds)!=null&&G.length)&&!g.guilds.includes(e.guildId)?null:((O=("toJSON"in g.data.command?g.data.command.toJSON():g.data.command).options)==null?void 0:O.reduce((S,w)=>(S[w.name]=w.type,S),{}))??{}});try{t=r.getFullCommand().split(" ")[0]}catch(u){return q(u,M.InvalidCommandPrefix)||y.error(u),null}}else{if(!(e.isChatInputCommand()||e.isAutocomplete()||e.isContextMenuCommand()))return null;t=e.commandName}let o=this.commandNameToId.get(t);if(!o)return null;let l=this.loadedCommands.get(o);if(!l||(e instanceof R.CommandInteraction||e instanceof R.AutocompleteInteraction)&&e.guildId&&((c=l.guilds)!=null&&c.length)&&!l.guilds.includes(e.guildId))return null;let a=[];for(let m of l.command.middlewares){let u=this.loadedMiddlewares.get(m);u&&a.push(u)}return{command:l,middlewares:a,messageCommandParser:r}}async reloadCommands(){this.loadedCommands.clear(),this.loadedMiddlewares.clear(),this.commandNameToId.clear(),this.subcommandPathToId.clear(),this.externalCommandData.clear(),this.externalMiddlewareData.clear(),await this.loadCommands()}async addExternalMiddleware(e){for(let t of e)t.id&&this.externalMiddlewareData.set(t.id,t)}async addExternalCommands(e){for(let t of e)t.id&&this.externalCommandData.set(t.id,t)}async registerExternalLoadedMiddleware(e){for(let t of e)this.loadedMiddlewares.set(t.middleware.id,t)}async registerExternalLoadedCommands(e){for(let t of e)this.loadedCommands.set(t.command.id,t),this.commandNameToId.set(t.command.name,t.command.id)}async loadCommands(){await this.commandkit.plugins.execute((a,c)=>c.onBeforeCommandsLoad(a));let e=this.commandkit.commandsRouter;if(!e)throw new Error("Commands router has not yet initialized");let{commands:t,middlewares:r}=e.getData(),o=this.externalCommandData.size?t.concat(this.externalCommandData):t,l=this.externalMiddlewareData.size?r.concat(this.externalMiddlewareData):r;for(let[a,c]of l)await this.loadMiddleware(a,c);for(let[a,c]of o)await this.loadCommand(a,c);W&&await Yn(`type CommandTypeData = ${Array.from(this.loadedCommands.mapValues(a=>JSON.stringify(a.command.name)).values()).join(" | ")}`),await this.commandkit.plugins.execute((a,c)=>c.onAfterCommandsLoad(a))}async loadMiddleware(e,t){try{let r=await import(`${Fe(t.path)}?t=${Date.now()}`),o=0;for(let[l,a]of Object.entries(so)){if(r[l]&&!await a(r[l]))throw new Error(`Invalid export for middleware ${e}: ${l} does not match expected value`);r[l]&&o++}if(o===0)throw new Error(`Invalid export for middleware ${e}: at least one handler function must be provided`);this.loadedMiddlewares.set(e,{middleware:t,data:r})}catch(r){y.error(`Failed to load middleware ${e}`,r)}}async loadCommand(e,t){try{if(t.path===null){this.loadedCommands.set(e,{command:t,data:{command:{name:t.name,description:`${t.name} commands`,type:1}}});return}let r=await import(`${Fe(t.path)}?t=${Date.now()}`);if(!r.command)throw new Error(`Invalid export for command ${t.name}: no command definition found`);let o=0;for(let[a,c]of Object.entries(ao))if(a!=="command"&&r[a]&&o++,r[a]&&!await c(r[a]))throw new Error(`Invalid export for command ${t.name}: ${a} does not match expected value`);if(o===0)throw new Error(`Invalid export for command ${t.name}: at least one handler function must be provided`);let l=r.command;await this.commandkit.plugins.execute(async(a,c)=>{let m=await c.prepareCommand(a,l);m&&(l=m)}),this.loadedCommands.set(e,{command:t,guilds:r.guilds,data:{...r,command:"toJSON"in l?l.toJSON():l}}),this.commandNameToId.set(t.name,e)}catch(r){y.error(`Failed to load command ${t.name} (${e})`,r)}}};i(Xt,"AppCommandHandler");var pt=Xt;var Qt=require("discord.js"),Zn=require("fs"),Zt=require("fs/promises"),j=require("path");var lo=/^\+middleware\.(m|c)?(j|t)sx?$/,Xn=/^\+([^+().][^().]*)\.middleware\.(m|c)?(j|t)sx?$/,Qn=/^\+global-middleware\.(m|c)?(j|t)sx?$/,co=/^([^+().][^().]*)\.(m|c)?(j|t)sx?$/,mo=/^\(.+\)$/,en=class en{constructor(e){this.options=e}commands=new Qt.Collection;middlewares=new Qt.Collection;populate(e){for(let[t,r]of Object.entries(e.commands))this.commands.set(t,r);for(let[t,r]of Object.entries(e.middlewares))this.middlewares.set(t,r)}isValidPath(){return(0,Zn.existsSync)(this.options.entrypoint)}isCommand(e){return co.test(e)}isMiddleware(e){return lo.test(e)||Qn.test(e)||Xn.test(e)}isCategory(e){return mo.test(e)}clear(){this.commands.clear(),this.middlewares.clear()}async scan(){let e=await(0,Zt.readdir)(this.options.entrypoint,{withFileTypes:!0});for(let t of e){if(t.name.startsWith("_"))continue;let r=(0,j.join)(this.options.entrypoint,t.name);if(t.isDirectory()){let o=this.isCategory(t.name)?t.name.slice(1,-1):null;await this.traverse(r,o)}else await this.handle(t)}return await this.applyMiddlewares(),this.toJSON()}getData(){return{commands:this.commands,middlewares:this.middlewares}}toJSON(){return{commands:Object.fromEntries(this.commands.entries()),middlewares:Object.fromEntries(this.middlewares.entries())}}async traverse(e,t){let r=await(0,Zt.readdir)(e,{withFileTypes:!0});for(let o of r)if(!o.name.startsWith("_")){if(o.isFile())(this.isCommand(o.name)||this.isMiddleware(o.name))&&await this.handle(o,t);else if(o.isDirectory()&&this.isCategory(o.name)&&t){let l=this.isCategory(o.name)?`${t}:${o.name.slice(1,-1)}`:null;await this.traverse((0,j.join)(e,o.name),l)}}}async handle(e,t=null){let r=e.name,o=(0,j.join)(e.parentPath,e.name);if(this.isCommand(r)){let l={id:crypto.randomUUID(),name:(0,j.basename)(o,(0,j.extname)(o)),path:o,category:t,parentPath:e.parentPath,relativePath:this.replaceEntrypoint(o),middlewares:[]};this.commands.set(l.id,l)}else if(this.isMiddleware(r)){let l={id:crypto.randomUUID(),name:(0,j.basename)(o,(0,j.extname)(o)),path:o,relativePath:this.replaceEntrypoint(o),parentPath:e.parentPath,global:Qn.test(r),command:Xn.test(r)&&r.split(".")[0]||null};this.middlewares.set(l.id,l)}}applyMiddlewares(){this.commands.forEach(e=>{let t=e.parentPath,r=Array.from(this.middlewares.values()).filter(o=>o.global?!0:o.command?o.command===e.name:o.parentPath===t).map(o=>o.id);e.middlewares=Array.from(new Set([...e.middlewares,...r]))})}replaceEntrypoint(e){return(0,j.normalize)(e).replace(this.options.entrypoint,"")}};i(en,"CommandsRouter");var ft=en;var er=require("discord.js"),tr=require("fs"),tn=require("fs/promises"),ht=require("path");var nn=class nn{constructor(e){this.options=e;var t;if(e.entrypoints&&(e.entrypoints=Array.from(new Set(e.entrypoints))),!((t=e.entrypoints)!=null&&t.length))throw new Error("Entrypoint directory must be provided")}events=new er.Collection;addEntrypoints(e){this.options.entrypoints=Array.from(new Set([...this.options.entrypoints,...e]))}match(e){return this.events.get(e)??null}get entrypoints(){return this.options.entrypoints}isValidPath(){return this.entrypoints.every(e=>(0,tr.existsSync)(e))}clear(){this.events.clear()}async reload(){return this.clear(),this.scan()}async scan(){for(let e of this.entrypoints){let t=await(0,tn.readdir)(e,{withFileTypes:!0});for(let r of t)if(r.isDirectory()){let o=(0,ht.join)(e,r.name);await this.scanEvent(r.name,o,null,[],!0)}}return Object.fromEntries(this.events)}toJSON(){return Object.fromEntries(this.events)}async scanEvent(e,t,r=null,o=[],l=!1){let a=await(0,tn.readdir)(t,{withFileTypes:!0}),c=l&&/^\(.+\)$/.test(e),m=c?e.slice(1,-1):r??null;a.sort((u,p)=>u.name.localeCompare(p.name));for(let u of a)if(!u.name.startsWith("_")){if(u.isDirectory()){let p=(0,ht.join)(t,u.name);await this.scanEvent(u.name,p,m,o);continue}u.isFile()&&/\.(m|c)?(j|t)sx?$/.test(u.name)&&o.push((0,ht.join)(u.parentPath,u.name))}if(!c){let u=this.events.get(e);if(u){u.listeners=Array.from(new Set([...u.listeners,...o]));return}this.events.set(e,{event:e,path:t,listeners:o,namespace:m})}}};i(nn,"EventsRouter");var Ct=nn;var nr=require("discord.js");var rn=class rn{constructor(e){this.commandkit=e}loadedEvents=new nr.Collection;getEvents(){return this.loadedEvents.size===0?[]:this.loadedEvents.toJSON().map(t=>({name:t.name,namespace:t.namespace,onceListeners:t.listeners.filter(r=>r.once).length,regularListeners:t.listeners.filter(r=>!r.once).length,metadata:t.event}))}async reloadEvents(){this.unregisterAll(),await this.loadEvents()}async loadEvents(){await this.commandkit.plugins.execute((r,o)=>o.onBeforeEventsLoad(r));let t=await this.commandkit.eventsRouter.scan();for(let r of Object.values(t)){let o=[];for(let c of r.listeners){let m=await import(Fe(c,!0));(!m.default||typeof m.default!="function")&&y.error(`Event handler for ${r.event}${r.namespace?` of namespace ${r.namespace}`:""} does not have a default export or is not a function`),o.push({handler:m.default,once:!!m.once})}let l=o.length;l||y.warn(`Event ${r.event}${r.namespace?` of namespace ${r.namespace}`:""} does not have any listeners`);let a=`${r.namespace?`${r.namespace}:`:""}${r.event}`;this.loadedEvents.set(a,{name:r.event,namespace:r.namespace,event:r,listeners:o}),y.info(`\u2728 Loaded event ${r.event}${r.namespace?` of namespace ${r.namespace}`:""} with ${l} listener${l===1?"":"s"}`)}this.registerAllClientEvents(),await this.commandkit.plugins.execute((r,o)=>o.onAfterEventsLoad(r))}unregisterAll(){this.unregisterAllClientListeners(),this.loadedEvents.clear()}registerAllClientEvents(){let e=this.commandkit.client;for(let[t,r]of this.loadedEvents.entries()){let{name:o,listeners:l,namespace:a}=r,c=l.filter(b=>b.once),m=l.filter(b=>!b.once),u=new Set,p=i(async(...b)=>{let G=!1,O={name:o,args:b,namespace:a??null,once:!1,metadata:r.event,accept(){G||(G=!0)}};await this.commandkit.plugins.execute(async(S,w)=>{var L;if(!G)return(L=w.willEmitEvent)==null?void 0:L.call(w,S,O)}).catch(Object),await $t({event:o,namespace:a??null,data:r.event,commandkit:this.commandkit,arguments:b},async()=>{for(let S of m)try{await S.handler(...b)}catch(w){if(w instanceof Le){y.debug(`Event propagation stopped for ${o}${a?` of namespace ${a}`:""}`);break}y.error(`Error handling event ${o}${a?` of namespace ${a}`:""}`,w)}})},"mainHandler"),g=i(async(...b)=>{let G=!1,O=!1,S={name:o,args:b,namespace:a??null,once:!0,metadata:r.event,accept(){O||(O=!0)}};await this.commandkit.plugins.execute(async(w,L)=>{var Be;if(!O)return(Be=L.willEmitEvent)==null?void 0:Be.call(L,w,S)}).catch(Object);for(let w of c){if(G)break;await $t({event:o,namespace:a??null,data:r.event,commandkit:this.commandkit,arguments:b},async()=>{try{if(u.has(w.handler))return;await w.handler(...b),u.add(w.handler)}catch(L){L instanceof Le&&(y.debug(`Event propagation stopped for ${o}${a?` of namespace ${a}`:""}`),G=!0),y.error(`Error handling event ${o}${a?` of namespace ${a}`:""}`,L)}})}u.size===c.length&&m.length===0&&(this.loadedEvents.delete(t),y.info(`\u{1F9F9} Cleaned up completed once-only event ${o}${a?` of namespace ${a}`:""}`))},"onceHandler");this.loadedEvents.set(t,{...r,mainListener:m.length>0?{handler:p,once:!1}:void 0,executedOnceListeners:u}),a?(m.length>0&&this.commandkit.events.on(a,o,p),c.length>0&&this.commandkit.events.once(a,o,g)):(m.length>0&&e.on(o,p),c.length>0&&e.once(o,g)),y.info(`\u{1F50C} Registered event ${o}${a?` of namespace ${a}`:""} (${m.length} regular, ${c.length} once-only)`)}}unregisterAllClientListeners(){let e=this.commandkit.client;for(let[t,{name:r,mainListener:o,namespace:l}]of this.loadedEvents.entries())o?l?this.commandkit.events.off(l,r,o.handler):e.off(r,o.handler):l?this.commandkit.events.removeAllListeners(l,r):e.removeAllListeners(r),this.loadedEvents.delete(t),y.info(`\u{1F5D1}\uFE0F Unregistered event ${r}${l?` of namespace ${l}`:""}`)}};i(rn,"AppEventsHandler");var gt=rn;var ar=require("fs"),sr=require("path");var uo=require("rimraf"),on=require("path"),Te=ce(require("fs"));var or=require("child_process");var V;function po(n){process.stdout.write(n),process.stdout.write(`
|
|
15
|
+
`)}i(po,"write");function rr(n){po(x.red(`Error: ${n}`)),process.exit(1)}i(rr,"panic");async function fo(n){return/\.(c|m)?tsx?$/.test(n)?(process.features.typescript||await Co(),!0):!1}i(fo,"ensureTypeScript");var De;function ho(){if(De)return De;let n={"yarn.lock":"yarn","pnpm-lock.yaml":"pnpm","package-lock.json":"npm","bun.lock":"bun","bun.lockb":"bun"};for(let[e,t]of Object.entries(n))if(Te.default.existsSync((0,on.join)(process.cwd(),e))){De=t;break}return De||(De="npm"),De}i(ho,"detectPackageManager");async function Co(n){if(V)return V;try{V=await import("typescript")}catch(e){if(e instanceof Error&&"code"in e&&e.code==="MODULE_NOT_FOUND")try{let t=ho();return(0,or.execSync)(`${t} add typescript`,{stdio:"inherit",cwd:process.cwd()}),console.log(x.cyan("TypeScript has been installed automatically, restarting...")),V=await import("typescript"),V}catch{rr("TypeScript is not installed and could not be installed automatically. Please install it manually.")}rr(e||"TypeScript must be installed to use TypeScript config files.")}return V}i(Co,"loadTypeScript");async function ir(n){await go(n);let e=await fo(n),t;if(e&&V){let{transpileModule:o}=V,l=Te.default.readFileSync(n,"utf8"),{outputText:a}=o(l,{compilerOptions:{module:V.ModuleKind.ESNext,target:V.ScriptTarget.ESNext,moduleResolution:V.ModuleResolutionKind.NodeNext},fileName:n});await dt();let c=process.cwd(),m=(0,on.join)(c,"compiled-commandkit.config.mjs");Te.default.writeFileSync(m,a),t=m,n=m}let r=await import(`file://${n}`).then(o=>o.default||o);if(t)try{Te.default.unlinkSync(t)}catch{}return r}i(ir,"loadConfigFileFromPath");async function go(n){if(!Te.default.existsSync(n))throw new Error(`File not found: ${n}`)}i(go,"ensureExists");var xo=["commandkit.config.js","commandkit.config.mjs","commandkit.config.cjs","commandkit.config.ts"];function yo(n){return xo.map(e=>(0,sr.join)(n,e))}i(yo,"getPossibleConfigPaths");function bo(n){let e=yo(n);for(let t of e)if((0,ar.existsSync)(t))return{path:t,isTypeScript:/\.ts$/.test(t)};return null}i(bo,"findConfigFile");var an=null;async function lr(n=process.cwd()){if(an)return an;let e=bo(n);if(!e)return ot();let t=await ir(e.path);return an=t,t}i(lr,"loadConfigFile");function cr(n){W&&process.on("message",async e=>{if(typeof e!="object"||e===null)return;let{event:t,path:r,id:o}=e;if(!t)return;process.env.COMMANDKIT_DEBUG_HMR==="true"&&y.info(`Received HMR event: ${t}${r?` for ${r}`:""}`);let l=!1,a=!1,c=!1,m={accept(){l=!0},preventDefault(){a=!0},path:r,event:t};try{if(await n.plugins.execute(async(u,p)=>{var g;l||await((g=p.performHMR)==null?void 0:g.call(p,u,m))}),a)return;switch(t){case Qe.ReloadCommands:n.commandHandler.reloadCommands(),c=!0;break;case Qe.ReloadEvents:n.eventHandler.reloadEvents(),c=!0;break;case Qe.Unknown:c=!1;break;default:break}}finally{o&&process.send&&process.send({type:"commandkit-hmr-ack",id:o,handled:c||l})}})}i(cr,"registerDevHooks");var pr=require("fs");var mr=ce(require("events"));var sn=class sn{constructor(e){this.commandkit=e}emitter=new mr.default;to(e){return{on:this.on.bind(this,e),off:this.off.bind(this,e),once:this.once.bind(this,e),emit:this.emit.bind(this,e),removeAllListeners:this.removeAllListeners.bind(this,e)}}on(e,t,r){this.emitter.on(`${e}:${t}`,r)}off(e,t,r){this.emitter.off(`${e}:${t}`,r)}once(e,t,r){this.emitter.once(`${e}:${t}`,r)}emit(e,t,...r){return this.emitter.emit(`${e}:${t}`,...r)}removeAllListeners(e,t){t?this.emitter.removeAllListeners(`${e}:${t}`):this.emitter.removeAllListeners(e)}};i(sn,"CommandKitEventsChannel");var xt=sn;var ur=require("discord.js");var ln=class ln extends ur.Collection{};i(ln,"FlagStore");var yt=ln;var Eo,cn=new Set,mn=new Set;var Ae,_,fr,hr,Cr,gr,xr,J=class J extends dr.default{constructor(t){if(J.instance&&process.emitWarning("CommandKit instance already exists. Having multiple instance in same project is discouraged and it may lead to unexpected behavior.",{code:"MultiInstanceWarning"}),!t.client)throw new Error(x.red('"client" is required when instantiating CommandKit.'));super();this.options=t;h(this,_);h(this,Ae,!1);E(this,"eventInterceptor");E(this,"config",{defaultLocale:Et.Locale.EnglishUS,getMessageCommandPrefix:i(()=>"!","getMessageCommandPrefix")});E(this,"store",new Map);E(this,"flags",new yt);E(this,"commandsRouter");E(this,"eventsRouter");E(this,"commandHandler",new pt(this));E(this,"eventHandler",new gt(this));E(this,"plugins");E(this,"events",new xt(this));this.plugins=new nt(this),J.instance||(J.instance=this),Eo=J.instance,C(this,_,fr).call(this)}async start(t){if(!s(this,Ae)){if(!this.options.client)throw new Error(x.red('"client" is required when starting CommandKit.'));if(this.eventInterceptor=new Oe(this.client),W)try{cr(this),await dt()}catch(r){process.env.COMMANDKIT_DEBUG_TYPEGEN&&y.error(r)}if(await this.loadPlugins(),await C(this,_,Cr).call(this),this.commandHandler.registerCommandHandler(),this.incrementClientListenersCount(),t!==!1&&!this.options.client.isReady()){this.client.once(Et.Events.ClientReady,async()=>{await this.commandHandler.registrar.register()}),await this.plugins.execute((o,l)=>{var a;return(a=l.onBeforeClientLogin)==null?void 0:a.call(l,o)});let r=t??this.options.client.token??process.env.TOKEN??process.env.DISCORD_TOKEN;await this.options.client.login(r),await this.plugins.execute((o,l)=>{var a;return(a=l.onAfterClientLogin)==null?void 0:a.call(l,o)})}else this.options.client.isReady()&&await this.commandHandler.registrar.register();d(this,Ae,!0),await C(this,_,hr).call(this)}}async loadPlugins(){let r=(await lr()).plugins.flat(2).filter(o=>Ln(o));if(r.length)for(let o of r)await this.plugins.softRegisterPlugin(o)}get started(){return s(this,Ae)}setPrefixResolver(t){return this.config.getMessageCommandPrefix=t,this}setDefaultLocale(t){return this.config.defaultLocale=t,this}get client(){return this.options.client}async reloadCommands(){await this.commandHandler.reloadCommands()}async reloadEvents(){await this.eventHandler.reloadEvents()}incrementClientListenersCount(){this.options.client.setMaxListeners(this.options.client.getMaxListeners()+1)}decrementClientListenersCount(){this.options.client.setMaxListeners(this.options.client.getMaxListeners()-1)}getAppDirectory(){return Hn()}getPath(t){let r=this.getAppDirectory();if(!r)return null;switch(t){case"commands":return(0,un.join)(r,"commands");case"events":return(0,un.join)(r,"events");default:return t}}};Ae=new WeakMap,_=new WeakSet,fr=i(async function(){for(let t of cn)try{await t(this)}catch(r){y.error("Error while executing bootstrap hook: ",r)}finally{cn.delete(t)}cn.clear()},"#bootstrapHooks"),hr=i(async function(){for(let t of mn)try{await t(this)}catch(r){y.error("Error while executing application bootstrap hook: ",r)}finally{mn.delete(t)}mn.clear()},"#applicationBootstrapHooks"),Cr=i(async function(){if(!this.getAppDirectory())return;let r=this.getPath("commands"),o=this.getPath("events");this.commandsRouter=new ft({entrypoint:r}),await this.plugins.execute((l,a)=>a.onCommandsRouterInit(l)),this.eventsRouter=new Ct({entrypoints:[o]}),await this.plugins.execute((l,a)=>a.onEventsRouterInit(l)),await C(this,_,xr).call(this),await C(this,_,gr).call(this)},"#init"),gr=i(async function(){if(this.commandsRouter.isValidPath()){let t=await this.commandsRouter.scan();W&&(0,pr.writeFileSync)("./.commandkit/commands.json",JSON.stringify(t,null,2))}await this.commandHandler.loadCommands(),this.commandHandler.printBanner()},"#initCommands"),xr=i(async function(){this.eventsRouter.isValidPath()&&await this.eventsRouter.scan(),await this.eventHandler.loadEvents()},"#initEvents"),i(J,"CommandKit"),E(J,"createElement",pn),E(J,"Fragment",dn),E(J,"instance");var bt=J;var wo=Symbol("commandkitCommandWorker"),Ge=new yr.AsyncLocalStorage;function U(n){return Ge.exit(n)}i(U,"exitContext");function ut(n,e){return Reflect.set(n,wo,!0),Ge.run(n,e)}i(ut,"provideContext");function qn(n,e,t){return i((...o)=>ut(n,async()=>{try{return await e(...o)}catch(l){Ze(l)||n.setExecutionError(l)}finally{typeof t=="function"&&setImmediate(async()=>{try{await t(...o)}catch{}})}}),"_fn")}i(qn,"makeContextAwareFunction");function N(n=!1){var t;let e=((t=Ge.getStore())==null?void 0:t.commandkit)??bt.instance;if(!e&&n)throw new Error("CommandKit instance not found.");return e}i(N,"getCommandKit");function I(){return Ge.getStore()}i(I,"getContext");function zn(){let n=Ge.getStore();if(!n)throw new Error("No commandkit environment found. Please make sure you are inside commandkit handler.");return n}i(zn,"useEnvironment");var se,P,de,Y,br,Er,fn,hn=class hn extends le.ButtonBuilder{constructor(){super(...arguments);h(this,Y);h(this,se,null);h(this,P,{autoReset:!0,time:5*60*1e3,once:!1});h(this,de,null)}onClick(t,r){var o,l,a,c;if(this.data.style===le.ButtonStyle.Link)throw new TypeError('Cannot setup "onClick" handler on link buttons.');if(!t)throw new TypeError('Cannot setup "onClick" without a handler function parameter.');return s(this,se)&&C(this,Y,fn).call(this),d(this,se,t),r&&d(this,P,{autoReset:r.autoReset??((o=s(this,P))==null?void 0:o.autoReset)??!0,time:r.time??((l=s(this,P))==null?void 0:l.time)??5*60*1e3,filter:r.filter??((a=s(this,P))==null?void 0:a.filter),onEnd:r.onEnd??((c=s(this,P))==null?void 0:c.onEnd)}),C(this,Y,Er).call(this),this}onEnd(t){if(this.data.style===le.ButtonStyle.Link)throw new TypeError('Cannot setup "onEnd" handler on link buttons.');if(!t)throw new TypeError('Cannot setup "onEnd" without a handler function parameter.');return s(this,P)??d(this,P,{}),s(this,P).onEnd=t,this}onError(t){if(!t)throw new TypeError('Cannot setup "onError" without a handler function parameter.');return s(this,P)??d(this,P,{}),s(this,P).onError=t,this}filter(t){return s(this,P)??d(this,P,{autoReset:!0,time:5*60*1e3}),s(this,P).filter=t,this}get customId(){return this.data.custom_id??this.data.customId}dispose(){return C(this,Y,fn).call(this),this}};se=new WeakMap,P=new WeakMap,de=new WeakMap,Y=new WeakSet,br=i(function(){let t=I();return t?U(()=>t.commandkit.eventInterceptor):N(!0).eventInterceptor},"#getEventInterceptor"),Er=i(function(){if(this.data.style===le.ButtonStyle.Link||!s(this,P)||!s(this,se))return;if((this.customId??null)===null)throw new TypeError('Cannot setup "onClick" handler on a button without a custom id.');let r=C(this,Y,br).call(this);d(this,de,r.subscribe(le.Events.InteractionCreate,async o=>{var u,p;if(!o.isButton())return;let l=this.customId??null,a=o.customId;if(l&&a!==l)return;let c=(u=s(this,P))==null?void 0:u.filter;if(c&&!await c(o))return;let m=s(this,se);return m?m(o,this):(p=s(this,de))==null?void 0:p.call(this)},s(this,P)))},"#setupInteractionCollector"),fn=i(function(){var t;(t=s(this,de))==null||t.call(this),d(this,de,null),d(this,P,null),d(this,se,null)},"#destroyCollector"),i(hn,"ButtonKit");var je=hn;var wr=require("discord.js");function vo(n){let e=new je;n.style??=wr.ButtonStyle.Primary,n.onClick&&(n.customId??=`buttonkit::${crypto.randomUUID()}`),n.customId&&e.setCustomId(n.customId),n.onClick&&e.onClick(n.onClick,n.options),n.disabled&&e.setDisabled(n.disabled),n.emoji&&e.setEmoji(n.emoji),n.skuId&&e.setSKUId(n.skuId),n.url&&e.setURL(n.url),n.style&&e.setStyle(n.style);let t=n.label||n.children;return t&&e.setLabel(Array.isArray(t)?t.join(" "):typeof t=="string"?t:String(t)),n.onEnd&&e.onEnd(n.onEnd),n.onError&&e.onError(n.onError),e}i(vo,"Button");var wt=require("discord.js");var pe,K,fe,X,vr,Mr,Cn,gn=class gn extends wt.ModalBuilder{constructor(){super(...arguments);h(this,X);h(this,pe,null);h(this,K,{autoReset:!1,time:5*60*1e3,once:!0});h(this,fe,null)}onSubmit(t,r){var o,l,a,c;if(!t)throw new TypeError('Cannot setup "onClick" without a handler function parameter.');return s(this,pe)&&C(this,X,Cn).call(this),d(this,pe,t),r&&d(this,K,{autoReset:r.autoReset??((o=s(this,K))==null?void 0:o.autoReset)??!0,time:r.time??((l=s(this,K))==null?void 0:l.time)??5*60*1e3,filter:r.filter??((a=s(this,K))==null?void 0:a.filter),onEnd:r.onEnd??((c=s(this,K))==null?void 0:c.onEnd)}),C(this,X,Mr).call(this),this}onEnd(t){if(!t)throw new TypeError('Cannot setup "onEnd" without a handler function parameter.');return s(this,K)??d(this,K,{}),s(this,K).onEnd=t,this}onError(t){if(!t)throw new TypeError('Cannot setup "onError" without a handler function parameter.');return s(this,K)??d(this,K,{}),s(this,K).onError=t,this}filter(t){return s(this,K)??d(this,K,{autoReset:!0,time:5*60*1e3}),s(this,K).filter=t,this}get customId(){return this.data.custom_id??this.data.customId}dispose(){return C(this,X,Cn).call(this),this}};pe=new WeakMap,K=new WeakMap,fe=new WeakMap,X=new WeakSet,vr=i(function(){let t=I();return t?U(()=>t.commandkit.eventInterceptor):N(!0).eventInterceptor},"#getEventInterceptor"),Mr=i(function(){if(!s(this,K))return;if(!this.customId)throw new TypeError("Cannot setup an modal collector without a custom ID.");let t=C(this,X,vr).call(this);t&&d(this,fe,t.subscribe(wt.Events.InteractionCreate,async r=>{var m,u;if(!r.isModalSubmit())return;let o=this.customId??null,l=r.customId;if(o&&l!==o)return;let a=(m=s(this,K))==null?void 0:m.filter;if(a&&!await a(r))return;let c=s(this,pe);return c?c(r,this):(u=s(this,fe))==null?void 0:u.call(this)},s(this,K)))},"#setupCollector"),Cn=i(function(){var t;(t=s(this,fe))==null||t.call(this),d(this,fe,null),d(this,pe,null),d(this,K,null)},"#destroyCollector"),i(gn,"ModalKit");var _e=gn;var Q=require("discord.js");function Mo(n){let e=new _e;if(n.title&&e.setTitle(n.title),n.onSubmit&&(n.customId??=`modalkit::${crypto.randomUUID()}`),n.customId&&e.setCustomId(n.customId),n.onSubmit&&e.onSubmit(n.onSubmit,n.options),n.children){let t=(Array.isArray(n.children)?n.children:[n.children]).map(r=>{if(r instanceof Q.ActionRowBuilder)return r;if(r instanceof Q.TextInputBuilder)return new Q.ActionRowBuilder().addComponents(r)}).filter(r=>r!=null);e.addComponents(t)}return n.onEnd&&e.onEnd(n.onEnd),n.onError&&e.onError(n.onError),e}i(Mo,"Modal");function xn(n){let e=new Q.TextInputBuilder().setStyle(n.style);return n.customId&&e.setCustomId(n.customId),n.label&&e.setLabel(n.label),n.placeholder&&e.setPlaceholder(n.placeholder),n.maxLength&&e.setMaxLength(n.maxLength),n.minLength&&e.setMinLength(n.minLength),n.value&&e.setValue(n.value),n.required&&e.setRequired(n.required),e}i(xn,"TextInput");function Io(n){return xn({...n,style:Q.TextInputStyle.Short})}i(Io,"ShortInput");function So(n){return xn({...n,style:Q.TextInputStyle.Paragraph})}i(So,"ParagraphInput");var vt=require("discord.js");var he,D,Ce,Z,Ir,Sr,yn,bn=class bn extends vt.StringSelectMenuBuilder{constructor(){super(...arguments);h(this,Z);h(this,he,null);h(this,D,{autoReset:!1,time:5*60*1e3,once:!0});h(this,Ce,null)}onSelect(t,r){var o,l,a,c;if(!t)throw new TypeError('Cannot setup "onClick" without a handler function parameter.');return s(this,he)&&C(this,Z,yn).call(this),d(this,he,t),r&&d(this,D,{autoReset:r.autoReset??((o=s(this,D))==null?void 0:o.autoReset)??!0,time:r.time??((l=s(this,D))==null?void 0:l.time)??5*60*1e3,filter:r.filter??((a=s(this,D))==null?void 0:a.filter),onEnd:r.onEnd??((c=s(this,D))==null?void 0:c.onEnd)}),C(this,Z,Sr).call(this),this}onEnd(t){if(!t)throw new TypeError('Cannot setup "onEnd" without a handler function parameter.');return s(this,D)??d(this,D,{}),s(this,D).onEnd=t,this}onError(t){if(!t)throw new TypeError('Cannot setup "onError" without a handler function parameter.');return s(this,D)??d(this,D,{}),s(this,D).onError=t,this}filter(t){return s(this,D)??d(this,D,{autoReset:!0,time:5*60*1e3}),s(this,D).filter=t,this}get customId(){return this.data.custom_id??this.data.customId}dispose(){return C(this,Z,yn).call(this),this}};he=new WeakMap,D=new WeakMap,Ce=new WeakMap,Z=new WeakSet,Ir=i(function(){let t=I();return t?U(()=>t.commandkit.eventInterceptor):N(!0).eventInterceptor},"#getEventInterceptor"),Sr=i(function(){if(!s(this,D))return;if(!this.customId)throw new TypeError("Cannot setup an modal collector without a custom ID.");let t=C(this,Z,Ir).call(this);t&&d(this,Ce,t.subscribe(vt.Events.InteractionCreate,async r=>{var m,u;if(!r.isStringSelectMenu())return;let o=this.customId??null,l=r.customId;if(o&&l!==o)return;let a=(m=s(this,D))==null?void 0:m.filter;if(a&&!await a(r))return;let c=s(this,he);return c?c(r,this):(u=s(this,Ce))==null?void 0:u.call(this)},s(this,D)))},"#setupCollector"),yn=i(function(){var t;(t=s(this,Ce))==null||t.call(this),d(this,Ce,null),d(this,he,null),d(this,D,null)},"#destroyCollector"),i(bn,"StringSelectMenuKit");var We=bn;var Mt=require("discord.js");var ge,T,xe,ee,Rr,Pr,En,wn=class wn extends Mt.ChannelSelectMenuBuilder{constructor(){super(...arguments);h(this,ee);h(this,ge,null);h(this,T,{autoReset:!1,time:5*60*1e3,once:!0});h(this,xe,null)}onSelect(t,r){var o,l,a,c;if(!t)throw new TypeError('Cannot setup "onClick" without a handler function parameter.');return s(this,ge)&&C(this,ee,En).call(this),d(this,ge,t),r&&d(this,T,{autoReset:r.autoReset??((o=s(this,T))==null?void 0:o.autoReset)??!0,time:r.time??((l=s(this,T))==null?void 0:l.time)??5*60*1e3,filter:r.filter??((a=s(this,T))==null?void 0:a.filter),onEnd:r.onEnd??((c=s(this,T))==null?void 0:c.onEnd)}),C(this,ee,Pr).call(this),this}onEnd(t){if(!t)throw new TypeError('Cannot setup "onEnd" without a handler function parameter.');return s(this,T)??d(this,T,{}),s(this,T).onEnd=t,this}onError(t){if(!t)throw new TypeError('Cannot setup "onError" without a handler function parameter.');return s(this,T)??d(this,T,{}),s(this,T).onError=t,this}filter(t){return s(this,T)??d(this,T,{autoReset:!0,time:5*60*1e3}),s(this,T).filter=t,this}get customId(){return this.data.custom_id??this.data.customId}dispose(){return C(this,ee,En).call(this),this}};ge=new WeakMap,T=new WeakMap,xe=new WeakMap,ee=new WeakSet,Rr=i(function(){let t=I();return t?U(()=>t.commandkit.eventInterceptor):N(!0).eventInterceptor},"#getEventInterceptor"),Pr=i(function(){if(!s(this,T))return;if(!this.customId)throw new TypeError("Cannot setup an modal collector without a custom ID.");let t=C(this,ee,Rr).call(this);t&&d(this,xe,t.subscribe(Mt.Events.InteractionCreate,async r=>{var m,u;if(!r.isChannelSelectMenu())return;let o=this.customId??null,l=r.customId;if(o&&l!==o)return;let a=(m=s(this,T))==null?void 0:m.filter;if(a&&!await a(r))return;let c=s(this,ge);return c?c(r,this):(u=s(this,xe))==null?void 0:u.call(this)},s(this,T)))},"#setupCollector"),En=i(function(){var t;(t=s(this,xe))==null||t.call(this),d(this,xe,null),d(this,ge,null),d(this,T,null)},"#destroyCollector"),i(wn,"ChannelSelectMenuKit");var Ve=wn;var It=require("discord.js");var ye,A,be,te,Kr,Dr,vn,Mn=class Mn extends It.MentionableSelectMenuBuilder{constructor(){super(...arguments);h(this,te);h(this,ye,null);h(this,A,{autoReset:!1,time:5*60*1e3,once:!0});h(this,be,null)}onSelect(t,r){var o,l,a,c;if(!t)throw new TypeError('Cannot setup "onClick" without a handler function parameter.');return s(this,ye)&&C(this,te,vn).call(this),d(this,ye,t),r&&d(this,A,{autoReset:r.autoReset??((o=s(this,A))==null?void 0:o.autoReset)??!0,time:r.time??((l=s(this,A))==null?void 0:l.time)??5*60*1e3,filter:r.filter??((a=s(this,A))==null?void 0:a.filter),onEnd:r.onEnd??((c=s(this,A))==null?void 0:c.onEnd)}),C(this,te,Dr).call(this),this}onEnd(t){if(!t)throw new TypeError('Cannot setup "onEnd" without a handler function parameter.');return s(this,A)??d(this,A,{}),s(this,A).onEnd=t,this}onError(t){if(!t)throw new TypeError('Cannot setup "onError" without a handler function parameter.');return s(this,A)??d(this,A,{}),s(this,A).onError=t,this}filter(t){return s(this,A)??d(this,A,{autoReset:!0,time:5*60*1e3}),s(this,A).filter=t,this}get customId(){return this.data.custom_id??this.data.customId}dispose(){return C(this,te,vn).call(this),this}};ye=new WeakMap,A=new WeakMap,be=new WeakMap,te=new WeakSet,Kr=i(function(){let t=I();return t?U(()=>t.commandkit.eventInterceptor):N(!0).eventInterceptor},"#getEventInterceptor"),Dr=i(function(){if(!s(this,A))return;if(!this.customId)throw new TypeError("Cannot setup an modal collector without a custom ID.");let t=C(this,te,Kr).call(this);t&&d(this,be,t.subscribe(It.Events.InteractionCreate,async r=>{var m,u;if(!r.isMentionableSelectMenu())return;let o=this.customId??null,l=r.customId;if(o&&l!==o)return;let a=(m=s(this,A))==null?void 0:m.filter;if(a&&!await a(r))return;let c=s(this,ye);return c?c(r,this):(u=s(this,be))==null?void 0:u.call(this)},s(this,A)))},"#setupCollector"),vn=i(function(){var t;(t=s(this,be))==null||t.call(this),d(this,be,null),d(this,ye,null),d(this,A,null)},"#destroyCollector"),i(Mn,"MentionableSelectMenuKit");var qe=Mn;var St=require("discord.js");var Ee,k,we,ne,Tr,Ar,In,Sn=class Sn extends St.UserSelectMenuBuilder{constructor(){super(...arguments);h(this,ne);h(this,Ee,null);h(this,k,{autoReset:!1,time:5*60*1e3,once:!0});h(this,we,null)}onSelect(t,r){var o,l,a,c;if(!t)throw new TypeError('Cannot setup "onClick" without a handler function parameter.');return s(this,Ee)&&C(this,ne,In).call(this),d(this,Ee,t),r&&d(this,k,{autoReset:r.autoReset??((o=s(this,k))==null?void 0:o.autoReset)??!0,time:r.time??((l=s(this,k))==null?void 0:l.time)??5*60*1e3,filter:r.filter??((a=s(this,k))==null?void 0:a.filter),onEnd:r.onEnd??((c=s(this,k))==null?void 0:c.onEnd)}),C(this,ne,Ar).call(this),this}onEnd(t){if(!t)throw new TypeError('Cannot setup "onEnd" without a handler function parameter.');return s(this,k)??d(this,k,{}),s(this,k).onEnd=t,this}onError(t){if(!t)throw new TypeError('Cannot setup "onError" without a handler function parameter.');return s(this,k)??d(this,k,{}),s(this,k).onError=t,this}filter(t){return s(this,k)??d(this,k,{autoReset:!0,time:5*60*1e3}),s(this,k).filter=t,this}get customId(){return this.data.custom_id??this.data.customId}dispose(){return C(this,ne,In).call(this),this}};Ee=new WeakMap,k=new WeakMap,we=new WeakMap,ne=new WeakSet,Tr=i(function(){let t=I();return t?U(()=>t.commandkit.eventInterceptor):N(!0).eventInterceptor},"#getEventInterceptor"),Ar=i(function(){if(!s(this,k))return;if(!this.customId)throw new TypeError("Cannot setup an modal collector without a custom ID.");let t=C(this,ne,Tr).call(this);t&&d(this,we,t.subscribe(St.Events.InteractionCreate,async r=>{var m,u;if(!r.isUserSelectMenu())return;let o=this.customId??null,l=r.customId;if(o&&l!==o)return;let a=(m=s(this,k))==null?void 0:m.filter;if(a&&!await a(r))return;let c=s(this,Ee);return c?c(r,this):(u=s(this,we))==null?void 0:u.call(this)},s(this,k)))},"#setupCollector"),In=i(function(){var t;(t=s(this,we))==null||t.call(this),d(this,we,null),d(this,Ee,null),d(this,k,null)},"#destroyCollector"),i(Sn,"UserSelectMenuKit");var ze=Sn;var Rt=require("discord.js");var ve,B,Me,re,kr,Br,Rn,Pn=class Pn extends Rt.RoleSelectMenuBuilder{constructor(){super(...arguments);h(this,re);h(this,ve,null);h(this,B,{autoReset:!1,time:5*60*1e3,once:!0});h(this,Me,null)}onSelect(t,r){var o,l,a,c;if(!t)throw new TypeError('Cannot setup "onClick" without a handler function parameter.');return s(this,ve)&&C(this,re,Rn).call(this),d(this,ve,t),r&&d(this,B,{autoReset:r.autoReset??((o=s(this,B))==null?void 0:o.autoReset)??!0,time:r.time??((l=s(this,B))==null?void 0:l.time)??5*60*1e3,filter:r.filter??((a=s(this,B))==null?void 0:a.filter),onEnd:r.onEnd??((c=s(this,B))==null?void 0:c.onEnd)}),C(this,re,Br).call(this),this}onEnd(t){if(!t)throw new TypeError('Cannot setup "onEnd" without a handler function parameter.');return s(this,B)??d(this,B,{}),s(this,B).onEnd=t,this}onError(t){if(!t)throw new TypeError('Cannot setup "onError" without a handler function parameter.');return s(this,B)??d(this,B,{}),s(this,B).onError=t,this}filter(t){return s(this,B)??d(this,B,{autoReset:!0,time:5*60*1e3}),s(this,B).filter=t,this}get customId(){return this.data.custom_id??this.data.customId}dispose(){return C(this,re,Rn).call(this),this}};ve=new WeakMap,B=new WeakMap,Me=new WeakMap,re=new WeakSet,kr=i(function(){let t=I();return t?U(()=>t.commandkit.eventInterceptor):N(!0).eventInterceptor},"#getEventInterceptor"),Br=i(function(){if(!s(this,B))return;if(!this.customId)throw new TypeError("Cannot setup an modal collector without a custom ID.");let t=C(this,re,kr).call(this);t&&d(this,Me,t.subscribe(Rt.Events.InteractionCreate,async r=>{var m,u;if(!r.isRoleSelectMenu())return;let o=this.customId??null,l=r.customId;if(o&&l!==o)return;let a=(m=s(this,B))==null?void 0:m.filter;if(a&&!await a(r))return;let c=s(this,ve);return c?c(r,this):(u=s(this,Me))==null?void 0:u.call(this)},s(this,B)))},"#setupCollector"),Rn=i(function(){var t;(t=s(this,Me))==null||t.call(this),d(this,Me,null),d(this,ve,null),d(this,B,null)},"#destroyCollector"),i(Pn,"RoleSelectMenuKit");var Je=Pn;var Or=require("discord.js");function Ye(n,e){n.setCustomId(e.customId??`select-menu::${crypto.randomUUID()}`),e.maxValues!=null&&n.setMaxValues(e.maxValues),e.minValues!=null&&n.setMinValues(e.minValues),e.placeholder&&n.setPlaceholder(e.placeholder),e.disabled&&n.setDisabled(e.disabled),e.onEnd&&n.onEnd(e.onEnd),e.onError&&n.onError(e.onError),e.onSelect&&n.onSelect(e.onSelect,e.options)}i(Ye,"applyPropsToBuilder");function Ro(n){let e=new We;return Ye(e,n),n.children&&e.setOptions(Array.isArray(n.children)?n.children:[n.children]),n.children&&e.setOptions(Array.isArray(n.children)?n.children:[n.children]),e}i(Ro,"StringSelectMenu");function Po(n){return new Or.StringSelectMenuOptionBuilder(n)}i(Po,"StringSelectMenuOption");function Ko(n){let e=new ze;return Ye(e,n),n.defaultValues&&e.setDefaultUsers(Array.isArray(n.defaultValues)?n.defaultValues:[n.defaultValues]),e}i(Ko,"UserSelectMenu");function Do(n){let e=new Je;return Ye(e,n),n.defaultValues&&e.setDefaultRoles(Array.isArray(n.defaultValues)?n.defaultValues:[n.defaultValues]),e}i(Do,"RoleSelectMenu");function To(n){let e=new qe;return Ye(e,n),n.defaultValues&&e.setDefaultValues(Array.isArray(n.defaultValues)?n.defaultValues:[n.defaultValues]),e}i(To,"MentionableSelectMenu");function Ao(n){let e=new Ve;return Ye(e,n),n.defaultValues&&e.setDefaultChannels(Array.isArray(n.defaultValues)?n.defaultValues:[n.defaultValues]),n.channelTypes&&e.setChannelTypes(Array.isArray(n.channelTypes)?n.channelTypes:[n.channelTypes]),e}i(Ao,"ChannelSelectMenu");var H=require("discord.js");function ke(n,e){n.id!=null&&e.setId(n.id)}i(ke,"applyId");function ko(n){let e=new H.ContainerBuilder;if(ke(n,e),typeof n.accentColor!=null&&e.setAccentColor(n.accentColor),n.spoiler!=null&&e.setSpoiler(n.spoiler),n.children!=null){if(Array.isArray(n.children)||(n.children=[n.children]),n.children.length===0)return e;for(let t of n.children.flat())t instanceof H.TextDisplayBuilder&&e.addTextDisplayComponents(t),t instanceof H.FileBuilder&&e.addFileComponents(t),t instanceof H.ActionRowBuilder&&e.addActionRowComponents(t),t instanceof H.SeparatorBuilder&&e.addSeparatorComponents(t),t instanceof H.SectionBuilder&&e.addSectionComponents(t),t instanceof H.MediaGalleryBuilder&&e.addMediaGalleryComponents(t)}return e}i(ko,"Container");var Lr=require("discord.js");function Bo(n){let e=new Lr.FileBuilder(n);return n.url!=null&&e.setURL(n.url),e}i(Bo,"File");var Pt=require("discord.js");function Oo(n){let e=new Pt.MediaGalleryBuilder;return ke(n,e),n.children!=null&&(Array.isArray(n.children)||(n.children=[n.children]),e.addItems(n.children.flat())),e}i(Oo,"MediaGallery");function Lo(n){let e=new Pt.MediaGalleryItemBuilder;return n.description!=null&&e.setDescription(n.description),n.spoiler!=null&&e.setSpoiler(n.spoiler),n.url!=null&&e.setURL(n.url),e}i(Lo,"MediaGalleryItem");var oe=require("discord.js");function Fo(n){let e=new oe.SectionBuilder;if(ke(n,e),n.children!=null){Array.isArray(n.children)||(n.children=[n.children]);for(let t of n.children.flat())t instanceof oe.ThumbnailBuilder?e.setThumbnailAccessory(t):t instanceof oe.ButtonBuilder?e.setButtonAccessory(t):t instanceof oe.TextDisplayBuilder&&e.addTextDisplayComponents(t)}return e}i(Fo,"Section");function $o(n){return new oe.ThumbnailBuilder({description:n.description,spoiler:n.spoiler,id:n.id,media:{url:n.url}})}i($o,"Thumbnail");var Fr=require("discord.js");function Uo(n){return new Fr.SeparatorBuilder(n)}i(Uo,"Separator");var $r=require("discord.js");function No(n){let e=new $r.TextDisplayBuilder(n);return!n.content&&n.children&&(Array.isArray(n.children)?e.setContent(n.children.join(" ")):e.setContent(typeof n.children=="string"?n.children:String(n.children))),e}i(No,"TextDisplay");var Ur=new Set;function Ho(n,e="CommandKitWarning"){process.emitWarning(n,{code:e})}i(Ho,"emitWarning");function Kn(n){Ur.has(n)||(Ur.add(n),Ho(`${n} is unstable and may change in future versions.`,"CommandKitUnstableWarning"))}i(Kn,"warnUnstable");var Go={ActionRow:"action-row",Button:"button-kit",Modal:"modal",TextInput:"text-input"};function jo(n){return!(typeof n!="object"||n===null||!Reflect.has(n,"type")||!Reflect.has(n,"data"))}i(jo,"isCommandKitElement");function _o(n){return n.data}i(_o,"getElement");function dn(n){return Kn("CommandKit JSX"),Array.isArray(n.children)?n.children.flat():[n.children]}i(dn,"Fragment");function pn(n,e,...t){return Kn("CommandKit JSX"),n({...e,children:e.children??t})}i(pn,"createElement");0&&(module.exports={ActionRow,Button,ButtonKit,ChannelSelectMenu,ChannelSelectMenuKit,Container,ElementType,EventInterceptor,File,Fragment,MediaGallery,MediaGalleryItem,MentionableSelectMenu,MentionableSelectMenuKit,Modal,ModalKit,ParagraphInput,RoleSelectMenu,RoleSelectMenuKit,Section,Separator,ShortInput,StringSelectMenu,StringSelectMenuKit,StringSelectMenuOption,TextDisplay,TextInput,Thumbnail,UserSelectMenu,UserSelectMenuKit,createElement,getElement,isCommandKitElement,jsx,jsxs});
|
|
16
16
|
//# sourceMappingURL=index.js.map
|