UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

49 lines (48 loc) 1.61 kB
import { EventEmitter } from 'events'; import type { Connection } from 'mongoose'; import type { RedisClientType } from 'redis'; import * as factory from '../factory'; interface IExecuteSettings { /** * MongoDBコネクション */ connection: Connection; /** * Redisクライアント */ redisClient?: RedisClientType; } type IOperationExecute<T> = (settings: IExecuteSettings) => Promise<T>; type INextFunction = (task: Pick<factory.task.ITask<factory.taskName>, 'id'>) => IOperationExecute<void>; interface IReadyTask { id: string; name?: factory.taskName; status: factory.taskStatus.Ready; expires?: Date; executionResult?: never; } interface IRunningTask { id: string; status: factory.taskStatus.Running; name?: never; expires?: never; executionResult?: never; } interface IExecutedTask { id: string; status: factory.taskStatus; executionResult: factory.task.IExecutionResult; name?: never; expires?: never; } type IChangedTask = IReadyTask | IRunningTask | IExecutedTask; type IOnTaskStatusChangedListener = (task: IChangedTask, next?: INextFunction) => void; /** * タスクイベントエミッター */ declare class TaskEventEmitter extends EventEmitter { onTaskStatusChanged(listener: IOnTaskStatusChangedListener): void; emitTaskStatusChanged(task: IChangedTask, next?: INextFunction): void; } declare const taskEventEmitter: TaskEventEmitter; export { IChangedTask, IReadyTask, IRunningTask, IExecutedTask, IExecuteSettings, INextFunction, IOnTaskStatusChangedListener, taskEventEmitter };