mirror of
https://github.com/sern-handler/handler
synced 2026-06-06 01:16:55 +00:00
cron works now, poc
This commit is contained in:
@@ -71,7 +71,7 @@ async function composeRoot(
|
||||
__add_container('@sern/logger', new __Services.DefaultLogging());
|
||||
}
|
||||
__add_container('@sern/errors', new __Services.DefaultErrorHandling());
|
||||
__add_container('@sern/cron', {})
|
||||
__add_container('@sern/cron', new __Services.Cron())
|
||||
__add_container('@sern/modules', new Map())
|
||||
__add_container('@sern/emitter', new EventEmitter())
|
||||
//Build the container based on the callback provided by the user
|
||||
@@ -98,7 +98,7 @@ export async function makeDependencies (conf: ValidDependencyConfig) {
|
||||
__add_container('@sern/logger', new __Services.DefaultLogging);
|
||||
}
|
||||
__add_container('@sern/errors', new __Services.DefaultErrorHandling());
|
||||
__add_container('@sern/cron', {})
|
||||
__add_container('@sern/cron', new __Services.Cron())
|
||||
__add_container('@sern/modules', new Map())
|
||||
__add_container('@sern/emitter', new EventEmitter())
|
||||
await useContainerRaw().ready();
|
||||
|
||||
@@ -52,14 +52,17 @@ export class Cron extends EventEmitter {
|
||||
modules: Map<string, CronEventCommand> = new Map();
|
||||
private sanityCheck(eventName: string | symbol) : asserts eventName is string {
|
||||
if(typeof eventName === 'symbol') throw Error("Cron cannot add symbol based listener")
|
||||
if(!cron.validate(eventName)) {
|
||||
throw Error("Invalid cron expression while adding")
|
||||
}
|
||||
|
||||
}
|
||||
addCronModule(module: Module) {
|
||||
if(module.type !== EventType.Cron) {
|
||||
throw Error("Can only add cron modules");
|
||||
}
|
||||
|
||||
//@ts-ignore
|
||||
if(!cron.validate(module.pattern)) {
|
||||
throw Error("Invalid cron expression while adding")
|
||||
}
|
||||
this.modules.set(module.name!, module as CronEventCommand);
|
||||
}
|
||||
addListener(eventName: string | symbol, listener: AnyFunction): this {
|
||||
|
||||
@@ -55,7 +55,7 @@ const createResult = createResultResolver<
|
||||
* @param module
|
||||
* @param source
|
||||
*/
|
||||
export function eventDispatcher(module: Module, source: unknown) {
|
||||
export function eventDispatcher(module: Module, source: unknown) {
|
||||
assert.ok(source instanceof EventEmitter, `${source} is not an EventEmitter`);
|
||||
|
||||
const execute: OperatorFunction<unknown[], unknown> =
|
||||
|
||||
@@ -15,9 +15,12 @@ const intoDispatcher = (deps: UnpackedDependencies) =>
|
||||
return eventDispatcher(module, deps['@sern/client']);
|
||||
case EventType.External:
|
||||
return eventDispatcher(module, deps[module.emitter]);
|
||||
case EventType.Cron:
|
||||
//@ts-ignore TODO
|
||||
return eventDispatcher(module, deps['@sern/cron'])
|
||||
case EventType.Cron: {
|
||||
//@ts-ignore
|
||||
const cron = deps['@sern/cron'];
|
||||
cron.addCronModule(module);
|
||||
return eventDispatcher(module, cron)
|
||||
}
|
||||
default:
|
||||
throw Error(SernError.InvalidModuleType + ' while creating event handler');
|
||||
}
|
||||
|
||||
@@ -50,9 +50,9 @@ export interface ExternalEventCommand extends Module {
|
||||
execute(...args: unknown[]): Awaitable<unknown>;
|
||||
}
|
||||
export interface CronEventCommand extends Module {
|
||||
type: EventType.Cron;
|
||||
name?: string;
|
||||
pattern: string;
|
||||
type: EventType.Cron;
|
||||
execute(...args: unknown[]): Awaitable<unknown>;
|
||||
}
|
||||
|
||||
@@ -168,8 +168,7 @@ export interface EventModuleDefs {
|
||||
[EventType.Sern]: SernEventCommand;
|
||||
[EventType.Discord]: DiscordEventCommand;
|
||||
[EventType.External]: ExternalEventCommand;
|
||||
//TODO
|
||||
[EventType.Cron]: ExternalEventCommand;
|
||||
[EventType.Cron]: CronEventCommand;
|
||||
}
|
||||
|
||||
export interface SernAutocompleteData
|
||||
|
||||
Reference in New Issue
Block a user