faktory-worker
Version:
A faktory worker framework for node apps
57 lines (56 loc) • 1.6 kB
TypeScript
import { Middleware as KoaMiddleware } from "koa-compose";
import { Client, ClientOptions } from "./client";
import { Worker, WorkerOptions } from "./worker";
import { Job, JobPayload, JobType } from "./job";
import { Mutation } from "./mutation";
/**
* @private
*/
export type JobFunctionContextWrapper = {
(...args: unknown[]): ContextProvider;
};
/**
* @private
*/
export type UnWrappedJobFunction = {
(...args: unknown[]): unknown;
};
/**
* @private
*/
export type JobFunction = JobFunctionContextWrapper | UnWrappedJobFunction;
export type ContextProvider = (ctx: MiddlewareContext) => unknown;
export interface MiddlewareContext {
job: JobPayload;
fn?: JobFunction;
}
export type Middleware = KoaMiddleware<MiddlewareContext>;
export type Registry = {
[jobtype: string]: JobFunction;
};
export interface FaktoryControl {
registry: Registry;
use(fn: Middleware): FaktoryControl;
middleware: Middleware[];
register(name: JobType, fn: JobFunction): FaktoryControl;
connect(options?: ClientOptions): Promise<Client>;
work(options?: WorkerOptions): Promise<Worker>;
stop(): Promise<void>;
Worker: typeof Worker;
Client: typeof Client;
Job: typeof Job;
Mutation: typeof Mutation;
create: FaktoryControlCreator;
}
export type FaktoryControlCreator = {
(): FaktoryControl;
};
/**
* creates faktory singletons
*
* @module faktory
*/
export declare function create(): FaktoryControl;
export { Worker, WorkerOptions, Client, ClientOptions, Job, Mutation };
declare const singleton: FaktoryControl;
export default singleton;