@cachemap/controller
Version:
The Cachemap controller module.
49 lines (37 loc) • 1.67 kB
text/typescript
import { ArgsError, constants } from '@cachemap/utils';
import { EventEmitter } from 'eventemitter3';
import { validateArgs } from '../helpers/validateArgs.ts';
import { type EventData } from '../types.ts';
export class Controller extends EventEmitter {
public clearCaches({ name, type }: EventData = {}): void {
if (!validateArgs({ name, type })) {
throw new ArgsError("@cachemap/controller expected event data to include 'name' or 'type' props.");
}
this.emit(constants.CLEAR, { name, type });
}
public startBackups({ name, type }: EventData = {}): void {
if (!validateArgs({ name, type })) {
throw new ArgsError("@cachemap/controller expected event data to include 'name' or 'type' props.");
}
this.emit(constants.START_BACKUP, { name, type });
}
public startReapers({ name, type }: EventData = {}): void {
if (!validateArgs({ name, type })) {
throw new ArgsError("@cachemap/controller expected event data to include 'name' or 'type' props.");
}
this.emit(constants.START_REAPER, { name, type });
}
public stopBackups({ name, type }: EventData = {}): void {
if (!validateArgs({ name, type })) {
throw new ArgsError("@cachemap/controller expected event data to include 'name' or 'type' props.");
}
this.emit(constants.STOP_BACKUP, { name, type });
}
public stopReapers({ name, type }: EventData = {}): void {
if (!validateArgs({ name, type })) {
throw new ArgsError("@cachemap/controller expected event data to include 'name' or 'type' props.");
}
this.emit(constants.STOP_REAPER, { name, type });
}
}
export const instance = new Controller();