27 lines
1.5 KiB
TypeScript
27 lines
1.5 KiB
TypeScript
import { RecurrenceRule, RecurrenceSpecDateRange, RecurrenceSpecObjLit } from 'node-schedule';
|
|
import { EntityDict, OperationResult } from './Entity';
|
|
import { EntityDict as BaseEntityDict } from '../base-app-domain';
|
|
import { AsyncContext } from '../store/AsyncRowStore';
|
|
import { Watcher } from './Watcher';
|
|
import { Namespace } from 'socket.io';
|
|
type FreeRoutineFn<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = (context: Cxt, env: {
|
|
socket: Namespace;
|
|
contextBuilder: () => Promise<Cxt>;
|
|
}) => Promise<OperationResult<ED>>;
|
|
type FreeTimerFn<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = (context: Cxt) => Promise<OperationResult<ED>>;
|
|
export type FreeRoutine<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = {
|
|
name: string;
|
|
routine: FreeRoutineFn<ED, Cxt>;
|
|
};
|
|
export type FreeTimer<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = {
|
|
name: string;
|
|
cron: RecurrenceRule | RecurrenceSpecDateRange | RecurrenceSpecObjLit | Date | string | number;
|
|
timer: FreeTimerFn<ED, Cxt>;
|
|
singleton?: true;
|
|
};
|
|
export type Routine<ED extends EntityDict & BaseEntityDict, T extends keyof ED, Cxt extends AsyncContext<ED>> = FreeRoutine<ED, Cxt> | Watcher<ED, T, Cxt>;
|
|
export type Timer<ED extends EntityDict & BaseEntityDict, T extends keyof ED, Cxt extends AsyncContext<ED>> = FreeTimer<ED, Cxt> | Watcher<ED, T, Cxt> & {
|
|
cron: RecurrenceRule | RecurrenceSpecDateRange | RecurrenceSpecObjLit | Date | string | number;
|
|
};
|
|
export {};
|