Command bus implementation
npm install @ddd-master/command-bus

The @ddd-master/command-bus package is a TypeScript library that provides an implementation of the command bus pattern for Domain-Driven Design (DDD) applications. It allows you to execute commands and perform actions in a centralized and decoupled manner.
You can install the @ddd-master/command-bus package using npm:
``bash`
npm install @ddd-master/command-bus
To use the @ddd-master/command-bus package, you need to define your commands and command handlers.
Commands represent actions or requests for changes in the system. You can define a command by implementing the ICommand interface. For example:
`typescript
export interface ICreateUserCommand extends ICommand {
email: string;
password: string;
}
export class CreateUserCommand implements ICreateUserCommand {
public readonly email: string;
public readonly password: string;
public constructor({ email, password }: ICreateUserCommand) {
this.email = email;
this.password = password;
}
}
`
Command handlers are responsible for executing commands and performing the necessary actions. You can implement the ICommandHandler interface to define your command handlers. For example:
`typescript
export class CreateUserCommandHandler implements ICommandHandler
private readonly userRepository: UserRepository;
public constructor({ userRepository }: Dependencies) {
this.userRepository = userRepository;
}
public handle(command: ICommand): CreateUserCommandHandlerResult {
const { email, password } = command as ICreateUserCommand;
const createdUser: User = { email, password };
this.userRepository.save({ user: createdUser });
return { email, password };
}
}
`
Once you have your command handlers, you need to register them with the command bus. For example:
`typescript`
const commandBus = new CommandBus();
const createUserCommandHandler = new CreateUserCommandHandler();
commandBus.register(CreateUserCommand, createUserCommandHandler);
To execute a command, you can use the execute method of the command bus. For example:
`typescript
const result = commandBus.execute
new CreateUserCommand({ email: 'test@gmail.com', password: '123456' }),
);
const { email, password } = result;
console.log(email, password);
`execute
The method returns the result of the command handler. You can access the result and process it accordingly.
Contributions to the @ddd-master/command-bus package are welcome! Feel free to open issues or submit pull requests on the GitHub repository. Please follow the code of conduct when contributing.
The @ddd-master/command-bus` package is open-source software licensed under the MIT License.