@pulsecron/pulse
Version:
The modern MongoDB-powered job scheduler library for Node.js
117 lines (116 loc) • 4.39 kB
TypeScript
/// <reference types="node" />
import { EventEmitter } from 'events';
import { AnyError, Collection, MongoClient, MongoClientOptions, Db as MongoDb } from 'mongodb';
import { Job } from '../job';
import { CancelMethod } from './cancel';
import { CloseMethod } from './close';
import { CountJobsMethod } from './count-jobs';
import { CreateMethod } from './create';
import { DatabaseMethod } from './database';
import { DbInitMethod } from './db-init';
import { DefaultConcurrencyMethod } from './default-concurrency';
import { DefaultLockLifetimeMethod } from './default-lock-lifetime';
import { DefaultLockLimitMethod } from './default-lock-limit';
import { DefineMethod } from './define';
import { DisableMethod } from './disable';
import { DrainMethod } from './drain';
import { EnableMethod } from './enable';
import { EveryMethod } from './every';
import { JobProcessingQueue } from './job-processing-queue';
import { JobsMethod } from './jobs';
import { LockLimitMethod } from './lock-limit';
import { MaxConcurrencyMethod } from './max-concurrency';
import { MongoMethod } from './mongo';
import { NameMethod } from './name';
import { NowMethod } from './now';
import { ProcessEveryMethod } from './process-every';
import { PurgeMethod } from './purge';
import { ResumeOnRestartMethod } from './resume-on-restart';
import { SaveJobMethod } from './save-job';
import { ScheduleMethod } from './schedule';
import { SortMethod } from './sort';
import { StartMethod } from './start';
import { StopMethod } from './stop';
export type PulseOnEventType = 'ready' | 'start' | 'success' | 'fail' | 'complete' | 'cancel' | 'error';
export interface PulseConfig {
name?: string;
processEvery?: string;
maxConcurrency?: number;
defaultConcurrency?: number;
lockLimit?: number;
defaultLockLimit?: number;
defaultLockLifetime?: number;
sort?: any;
mongo?: MongoDb;
db?: {
address: string;
collection?: string;
options?: MongoClientOptions;
};
disableAutoIndex?: boolean;
resumeOnRestart?: boolean;
}
declare class Pulse extends EventEmitter {
private _lazyBindings;
_defaultConcurrency: any;
_defaultLockLifetime: any;
_defaultLockLimit: any;
_definitions: any;
_findAndLockNextJob: (this: Pulse, jobName: string, definition: any) => Promise<Job<import("../job").JobAttributesData> | undefined>;
_indices: any;
_disableAutoIndex: boolean;
_resumeOnRestart: boolean;
_isLockingOnTheFly: boolean;
_isJobQueueFilling: Map<string, boolean>;
_jobQueue: JobProcessingQueue;
_jobsToLock: Job[];
_lockedJobs: Job[];
_runningJobs: Job[];
_lockLimit: any;
_maxConcurrency: any;
_mongoUseUnifiedTopology?: boolean;
_name: any;
_processEvery: number;
_ready: Promise<unknown>;
_sort: any;
_db: MongoClient;
_mdb: MongoDb;
_collection: Collection;
_nextScanAt: any;
_processInterval: any;
_readyAt: Date;
constructor(config?: PulseConfig, cb?: (error: AnyError | undefined, collection: Collection<any> | null) => void);
get define(): DefineMethod;
get every(): EveryMethod;
get processEvery(): ProcessEveryMethod;
get cancel(): CancelMethod;
get close(): CloseMethod;
get create(): CreateMethod;
get dbInit(): DbInitMethod;
get defaultConcurrency(): DefaultConcurrencyMethod;
get defaultLockLifetime(): DefaultLockLifetimeMethod;
get defaultLockLimit(): DefaultLockLimitMethod;
get disable(): DisableMethod;
get enable(): EnableMethod;
get jobs(): JobsMethod;
get countJobs(): CountJobsMethod;
get lockLimit(): LockLimitMethod;
get maxConcurrency(): MaxConcurrencyMethod;
get name(): NameMethod;
get now(): NowMethod;
get purge(): PurgeMethod;
get saveJob(): SaveJobMethod;
get schedule(): ScheduleMethod;
get sort(): SortMethod;
get start(): StartMethod;
get stop(): StopMethod;
get drain(): DrainMethod;
get mongo(): MongoMethod;
get database(): DatabaseMethod;
get resumeOnRestart(): ResumeOnRestartMethod;
get getJobsRepo(): (this: Pulse, query?: {}, sort?: {}, limit?: number, skip?: number) => Promise<import("mongodb").WithId<import("bson").Document>[]>;
on(event: PulseOnEventType, listener: (...arg: any[]) => void): this;
private init;
private bindMethod;
}
export { Pulse };