Feature/run cmd (#23822)

This commit is contained in:
GuanMu 2025-08-12 23:47:50 +08:00 • committed by GitHub
commit 973a390298
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 267 additions and 6 deletions

View file

@ -0,0 +1,26 @@
export type CommandHandler = (args?: Record<string, any>) => void | Promise<void>
const handlers = new Map<string, CommandHandler>()
export const registerCommand = (name: string, handler: CommandHandler) => {
handlers.set(name, handler)
}
export const unregisterCommand = (name: string) => {
handlers.delete(name)
}
export const executeCommand = async (name: string, args?: Record<string, any>) => {
const handler = handlers.get(name)
if (!handler)
return
await handler(args)
}
export const registerCommands = (map: Record<string, CommandHandler>) => {
Object.entries(map).forEach(([name, handler]) => registerCommand(name, handler))
}
export const unregisterCommands = (names: string[]) => {
names.forEach(unregisterCommand)
}