commandkit 1.2.0-dev.20250823015335 → 1.2.0-dev.20250825125304

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/ActionRow-CmTHbo2t.js.map +1 -1
  2. package/dist/CommandKitEventsChannel-Bgw0XCOl.js.map +1 -1
  3. package/dist/CommandsRouter-tMAivEfv.js.map +1 -1
  4. package/dist/CompilerPlugin-CjoZAAR8.js.map +1 -1
  5. package/dist/{DefaultLogger-Cy55-uPl.d.ts → DefaultLogger-XCOl5nLd.d.ts} +19 -12
  6. package/dist/EventInterceptor-CQ4PBpBJ.js.map +1 -1
  7. package/dist/EventWorkerContext-CSlD9rbx.js.map +1 -1
  8. package/dist/EventsRouter-C_J0M3uO.js.map +1 -1
  9. package/dist/ILogger-BW8GM-YZ.d.ts +64 -0
  10. package/dist/{Logger-iSjA-DWN.d.ts → Logger-DyfkPk7u.d.ts} +2 -2
  11. package/dist/MessageCommandParser-B_BEQ3p8.js.map +1 -1
  12. package/dist/PluginCommon-Di1xIa8d.js.map +1 -1
  13. package/dist/RuntimePlugin-CBgBLXTG.js.map +1 -1
  14. package/dist/analytics/analytics-engine.js +1 -1
  15. package/dist/analytics/utils.js +1 -1
  16. package/dist/app/commands/AppCommandRunner.js +1 -1
  17. package/dist/app/commands/Context.js +1 -1
  18. package/dist/app/handlers/AppCommandHandler.js +1 -1
  19. package/dist/app/handlers/AppEventsHandler.js +1 -1
  20. package/dist/app/index.js +1 -1
  21. package/dist/app/middlewares/permissions.js +1 -1
  22. package/dist/app/register/CommandRegistrar.js +1 -1
  23. package/dist/app-process-CjMovpoZ.js.map +1 -1
  24. package/dist/{build-BmDzPe4V.js → build-CoJqJ17n.js} +2 -2
  25. package/dist/{build-BmDzPe4V.js.map → build-CoJqJ17n.js.map} +1 -1
  26. package/dist/cli/build.js +2 -2
  27. package/dist/cli/development.js +2 -2
  28. package/dist/cli/development.js.map +1 -1
  29. package/dist/cli/generators.js.map +1 -1
  30. package/dist/cli/information.js +1 -1
  31. package/dist/cli/information.js.map +1 -1
  32. package/dist/cli/init.js +2 -2
  33. package/dist/cli/production.js +2 -2
  34. package/dist/cli/production.js.map +1 -1
  35. package/dist/{commandkit-C0BuNRSN.js → commandkit-CYJ8d2gj.js} +53 -49
  36. package/dist/commandkit-CYJ8d2gj.js.map +1 -0
  37. package/dist/commandkit.js +1 -1
  38. package/dist/common-DNADUU3_.js.map +1 -1
  39. package/dist/common-vnMIelAE.js.map +1 -1
  40. package/dist/components/index.js +1 -1
  41. package/dist/components/v1/button/Button.js +1 -1
  42. package/dist/components/v1/button/ButtonKit.js +1 -1
  43. package/dist/components/v1/modal/Modal.js +1 -1
  44. package/dist/components/v1/modal/ModalKit.js +1 -1
  45. package/dist/components/v1/select-menu/ChannelSelectMenuKit.js +1 -1
  46. package/dist/components/v1/select-menu/MentionableSelectMenuKit.js +1 -1
  47. package/dist/components/v1/select-menu/RoleSelectMenuKit.js +1 -1
  48. package/dist/components/v1/select-menu/SelectMenu.js +1 -1
  49. package/dist/components/v1/select-menu/StringSelectMenuKit.js +1 -1
  50. package/dist/components/v1/select-menu/UserSelectMenuKit.js +1 -1
  51. package/dist/config/config.js +1 -1
  52. package/dist/config/default.js +1 -1
  53. package/dist/config/loader.js +1 -1
  54. package/dist/constants-4oxxvaJA.js.map +1 -1
  55. package/dist/constants-B5_Ta7PR.js.map +1 -1
  56. package/dist/constants-CUND8XkG.js.map +1 -1
  57. package/dist/container-z621KfH5.js.map +1 -1
  58. package/dist/context/async-context.js +1 -1
  59. package/dist/context/environment.js +1 -1
  60. package/dist/dotprops-C_4L7RPD.js.map +1 -1
  61. package/dist/element-Bak9llw_.js.map +1 -1
  62. package/dist/env-_68PRRoA.js.map +1 -1
  63. package/dist/error-codes-C-ViHyu-.js.map +1 -1
  64. package/dist/{feature-flags-BZMExGfA.js → feature-flags-Co2WUAIe.js} +2 -2
  65. package/dist/{feature-flags-BZMExGfA.js.map → feature-flags-Co2WUAIe.js.map} +1 -1
  66. package/dist/file-DVZC0QXI.js.map +1 -1
  67. package/dist/flags/FlagProvider.js.map +1 -1
  68. package/dist/flags/feature-flags.js +2 -2
  69. package/dist/helpers-BUlN3lIz.js.map +1 -1
  70. package/dist/index.d.ts +3 -3
  71. package/dist/index.js +11 -6
  72. package/dist/index.js.map +1 -0
  73. package/dist/{init-D20FhDjn.js → init-CEuxl8qP.js} +2 -2
  74. package/dist/{init-D20FhDjn.js.map → init-CEuxl8qP.js.map} +1 -1
  75. package/dist/kv/kv.js.map +1 -1
  76. package/dist/logger/DefaultLogger.d.ts +2 -2
  77. package/dist/logger/DefaultLogger.js +1 -1
  78. package/dist/logger/ILogger.d.ts +1 -1
  79. package/dist/logger/Logger.d.ts +2 -2
  80. package/dist/logger/Logger.js +1 -1
  81. package/dist/logger/NoopLogger.d.ts +41 -11
  82. package/dist/logger/NoopLogger.js +5 -25
  83. package/dist/logger/NoopLogger.js.map +1 -1
  84. package/dist/media-gallery-CIKypjbJ.js.map +1 -1
  85. package/dist/plugins/index.js +1 -1
  86. package/dist/plugins/plugin-runtime/CommandKitPluginRuntime.js +1 -1
  87. package/dist/plugins/plugin-runtime/CompilerPluginRuntime.js +1 -1
  88. package/dist/plugins/plugin-runtime/builtin/CommonDirectiveTransformer.js +1 -1
  89. package/dist/plugins/plugin-runtime/builtin/MacroPlugin.js +1 -1
  90. package/dist/resolve-file-url-DHTQj2mU.js.map +1 -1
  91. package/dist/section-CuYr0Inu.js.map +1 -1
  92. package/dist/separator-DLdWBjSN.js.map +1 -1
  93. package/dist/serde-CHySNpFr.js.map +1 -1
  94. package/dist/signals-DHdYrd-n.js.map +1 -1
  95. package/dist/store-CiqLHedg.js.map +1 -1
  96. package/dist/text-display--p2-BoUa.js.map +1 -1
  97. package/dist/type-checker-1Iu1jJcy.js.map +1 -1
  98. package/dist/types-package-DrnIdWLg.js.map +1 -1
  99. package/dist/utils/dev-hooks.js +1 -1
  100. package/dist/utils/useful-stuff/async-queue.js.map +1 -1
  101. package/dist/utils/useful-stuff/mutex.js.map +1 -1
  102. package/dist/utils/useful-stuff/ratelimiter.js.map +1 -1
  103. package/dist/utils/useful-stuff/semaphore.js.map +1 -1
  104. package/dist/utils/utilities.js +1 -1
  105. package/dist/utils/warn-unstable.js.map +1 -1
  106. package/dist/utils-BnXM4eKk.js.map +1 -1
  107. package/dist/utils-DCSnVAZ6.js.map +1 -1
  108. package/dist/{version-DDiOJ2Yv.js → version-B_bKw4jL.js} +2 -2
  109. package/dist/{version-DDiOJ2Yv.js.map → version-B_bKw4jL.js.map} +1 -1
  110. package/dist/version.js +1 -1
  111. package/package.json +2 -2
  112. package/dist/ILogger-DBGON5wx.d.ts +0 -34
  113. package/dist/commandkit-C0BuNRSN.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"build-BmDzPe4V.js","names":[],"sources":["../src/cli/build.ts"],"sourcesContent":["import { build, Options } from 'tsdown';\nimport { CompilerPlugin, CompilerPluginRuntime } from '../plugins';\nimport { loadConfigFile } from '../config/loader';\nimport { writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { DevEnv, devEnvFileArgs, ProdEnv, prodEnvFileArgs } from './env';\nimport { rimraf } from 'rimraf';\nimport { performTypeCheck } from './type-checker';\nimport { copyLocaleFiles } from './common';\nimport { MaybeArray } from '../components';\nimport { COMMANDKIT_CWD } from '../utils/constants';\nimport { mergeDeep } from '../config/utils';\nimport { existsSync } from 'node:fs';\n\n/**\n * @private\n * @internal\n */\nexport interface ApplicationBuildOptions {\n plugins?: MaybeArray<CompilerPlugin>[] | Array<CompilerPlugin>;\n rolldownPlugins?: any[];\n isDev?: boolean;\n configPath?: string;\n}\n\n// emit public env variables and given env variables\n/**\n * @private\n * @internal\n */\nfunction mergeDefinitionsIfNeeded(env: Record<string, string>, isDev: boolean) {\n const values = Object.fromEntries(\n Object.entries(process.env).filter(\n ([k]) => !(k in env) && k.startsWith('COMMANDKIT_PUBLIC_'),\n ),\n );\n\n return {\n ...env,\n ...values,\n ...(isDev\n ? {\n NODE_ENV: 'development',\n COMMANDKIT_BOOTSTRAP_MODE: 'development',\n COMMANDKIT_IS_DEV: 'true',\n COMMANDKIT_IS_TEST: 'false',\n }\n : {\n NODE_ENV: 'production',\n COMMANDKIT_BOOTSTRAP_MODE: 'production',\n COMMANDKIT_IS_DEV: 'false',\n COMMANDKIT_IS_TEST: 'false',\n }),\n };\n}\n\n/**\n * @private\n * @internal\n */\nexport async function buildApplication({\n plugins,\n rolldownPlugins,\n isDev,\n configPath,\n}: ApplicationBuildOptions) {\n const config = await loadConfigFile(configPath);\n\n if (!isDev && !config?.typescript?.ignoreBuildErrors) {\n await performTypeCheck(configPath || COMMANDKIT_CWD);\n }\n\n const pluginRuntime = new CompilerPluginRuntime(\n (plugins || []) as CompilerPlugin[],\n );\n\n rolldownPlugins ??= [];\n\n rolldownPlugins.push(pluginRuntime.toJSON());\n\n try {\n const dest = isDev ? '.commandkit' : config.distDir;\n\n // Clean the destination directory\n await rimraf(dest);\n\n await pluginRuntime.init();\n\n await build(\n mergeDeep(\n {\n watch: false,\n dts: false,\n clean: true,\n format: ['esm'],\n shims: true,\n minify: false,\n silent: !!isDev,\n inputOptions: {\n transform: {\n jsx: {\n runtime: 'automatic',\n importSource: 'commandkit',\n },\n },\n checks: {\n circularDependency: true,\n },\n onwarn: (warning, defaultWarn) => {\n if (warning?.message?.includes('compilerOptions.jsx')) return;\n\n return defaultWarn(warning);\n },\n onLog: (level, log, defaultLog) => {\n if (isDev) return;\n\n return defaultLog(level, log);\n },\n moduleTypes: {\n '.json': 'js',\n '.node': 'binary',\n },\n },\n plugins: rolldownPlugins,\n platform: 'node',\n skipNodeModulesBundle: true,\n sourcemap:\n config.sourceMap?.[isDev ? 'development' : 'production'] ?? true,\n target: 'node16',\n outDir: dest,\n env: mergeDefinitionsIfNeeded(config.env || {}, !!isDev),\n entry: Array.from(\n new Set([\n 'src/**/*.{js,cjs,mjs,ts,cts,mts,jsx,tsx}',\n `!${config.distDir}`,\n '!.commandkit',\n '!**/*.test.*',\n '!**/*.spec.*',\n ...(config.entrypoints ?? []),\n ]),\n ),\n unbundle: isDev\n ? true\n : (config.compilerOptions?.disableChunking ?? false),\n } satisfies Options,\n config.compilerOptions?.tsdown,\n ),\n );\n\n await copyLocaleFiles('src', dest);\n await injectEntryFile(\n configPath || COMMANDKIT_CWD,\n !!isDev,\n !!(\n config.antiCrashScript?.[isDev ? 'development' : 'production'] ??\n (isDev ? true : false)\n ),\n config.distDir,\n );\n } catch (error) {\n console.error('Build failed:', error);\n if (error instanceof Error) {\n console.error('Error details:', error.stack);\n }\n process.exit(1); // Force exit on error\n } finally {\n // Ensure plugins are cleaned up\n await pluginRuntime.destroy();\n }\n}\n\nconst envScript = (dev: boolean) => `// --- Environment Variables Loader ---\nconst $env = [${(dev ? devEnvFileArgs : prodEnvFileArgs).map((p) => `\"${p}\"`).join(', ')}];\nfor (const file of $env) {\n try {\n process.loadEnvFile(file);\n console.log('\\\\x1b[36m✔ Loaded \\\\x1b[0m\\\\x1b[33m%s\\\\x1b[0m', file);\n } catch {}\n}\n`;\n\nconst antiCrashScript = [\n '// --- CommandKit Anti-Crash Monitor ---',\n \" // 'uncaughtException' event is supposed to be used to perform synchronous cleanup before shutting down the process\",\n ' // instead of using it as a means to resume operation.',\n ' // But it exists here due to compatibility reasons with discord bot ecosystem.',\n \" const p = (t) => `\\\\x1b[31m${t}\\\\x1b[0m`, b = '[CommandKit Anti-Crash Monitor]', l = console.log, e1 = 'uncaughtException', e2 = 'unhandledRejection';\",\n ' if (!process.eventNames().includes(e1)) // skip if it is already handled',\n ' process.on(e1, (e) => {',\n ' l(p(`${b} Uncaught Exception`)); l(p(b), p(e.stack || e));',\n ' })',\n ' if (!process.eventNames().includes(e2)) // skip if it is already handled',\n ' process.on(e2, (r) => {',\n ' l(p(`${b} Unhandled promise rejection`)); l(p(`${b} ${r.stack || r}`));',\n ' });',\n '// --- CommandKit Anti-Crash Monitor ---',\n].join('\\n');\n\nconst wrapInAsyncIIFE = (code: string[]) =>\n `;await (async () => {\\n${code.join('\\n\\n')}\\n})();`;\n\nasync function injectEntryFile(\n configPath: string,\n isDev: boolean,\n emitAntiCrashScript: boolean,\n distDir?: string,\n) {\n const dist = isDev ? '.commandkit' : distDir || 'dist';\n const entryFilePath = join(configPath, dist, 'index.js');\n\n // skip if the entry file already exists\n if (existsSync(entryFilePath)) return;\n\n const code = `/* Entrypoint File Generated By CommandKit */\n${isDev ? `\\n\\n// Injected for development\\n${wrapInAsyncIIFE([envScript(isDev), emitAntiCrashScript ? antiCrashScript : ''])}\\n\\n` : wrapInAsyncIIFE([envScript(isDev)])}\n\nimport { commandkit } from 'commandkit';\nimport { Client } from 'discord.js';\n\nasync function bootstrap() {\n const app = await import('./app.js').then((m) => m.default ?? m);\n\n if (!app || !(app instanceof Client)) {\n throw new Error('The app file must default export the discord.js client instance');\n }\n\n commandkit.setClient(app);\n\n await commandkit.start();\n}\n\nawait bootstrap().catch((e) => {\n console.error('Failed to bootstrap CommandKit application:\\\\n', e.stack);\n})\n`;\n\n await writeFile(entryFilePath, code);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"build-CoJqJ17n.js","names":[],"sources":["../src/cli/build.ts"],"sourcesContent":["import { build, Options } from 'tsdown';\nimport { CompilerPlugin, CompilerPluginRuntime } from '../plugins';\nimport { loadConfigFile } from '../config/loader';\nimport { writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { DevEnv, devEnvFileArgs, ProdEnv, prodEnvFileArgs } from './env';\nimport { rimraf } from 'rimraf';\nimport { performTypeCheck } from './type-checker';\nimport { copyLocaleFiles } from './common';\nimport { MaybeArray } from '../components';\nimport { COMMANDKIT_CWD } from '../utils/constants';\nimport { mergeDeep } from '../config/utils';\nimport { existsSync } from 'node:fs';\n\n/**\n * @private\n * @internal\n */\nexport interface ApplicationBuildOptions {\n plugins?: MaybeArray<CompilerPlugin>[] | Array<CompilerPlugin>;\n rolldownPlugins?: any[];\n isDev?: boolean;\n configPath?: string;\n}\n\n// emit public env variables and given env variables\n/**\n * @private\n * @internal\n */\nfunction mergeDefinitionsIfNeeded(env: Record<string, string>, isDev: boolean) {\n const values = Object.fromEntries(\n Object.entries(process.env).filter(\n ([k]) => !(k in env) && k.startsWith('COMMANDKIT_PUBLIC_'),\n ),\n );\n\n return {\n ...env,\n ...values,\n ...(isDev\n ? {\n NODE_ENV: 'development',\n COMMANDKIT_BOOTSTRAP_MODE: 'development',\n COMMANDKIT_IS_DEV: 'true',\n COMMANDKIT_IS_TEST: 'false',\n }\n : {\n NODE_ENV: 'production',\n COMMANDKIT_BOOTSTRAP_MODE: 'production',\n COMMANDKIT_IS_DEV: 'false',\n COMMANDKIT_IS_TEST: 'false',\n }),\n };\n}\n\n/**\n * @private\n * @internal\n */\nexport async function buildApplication({\n plugins,\n rolldownPlugins,\n isDev,\n configPath,\n}: ApplicationBuildOptions) {\n const config = await loadConfigFile(configPath);\n\n if (!isDev && !config?.typescript?.ignoreBuildErrors) {\n await performTypeCheck(configPath || COMMANDKIT_CWD);\n }\n\n const pluginRuntime = new CompilerPluginRuntime(\n (plugins || []) as CompilerPlugin[],\n );\n\n rolldownPlugins ??= [];\n\n rolldownPlugins.push(pluginRuntime.toJSON());\n\n try {\n const dest = isDev ? '.commandkit' : config.distDir;\n\n // Clean the destination directory\n await rimraf(dest);\n\n await pluginRuntime.init();\n\n await build(\n mergeDeep(\n {\n watch: false,\n dts: false,\n clean: true,\n format: ['esm'],\n shims: true,\n minify: false,\n silent: !!isDev,\n inputOptions: {\n transform: {\n jsx: {\n runtime: 'automatic',\n importSource: 'commandkit',\n },\n },\n checks: {\n circularDependency: true,\n },\n onwarn: (warning, defaultWarn) => {\n if (warning?.message?.includes('compilerOptions.jsx')) return;\n\n return defaultWarn(warning);\n },\n onLog: (level, log, defaultLog) => {\n if (isDev) return;\n\n return defaultLog(level, log);\n },\n moduleTypes: {\n '.json': 'js',\n '.node': 'binary',\n },\n },\n plugins: rolldownPlugins,\n platform: 'node',\n skipNodeModulesBundle: true,\n sourcemap:\n config.sourceMap?.[isDev ? 'development' : 'production'] ?? true,\n target: 'node16',\n outDir: dest,\n env: mergeDefinitionsIfNeeded(config.env || {}, !!isDev),\n entry: Array.from(\n new Set([\n 'src/**/*.{js,cjs,mjs,ts,cts,mts,jsx,tsx}',\n `!${config.distDir}`,\n '!.commandkit',\n '!**/*.test.*',\n '!**/*.spec.*',\n ...(config.entrypoints ?? []),\n ]),\n ),\n unbundle: isDev\n ? true\n : (config.compilerOptions?.disableChunking ?? false),\n } satisfies Options,\n config.compilerOptions?.tsdown,\n ),\n );\n\n await copyLocaleFiles('src', dest);\n await injectEntryFile(\n configPath || COMMANDKIT_CWD,\n !!isDev,\n !!(\n config.antiCrashScript?.[isDev ? 'development' : 'production'] ??\n (isDev ? true : false)\n ),\n config.distDir,\n );\n } catch (error) {\n console.error('Build failed:', error);\n if (error instanceof Error) {\n console.error('Error details:', error.stack);\n }\n process.exit(1); // Force exit on error\n } finally {\n // Ensure plugins are cleaned up\n await pluginRuntime.destroy();\n }\n}\n\nconst envScript = (dev: boolean) => `// --- Environment Variables Loader ---\nconst $env = [${(dev ? devEnvFileArgs : prodEnvFileArgs).map((p) => `\"${p}\"`).join(', ')}];\nfor (const file of $env) {\n try {\n process.loadEnvFile(file);\n console.log('\\\\x1b[36m✔ Loaded \\\\x1b[0m\\\\x1b[33m%s\\\\x1b[0m', file);\n } catch {}\n}\n`;\n\nconst antiCrashScript = [\n '// --- CommandKit Anti-Crash Monitor ---',\n \" // 'uncaughtException' event is supposed to be used to perform synchronous cleanup before shutting down the process\",\n ' // instead of using it as a means to resume operation.',\n ' // But it exists here due to compatibility reasons with discord bot ecosystem.',\n \" const p = (t) => `\\\\x1b[31m${t}\\\\x1b[0m`, b = '[CommandKit Anti-Crash Monitor]', l = console.log, e1 = 'uncaughtException', e2 = 'unhandledRejection';\",\n ' if (!process.eventNames().includes(e1)) // skip if it is already handled',\n ' process.on(e1, (e) => {',\n ' l(p(`${b} Uncaught Exception`)); l(p(b), p(e.stack || e));',\n ' })',\n ' if (!process.eventNames().includes(e2)) // skip if it is already handled',\n ' process.on(e2, (r) => {',\n ' l(p(`${b} Unhandled promise rejection`)); l(p(`${b} ${r.stack || r}`));',\n ' });',\n '// --- CommandKit Anti-Crash Monitor ---',\n].join('\\n');\n\nconst wrapInAsyncIIFE = (code: string[]) =>\n `;await (async () => {\\n${code.join('\\n\\n')}\\n})();`;\n\nasync function injectEntryFile(\n configPath: string,\n isDev: boolean,\n emitAntiCrashScript: boolean,\n distDir?: string,\n) {\n const dist = isDev ? '.commandkit' : distDir || 'dist';\n const entryFilePath = join(configPath, dist, 'index.js');\n\n // skip if the entry file already exists\n if (existsSync(entryFilePath)) return;\n\n const code = `/* Entrypoint File Generated By CommandKit */\n${isDev ? `\\n\\n// Injected for development\\n${wrapInAsyncIIFE([envScript(isDev), emitAntiCrashScript ? antiCrashScript : ''])}\\n\\n` : wrapInAsyncIIFE([envScript(isDev)])}\n\nimport { commandkit } from 'commandkit';\nimport { Client } from 'discord.js';\n\nasync function bootstrap() {\n const app = await import('./app.js').then((m) => m.default ?? m);\n\n if (!app || !(app instanceof Client)) {\n throw new Error('The app file must default export the discord.js client instance');\n }\n\n commandkit.setClient(app);\n\n await commandkit.start();\n}\n\nawait bootstrap().catch((e) => {\n console.error('Failed to bootstrap CommandKit application:\\\\n', e.stack);\n})\n`;\n\n await writeFile(entryFilePath, code);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AA8BA,SAAS,yBAAyB,KAA6B,OAAgB;CAC7E,MAAM,SAAS,OAAO,YACpB,OAAO,QAAQ,QAAQ,KAAK,QACzB,CAAC,OAAO,EAAE,KAAK,QAAQ,EAAE,WAAW;AAIzC,QAAO;EACL,GAAG;EACH,GAAG;EACH,GAAI,QACJ;GACE,UAAU;GACV,2BAA2B;GAC3B,mBAAmB;GACnB,oBAAoB;MAEtB;GACE,UAAU;GACV,2BAA2B;GAC3B,mBAAmB;GACnB,oBAAoB;;;;;;;;AAS1B,eAAsB,iBAAiB,EACrC,SACA,iBACA,OACA,cAC0B;;CAC1B,MAAM,SAAS,MAAM,kCAAe;AAEpC,KAAI,CAAC,SAAS,gEAAC,OAAQ,oFAAY,mBACjC,OAAM,sCAAiB,cAAc;CAGvC,MAAM,gBAAgB,IAAI,yCACvB,WAAW;AAGd,qBAAoB;AAEpB,iBAAgB,KAAK,cAAc;AAEnC,KAAI;;EACF,MAAM,OAAO,QAAQ,gBAAgB,OAAO;AAG5C,2BAAa;AAEb,QAAM,cAAc;AAEpB,0BACE,wBACE;GACE,OAAO;GACP,KAAK;GACL,OAAO;GACP,QAAQ,CAAC;GACT,OAAO;GACP,QAAQ;GACR,QAAQ,CAAC,CAAC;GACV,cAAc;IACZ,WAAW,EACT,KAAK;KACH,SAAS;KACT,cAAc;;IAGlB,QAAQ,EACN,oBAAoB;IAEtB,SAAS,SAAS,gBAAgB;;AAChC,uEAAI,QAAS,6EAAS,SAAS,uBAAwB;AAEvD,YAAO,YAAY;;IAErB,QAAQ,OAAO,KAAK,eAAe;AACjC,SAAI,MAAO;AAEX,YAAO,WAAW,OAAO;;IAE3B,aAAa;KACX,SAAS;KACT,SAAS;;;GAGb,SAAS;GACT,UAAU;GACV,uBAAuB;GACvB,iCACA,OAAO,iFAAY,QAAQ,gBAAgB,kBAAiB;GAC5D,QAAQ;GACR,QAAQ;GACR,KAAK,yBAAyB,OAAO,OAAO,IAAI,CAAC,CAAC;GAClD,OAAO,MAAM,KACX,IAAI,IAAI;IACR;IACA,IAAI,OAAO;IACX;IACA;IACA;IACA,GAAI,OAAO,eAAe;;GAG5B,UAAU,QACV,iCACA,OAAO,+FAAiB,oBAAmB;+BAE7C,OAAO,iGAAiB;AAI5B,QAAM,+BAAgB,OAAO;AAC7B,QAAM,gBACJ,cAAc,kCACd,CAAC,CAAC,OACF,CAAC,4BACD,OAAO,+FAAkB,QAAQ,gBAAgB,mBACjD,QAAQ,OAAO,SAEf,OAAO;UAEF,OAAO;AACd,UAAQ,MAAM,iBAAiB;AAC/B,MAAI,iBAAiB,MACnB,SAAQ,MAAM,kBAAkB,MAAM;AAExC,UAAQ,KAAK;WACL;AAER,QAAM,cAAc;;;AAIxB,MAAM,aAAa,QAAiB;iBACnB,MAAM,6BAAiB,6BAAiB,KAAK,MAAM,IAAI,EAAE,IAAI,KAAK,MAAM;;;;;;;;AASzF,MAAM,kBAAkB;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;EACA,KAAK;AAEL,MAAM,mBAAmB,SACzB,0BAA0B,KAAK,KAAK,QAAQ;AAE5C,eAAe,gBACf,YACA,OACA,qBACA,SACA;CACE,MAAM,OAAO,QAAQ,gBAAgB,WAAW;CAChD,MAAM,oCAAqB,YAAY,MAAM;AAG7C,6BAAe,eAAgB;CAE/B,MAAM,OAAO;EACb,QAAQ,oCAAoC,gBAAgB,CAAC,UAAU,QAAQ,sBAAsB,kBAAkB,KAAK,QAAQ,gBAAgB,CAAC,UAAU,SAAQ;;;;;;;;;;;;;;;;;;;;;AAsBvK,uCAAgB,eAAe"}
package/dist/cli/build.js CHANGED
@@ -1,7 +1,7 @@
1
1
  require('../colors-Cd4Oz-r-.js');
2
2
  require('../ActionRow-CmTHbo2t.js');
3
3
  require('../error-codes-C-ViHyu-.js');
4
- require('../commandkit-C0BuNRSN.js');
4
+ require('../commandkit-CYJ8d2gj.js');
5
5
  require('../common-CcfjYnPG.js');
6
6
  require('../common-vnMIelAE.js');
7
7
  require('../container-z621KfH5.js');
@@ -35,6 +35,6 @@ require('../CommandKitEventsChannel-Bgw0XCOl.js');
35
35
  require('../store-CiqLHedg.js');
36
36
  require('../env-_68PRRoA.js');
37
37
  require('../type-checker-1Iu1jJcy.js');
38
- const require_build = require('../build-BmDzPe4V.js');
38
+ const require_build = require('../build-CoJqJ17n.js');
39
39
 
40
40
  exports.buildApplication = require_build.buildApplication;
@@ -2,7 +2,7 @@ const require_chunk = require('../chunk-nOFOJqeH.js');
2
2
  const require_colors = require('../colors-Cd4Oz-r-.js');
3
3
  require('../ActionRow-CmTHbo2t.js');
4
4
  require('../error-codes-C-ViHyu-.js');
5
- const require_commandkit = require('../commandkit-C0BuNRSN.js');
5
+ const require_commandkit = require('../commandkit-CYJ8d2gj.js');
6
6
  require('../common-CcfjYnPG.js');
7
7
  require('../common-vnMIelAE.js');
8
8
  require('../container-z621KfH5.js');
@@ -37,7 +37,7 @@ require('../store-CiqLHedg.js');
37
37
  require('../env-_68PRRoA.js');
38
38
  const require_app_process = require('../app-process-CjMovpoZ.js');
39
39
  require('../type-checker-1Iu1jJcy.js');
40
- const require_build = require('../build-BmDzPe4V.js');
40
+ const require_build = require('../build-CoJqJ17n.js');
41
41
  const node_crypto = require_chunk.__toESM(require("node:crypto"));
42
42
  const path = require_chunk.__toESM(require("path"));
43
43
  const chokidar = require_chunk.__toESM(require("chokidar"));
@@ -1 +1 @@
1
- {"version":3,"file":"development.js","names":[],"sources":["../../src/cli/development.ts"],"sourcesContent":["import { join } from 'path';\nimport { getPossibleConfigPaths, loadConfigFile } from '../config/loader';\nimport { isCompilerPlugin } from '../plugins';\nimport { createAppProcess } from './app-process';\nimport { buildApplication } from './build';\nimport { watch } from 'chokidar';\nimport { debounce } from '../utils/utilities';\nimport colors from '../utils/colors';\nimport { ChildProcess } from 'node:child_process';\nimport { setTimeout as sleep } from 'node:timers/promises';\nimport { randomUUID } from 'node:crypto';\nimport { COMMANDKIT_CWD, HMREventType } from '../utils/constants';\nimport { findEntrypoint } from './common';\n\n/**\n * @private\n * @internal\n */\nasync function buildAndStart(configPath: string, skipStart = false) {\n const config = await loadConfigFile(configPath);\n const mainFile = findEntrypoint('.commandkit');\n\n await buildApplication({\n configPath,\n isDev: true,\n plugins: config.plugins.flat(2).filter((p) => isCompilerPlugin(p)),\n rolldownPlugins: config.rolldownPlugins,\n });\n\n if (skipStart) return null as never;\n\n const ps = createAppProcess(mainFile, configPath, true);\n\n return ps;\n}\n\n/**\n * @private\n * @internal\n */\nconst isCommandSource = (p: string) =>\n p.replaceAll('\\\\', '/').includes('src/app/commands');\n\n/**\n * @private\n * @internal\n */\nconst isEventSource = (p: string) =>\n p.replaceAll('\\\\', '/').includes('src/app/events');\n\n/**\n * @private\n * @internal\n */\nexport async function bootstrapDevelopmentServer(configPath?: string) {\n process.env.COMMANDKIT_BOOTSTRAP_MODE = 'development';\n const start = performance.now();\n const cwd = configPath || COMMANDKIT_CWD;\n const configPaths = getPossibleConfigPaths(cwd);\n\n const watcher = watch([join(cwd, 'src'), ...configPaths], {\n ignoreInitial: true,\n });\n\n let ps: ChildProcess | null = null;\n\n const waitForAcknowledgment = (messageId: string): Promise<boolean> => {\n return new Promise((resolve) => {\n if (!ps) return resolve(false);\n\n let _handled = false;\n const onMessage = (message: any) => {\n _handled = true;\n if (typeof message !== 'object' || message === null) return;\n\n const { type, id, handled } = message;\n if (type === 'commandkit-hmr-ack' && id === messageId) {\n ps?.off('message', onMessage);\n resolve(!!handled);\n }\n };\n\n ps.once('message', onMessage);\n\n if (!_handled) {\n sleep(3000).then(() => {\n ps?.off('message', onMessage);\n resolve(false);\n });\n }\n });\n };\n\n const sendHmrEvent = async (\n event: HMREventType,\n path?: string,\n ): Promise<boolean> => {\n if (!ps || !ps.send) return false;\n\n const messageId = randomUUID();\n const messagePromise = waitForAcknowledgment(messageId);\n\n ps.send({ event, path, id: messageId });\n\n // Wait for acknowledgment or timeout after 3 seconds\n try {\n let triggered = false;\n const res = !!(await Promise.race([\n messagePromise,\n sleep(3000).then(() => {\n if (!triggered) {\n console.warn(\n colors.yellow(\n `HMR acknowledgment timed out for event ${event} on path ${path}`,\n ),\n );\n }\n return false;\n }),\n ]));\n\n triggered = true;\n\n return res;\n } catch (error) {\n console.error(\n colors.red(`Error waiting for HMR acknowledgment: ${error}`),\n );\n return false;\n }\n };\n\n const performHMR = debounce(async (path?: string): Promise<boolean> => {\n if (!path || !ps) return false;\n\n let eventType: HMREventType | null = null;\n let eventDescription = '';\n\n if (isCommandSource(path)) {\n eventType = HMREventType.ReloadCommands;\n eventDescription = 'command(s)';\n } else if (isEventSource(path)) {\n eventType = HMREventType.ReloadEvents;\n eventDescription = 'event(s)';\n } else {\n eventType = HMREventType.Unknown;\n eventDescription = 'unknown source';\n }\n\n if (eventType) {\n console.log(\n `${colors.cyanBright(`Attempting to reload ${eventDescription} at`)} ${colors.yellowBright(path)}`,\n );\n\n await buildAndStart(cwd, true);\n const hmrHandled = await sendHmrEvent(eventType, path);\n\n if (hmrHandled) {\n console.log(\n `${colors.greenBright(`Successfully hot reloaded ${eventDescription} at`)} ${colors.yellowBright(path)}`,\n );\n return true;\n }\n }\n\n return false;\n }, 300);\n\n const isConfigUpdate = (path: string) => {\n const isConfig = configPaths.some((configPath) => path === configPath);\n\n if (!isConfig) return false;\n\n console.log(\n colors.yellowBright(\n 'It seems like commandkit config file was updated, please restart the server manually to apply changes.',\n ),\n );\n\n return isConfig;\n };\n\n const hmrHandler = async (path: string) => {\n if (isConfigUpdate(path)) return;\n const hmr = await performHMR(path);\n if (hmr) return;\n\n console.log(\n `${colors.yellowBright('⚡️ Performing full restart due to the changes in')} ${colors.cyanBright(path)}`,\n );\n\n ps?.kill();\n ps = await buildAndStart(cwd);\n };\n\n process.stdin.on('data', async (d) => {\n const command = d.toString().trim();\n\n switch (command) {\n case 'r':\n console.log(`Received restart command, restarting...`);\n ps?.kill();\n ps = null;\n ps = await buildAndStart(cwd);\n break;\n case 'rc':\n console.log(`Received reload commands command, reloading...`);\n await sendHmrEvent(HMREventType.ReloadCommands);\n break;\n case 're':\n console.log(`Received reload events command, reloading...`);\n await sendHmrEvent(HMREventType.ReloadEvents);\n break;\n break;\n }\n });\n\n watcher.on('change', hmrHandler);\n watcher.on('add', hmrHandler);\n watcher.on('unlink', hmrHandler);\n watcher.on('unlinkDir', hmrHandler);\n watcher.on('error', (e) => {\n console.error(e);\n });\n\n console.log(`${colors.greenBright('Bootstrapped CommandKit Development Environment in')} ${colors.yellowBright(`${(performance.now() - start).toFixed(2)}ms`)}\n${colors.greenBright('Watching for changes in')} ${colors.yellowBright('src')} ${colors.greenBright('directory')}\n\n${colors.greenBright('Commands:')}\n${colors.yellowBright('r')} - Restart the server\n${colors.yellowBright('rc')} - Reload all commands\n${colors.yellowBright('re')} - Reload all events`);\n\n const buildStart = performance.now();\n\n ps = await buildAndStart(cwd);\n\n const buildEnd = performance.now();\n\n console.log(\n `\\n${colors.greenBright('Development mode compilation took')} ${colors.yellowBright(`${(buildEnd - buildStart).toFixed(2)}ms`)}\\n`,\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,eAAe,cAAc,YAAoB,YAAY,OAAO;CAClE,MAAM,SAAS,MAAM,kCAAe;CACpC,MAAM,WAAW,gCAAe;AAEhC,OAAM,+BAAiB;EACrB;EACA,OAAO;EACP,SAAS,OAAO,QAAQ,KAAK,GAAG,QAAQ,MAAM,wCAAiB;EAC/D,iBAAiB,OAAO;EACzB;AAED,KAAI,UAAW,QAAO;CAEtB,MAAM,KAAK,qCAAiB,UAAU,YAAY;AAElD,QAAO;AACT;;;;;AAMA,MAAM,mBAAmB,MACzB,EAAE,WAAW,MAAM,KAAK,SAAS;;;;;AAMjC,MAAM,iBAAiB,MACvB,EAAE,WAAW,MAAM,KAAK,SAAS;;;;;AAMjC,eAAsB,2BAA2B,YAAqB;AACpE,SAAQ,IAAI,4BAA4B;CACxC,MAAM,QAAQ,YAAY;CAC1B,MAAM,MAAM,cAAc;CAC1B,MAAM,cAAc,0CAAuB;CAE3C,MAAM,8BAAgB,gBAAM,KAAK,QAAQ,GAAG,YAAY,EAAE,EACxD,eAAe,MAChB;CAED,IAAI,KAA0B;CAE9B,MAAM,yBAAyB,cAAwC;AACrE,SAAO,IAAI,SAAS,YAAY;AAC9B,OAAI,CAAC,GAAI,QAAO,QAAQ;GAExB,IAAI,WAAW;GACf,MAAM,aAAa,YAAiB;AAClC,eAAW;AACX,QAAI,OAAO,YAAY,YAAY,YAAY,KAAM;IAErD,MAAM,EAAE,MAAM,IAAI,SAAS,GAAG;AAC9B,QAAI,SAAS,wBAAwB,OAAO,WAAW;AACrD,wCAAI,IAAI,WAAW;AACnB,aAAQ,CAAC,CAAC;IACZ;GACD;AAED,MAAG,KAAK,WAAW;AAEnB,OAAI,CAAC,SACH,sCAAM,KAAM,WAAW;AACrB,uCAAI,IAAI,WAAW;AACnB,YAAQ;GACT;EAEJ;CACF;CAED,MAAM,eAAe,OACrB,OACA,WACsB;AACpB,MAAI,CAAC,MAAM,CAAC,GAAG,KAAM,QAAO;EAE5B,MAAM;EACN,MAAM,iBAAiB,sBAAsB;AAE7C,KAAG,KAAK;GAAE;GAAO;GAAM,IAAI;GAAW;AAGtC,MAAI;GACF,IAAI,YAAY;GAChB,MAAM,MAAM,CAAC,CAAE,MAAM,QAAQ,KAAK,CAClC,qDACM,KAAM,WAAW;AACrB,QAAI,CAAC,UACH,SAAQ,KACN,8BAAO,OACL,0CAA0C,MAAM,WAAW;AAIjE,WAAO;GACR,GAAE;AAGH,eAAY;AAEZ,UAAO;EACR,SAAQ,OAAO;AACd,WAAQ,MACN,8BAAO,IAAI,yCAAyC;AAEtD,UAAO;EACT;CACD;CAED,MAAM,aAAa,4BAAS,OAAO,WAAoC;AACrE,MAAI,CAAC,UAAQ,CAAC,GAAI,QAAO;EAEzB,IAAI,YAAiC;EACrC,IAAI,mBAAmB;AAEvB,MAAI,gBAAgB,SAAO;AACzB,eAAY,+BAAa;AACzB,sBAAmB;EACpB,WAAU,cAAc,SAAO;AAC9B,eAAY,+BAAa;AACzB,sBAAmB;EACpB,OAAM;AACL,eAAY,+BAAa;AACzB,sBAAmB;EACrB;AAEA,MAAI,WAAW;AACb,WAAQ,IACN,GAAG,8BAAO,WAAW,wBAAwB,iBAAiB,MAAM,GAAG,8BAAO,aAAa;AAG7F,SAAM,cAAc,KAAK;GACzB,MAAM,aAAa,MAAM,aAAa,WAAW;AAEjD,OAAI,YAAY;AACd,YAAQ,IACN,GAAG,8BAAO,YAAY,6BAA6B,iBAAiB,MAAM,GAAG,8BAAO,aAAa;AAEnG,WAAO;GACT;EACF;AAEA,SAAO;CACR,GAAE;CAEH,MAAM,kBAAkB,WAAiB;EACvC,MAAM,WAAW,YAAY,MAAM,iBAAe,WAAS;AAE3D,MAAI,CAAC,SAAU,QAAO;AAEtB,UAAQ,IACN,8BAAO,aACL;AAIJ,SAAO;CACR;CAED,MAAM,aAAa,OAAO,WAAiB;AACzC,MAAI,eAAe,QAAO;EAC1B,MAAM,MAAM,MAAM,WAAW;AAC7B,MAAI,IAAK;AAET,UAAQ,IACN,GAAG,8BAAO,aAAa,oDAAoD,GAAG,8BAAO,WAAW;AAGlG,qCAAI;AACJ,OAAK,MAAM,cAAc;CAC1B;AAED,SAAQ,MAAM,GAAG,QAAQ,OAAO,MAAM;EACpC,MAAM,UAAU,EAAE,WAAW;AAE7B,UAAQ,SAAR;GACE,KAAK;AACH,YAAQ,IAAI;AACZ,uCAAI;AACJ,SAAK;AACL,SAAK,MAAM,cAAc;AACzB;GACF,KAAK;AACH,YAAQ,IAAI;AACZ,UAAM,aAAa,+BAAa;AAChC;GACF,KAAK;AACH,YAAQ,IAAI;AACZ,UAAM,aAAa,+BAAa;AAChC;EAEJ;CACD;AAED,SAAQ,GAAG,UAAU;AACrB,SAAQ,GAAG,OAAO;AAClB,SAAQ,GAAG,UAAU;AACrB,SAAQ,GAAG,aAAa;AACxB,SAAQ,GAAG,UAAU,MAAM;AACzB,UAAQ,MAAM;CACf;AAED,SAAQ,IAAI,GAAG,8BAAO,YAAY,sDAAsD,GAAG,8BAAO,aAAa,IAAI,YAAY,QAAQ,OAAO,QAAQ,GAAG,KAAI;EAC7J,8BAAO,YAAY,2BAA2B,GAAG,8BAAO,aAAa,OAAO,GAAG,8BAAO,YAAY,aAAY;;EAE9G,8BAAO,YAAY,aAAY;EAC/B,8BAAO,aAAa,KAAK;EACzB,8BAAO,aAAa,MAAM;EAC1B,8BAAO,aAAa,MAAM;CAE1B,MAAM,aAAa,YAAY;AAE/B,MAAK,MAAM,cAAc;CAEzB,MAAM,WAAW,YAAY;AAE7B,SAAQ,IACN,KAAK,8BAAO,YAAY,qCAAqC,GAAG,8BAAO,aAAa,IAAI,WAAW,YAAY,QAAQ,GAAG,KAAK;AAEnI"}
1
+ {"version":3,"file":"development.js","names":[],"sources":["../../src/cli/development.ts"],"sourcesContent":["import { join } from 'path';\nimport { getPossibleConfigPaths, loadConfigFile } from '../config/loader';\nimport { isCompilerPlugin } from '../plugins';\nimport { createAppProcess } from './app-process';\nimport { buildApplication } from './build';\nimport { watch } from 'chokidar';\nimport { debounce } from '../utils/utilities';\nimport colors from '../utils/colors';\nimport { ChildProcess } from 'node:child_process';\nimport { setTimeout as sleep } from 'node:timers/promises';\nimport { randomUUID } from 'node:crypto';\nimport { COMMANDKIT_CWD, HMREventType } from '../utils/constants';\nimport { findEntrypoint } from './common';\n\n/**\n * @private\n * @internal\n */\nasync function buildAndStart(configPath: string, skipStart = false) {\n const config = await loadConfigFile(configPath);\n const mainFile = findEntrypoint('.commandkit');\n\n await buildApplication({\n configPath,\n isDev: true,\n plugins: config.plugins.flat(2).filter((p) => isCompilerPlugin(p)),\n rolldownPlugins: config.rolldownPlugins,\n });\n\n if (skipStart) return null as never;\n\n const ps = createAppProcess(mainFile, configPath, true);\n\n return ps;\n}\n\n/**\n * @private\n * @internal\n */\nconst isCommandSource = (p: string) =>\n p.replaceAll('\\\\', '/').includes('src/app/commands');\n\n/**\n * @private\n * @internal\n */\nconst isEventSource = (p: string) =>\n p.replaceAll('\\\\', '/').includes('src/app/events');\n\n/**\n * @private\n * @internal\n */\nexport async function bootstrapDevelopmentServer(configPath?: string) {\n process.env.COMMANDKIT_BOOTSTRAP_MODE = 'development';\n const start = performance.now();\n const cwd = configPath || COMMANDKIT_CWD;\n const configPaths = getPossibleConfigPaths(cwd);\n\n const watcher = watch([join(cwd, 'src'), ...configPaths], {\n ignoreInitial: true,\n });\n\n let ps: ChildProcess | null = null;\n\n const waitForAcknowledgment = (messageId: string): Promise<boolean> => {\n return new Promise((resolve) => {\n if (!ps) return resolve(false);\n\n let _handled = false;\n const onMessage = (message: any) => {\n _handled = true;\n if (typeof message !== 'object' || message === null) return;\n\n const { type, id, handled } = message;\n if (type === 'commandkit-hmr-ack' && id === messageId) {\n ps?.off('message', onMessage);\n resolve(!!handled);\n }\n };\n\n ps.once('message', onMessage);\n\n if (!_handled) {\n sleep(3000).then(() => {\n ps?.off('message', onMessage);\n resolve(false);\n });\n }\n });\n };\n\n const sendHmrEvent = async (\n event: HMREventType,\n path?: string,\n ): Promise<boolean> => {\n if (!ps || !ps.send) return false;\n\n const messageId = randomUUID();\n const messagePromise = waitForAcknowledgment(messageId);\n\n ps.send({ event, path, id: messageId });\n\n // Wait for acknowledgment or timeout after 3 seconds\n try {\n let triggered = false;\n const res = !!(await Promise.race([\n messagePromise,\n sleep(3000).then(() => {\n if (!triggered) {\n console.warn(\n colors.yellow(\n `HMR acknowledgment timed out for event ${event} on path ${path}`,\n ),\n );\n }\n return false;\n }),\n ]));\n\n triggered = true;\n\n return res;\n } catch (error) {\n console.error(\n colors.red(`Error waiting for HMR acknowledgment: ${error}`),\n );\n return false;\n }\n };\n\n const performHMR = debounce(async (path?: string): Promise<boolean> => {\n if (!path || !ps) return false;\n\n let eventType: HMREventType | null = null;\n let eventDescription = '';\n\n if (isCommandSource(path)) {\n eventType = HMREventType.ReloadCommands;\n eventDescription = 'command(s)';\n } else if (isEventSource(path)) {\n eventType = HMREventType.ReloadEvents;\n eventDescription = 'event(s)';\n } else {\n eventType = HMREventType.Unknown;\n eventDescription = 'unknown source';\n }\n\n if (eventType) {\n console.log(\n `${colors.cyanBright(`Attempting to reload ${eventDescription} at`)} ${colors.yellowBright(path)}`,\n );\n\n await buildAndStart(cwd, true);\n const hmrHandled = await sendHmrEvent(eventType, path);\n\n if (hmrHandled) {\n console.log(\n `${colors.greenBright(`Successfully hot reloaded ${eventDescription} at`)} ${colors.yellowBright(path)}`,\n );\n return true;\n }\n }\n\n return false;\n }, 300);\n\n const isConfigUpdate = (path: string) => {\n const isConfig = configPaths.some((configPath) => path === configPath);\n\n if (!isConfig) return false;\n\n console.log(\n colors.yellowBright(\n 'It seems like commandkit config file was updated, please restart the server manually to apply changes.',\n ),\n );\n\n return isConfig;\n };\n\n const hmrHandler = async (path: string) => {\n if (isConfigUpdate(path)) return;\n const hmr = await performHMR(path);\n if (hmr) return;\n\n console.log(\n `${colors.yellowBright('⚡️ Performing full restart due to the changes in')} ${colors.cyanBright(path)}`,\n );\n\n ps?.kill();\n ps = await buildAndStart(cwd);\n };\n\n process.stdin.on('data', async (d) => {\n const command = d.toString().trim();\n\n switch (command) {\n case 'r':\n console.log(`Received restart command, restarting...`);\n ps?.kill();\n ps = null;\n ps = await buildAndStart(cwd);\n break;\n case 'rc':\n console.log(`Received reload commands command, reloading...`);\n await sendHmrEvent(HMREventType.ReloadCommands);\n break;\n case 're':\n console.log(`Received reload events command, reloading...`);\n await sendHmrEvent(HMREventType.ReloadEvents);\n break;\n break;\n }\n });\n\n watcher.on('change', hmrHandler);\n watcher.on('add', hmrHandler);\n watcher.on('unlink', hmrHandler);\n watcher.on('unlinkDir', hmrHandler);\n watcher.on('error', (e) => {\n console.error(e);\n });\n\n console.log(`${colors.greenBright('Bootstrapped CommandKit Development Environment in')} ${colors.yellowBright(`${(performance.now() - start).toFixed(2)}ms`)}\n${colors.greenBright('Watching for changes in')} ${colors.yellowBright('src')} ${colors.greenBright('directory')}\n\n${colors.greenBright('Commands:')}\n${colors.yellowBright('r')} - Restart the server\n${colors.yellowBright('rc')} - Reload all commands\n${colors.yellowBright('re')} - Reload all events`);\n\n const buildStart = performance.now();\n\n ps = await buildAndStart(cwd);\n\n const buildEnd = performance.now();\n\n console.log(\n `\\n${colors.greenBright('Development mode compilation took')} ${colors.yellowBright(`${(buildEnd - buildStart).toFixed(2)}ms`)}\\n`,\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,eAAe,cAAc,YAAoB,YAAY,OAAO;CAClE,MAAM,SAAS,MAAM,kCAAe;CACpC,MAAM,WAAW,gCAAe;AAEhC,OAAM,+BAAiB;EACrB;EACA,OAAO;EACP,SAAS,OAAO,QAAQ,KAAK,GAAG,QAAQ,MAAM,wCAAiB;EAC/D,iBAAiB,OAAO;;AAG1B,KAAI,UAAW,QAAO;CAEtB,MAAM,KAAK,qCAAiB,UAAU,YAAY;AAElD,QAAO;;;;;;AAOT,MAAM,mBAAmB,MACzB,EAAE,WAAW,MAAM,KAAK,SAAS;;;;;AAMjC,MAAM,iBAAiB,MACvB,EAAE,WAAW,MAAM,KAAK,SAAS;;;;;AAMjC,eAAsB,2BAA2B,YAAqB;AACpE,SAAQ,IAAI,4BAA4B;CACxC,MAAM,QAAQ,YAAY;CAC1B,MAAM,MAAM,cAAc;CAC1B,MAAM,cAAc,0CAAuB;CAE3C,MAAM,8BAAgB,gBAAM,KAAK,QAAQ,GAAG,cAAc,EACxD,eAAe;CAGjB,IAAI,KAA0B;CAE9B,MAAM,yBAAyB,cAAwC;AACrE,SAAO,IAAI,SAAS,YAAY;AAC9B,OAAI,CAAC,GAAI,QAAO,QAAQ;GAExB,IAAI,WAAW;GACf,MAAM,aAAa,YAAiB;AAClC,eAAW;AACX,QAAI,OAAO,YAAY,YAAY,YAAY,KAAM;IAErD,MAAM,EAAE,MAAM,IAAI,YAAY;AAC9B,QAAI,SAAS,wBAAwB,OAAO,WAAW;AACrD,wCAAI,IAAI,WAAW;AACnB,aAAQ,CAAC,CAAC;;;AAId,MAAG,KAAK,WAAW;AAEnB,OAAI,CAAC,SACH,sCAAM,KAAM,WAAW;AACrB,uCAAI,IAAI,WAAW;AACnB,YAAQ;;;;CAMhB,MAAM,eAAe,OACrB,OACA,WACsB;AACpB,MAAI,CAAC,MAAM,CAAC,GAAG,KAAM,QAAO;EAE5B,MAAM;EACN,MAAM,iBAAiB,sBAAsB;AAE7C,KAAG,KAAK;GAAE;GAAO;GAAM,IAAI;;AAG3B,MAAI;GACF,IAAI,YAAY;GAChB,MAAM,MAAM,CAAC,CAAE,MAAM,QAAQ,KAAK,CAClC,qDACM,KAAM,WAAW;AACrB,QAAI,CAAC,UACH,SAAQ,KACN,8BAAO,OACL,0CAA0C,MAAM,WAAW;AAIjE,WAAO;;AAIT,eAAY;AAEZ,UAAO;WACA,OAAO;AACd,WAAQ,MACN,8BAAO,IAAI,yCAAyC;AAEtD,UAAO;;;CAIX,MAAM,aAAa,4BAAS,OAAO,WAAoC;AACrE,MAAI,CAAC,UAAQ,CAAC,GAAI,QAAO;EAEzB,IAAI,YAAiC;EACrC,IAAI,mBAAmB;AAEvB,MAAI,gBAAgB,SAAO;AACzB,eAAY,+BAAa;AACzB,sBAAmB;aACV,cAAc,SAAO;AAC9B,eAAY,+BAAa;AACzB,sBAAmB;SACd;AACL,eAAY,+BAAa;AACzB,sBAAmB;;AAGrB,MAAI,WAAW;AACb,WAAQ,IACN,GAAG,8BAAO,WAAW,wBAAwB,iBAAiB,MAAM,GAAG,8BAAO,aAAa;AAG7F,SAAM,cAAc,KAAK;GACzB,MAAM,aAAa,MAAM,aAAa,WAAW;AAEjD,OAAI,YAAY;AACd,YAAQ,IACN,GAAG,8BAAO,YAAY,6BAA6B,iBAAiB,MAAM,GAAG,8BAAO,aAAa;AAEnG,WAAO;;;AAIX,SAAO;IACN;CAEH,MAAM,kBAAkB,WAAiB;EACvC,MAAM,WAAW,YAAY,MAAM,iBAAe,WAAS;AAE3D,MAAI,CAAC,SAAU,QAAO;AAEtB,UAAQ,IACN,8BAAO,aACL;AAIJ,SAAO;;CAGT,MAAM,aAAa,OAAO,WAAiB;AACzC,MAAI,eAAe,QAAO;EAC1B,MAAM,MAAM,MAAM,WAAW;AAC7B,MAAI,IAAK;AAET,UAAQ,IACN,GAAG,8BAAO,aAAa,oDAAoD,GAAG,8BAAO,WAAW;AAGlG,qCAAI;AACJ,OAAK,MAAM,cAAc;;AAG3B,SAAQ,MAAM,GAAG,QAAQ,OAAO,MAAM;EACpC,MAAM,UAAU,EAAE,WAAW;AAE7B,UAAQ,SAAR;GACE,KAAK;AACH,YAAQ,IAAI;AACZ,uCAAI;AACJ,SAAK;AACL,SAAK,MAAM,cAAc;AACzB;GACF,KAAK;AACH,YAAQ,IAAI;AACZ,UAAM,aAAa,+BAAa;AAChC;GACF,KAAK;AACH,YAAQ,IAAI;AACZ,UAAM,aAAa,+BAAa;AAChC;;;AAKN,SAAQ,GAAG,UAAU;AACrB,SAAQ,GAAG,OAAO;AAClB,SAAQ,GAAG,UAAU;AACrB,SAAQ,GAAG,aAAa;AACxB,SAAQ,GAAG,UAAU,MAAM;AACzB,UAAQ,MAAM;;AAGhB,SAAQ,IAAI,GAAG,8BAAO,YAAY,sDAAsD,GAAG,8BAAO,aAAa,IAAI,YAAY,QAAQ,OAAO,QAAQ,GAAG,KAAI;EAC7J,8BAAO,YAAY,2BAA2B,GAAG,8BAAO,aAAa,OAAO,GAAG,8BAAO,YAAY,aAAY;;EAE9G,8BAAO,YAAY,aAAY;EAC/B,8BAAO,aAAa,KAAK;EACzB,8BAAO,aAAa,MAAM;EAC1B,8BAAO,aAAa,MAAM;CAE1B,MAAM,aAAa,YAAY;AAE/B,MAAK,MAAM,cAAc;CAEzB,MAAM,WAAW,YAAY;AAE7B,SAAQ,IACN,KAAK,8BAAO,YAAY,qCAAqC,GAAG,8BAAO,aAAa,IAAI,WAAW,YAAY,QAAQ,GAAG,KAAK"}
@@ -1 +1 @@
1
- {"version":3,"file":"generators.js","names":[],"sources":["../../src/cli/generators.ts"],"sourcesContent":["import { mkdir, writeFile, readdir } from 'fs/promises';\nimport { join } from 'path';\nimport { panic } from './common';\nimport { existsSync } from 'fs';\nimport colors from '../utils/colors';\nimport { COMMANDKIT_CWD } from '../utils/constants';\n\nconst BASE_PATH = COMMANDKIT_CWD;\nconst COMMANDS_DIR = join(BASE_PATH, 'src/app/commands');\nconst EVENTS_DIR = join(BASE_PATH, 'src/app/events');\n\n/**\n * @private\n * @internal\n */\nconst formatPath = (path: string) =>\n path.replace(COMMANDKIT_CWD, '.').replace(/\\\\/g, '/');\n\n/**\n * @private\n * @internal\n */\nfunction determineExtension() {\n return existsSync(join(BASE_PATH, 'tsconfig.json')) ? 'ts' : 'js';\n}\n\n/**\n * @private\n * @internal\n */\nfunction TS_COMMAND_SOURCE(name: string) {\n return `import type { CommandData, ChatInputCommand, MessageCommand } from 'commandkit';\n\nexport const command: CommandData = {\n name: '${name}',\n description: '${name} command',\n};\n\nexport const chatInput: ChatInputCommand = async (ctx) => {\n await ctx.interaction.reply('Hello from ${name}!');\n};\n\nexport const message: MessageCommand = async (ctx) => {\n await ctx.message.reply('Hello from ${name}!');\n};\n`;\n}\n\n/**\n * @private\n * @internal\n */\nfunction JS_COMMAND_SOURCE(name: string) {\n return `/**\n * @type {import('commandkit').CommandData}\n */\nexport const command = {\n name: '${name}',\n description: '${name} command',\n};\n\n/**\n * @type {import('commandkit').ChatInputCommand}\n */\nexport const chatInput = async (ctx) => {\n await ctx.interaction.reply('Hello from ${name}!');\n};\n\n/**\n * @type {import('commandkit').MessageCommand}\n */\nexport const message = async (ctx) => {\n await ctx.message.reply('Hello from ${name}!');\n};\n`;\n}\n\n/**\n * @private\n * @internal\n */\nexport async function generateCommand(name: string, customPath?: string) {\n const cmdPath = join(customPath || COMMANDS_DIR);\n if (!existsSync(cmdPath)) await mkdir(cmdPath, { recursive: true });\n\n const ext = determineExtension();\n const isTypeScript = ext === 'ts';\n\n const fileName = `${name}.${ext}`;\n\n if (existsSync(join(cmdPath, fileName))) {\n panic(`Command ${name} already exists.`);\n }\n\n const commandFile = isTypeScript\n ? TS_COMMAND_SOURCE(name)\n : JS_COMMAND_SOURCE(name);\n\n await writeFile(join(cmdPath, fileName), commandFile);\n\n console.log(\n colors.green(\n `Command ${colors.magenta(name)} created at ${colors.blue(formatPath(`${cmdPath}/${fileName}`))}`,\n ),\n );\n}\n\n/**\n * @private\n * @internal\n */\nexport async function generateEvent(name: string, customPath?: string) {\n const eventPath = join(customPath || EVENTS_DIR, name);\n if (!existsSync(eventPath)) await mkdir(eventPath, { recursive: true });\n\n const ext = determineExtension();\n\n let filename = `event.${ext}`;\n\n if (existsSync(join(eventPath, filename))) {\n const count = (await readdir(eventPath)).length;\n filename = `${String(count).padStart(2, '0')}_${filename}`;\n }\n\n const eventFile = `\nexport default async function on${name[0].toUpperCase() + name.slice(1)}() {\n console.log('${name} event fired!');\n};\n`.trim();\n\n await writeFile(join(eventPath, filename), eventFile);\n\n console.log(\n colors.green(\n `Event ${colors.magenta(name)} created at ${colors.blue(formatPath(eventPath))}/${colors.magenta(filename)}`,\n ),\n );\n}\n"],"mappings":";;;;;;;;;;AAOA,MAAM,YAAY;AAClB,MAAM,8BAAoB,WAAW;AACrC,MAAM,4BAAkB,WAAW;;;;;AAMnC,MAAM,cAAc,WACpB,OAAK,QAAQ,kCAAgB,KAAK,QAAQ,OAAO;;;;;AAMjD,SAAS,qBAAqB;AAC5B,0CAAuB,WAAW,oBAAoB,OAAO;AAC/D;;;;;AAMA,SAAS,kBAAkB,MAAc;AACvC,QAAO;;;WAGE,KAAK;kBACE,KAAK;;;;4CAIqB,KAAK;;;;wCAIT,KAAK;;;AAG7C;;;;;AAMA,SAAS,kBAAkB,MAAc;AACvC,QAAO;;;;WAIE,KAAK;kBACE,KAAK;;;;;;;4CAOqB,KAAK;;;;;;;wCAOT,KAAK;;;AAG7C;;;;;AAMA,eAAsB,gBAAgB,MAAc,YAAqB;CACvE,MAAM,yBAAe,cAAc;AACnC,KAAI,oBAAY,SAAU,8BAAY,SAAS,EAAE,WAAW,MAAM;CAElE,MAAM,MAAM;CACZ,MAAM,eAAe,QAAQ;CAE7B,MAAM,WAAW,GAAG,KAAK,GAAG;AAE5B,uCAAoB,SAAS,WAC3B,sBAAM,WAAW,KAAK;CAGxB,MAAM,cAAc,eACpB,kBAAkB,QAClB,kBAAkB;AAElB,iDAAqB,SAAS,WAAW;AAEzC,SAAQ,IACN,8BAAO,MACL,WAAW,8BAAO,QAAQ,MAAM,cAAc,8BAAO,KAAK,WAAW,GAAG,QAAQ,GAAG;AAGzF;;;;;AAMA,eAAsB,cAAc,MAAc,YAAqB;CACrE,MAAM,2BAAiB,cAAc,YAAY;AACjD,KAAI,oBAAY,WAAY,8BAAY,WAAW,EAAE,WAAW,MAAM;CAEtE,MAAM,MAAM;CAEZ,IAAI,WAAW,SAAS;AAExB,uCAAoB,WAAW,YAAY;EACzC,MAAM,SAAS,+BAAc,YAAY;AACzC,aAAW,GAAG,OAAO,OAAO,SAAS,GAAG,KAAK,GAAG;CAClD;CAEA,MAAM,YAAY;kCACc,KAAK,GAAG,gBAAgB,KAAK,MAAM,GAAG;iBACvD,KAAK;;EAEpB;AAEA,iDAAqB,WAAW,WAAW;AAE3C,SAAQ,IACN,8BAAO,MACL,SAAS,8BAAO,QAAQ,MAAM,cAAc,8BAAO,KAAK,WAAW,YAAY,GAAG,8BAAO,QAAQ;AAGvG"}
1
+ {"version":3,"file":"generators.js","names":[],"sources":["../../src/cli/generators.ts"],"sourcesContent":["import { mkdir, writeFile, readdir } from 'fs/promises';\nimport { join } from 'path';\nimport { panic } from './common';\nimport { existsSync } from 'fs';\nimport colors from '../utils/colors';\nimport { COMMANDKIT_CWD } from '../utils/constants';\n\nconst BASE_PATH = COMMANDKIT_CWD;\nconst COMMANDS_DIR = join(BASE_PATH, 'src/app/commands');\nconst EVENTS_DIR = join(BASE_PATH, 'src/app/events');\n\n/**\n * @private\n * @internal\n */\nconst formatPath = (path: string) =>\n path.replace(COMMANDKIT_CWD, '.').replace(/\\\\/g, '/');\n\n/**\n * @private\n * @internal\n */\nfunction determineExtension() {\n return existsSync(join(BASE_PATH, 'tsconfig.json')) ? 'ts' : 'js';\n}\n\n/**\n * @private\n * @internal\n */\nfunction TS_COMMAND_SOURCE(name: string) {\n return `import type { CommandData, ChatInputCommand, MessageCommand } from 'commandkit';\n\nexport const command: CommandData = {\n name: '${name}',\n description: '${name} command',\n};\n\nexport const chatInput: ChatInputCommand = async (ctx) => {\n await ctx.interaction.reply('Hello from ${name}!');\n};\n\nexport const message: MessageCommand = async (ctx) => {\n await ctx.message.reply('Hello from ${name}!');\n};\n`;\n}\n\n/**\n * @private\n * @internal\n */\nfunction JS_COMMAND_SOURCE(name: string) {\n return `/**\n * @type {import('commandkit').CommandData}\n */\nexport const command = {\n name: '${name}',\n description: '${name} command',\n};\n\n/**\n * @type {import('commandkit').ChatInputCommand}\n */\nexport const chatInput = async (ctx) => {\n await ctx.interaction.reply('Hello from ${name}!');\n};\n\n/**\n * @type {import('commandkit').MessageCommand}\n */\nexport const message = async (ctx) => {\n await ctx.message.reply('Hello from ${name}!');\n};\n`;\n}\n\n/**\n * @private\n * @internal\n */\nexport async function generateCommand(name: string, customPath?: string) {\n const cmdPath = join(customPath || COMMANDS_DIR);\n if (!existsSync(cmdPath)) await mkdir(cmdPath, { recursive: true });\n\n const ext = determineExtension();\n const isTypeScript = ext === 'ts';\n\n const fileName = `${name}.${ext}`;\n\n if (existsSync(join(cmdPath, fileName))) {\n panic(`Command ${name} already exists.`);\n }\n\n const commandFile = isTypeScript\n ? TS_COMMAND_SOURCE(name)\n : JS_COMMAND_SOURCE(name);\n\n await writeFile(join(cmdPath, fileName), commandFile);\n\n console.log(\n colors.green(\n `Command ${colors.magenta(name)} created at ${colors.blue(formatPath(`${cmdPath}/${fileName}`))}`,\n ),\n );\n}\n\n/**\n * @private\n * @internal\n */\nexport async function generateEvent(name: string, customPath?: string) {\n const eventPath = join(customPath || EVENTS_DIR, name);\n if (!existsSync(eventPath)) await mkdir(eventPath, { recursive: true });\n\n const ext = determineExtension();\n\n let filename = `event.${ext}`;\n\n if (existsSync(join(eventPath, filename))) {\n const count = (await readdir(eventPath)).length;\n filename = `${String(count).padStart(2, '0')}_${filename}`;\n }\n\n const eventFile = `\nexport default async function on${name[0].toUpperCase() + name.slice(1)}() {\n console.log('${name} event fired!');\n};\n`.trim();\n\n await writeFile(join(eventPath, filename), eventFile);\n\n console.log(\n colors.green(\n `Event ${colors.magenta(name)} created at ${colors.blue(formatPath(eventPath))}/${colors.magenta(filename)}`,\n ),\n );\n}\n"],"mappings":";;;;;;;;;;AAOA,MAAM,YAAY;AAClB,MAAM,8BAAoB,WAAW;AACrC,MAAM,4BAAkB,WAAW;;;;;AAMnC,MAAM,cAAc,WACpB,OAAK,QAAQ,kCAAgB,KAAK,QAAQ,OAAO;;;;;AAMjD,SAAS,qBAAqB;AAC5B,0CAAuB,WAAW,oBAAoB,OAAO;;;;;;AAO/D,SAAS,kBAAkB,MAAc;AACvC,QAAO;;;WAGE,KAAK;kBACE,KAAK;;;;4CAIqB,KAAK;;;;wCAIT,KAAK;;;;;;;;AAS7C,SAAS,kBAAkB,MAAc;AACvC,QAAO;;;;WAIE,KAAK;kBACE,KAAK;;;;;;;4CAOqB,KAAK;;;;;;;wCAOT,KAAK;;;;;;;;AAS7C,eAAsB,gBAAgB,MAAc,YAAqB;CACvE,MAAM,yBAAe,cAAc;AACnC,KAAI,oBAAY,SAAU,8BAAY,SAAS,EAAE,WAAW;CAE5D,MAAM,MAAM;CACZ,MAAM,eAAe,QAAQ;CAE7B,MAAM,WAAW,GAAG,KAAK,GAAG;AAE5B,uCAAoB,SAAS,WAC3B,sBAAM,WAAW,KAAK;CAGxB,MAAM,cAAc,eACpB,kBAAkB,QAClB,kBAAkB;AAElB,iDAAqB,SAAS,WAAW;AAEzC,SAAQ,IACN,8BAAO,MACL,WAAW,8BAAO,QAAQ,MAAM,cAAc,8BAAO,KAAK,WAAW,GAAG,QAAQ,GAAG;;;;;;AASzF,eAAsB,cAAc,MAAc,YAAqB;CACrE,MAAM,2BAAiB,cAAc,YAAY;AACjD,KAAI,oBAAY,WAAY,8BAAY,WAAW,EAAE,WAAW;CAEhE,MAAM,MAAM;CAEZ,IAAI,WAAW,SAAS;AAExB,uCAAoB,WAAW,YAAY;EACzC,MAAM,SAAS,+BAAc,YAAY;AACzC,aAAW,GAAG,OAAO,OAAO,SAAS,GAAG,KAAK,GAAG;;CAGlD,MAAM,YAAY;kCACc,KAAK,GAAG,gBAAgB,KAAK,MAAM,GAAG;iBACvD,KAAK;;EAEpB;AAEA,iDAAqB,WAAW,WAAW;AAE3C,SAAQ,IACN,8BAAO,MACL,SAAS,8BAAO,QAAQ,MAAM,cAAc,8BAAO,KAAK,WAAW,YAAY,GAAG,8BAAO,QAAQ"}
@@ -1,6 +1,6 @@
1
1
  const require_chunk = require('../chunk-nOFOJqeH.js');
2
2
  const require_constants = require('../constants-B5_Ta7PR.js');
3
- const require_version = require('../version-DDiOJ2Yv.js');
3
+ const require_version = require('../version-B_bKw4jL.js');
4
4
  const node_fs = require_chunk.__toESM(require("node:fs"));
5
5
  const node_path = require_chunk.__toESM(require("node:path"));
6
6
  const node_child_process = require_chunk.__toESM(require("node:child_process"));
@@ -1 +1 @@
1
- {"version":3,"file":"information.js","names":[],"sources":["../../src/cli/information.ts"],"sourcesContent":["import os from 'node:os';\nimport { execSync } from 'node:child_process';\nimport { version as commandkitVersion } from '../version';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { COMMANDKIT_CWD } from '../utils/constants';\n\n/**\n * @private\n * @internal\n */\nfunction $getKnownPlugins() {\n 'use macro';\n\n // remove name from the list when that plugin is stable\n const BLACKLISTED = new Set([\n 'commandkit', // core package itself, not a plugin\n 'create-commandkit', // generator, not a plugin\n 'tsconfig', // repo config related, not a plugin\n 'devtools-ui', // the ui part of devtools, not a plugin\n // the plugins below are TBD\n 'tasks',\n ]);\n\n const { readdirSync, readFileSync } =\n require('node:fs') as typeof import('node:fs');\n const { join } = require('node:path') as typeof path;\n\n const pluginsPath = join(__dirname, '..', '..', '..');\n\n const entries = readdirSync(pluginsPath, { withFileTypes: true }).filter(\n (e) => !BLACKLISTED.has(e.name),\n );\n\n const packages = entries.map((p) =>\n join(p.parentPath, p.name, 'package.json'),\n );\n\n const knownPlugins: string[] = [];\n\n for (const pkg of packages) {\n try {\n const { name } = JSON.parse(readFileSync(pkg, 'utf8'));\n if (name && !BLACKLISTED.has(name.replace('@commandkit/', ''))) {\n knownPlugins.push(name);\n }\n } catch {\n // Ignore errors\n }\n }\n\n return knownPlugins;\n}\n\nconst knownPlugins: string[] = $getKnownPlugins();\n\n/**\n * @private\n * @internal\n */\nfunction findPackageVersion(packageName: string) {\n try {\n const packageJsonPath = require.resolve(`${packageName}/package.json`);\n const packageJson = require(packageJsonPath);\n return packageJson.version;\n } catch (e) {\n try {\n const basePaths = [\n path.join(COMMANDKIT_CWD, 'node_modules', packageName),\n path.join(COMMANDKIT_CWD, '..', '..', 'node_modules', packageName),\n path.join(COMMANDKIT_CWD, '..', '..', '.pnpm', packageName),\n path.join(\n COMMANDKIT_CWD,\n '..',\n '..',\n 'node_modules',\n '.pnpm',\n packageName,\n ),\n ];\n\n for (const basePath of basePaths) {\n const packageJsonPath = path.join(basePath, 'package.json');\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = JSON.parse(\n fs.readFileSync(packageJsonPath, 'utf8'),\n );\n return packageJson.version;\n }\n }\n\n const nodeModulesPath = path.join(\n COMMANDKIT_CWD,\n '..',\n '..',\n 'node_modules',\n '.pnpm',\n );\n if (fs.existsSync(nodeModulesPath)) {\n const folders = fs.readdirSync(nodeModulesPath);\n const packageFolder = folders.find((folder) =>\n folder.startsWith(`${packageName.replace('/', '+')}@`),\n );\n\n if (packageFolder) {\n const packageJsonPath = path.join(\n nodeModulesPath,\n packageFolder,\n 'node_modules',\n packageName,\n 'package.json',\n );\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = JSON.parse(\n fs.readFileSync(packageJsonPath, 'utf8'),\n );\n return packageJson.version;\n }\n }\n }\n\n return null;\n } catch {\n return null;\n }\n }\n}\n\n/**\n * @private\n * @internal\n */\nfunction getBinaryVersion(binary: string) {\n try {\n const version = execSync(`${binary} --version`).toString().trim();\n return version;\n } catch {\n return null;\n }\n}\n\n/**\n * @private\n * @internal\n */\nexport async function showInformation() {\n const runtimeName: string = (() => {\n // @ts-ignore\n if ('Deno' in globalThis && typeof Deno !== 'undefined') return 'Deno';\n // @ts-ignore\n if ('Bun' in globalThis && typeof Bun !== 'undefined') return 'Bun';\n\n return 'Node.js';\n })();\n\n const info = {\n 'Operating System': {\n Platform: process.platform,\n Arch: process.arch,\n Version: os.version(),\n 'Available Memory (MB)': Math.round(os.totalmem() / 1024 / 1024),\n 'Available CPU cores': os.cpus().length,\n },\n Runtime: runtimeName,\n Binaries: {\n Node: process.version,\n npm: getBinaryVersion('npm') || 'N/A',\n Yarn: getBinaryVersion('yarn') || 'N/A',\n pnpm: getBinaryVersion('pnpm') || 'N/A',\n Bun: getBinaryVersion('bun') || 'N/A',\n Deno: (getBinaryVersion('deno') || 'N/A').replace(/\\n|\\r/g, ' '),\n },\n 'Relevant Packages': {\n commandkit: commandkitVersion,\n 'discord.js': findPackageVersion('discord.js') || 'N/A',\n typescript: findPackageVersion('typescript') || 'N/A',\n rolldown: findPackageVersion('rolldown') || 'N/A',\n tsdown: findPackageVersion('tsdown') || 'N/A',\n },\n 'CommandKit Plugins': knownPlugins.reduce(\n (acc, plugin) => {\n acc[plugin] = findPackageVersion(plugin) || 'N/A';\n return acc;\n },\n {} as Record<string, string>,\n ),\n };\n\n let output = '';\n\n for (const [section, data] of Object.entries(info)) {\n output += `${section}:\\n`;\n\n if (typeof data === 'string') {\n output += ` ${data}\\n\\n`;\n continue;\n }\n\n for (const [key, value] of Object.entries(data)) {\n output += ` ${key}: ${value}\\n`;\n }\n output += '\\n';\n }\n\n console.log(output.trim());\n}\n"],"mappings":";;;;;;;;;;;;;AAsDA,MAAM,eAA2C;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;;;;;AAMjD,SAAS,mBAAmB,aAAqB;AAC/C,KAAI;EACF,MAAM,kBAAkB,QAAQ,QAAQ,GAAG,YAAY;EACvD,MAAM,cAAc,QAAQ;AAC5B,SAAO,YAAY;CACpB,SAAQ,GAAG;AACV,MAAI;GACF,MAAM,YAAY;IAClB,kBAAK,KAAK,kCAAgB,gBAAgB;IAC1C,kBAAK,KAAK,kCAAgB,MAAM,MAAM,gBAAgB;IACtD,kBAAK,KAAK,kCAAgB,MAAM,MAAM,SAAS;IAC/C,kBAAK,KACH,kCACA,MACA,MACA,gBACA,SACA;IACA;AAGF,QAAK,MAAM,YAAY,WAAW;IAChC,MAAM,kBAAkB,kBAAK,KAAK,UAAU;AAC5C,QAAI,gBAAG,WAAW,kBAAkB;KAClC,MAAM,cAAc,KAAK,MACvB,gBAAG,aAAa,iBAAiB;AAEnC,YAAO,YAAY;IACrB;GACF;GAEA,MAAM,kBAAkB,kBAAK,KAC3B,kCACA,MACA,MACA,gBACA;AAEF,OAAI,gBAAG,WAAW,kBAAkB;IAClC,MAAM,UAAU,gBAAG,YAAY;IAC/B,MAAM,gBAAgB,QAAQ,MAAM,WACpC,OAAO,WAAW,GAAG,YAAY,QAAQ,KAAK,KAAK;AAGnD,QAAI,eAAe;KACjB,MAAM,kBAAkB,kBAAK,KAC3B,iBACA,eACA,gBACA,aACA;AAEF,SAAI,gBAAG,WAAW,kBAAkB;MAClC,MAAM,cAAc,KAAK,MACvB,gBAAG,aAAa,iBAAiB;AAEnC,aAAO,YAAY;KACrB;IACF;GACF;AAEA,UAAO;EACR,QAAO;AACN,UAAO;EACT;CACF;AACF;;;;;AAMA,SAAS,iBAAiB,QAAgB;AACxC,KAAI;EACF,MAAM,6CAAmB,GAAG,OAAO,aAAa,WAAW;AAC3D,SAAO;CACR,QAAO;AACN,SAAO;CACT;AACF;;;;;AAMA,eAAsB,kBAAkB;CACtC,MAAM,qBAA6B;AAEjC,MAAI,UAAU,cAAc,OAAO,SAAS,YAAa,QAAO;AAEhE,MAAI,SAAS,cAAc,OAAO,QAAQ,YAAa,QAAO;AAE9D,SAAO;CACR;CAED,MAAM,OAAO;EACX,oBAAoB;GAClB,UAAU,QAAQ;GAClB,MAAM,QAAQ;GACd,SAAS,gBAAG;GACZ,yBAAyB,KAAK,MAAM,gBAAG,aAAa,OAAO;GAC3D,uBAAuB,gBAAG,OAAO;GAClC;EACD,SAAS;EACT,UAAU;GACR,MAAM,QAAQ;GACd,KAAK,iBAAiB,UAAU;GAChC,MAAM,iBAAiB,WAAW;GAClC,MAAM,iBAAiB,WAAW;GAClC,KAAK,iBAAiB,UAAU;GAChC,OAAO,iBAAiB,WAAW,OAAO,QAAQ,UAAU;GAC7D;EACD,qBAAqB;GACnB,YAAY;GACZ,cAAc,mBAAmB,iBAAiB;GAClD,YAAY,mBAAmB,iBAAiB;GAChD,UAAU,mBAAmB,eAAe;GAC5C,QAAQ,mBAAmB,aAAa;GACzC;EACD,sBAAsB,aAAa,QAChC,KAAK,WAAW;AACf,OAAI,UAAU,mBAAmB,WAAW;AAC5C,UAAO;EACR,GACD,EAAE;EAEL;CAED,IAAI,SAAS;AAEb,MAAK,MAAM,CAAC,SAAS,KAAK,IAAI,OAAO,QAAQ,OAAO;AAClD,YAAU,GAAG,QAAQ;AAErB,MAAI,OAAO,SAAS,UAAU;AAC5B,aAAU,KAAK,KAAK;AACpB;EACF;AAEA,OAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,MACxC,WAAU,KAAK,IAAI,IAAI,MAAM;AAE/B,YAAU;CACZ;AAEA,SAAQ,IAAI,OAAO;AACrB"}
1
+ {"version":3,"file":"information.js","names":[],"sources":["../../src/cli/information.ts"],"sourcesContent":["import os from 'node:os';\nimport { execSync } from 'node:child_process';\nimport { version as commandkitVersion } from '../version';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { COMMANDKIT_CWD } from '../utils/constants';\n\n/**\n * @private\n * @internal\n */\nfunction $getKnownPlugins() {\n 'use macro';\n\n // remove name from the list when that plugin is stable\n const BLACKLISTED = new Set([\n 'commandkit', // core package itself, not a plugin\n 'create-commandkit', // generator, not a plugin\n 'tsconfig', // repo config related, not a plugin\n 'devtools-ui', // the ui part of devtools, not a plugin\n // the plugins below are TBD\n 'tasks',\n ]);\n\n const { readdirSync, readFileSync } =\n require('node:fs') as typeof import('node:fs');\n const { join } = require('node:path') as typeof path;\n\n const pluginsPath = join(__dirname, '..', '..', '..');\n\n const entries = readdirSync(pluginsPath, { withFileTypes: true }).filter(\n (e) => !BLACKLISTED.has(e.name),\n );\n\n const packages = entries.map((p) =>\n join(p.parentPath, p.name, 'package.json'),\n );\n\n const knownPlugins: string[] = [];\n\n for (const pkg of packages) {\n try {\n const { name } = JSON.parse(readFileSync(pkg, 'utf8'));\n if (name && !BLACKLISTED.has(name.replace('@commandkit/', ''))) {\n knownPlugins.push(name);\n }\n } catch {\n // Ignore errors\n }\n }\n\n return knownPlugins;\n}\n\nconst knownPlugins: string[] = $getKnownPlugins();\n\n/**\n * @private\n * @internal\n */\nfunction findPackageVersion(packageName: string) {\n try {\n const packageJsonPath = require.resolve(`${packageName}/package.json`);\n const packageJson = require(packageJsonPath);\n return packageJson.version;\n } catch (e) {\n try {\n const basePaths = [\n path.join(COMMANDKIT_CWD, 'node_modules', packageName),\n path.join(COMMANDKIT_CWD, '..', '..', 'node_modules', packageName),\n path.join(COMMANDKIT_CWD, '..', '..', '.pnpm', packageName),\n path.join(\n COMMANDKIT_CWD,\n '..',\n '..',\n 'node_modules',\n '.pnpm',\n packageName,\n ),\n ];\n\n for (const basePath of basePaths) {\n const packageJsonPath = path.join(basePath, 'package.json');\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = JSON.parse(\n fs.readFileSync(packageJsonPath, 'utf8'),\n );\n return packageJson.version;\n }\n }\n\n const nodeModulesPath = path.join(\n COMMANDKIT_CWD,\n '..',\n '..',\n 'node_modules',\n '.pnpm',\n );\n if (fs.existsSync(nodeModulesPath)) {\n const folders = fs.readdirSync(nodeModulesPath);\n const packageFolder = folders.find((folder) =>\n folder.startsWith(`${packageName.replace('/', '+')}@`),\n );\n\n if (packageFolder) {\n const packageJsonPath = path.join(\n nodeModulesPath,\n packageFolder,\n 'node_modules',\n packageName,\n 'package.json',\n );\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = JSON.parse(\n fs.readFileSync(packageJsonPath, 'utf8'),\n );\n return packageJson.version;\n }\n }\n }\n\n return null;\n } catch {\n return null;\n }\n }\n}\n\n/**\n * @private\n * @internal\n */\nfunction getBinaryVersion(binary: string) {\n try {\n const version = execSync(`${binary} --version`).toString().trim();\n return version;\n } catch {\n return null;\n }\n}\n\n/**\n * @private\n * @internal\n */\nexport async function showInformation() {\n const runtimeName: string = (() => {\n // @ts-ignore\n if ('Deno' in globalThis && typeof Deno !== 'undefined') return 'Deno';\n // @ts-ignore\n if ('Bun' in globalThis && typeof Bun !== 'undefined') return 'Bun';\n\n return 'Node.js';\n })();\n\n const info = {\n 'Operating System': {\n Platform: process.platform,\n Arch: process.arch,\n Version: os.version(),\n 'Available Memory (MB)': Math.round(os.totalmem() / 1024 / 1024),\n 'Available CPU cores': os.cpus().length,\n },\n Runtime: runtimeName,\n Binaries: {\n Node: process.version,\n npm: getBinaryVersion('npm') || 'N/A',\n Yarn: getBinaryVersion('yarn') || 'N/A',\n pnpm: getBinaryVersion('pnpm') || 'N/A',\n Bun: getBinaryVersion('bun') || 'N/A',\n Deno: (getBinaryVersion('deno') || 'N/A').replace(/\\n|\\r/g, ' '),\n },\n 'Relevant Packages': {\n commandkit: commandkitVersion,\n 'discord.js': findPackageVersion('discord.js') || 'N/A',\n typescript: findPackageVersion('typescript') || 'N/A',\n rolldown: findPackageVersion('rolldown') || 'N/A',\n tsdown: findPackageVersion('tsdown') || 'N/A',\n },\n 'CommandKit Plugins': knownPlugins.reduce(\n (acc, plugin) => {\n acc[plugin] = findPackageVersion(plugin) || 'N/A';\n return acc;\n },\n {} as Record<string, string>,\n ),\n };\n\n let output = '';\n\n for (const [section, data] of Object.entries(info)) {\n output += `${section}:\\n`;\n\n if (typeof data === 'string') {\n output += ` ${data}\\n\\n`;\n continue;\n }\n\n for (const [key, value] of Object.entries(data)) {\n output += ` ${key}: ${value}\\n`;\n }\n output += '\\n';\n }\n\n console.log(output.trim());\n}\n"],"mappings":";;;;;;;;;;;;;AAsDA,MAAM,eAA2C;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;;;;;;AAMjD,SAAS,mBAAmB,aAAqB;AAC/C,KAAI;EACF,MAAM,kBAAkB,QAAQ,QAAQ,GAAG,YAAY;EACvD,MAAM,cAAc,QAAQ;AAC5B,SAAO,YAAY;UACZ,GAAG;AACV,MAAI;GACF,MAAM,YAAY;IAClB,kBAAK,KAAK,kCAAgB,gBAAgB;IAC1C,kBAAK,KAAK,kCAAgB,MAAM,MAAM,gBAAgB;IACtD,kBAAK,KAAK,kCAAgB,MAAM,MAAM,SAAS;IAC/C,kBAAK,KACH,kCACA,MACA,MACA,gBACA,SACA;;AAIF,QAAK,MAAM,YAAY,WAAW;IAChC,MAAM,kBAAkB,kBAAK,KAAK,UAAU;AAC5C,QAAI,gBAAG,WAAW,kBAAkB;KAClC,MAAM,cAAc,KAAK,MACvB,gBAAG,aAAa,iBAAiB;AAEnC,YAAO,YAAY;;;GAIvB,MAAM,kBAAkB,kBAAK,KAC3B,kCACA,MACA,MACA,gBACA;AAEF,OAAI,gBAAG,WAAW,kBAAkB;IAClC,MAAM,UAAU,gBAAG,YAAY;IAC/B,MAAM,gBAAgB,QAAQ,MAAM,WACpC,OAAO,WAAW,GAAG,YAAY,QAAQ,KAAK,KAAK;AAGnD,QAAI,eAAe;KACjB,MAAM,kBAAkB,kBAAK,KAC3B,iBACA,eACA,gBACA,aACA;AAEF,SAAI,gBAAG,WAAW,kBAAkB;MAClC,MAAM,cAAc,KAAK,MACvB,gBAAG,aAAa,iBAAiB;AAEnC,aAAO,YAAY;;;;AAKzB,UAAO;UACD;AACN,UAAO;;;;;;;;AASb,SAAS,iBAAiB,QAAgB;AACxC,KAAI;EACF,MAAM,6CAAmB,GAAG,OAAO,aAAa,WAAW;AAC3D,SAAO;SACD;AACN,SAAO;;;;;;;AAQX,eAAsB,kBAAkB;CACtC,MAAM,qBAA6B;AAEjC,MAAI,UAAU,cAAc,OAAO,SAAS,YAAa,QAAO;AAEhE,MAAI,SAAS,cAAc,OAAO,QAAQ,YAAa,QAAO;AAE9D,SAAO;;CAGT,MAAM,OAAO;EACX,oBAAoB;GAClB,UAAU,QAAQ;GAClB,MAAM,QAAQ;GACd,SAAS,gBAAG;GACZ,yBAAyB,KAAK,MAAM,gBAAG,aAAa,OAAO;GAC3D,uBAAuB,gBAAG,OAAO;;EAEnC,SAAS;EACT,UAAU;GACR,MAAM,QAAQ;GACd,KAAK,iBAAiB,UAAU;GAChC,MAAM,iBAAiB,WAAW;GAClC,MAAM,iBAAiB,WAAW;GAClC,KAAK,iBAAiB,UAAU;GAChC,OAAO,iBAAiB,WAAW,OAAO,QAAQ,UAAU;;EAE9D,qBAAqB;GACnB,YAAY;GACZ,cAAc,mBAAmB,iBAAiB;GAClD,YAAY,mBAAmB,iBAAiB;GAChD,UAAU,mBAAmB,eAAe;GAC5C,QAAQ,mBAAmB,aAAa;;EAE1C,sBAAsB,aAAa,QAChC,KAAK,WAAW;AACf,OAAI,UAAU,mBAAmB,WAAW;AAC5C,UAAO;KAET;;CAIJ,IAAI,SAAS;AAEb,MAAK,MAAM,CAAC,SAAS,SAAS,OAAO,QAAQ,OAAO;AAClD,YAAU,GAAG,QAAQ;AAErB,MAAI,OAAO,SAAS,UAAU;AAC5B,aAAU,KAAK,KAAK;AACpB;;AAGF,OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MACxC,WAAU,KAAK,IAAI,IAAI,MAAM;AAE/B,YAAU;;AAGZ,SAAQ,IAAI,OAAO"}
package/dist/cli/init.js CHANGED
@@ -1,7 +1,7 @@
1
1
  require('../colors-Cd4Oz-r-.js');
2
2
  require('../ActionRow-CmTHbo2t.js');
3
3
  require('../error-codes-C-ViHyu-.js');
4
- require('../commandkit-C0BuNRSN.js');
4
+ require('../commandkit-CYJ8d2gj.js');
5
5
  require('../common-CcfjYnPG.js');
6
6
  require('../common-vnMIelAE.js');
7
7
  require('../container-z621KfH5.js');
@@ -33,6 +33,6 @@ require('../router-DHnFRADH.js');
33
33
  require('../common-DNADUU3_.js');
34
34
  require('../CommandKitEventsChannel-Bgw0XCOl.js');
35
35
  require('../store-CiqLHedg.js');
36
- const require_init = require('../init-D20FhDjn.js');
36
+ const require_init = require('../init-CEuxl8qP.js');
37
37
 
38
38
  exports.bootstrapCommandkitCLI = require_init.bootstrapCommandkitCLI;
@@ -2,7 +2,7 @@ const require_chunk = require('../chunk-nOFOJqeH.js');
2
2
  require('../colors-Cd4Oz-r-.js');
3
3
  require('../ActionRow-CmTHbo2t.js');
4
4
  require('../error-codes-C-ViHyu-.js');
5
- const require_commandkit = require('../commandkit-C0BuNRSN.js');
5
+ const require_commandkit = require('../commandkit-CYJ8d2gj.js');
6
6
  require('../common-CcfjYnPG.js');
7
7
  require('../common-vnMIelAE.js');
8
8
  require('../container-z621KfH5.js');
@@ -37,7 +37,7 @@ require('../store-CiqLHedg.js');
37
37
  require('../env-_68PRRoA.js');
38
38
  const require_app_process = require('../app-process-CjMovpoZ.js');
39
39
  require('../type-checker-1Iu1jJcy.js');
40
- const require_build = require('../build-BmDzPe4V.js');
40
+ const require_build = require('../build-CoJqJ17n.js');
41
41
  const require_utils$1 = require('../utils-DCSnVAZ6.js');
42
42
  const fs = require_chunk.__toESM(require("fs"));
43
43
 
@@ -1 +1 @@
1
- {"version":3,"file":"production.js","names":[],"sources":["../../src/cli/production.ts"],"sourcesContent":["import { loadConfigFile } from '../config/loader';\nimport { createAppProcess } from './app-process';\nimport { existsSync } from 'fs';\nimport { findEntrypoint, panic } from './common';\nimport { buildApplication } from './build';\nimport { CompilerPlugin, isCompilerPlugin } from '../plugins';\nimport { createSpinner } from './utils';\nimport { COMMANDKIT_CWD } from '../utils/constants';\n\n/**\n * @private\n * @internal\n */\nexport async function bootstrapProductionServer(configPath?: string) {\n process.env.COMMANDKIT_BOOTSTRAP_MODE = 'production';\n const cwd = configPath || COMMANDKIT_CWD;\n const config = await loadConfigFile(cwd);\n const mainFile = findEntrypoint(config.distDir);\n\n if (!existsSync(mainFile)) {\n panic(\n `Could not locate the entrypoint. Did you forget to build the application? Run 'commandkit build' to build the application first.`,\n );\n }\n\n return createAppProcess(mainFile, cwd, false);\n}\n\n/**\n * @private\n * @internal\n */\nexport async function createProductionBuild(configPath?: string) {\n process.env.COMMANDKIT_BOOTSTRAP_MODE = 'production';\n const cwd = configPath || COMMANDKIT_CWD;\n const config = await loadConfigFile(cwd);\n\n const spinner = await createSpinner(\n 'Creating an optimized production build\\n',\n );\n\n spinner.start();\n\n await buildApplication({\n configPath: cwd,\n isDev: false,\n plugins: config.plugins.filter((p) =>\n isCompilerPlugin(p),\n ) as CompilerPlugin[],\n rolldownPlugins: config.rolldownPlugins,\n });\n\n spinner.succeed('Production build completed!');\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,eAAsB,0BAA0B,YAAqB;AACnE,SAAQ,IAAI,4BAA4B;CACxC,MAAM,MAAM,cAAc;CAC1B,MAAM,SAAS,MAAM,kCAAe;CACpC,MAAM,WAAW,gCAAe,OAAO;AAEvC,KAAI,oBAAY,UACd,wBACE;AAIJ,QAAO,qCAAiB,UAAU,KAAK;AACzC;;;;;AAMA,eAAsB,sBAAsB,YAAqB;AAC/D,SAAQ,IAAI,4BAA4B;CACxC,MAAM,MAAM,cAAc;CAC1B,MAAM,SAAS,MAAM,kCAAe;CAEpC,MAAM,UAAU,MAAM,8BACpB;AAGF,SAAQ;AAER,OAAM,+BAAiB;EACrB,YAAY;EACZ,OAAO;EACP,SAAS,OAAO,QAAQ,QAAQ,MAChC,wCAAiB;EAEjB,iBAAiB,OAAO;EACzB;AAED,SAAQ,QAAQ;AAClB"}
1
+ {"version":3,"file":"production.js","names":[],"sources":["../../src/cli/production.ts"],"sourcesContent":["import { loadConfigFile } from '../config/loader';\nimport { createAppProcess } from './app-process';\nimport { existsSync } from 'fs';\nimport { findEntrypoint, panic } from './common';\nimport { buildApplication } from './build';\nimport { CompilerPlugin, isCompilerPlugin } from '../plugins';\nimport { createSpinner } from './utils';\nimport { COMMANDKIT_CWD } from '../utils/constants';\n\n/**\n * @private\n * @internal\n */\nexport async function bootstrapProductionServer(configPath?: string) {\n process.env.COMMANDKIT_BOOTSTRAP_MODE = 'production';\n const cwd = configPath || COMMANDKIT_CWD;\n const config = await loadConfigFile(cwd);\n const mainFile = findEntrypoint(config.distDir);\n\n if (!existsSync(mainFile)) {\n panic(\n `Could not locate the entrypoint. Did you forget to build the application? Run 'commandkit build' to build the application first.`,\n );\n }\n\n return createAppProcess(mainFile, cwd, false);\n}\n\n/**\n * @private\n * @internal\n */\nexport async function createProductionBuild(configPath?: string) {\n process.env.COMMANDKIT_BOOTSTRAP_MODE = 'production';\n const cwd = configPath || COMMANDKIT_CWD;\n const config = await loadConfigFile(cwd);\n\n const spinner = await createSpinner(\n 'Creating an optimized production build\\n',\n );\n\n spinner.start();\n\n await buildApplication({\n configPath: cwd,\n isDev: false,\n plugins: config.plugins.filter((p) =>\n isCompilerPlugin(p),\n ) as CompilerPlugin[],\n rolldownPlugins: config.rolldownPlugins,\n });\n\n spinner.succeed('Production build completed!');\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,eAAsB,0BAA0B,YAAqB;AACnE,SAAQ,IAAI,4BAA4B;CACxC,MAAM,MAAM,cAAc;CAC1B,MAAM,SAAS,MAAM,kCAAe;CACpC,MAAM,WAAW,gCAAe,OAAO;AAEvC,KAAI,oBAAY,UACd,wBACE;AAIJ,QAAO,qCAAiB,UAAU,KAAK;;;;;;AAOzC,eAAsB,sBAAsB,YAAqB;AAC/D,SAAQ,IAAI,4BAA4B;CACxC,MAAM,MAAM,cAAc;CAC1B,MAAM,SAAS,MAAM,kCAAe;CAEpC,MAAM,UAAU,MAAM,8BACpB;AAGF,SAAQ;AAER,OAAM,+BAAiB;EACrB,YAAY;EACZ,OAAO;EACP,SAAS,OAAO,QAAQ,QAAQ,MAChC,wCAAiB;EAEjB,iBAAiB,OAAO;;AAG1B,SAAQ,QAAQ"}
@@ -24,6 +24,7 @@ const node_async_hooks = require_chunk.__toESM(require("node:async_hooks"));
24
24
  const node_fs = require_chunk.__toESM(require("node:fs"));
25
25
  const node_path = require_chunk.__toESM(require("node:path"));
26
26
  const node_crypto = require_chunk.__toESM(require("node:crypto"));
27
+ const util = require_chunk.__toESM(require("util"));
27
28
  const __rollup_plugin_json = require_chunk.__toESM(require("@rollup/plugin-json"));
28
29
 
29
30
  //#region src/context/async-context.ts
@@ -1285,47 +1286,50 @@ var DefaultLogger = class {
1285
1286
  const label = this._getLevelLabel(level);
1286
1287
  return `${label}${require_colors.colors_default.dim(BoxChars.vertical)} ${require_colors.colors_default.dim(timestamp)}`;
1287
1288
  }
1288
- _log(level, ...args) {
1289
+ _log(level, message) {
1289
1290
  const prefix = this._getPrefix(level);
1290
1291
  const context$1 = this._getContext();
1291
1292
  const colorFn = TextColorMap[level];
1292
- if (context$1) this.logger.log(`${prefix}\n${context$1} ${require_colors.colors_default.dim(BoxChars.corner)}`, ...args.map((arg) => colorFn(arg)));
1293
- else this.logger.log(`${prefix} ${require_colors.colors_default.dim(BoxChars.corner)}`, ...args.map((arg) => colorFn(arg)));
1293
+ if (context$1) this.logger.log(`${prefix}\n${context$1} ${require_colors.colors_default.dim(BoxChars.corner)}`, colorFn(message));
1294
+ else this.logger.log(`${prefix} ${require_colors.colors_default.dim(BoxChars.corner)}`, colorFn(message));
1294
1295
  }
1295
- /**
1296
- * Logs a debug message.
1297
- * @param args The message arguments to log.
1298
- */
1299
- debug(...args) {
1300
- this._log(LogLevel.DEBUG, ...args);
1296
+ _logTemplate(level, strings, ...values) {
1297
+ const prefix = this._getPrefix(level);
1298
+ const context$1 = this._getContext();
1299
+ const colorFn = TextColorMap[level];
1300
+ let result = "";
1301
+ for (let i = 0; i < strings.length; i++) {
1302
+ result += strings[i];
1303
+ if (i < values.length) result += (0, util.inspect)(values[i], {
1304
+ colors: require_constants.COMMANDKIT_IS_DEV,
1305
+ depth: 2
1306
+ });
1307
+ }
1308
+ if (context$1) this.logger.log(`${prefix}\n${context$1} ${require_colors.colors_default.dim(BoxChars.corner)}`, colorFn(result));
1309
+ else this.logger.log(`${prefix} ${require_colors.colors_default.dim(BoxChars.corner)}`, colorFn(result));
1301
1310
  }
1302
- /**
1303
- * Logs an error message.
1304
- * @param args The message arguments to log.
1305
- */
1306
- error(...args) {
1307
- this._log(LogLevel.ERROR, ...args);
1311
+ debug(messageOrStrings, ...values) {
1312
+ if (this._isTemplateStringsArray(messageOrStrings)) this._logTemplate(LogLevel.DEBUG, messageOrStrings, ...values);
1313
+ else this._log(LogLevel.DEBUG, messageOrStrings);
1308
1314
  }
1309
- /**
1310
- * Logs a default message.
1311
- * @param args The message arguments to log.
1312
- */
1313
- log(...args) {
1314
- this._log(LogLevel.DEFAULT, ...args);
1315
+ error(messageOrStrings, ...values) {
1316
+ if (this._isTemplateStringsArray(messageOrStrings)) this._logTemplate(LogLevel.ERROR, messageOrStrings, ...values);
1317
+ else this._log(LogLevel.ERROR, messageOrStrings);
1315
1318
  }
1316
- /**
1317
- * Logs an info message.
1318
- * @param args The message arguments to log.
1319
- */
1320
- info(...args) {
1321
- this._log(LogLevel.INFO, ...args);
1319
+ log(messageOrStrings, ...values) {
1320
+ if (this._isTemplateStringsArray(messageOrStrings)) this._logTemplate(LogLevel.DEFAULT, messageOrStrings, ...values);
1321
+ else this._log(LogLevel.DEFAULT, messageOrStrings);
1322
1322
  }
1323
- /**
1324
- * Logs a warning message.
1325
- * @param args The message arguments to log.
1326
- */
1327
- warn(...args) {
1328
- this._log(LogLevel.WARN, ...args);
1323
+ info(messageOrStrings, ...values) {
1324
+ if (this._isTemplateStringsArray(messageOrStrings)) this._logTemplate(LogLevel.INFO, messageOrStrings, ...values);
1325
+ else this._log(LogLevel.INFO, messageOrStrings);
1326
+ }
1327
+ warn(messageOrStrings, ...values) {
1328
+ if (this._isTemplateStringsArray(messageOrStrings)) this._logTemplate(LogLevel.WARN, messageOrStrings, ...values);
1329
+ else this._log(LogLevel.WARN, messageOrStrings);
1330
+ }
1331
+ _isTemplateStringsArray(value) {
1332
+ return Array.isArray(value) && "raw" in value && Array.isArray(value.raw);
1329
1333
  }
1330
1334
  };
1331
1335
 
@@ -1349,8 +1353,8 @@ function createLogger(options) {
1349
1353
  const impl = { configure(options$1) {
1350
1354
  opt = options$1;
1351
1355
  } };
1352
- for (const method of methods) impl[method] = (...args) => {
1353
- opt.provider[method](...args);
1356
+ for (const method of methods) impl[method] = (...message) => {
1357
+ opt.provider[method](...message);
1354
1358
  };
1355
1359
  return impl;
1356
1360
  }
@@ -1464,7 +1468,7 @@ var CommandKitPluginRuntime = class {
1464
1468
  result = await f(this, plugin);
1465
1469
  } catch (e) {
1466
1470
  if (require_error_codes.isErrorType(e, require_error_codes.CommandKitErrorCodes.PluginCaptureHandle)) return true;
1467
- Logger.error(`Plugin "${plugin.name}" failed`, (e === null || e === void 0 ? void 0 : e.stack) || e);
1471
+ Logger.error`Plugin "${plugin.name}" failed: ${(e === null || e === void 0 ? void 0 : e.stack) || e}`;
1468
1472
  }
1469
1473
  return result;
1470
1474
  }
@@ -2734,7 +2738,7 @@ var CommandRegistrar = class {
2734
2738
  })) });
2735
2739
  Logger.info(`✨ Refreshed ${data.length} global application (/) commands`);
2736
2740
  } catch (e) {
2737
- Logger.error("Failed to update global application (/) commands", e);
2741
+ Logger.error`Failed to update global application (/) commands: ${e}`;
2738
2742
  }
2739
2743
  }
2740
2744
  /**
@@ -2787,7 +2791,7 @@ var CommandRegistrar = class {
2787
2791
  }
2788
2792
  Logger.info(`✨ Refreshed ${count} guild application (/) commands`);
2789
2793
  } catch (e) {
2790
- Logger.error("Failed to update guild application (/) commands", e);
2794
+ Logger.error`Failed to update guild application (/) commands: ${e}`;
2791
2795
  }
2792
2796
  }
2793
2797
  };
@@ -2814,7 +2818,7 @@ async function beforeExecute(ctx) {
2814
2818
  });
2815
2819
  else await message.reply({ embeds: [embed$1] });
2816
2820
  } catch (error) {
2817
- Logger.error(`Could not send 'Server-only command' DM to user ${(interaction === null || interaction === void 0 ? void 0 : interaction.user.id) ?? (message === null || message === void 0 ? void 0 : message.author.id)} for command ${command.command.name}.`, error);
2821
+ Logger.error`Could not send 'Server-only command' DM to user ${(interaction === null || interaction === void 0 ? void 0 : interaction.user.id) ?? (message === null || message === void 0 ? void 0 : message.author.id)} for command ${command.command.name}: ${error}`;
2818
2822
  }
2819
2823
  return ctx.cancel();
2820
2824
  }
@@ -2864,7 +2868,7 @@ async function beforeExecute(ctx) {
2864
2868
  });
2865
2869
  else if (message && ((_message$channel2 = message.channel) === null || _message$channel2 === void 0 ? void 0 : _message$channel2.isSendable())) await message.reply({ embeds: [embed] });
2866
2870
  } catch (error) {
2867
- Logger.error(`Could not send 'Not enough permissions' reply to user ${(interaction === null || interaction === void 0 ? void 0 : interaction.user.id) ?? (message === null || message === void 0 ? void 0 : message.author.id)} for command ${command.command.name}.`, error);
2871
+ Logger.error`Could not send 'Not enough permissions' reply to user ${(interaction === null || interaction === void 0 ? void 0 : interaction.user.id) ?? (message === null || message === void 0 ? void 0 : message.author.id)} for command ${command.command.name}: ${error}`;
2868
2872
  }
2869
2873
  return ctx.cancel();
2870
2874
  }
@@ -3228,7 +3232,7 @@ var AppCommandHandler = class {
3228
3232
  data
3229
3233
  });
3230
3234
  } catch (error) {
3231
- Logger.error(`Failed to load middleware ${id}`, error);
3235
+ Logger.error`Failed to load middleware ${id}: ${error}`;
3232
3236
  }
3233
3237
  }
3234
3238
  /**
@@ -3306,7 +3310,7 @@ var AppCommandHandler = class {
3306
3310
  }
3307
3311
  });
3308
3312
  } catch (error) {
3309
- Logger.error(`Failed to load command ${command.name} (${id})`, error);
3313
+ Logger.error`Failed to load command ${command.name} (${id}): ${error}`;
3310
3314
  }
3311
3315
  }
3312
3316
  /**
@@ -3451,7 +3455,7 @@ var AppEventsHandler = class {
3451
3455
  Logger.debug(`Event propagation stopped for ${name}${namespace ? ` of namespace ${namespace}` : ""}`);
3452
3456
  break;
3453
3457
  }
3454
- Logger.error(`Error handling event ${name}${namespace ? ` of namespace ${namespace}` : ""}`, e);
3458
+ Logger.error`Error handling event ${name}${namespace ? ` of namespace ${namespace}` : ""}: ${e}`;
3455
3459
  }
3456
3460
  });
3457
3461
  };
@@ -3493,7 +3497,7 @@ var AppEventsHandler = class {
3493
3497
  Logger.debug(`Event propagation stopped for ${name}${namespace ? ` of namespace ${namespace}` : ""}`);
3494
3498
  broken = true;
3495
3499
  }
3496
- Logger.error(`Error handling event ${name}${namespace ? ` of namespace ${namespace}` : ""}`, e);
3500
+ Logger.error`Error handling event ${name}${namespace ? ` of namespace ${namespace}` : ""}: ${e}`;
3497
3501
  }
3498
3502
  });
3499
3503
  }
@@ -3729,7 +3733,7 @@ var AnalyticsEngine = class {
3729
3733
  var _identify, _ref;
3730
3734
  await ((_identify = (_ref = this.#provider).identify) === null || _identify === void 0 ? void 0 : _identify.call(_ref, this, event));
3731
3735
  } catch (error) {
3732
- Logger.error(`Error identifying with provider ${this.#provider.name}`, error);
3736
+ Logger.error`Error identifying with provider ${this.#provider.name}: ${error}`;
3733
3737
  }
3734
3738
  }
3735
3739
  /**
@@ -3744,7 +3748,7 @@ var AnalyticsEngine = class {
3744
3748
  if (await this.#doNotTrack(event)) return;
3745
3749
  await this.#provider.track(this, event);
3746
3750
  } catch (error) {
3747
- Logger.error(`Error tracking ${event.name} event with provider ${this.#provider.name}`, error);
3751
+ Logger.error`Error tracking ${event.name} event with provider ${this.#provider.name}: ${error}`;
3748
3752
  }
3749
3753
  }
3750
3754
  async #doNotTrack(event) {
@@ -3883,7 +3887,7 @@ var CommandKit = class CommandKit extends node_events.default {
3883
3887
  for (const hook of bootstrapHooks) try {
3884
3888
  await hook(this);
3885
3889
  } catch (e) {
3886
- Logger.error("Error while executing bootstrap hook: ", e);
3890
+ Logger.error`Error while executing bootstrap hook: ${e}`;
3887
3891
  } finally {
3888
3892
  bootstrapHooks.delete(hook);
3889
3893
  }
@@ -3893,7 +3897,7 @@ var CommandKit = class CommandKit extends node_events.default {
3893
3897
  for (const hook of onApplicationBootstrapHooks) try {
3894
3898
  await hook(this);
3895
3899
  } catch (e) {
3896
- Logger.error("Error while executing application bootstrap hook: ", e);
3900
+ Logger.error`Error while executing application bootstrap hook: ${e}`;
3897
3901
  } finally {
3898
3902
  onApplicationBootstrapHooks.delete(hook);
3899
3903
  }
@@ -4468,4 +4472,4 @@ Object.defineProperty(exports, 'useEnvironment', {
4468
4472
  return useEnvironment;
4469
4473
  }
4470
4474
  });
4471
- //# sourceMappingURL=commandkit-C0BuNRSN.js.map
4475
+ //# sourceMappingURL=commandkit-CYJ8d2gj.js.map