UNPKG

watchdog

Version:

An Timer used to Detect and Recover from Malfunctions

92 lines (91 loc) 2.52 kB
/// <reference types="node" /> import { EventEmitter } from 'events'; import { Brolog } from 'brolog'; export declare const log: Brolog; export declare const VERSION: any; export declare type WatchdogEvent = 'feed' | 'reset' | 'sleep'; export declare type WatchdogListener<T, D> = (food: WatchdogFood<T, D>, time: number) => void; export interface WatchdogFood<T = any, D = any> { data: D; timeout?: number; type?: T; } export declare class Watchdog<T = any, D = any> extends EventEmitter { defaultTimeout: number; name: string; private timer; private lastFeed?; private lastFood?; /** * A Timer used to detect and recover from malfunctions * * @class Watchdog * @param {number} [defaultTimeout=60 * 1000] * @param {string} [name='Bark'] * @example * const TIMEOUT = 1 * 1000 // 1 second * const dog = new watchdog(TIMEOUT) * * const food = { data: 'delicious' } * * dog.on('reset', () => console.log('reset-ed')) * dog.on('feed', () => console.log('feed-ed')) * * dog.feed(food) * // Output: feed-ed * * setTimeout(function() { * dog.sleep() * console.log('dog sleep-ed. Demo over.') * }, TIMEOUT + 1) * // Output: reset-ed. * // Output: dog sleep-ed. Demo over. * */ constructor(defaultTimeout?: number, name?: string); version(): string; on(event: 'feed', listener: WatchdogListener<T, D>): this; on(event: 'reset', listener: WatchdogListener<T, D>): this; on(event: 'sleep', listener: WatchdogListener<T, D>): this; on(event: never, listener: never): never; private startTimer; private stopTimer; /** * Get the left time * @returns {number} */ left(): number; /** * Dog Feed content * * @typedef WatchdogFood * @property {D} data - feed content. * @property {number} timeout - option, set timeout. * @property {T} type - option. */ /** * feed the dog * @param {WatchdogFood} food * @returns {number} * @example * const food = { * data: 'delicious', * timeout: 1 * 1000, * } * const dog = new Watchdog() * dog.feed(food) */ feed(food: WatchdogFood<T, D>): number; /** * Clear timer. * @example * const dog = new Watchdog() * dog.sleep() */ sleep(): void; /** * */ unref(): void; } export default Watchdog;