41 lines
No EOL
1.1 KiB
TypeScript
41 lines
No EOL
1.1 KiB
TypeScript
import {HelloWorldCommand} from "./HelloWorldCommand";
|
|
import {Command, CommandUnion} from "./Command";
|
|
import {GroupCommand} from "./Groups";
|
|
import {PlaydatesCommand} from "./Playdates";
|
|
|
|
const commands: Set<Command> = new Set<Command>([
|
|
new HelloWorldCommand(),
|
|
new GroupCommand(),
|
|
new PlaydatesCommand()
|
|
]);
|
|
|
|
export default class Commands {
|
|
private mappedCommands: Map<string, Command> = new Map<string, Command>();
|
|
|
|
constructor() {
|
|
this.mappedCommands = this.getMap();
|
|
}
|
|
|
|
public getCommand(commandName: string): CommandUnion|undefined {
|
|
if (!this.mappedCommands.has(commandName)) {
|
|
throw new Error(`Unknown command: ${commandName}`);
|
|
}
|
|
|
|
return this.mappedCommands.get(commandName);
|
|
}
|
|
|
|
public get allCommands(): Set<Command> {
|
|
return commands;
|
|
}
|
|
|
|
private getMap(): Map<string, Command>
|
|
{
|
|
const map = new Map<string, Command>();
|
|
for (const command of commands) {
|
|
const definition = command.definition()
|
|
map.set(definition.name, command);
|
|
}
|
|
|
|
return map;
|
|
}
|
|
} |