Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/code-quality.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
run: pnpm dlx turbo check-types

- name: Run CommandKit Command Handler Tests
run: pnpm test:commandkit
run: pnpm run test

- name: Check Generated API Docs
run: pnpm docgen:check
Expand Down
2 changes: 1 addition & 1 deletion apps/test-bot/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
compiled-commandkit.config.mjs
*.db*
.workflow-data/
.swc/
.swc/
2 changes: 1 addition & 1 deletion apps/test-bot/commandkit-env.d.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
/// <reference path="node_modules/commandkit-types/index.d.ts" />
/// <reference path="./.commandkit/types" />
2 changes: 0 additions & 2 deletions apps/test-bot/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,9 @@
"skipLibCheck": true,
"skipDefaultLibCheck": true,
"allowJs": true,
"alwaysStrict": false,
"checkJs": false,
"strict": true,
"strictNullChecks": true,
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';

## AppCommandHandler

<GenerationInfo sourceFile="packages/commandkit/src/app/handlers/AppCommandHandler.ts" sourceLine="201" packageName="commandkit" />
<GenerationInfo sourceFile="packages/commandkit/src/app/handlers/AppCommandHandler.ts" sourceLine="219" packageName="commandkit" />

Handles application commands for CommandKit, including loading, registration, and execution.
Manages both slash commands and message commands with middleware support.
Expand All @@ -34,7 +34,7 @@ class AppCommandHandler {
registerCommandHandler() => void;
prepareCommandRun(source: Interaction | Message, cmdName?: string) => Promise<PreparedAppCommandExecution | null>;
resolveMessageCommandName(name: string) => string;
reloadCommands() => Promise<void>;
reloadCommands(path?: string, changeType?: RouterFileChangeType) => Promise<void>;
addExternalMiddleware(data: Middleware[]) => Promise<void>;
addExternalCommands(data: Command[]) => Promise<void>;
registerExternalLoadedMiddleware(data: LoadedMiddleware[]) => Promise<void>;
Expand Down Expand Up @@ -108,7 +108,7 @@ Prepares a command for execution by resolving the command and its middleware.

### reloadCommands

<MemberInfo kind="method" type={`() => Promise&#60;void&#62;`} />
<MemberInfo kind="method" type={`(path?: string, changeType?: <a href='/docs/api-reference/commandkit/types/router-file-change-type#routerfilechangetype'>RouterFileChangeType</a>) => Promise&#60;void&#62;`} />

Reloads all commands and middleware from scratch.
### addExternalMiddleware
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,15 @@ import MemberDescription from '@site/src/components/MemberDescription';

## AppEventsHandler

<GenerationInfo sourceFile="packages/commandkit/src/app/handlers/AppEventsHandler.ts" sourceLine="46" packageName="commandkit" />
<GenerationInfo sourceFile="packages/commandkit/src/app/handlers/AppEventsHandler.ts" sourceLine="47" packageName="commandkit" />

Handles Discord.js events and CommandKit custom events with support for namespacing and middleware.

```ts title="Signature"
class AppEventsHandler {
constructor(commandkit: CommandKit)
getEvents() => AppEventsHandlerLoadedData[];
reloadEvents() => ;
reloadEvents(path?: string, changeType?: EventsRouterFileChangeType) => ;
loadEvents() => ;
unregisterAll() => ;
registerAllClientEvents() => ;
Expand All @@ -43,7 +43,7 @@ Creates a new AppEventsHandler instance.
Gets information about all loaded events.
### reloadEvents

<MemberInfo kind="method" type={`() => `} />
<MemberInfo kind="method" type={`(path?: string, changeType?: <a href='/docs/api-reference/commandkit/types/events-router-file-change-type#eventsrouterfilechangetype'>EventsRouterFileChangeType</a>) => `} />

Reloads all events by unregistering existing ones and loading them again.
### loadEvents
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';

## CommandKit

<GenerationInfo sourceFile="packages/commandkit/src/commandkit.ts" sourceLine="96" packageName="commandkit" />
<GenerationInfo sourceFile="packages/commandkit/src/commandkit.ts" sourceLine="112" packageName="commandkit" />

The commandkit class that serves as the main entry point for the CommandKit framework.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';

## CommandsRouter

<GenerationInfo sourceFile="packages/commandkit/src/app/router/CommandsRouter.ts" sourceLine="123" packageName="commandkit" />
<GenerationInfo sourceFile="packages/commandkit/src/app/router/CommandsRouter.ts" sourceLine="132" packageName="commandkit" />

Handles discovery and parsing of command and middleware files in the filesystem.

Expand All @@ -24,6 +24,7 @@ class CommandsRouter {
isValidPath() => boolean;
clear() => void;
scan() => Promise<ParsedCommandData>;
scanIncremental(changedPath: string, _changeType: RouterFileChangeType = 'change') => Promise<ParsedCommandData>;
getData() => {
commands: Collection<string, Command>;
middlewares: Collection<string, Middleware>;
Expand Down Expand Up @@ -67,6 +68,12 @@ Clears all loaded commands, middleware, and compiled tree data.
<MemberInfo kind="method" type={`() => Promise&#60;<a href='/docs/api-reference/commandkit/interfaces/parsed-command-data#parsedcommanddata'>ParsedCommandData</a>&#62;`} />

Scans the filesystem for commands and middleware files.
### scanIncremental

<MemberInfo kind="method" type={`(changedPath: string, _changeType: <a href='/docs/api-reference/commandkit/types/router-file-change-type#routerfilechangetype'>RouterFileChangeType</a> = 'change') => Promise&#60;<a href='/docs/api-reference/commandkit/interfaces/parsed-command-data#parsedcommanddata'>ParsedCommandData</a>&#62;`} />

Incrementally updates only the top-level command subtree affected by a file change.
Falls back to a full scan when the changed path cannot be safely scoped.
### getData

<MemberInfo kind="method" type={`() => { commands: Collection&#60;string, <a href='/docs/api-reference/commandkit/interfaces/command#command'>Command</a>&#62;; middlewares: Collection&#60;string, <a href='/docs/api-reference/commandkit/interfaces/middleware#middleware'>Middleware</a>&#62;; treeNodes: Collection&#60;string, <a href='/docs/api-reference/commandkit/interfaces/command-tree-node#commandtreenode'>CommandTreeNode</a>&#62;; compiledRoutes: Collection&#60;string, <a href='/docs/api-reference/commandkit/interfaces/compiled-command-route#compiledcommandroute'>CompiledCommandRoute</a>&#62;; diagnostics: <a href='/docs/api-reference/commandkit/interfaces/command-route-diagnostic#commandroutediagnostic'>CommandRouteDiagnostic</a>[]; }`} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';

## EventsRouter

<GenerationInfo sourceFile="packages/commandkit/src/app/router/EventsRouter.ts" sourceLine="37" packageName="commandkit" />
<GenerationInfo sourceFile="packages/commandkit/src/app/router/EventsRouter.ts" sourceLine="43" packageName="commandkit" />

Router for discovering and managing event handler files in a directory structure.
Events are represented by directories, and handlers are files within those directories.
Expand All @@ -26,8 +26,10 @@ class EventsRouter {
entrypoints: string[]
isValidPath() => ;
clear() => ;
populate(events: EventsTree) => ;
reload() => ;
scan() => Promise<EventsTree>;
scanIncremental(changedPath: string, _changeType: EventsRouterFileChangeType = 'change') => Promise<EventsTree>;
toJSON() => EventsTree;
}
```
Expand Down Expand Up @@ -64,6 +66,11 @@ Checks if the entrypoint path is valid
<MemberInfo kind="method" type={`() => `} />

Clear all parsed events
### populate

<MemberInfo kind="method" type={`(events: <a href='/docs/api-reference/commandkit/types/events-tree#eventstree'>EventsTree</a>) => `} />

Populates router state from pre-resolved event metadata.
### reload

<MemberInfo kind="method" type={`() => `} />
Expand All @@ -74,6 +81,11 @@ Reload and re-scan the entrypoint directory for events
<MemberInfo kind="method" type={`() => Promise&#60;<a href='/docs/api-reference/commandkit/types/events-tree#eventstree'>EventsTree</a>&#62;`} />

Scan the entrypoint directory for events and their handlers
### scanIncremental

<MemberInfo kind="method" type={`(changedPath: string, _changeType: <a href='/docs/api-reference/commandkit/types/events-router-file-change-type#eventsrouterfilechangetype'>EventsRouterFileChangeType</a> = 'change') => Promise&#60;<a href='/docs/api-reference/commandkit/types/events-tree#eventstree'>EventsTree</a>&#62;`} />

Incrementally rescans only the event subtree impacted by a changed path.
### toJSON

<MemberInfo kind="method" type={`() => <a href='/docs/api-reference/commandkit/types/events-tree#eventstree'>EventsTree</a>`} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';

## bootstrapCommandkitCLI

<GenerationInfo sourceFile="packages/commandkit/src/cli/init.ts" sourceLine="19" packageName="commandkit" />
<GenerationInfo sourceFile="packages/commandkit/src/cli/init.ts" sourceLine="24" packageName="commandkit" />

Creates a command line interface for CommandKit.

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
title: "CreateRouterTreeArtifact"
isDefaultIndex: false
generated: true
---

import MemberInfo from '@site/src/components/MemberInfo';
import GenerationInfo from '@site/src/components/GenerationInfo';
import MemberDescription from '@site/src/components/MemberDescription';

<!-- This file was generated from the CommandKit source. Do not modify. Instead, re-run the "docgen" script -->


## createRouterTreeArtifact

<GenerationInfo sourceFile="packages/commandkit/src/app/router/TreeArtifact.ts" sourceLine="17" packageName="commandkit" />



```ts title="Signature"
function createRouterTreeArtifact(options: {
outputRoot: string;
commandkitVersion: string;
commands: ParsedCommandData;
events: EventsTree;
}): RouterTreeArtifact
```
Parameters

### options

<MemberInfo kind="parameter" type={`{ outputRoot: string; commandkitVersion: string; commands: <a href='/docs/api-reference/commandkit/interfaces/parsed-command-data#parsedcommanddata'>ParsedCommandData</a>; events: <a href='/docs/api-reference/commandkit/types/events-tree#eventstree'>EventsTree</a>; }`} />

Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
title: "GetTypesFilePath"
isDefaultIndex: false
generated: true
---

import MemberInfo from '@site/src/components/MemberInfo';
import GenerationInfo from '@site/src/components/GenerationInfo';
import MemberDescription from '@site/src/components/MemberDescription';

<!-- This file was generated from the CommandKit source. Do not modify. Instead, re-run the "docgen" script -->


## getTypesFilePath

<GenerationInfo sourceFile="packages/commandkit/src/utils/types-package.ts" sourceLine="10" packageName="commandkit" />



```ts title="Signature"
function getTypesFilePath(): void
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
title: "HydrateRouterTreeArtifact"
isDefaultIndex: false
generated: true
---

import MemberInfo from '@site/src/components/MemberInfo';
import GenerationInfo from '@site/src/components/GenerationInfo';
import MemberDescription from '@site/src/components/MemberDescription';

<!-- This file was generated from the CommandKit source. Do not modify. Instead, re-run the "docgen" script -->


## hydrateRouterTreeArtifact

<GenerationInfo sourceFile="packages/commandkit/src/app/router/TreeArtifact.ts" sourceLine="64" packageName="commandkit" />



```ts title="Signature"
function hydrateRouterTreeArtifact(artifact: RouterTreeArtifact, outputRoot: string): {
commands: ParsedCommandData;
events: EventsTree;
}
```
Parameters

### artifact

<MemberInfo kind="parameter" type={`<a href='/docs/api-reference/commandkit/interfaces/router-tree-artifact#routertreeartifact'>RouterTreeArtifact</a>`} />

### outputRoot

<MemberInfo kind="parameter" type={`string`} />

Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';

## onApplicationBootstrap

<GenerationInfo sourceFile="packages/commandkit/src/commandkit.ts" sourceLine="87" packageName="commandkit" />
<GenerationInfo sourceFile="packages/commandkit/src/commandkit.ts" sourceLine="103" packageName="commandkit" />

Registers a bootstrap hook that will be called when the CommandKit instance is created.
This is useful for plugins that need to run some code after the CommandKit instance is fully initialized.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';

## onBootstrap

<GenerationInfo sourceFile="packages/commandkit/src/commandkit.ts" sourceLine="71" packageName="commandkit" />
<GenerationInfo sourceFile="packages/commandkit/src/commandkit.ts" sourceLine="87" packageName="commandkit" />

Registers a bootstrap hook that will be called when the CommandKit instance is created.
This is useful for plugins that need to run some code after the CommandKit instance is fully initialized.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';

## registerDevHooks

<GenerationInfo sourceFile="packages/commandkit/src/utils/dev-hooks.ts" sourceLine="51" packageName="commandkit" />
<GenerationInfo sourceFile="packages/commandkit/src/utils/dev-hooks.ts" sourceLine="63" packageName="commandkit" />

Registers development hooks for CommandKit to handle HMR (Hot Module Replacement) events.

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
title: "ValidateRouterTreeArtifact"
isDefaultIndex: false
generated: true
---

import MemberInfo from '@site/src/components/MemberInfo';
import GenerationInfo from '@site/src/components/GenerationInfo';
import MemberDescription from '@site/src/components/MemberDescription';

<!-- This file was generated from the CommandKit source. Do not modify. Instead, re-run the "docgen" script -->


## validateRouterTreeArtifact

<GenerationInfo sourceFile="packages/commandkit/src/app/router/TreeArtifact.ts" sourceLine="34" packageName="commandkit" />



```ts title="Signature"
function validateRouterTreeArtifact(input: unknown, runtimeVersion: string): input is RouterTreeArtifact
```
Parameters

### input

<MemberInfo kind="parameter" type={`unknown`} />

### runtimeVersion

<MemberInfo kind="parameter" type={`string`} />

Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';

## AppCommandNative

<GenerationInfo sourceFile="packages/commandkit/src/app/handlers/AppCommandHandler.ts" sourceLine="61" packageName="commandkit" />
<GenerationInfo sourceFile="packages/commandkit/src/app/handlers/AppCommandHandler.ts" sourceLine="62" packageName="commandkit" />

Represents a native command structure used in CommandKit.
This structure includes the command definition and various handlers for different interaction types.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';

## AppEventsHandlerLoadedData

<GenerationInfo sourceFile="packages/commandkit/src/app/handlers/AppEventsHandler.ts" sourceLine="35" packageName="commandkit" />
<GenerationInfo sourceFile="packages/commandkit/src/app/handlers/AppEventsHandler.ts" sourceLine="36" packageName="commandkit" />

Data structure representing loaded event information for external consumption.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';

## CommandKitCompilerOptions

<GenerationInfo sourceFile="packages/commandkit/src/config/types.ts" sourceLine="5" packageName="commandkit" />
<GenerationInfo sourceFile="packages/commandkit/src/config/types.ts" sourceLine="10" packageName="commandkit" />



Expand Down
Loading
Loading