// Definitions by: Taylor Schley import { EventEmitter } from 'node:events'; import { WorkerOptions, Worker } from 'node:worker_threads'; import { Timeout, Interval } from 'safe-timers'; export = Bree; type AsyncFunction = (...args: A) => Promise; declare class Bree extends EventEmitter { config: Bree.BreeConfigs; closeWorkerAfterMs: Map; workers: Map; timeouts: Map; intervals: Map; isSchedule: (value: any) => boolean; getWorkerMetadata: ( name: string, meta?: Record ) => Record; run: AsyncFunction<[name?: string], void>; start: AsyncFunction<[name?: string], void>; stop: AsyncFunction<[name?: string], void>; add: AsyncFunction< [ jobs: | string | (() => void) | Bree.JobOptions | Array void) | Bree.JobOptions> ], void >; remove: AsyncFunction<[name?: string], void>; removeSafeTimer: (type: string, name: string) => void; validateJob: AsyncFunction< [ job: string | (() => void) | Bree.JobOptions, i: number, names: string[], config: Bree.BreeOptions ], void >; getName: (job: string | Record | (() => void)) => string; getHumanToMs: (_value: string) => number; parseValue: ( value: boolean | string | number | Record ) => number | boolean | Record; createWorker: (filename: string, options: Partial) => Worker; handleJobCompletion: (name: string) => void; // init: Promise() => void; // _init: boolean; constructor(config?: Bree.BreeOptions); } declare namespace Bree { interface Job { name: string; path: string | (() => void); timeout: number | string | boolean; interval: number | string; date?: Date; cron?: string; hasSeconds?: boolean; cronValidate?: Record; closeWorkerAfterMs?: number; worker?: Partial; outputWorkerMetadata?: boolean; timezone?: string; } type JobOptions = Required> & Partial>; interface BreeConfigs { logger: BreeLogger | boolean; root: string | boolean; silenceRootCheckError: boolean; doRootCheck: boolean; removeCompleted: boolean; timeout: number | boolean; interval: number; timezone: string; jobs: Job[]; hasSeconds: boolean; cronValidate: Record; closeWorkerAfterMs: number; defaultRootIndex: string; defaultExtension: string; acceptedExtensions: string[]; worker: WorkerOptions; errorHandler?: (error: any, workerMetadata: any) => void; workerMessageHandler?: (message: any, workerMetadata: any) => void; outputWorkerMetadata: boolean; } type BreeOptions = Partial> & { jobs?: Array void) | JobOptions>; }; type PluginFunc = (options: T, c: typeof Bree) => void; function extend(plugin: PluginFunc, options?: T): Bree; interface BreeLogger { info: (...args: any[]) => any; warn: (...args: any[]) => any; error: (...args: any[]) => any; } }