Skip to content

Commit 13041f9

Browse files
authored
feat: pregenerate commands
feat: pregenerate commands
1 parent 6b33078 commit 13041f9

104 files changed

Lines changed: 1651 additions & 242 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/code-quality.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ jobs:
3131
run: pnpm dlx turbo check-types
3232

3333
- name: Run CommandKit Command Handler Tests
34-
run: pnpm test:commandkit
34+
run: pnpm run test
3535

3636
- name: Check Generated API Docs
3737
run: pnpm docgen:check

apps/test-bot/.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
compiled-commandkit.config.mjs
44
*.db*
55
.workflow-data/
6-
.swc/
6+
.swc/

apps/test-bot/commandkit-env.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
/// <reference path="node_modules/commandkit-types/index.d.ts" />
1+
/// <reference path="./.commandkit/types" />

apps/test-bot/tsconfig.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,9 @@
1111
"skipLibCheck": true,
1212
"skipDefaultLibCheck": true,
1313
"allowJs": true,
14-
"alwaysStrict": false,
1514
"checkJs": false,
1615
"strict": true,
1716
"strictNullChecks": true,
18-
"baseUrl": ".",
1917
"paths": {
2018
"@/*": ["./src/*"]
2119
}

apps/website/docs/api-reference/commandkit/classes/app-command-handler.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
1313

1414
## AppCommandHandler
1515

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

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

109109
### reloadCommands
110110

111-
<MemberInfo kind="method" type={`() => Promise&#60;void&#62;`} />
111+
<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;`} />
112112

113113
Reloads all commands and middleware from scratch.
114114
### addExternalMiddleware

apps/website/docs/api-reference/commandkit/classes/app-events-handler.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@ import MemberDescription from '@site/src/components/MemberDescription';
1313

1414
## AppEventsHandler
1515

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

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

2020
```ts title="Signature"
2121
class AppEventsHandler {
2222
constructor(commandkit: CommandKit)
2323
getEvents() => AppEventsHandlerLoadedData[];
24-
reloadEvents() => ;
24+
reloadEvents(path?: string, changeType?: EventsRouterFileChangeType) => ;
2525
loadEvents() => ;
2626
unregisterAll() => ;
2727
registerAllClientEvents() => ;
@@ -43,7 +43,7 @@ Creates a new AppEventsHandler instance.
4343
Gets information about all loaded events.
4444
### reloadEvents
4545

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

4848
Reloads all events by unregistering existing ones and loading them again.
4949
### loadEvents

apps/website/docs/api-reference/commandkit/classes/command-kit.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
1313

1414
## CommandKit
1515

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

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

apps/website/docs/api-reference/commandkit/classes/commands-router.mdx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
1313

1414
## CommandsRouter
1515

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

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

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

6970
Scans the filesystem for commands and middleware files.
71+
### scanIncremental
72+
73+
<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;`} />
74+
75+
Incrementally updates only the top-level command subtree affected by a file change.
76+
Falls back to a full scan when the changed path cannot be safely scoped.
7077
### getData
7178

7279
<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>[]; }`} />

apps/website/docs/api-reference/commandkit/classes/events-router.mdx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
1313

1414
## EventsRouter
1515

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

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

6668
Clear all parsed events
69+
### populate
70+
71+
<MemberInfo kind="method" type={`(events: <a href='/docs/api-reference/commandkit/types/events-tree#eventstree'>EventsTree</a>) => `} />
72+
73+
Populates router state from pre-resolved event metadata.
6774
### reload
6875

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

7683
Scan the entrypoint directory for events and their handlers
84+
### scanIncremental
85+
86+
<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;`} />
87+
88+
Incrementally rescans only the event subtree impacted by a changed path.
7789
### toJSON
7890

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

apps/website/docs/api-reference/commandkit/functions/bootstrap-commandkit-cli.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
1313

1414
## bootstrapCommandkitCLI
1515

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

1818
Creates a command line interface for CommandKit.
1919

0 commit comments

Comments
 (0)