UNPKG

@pulsecron/pulse

Version:

The modern MongoDB-powered job scheduler library for Node.js

117 lines (116 loc) 4.39 kB
/// <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 };