UNPKG

@curium.rocks/scripted-emitter

Version:

A emitter that uses a script to emit predefined events on a given timeline

80 lines (79 loc) 2.11 kB
/// <reference types="node" /> import { BaseEmitter, ICommand, IDataEvent, IExecutionResult, LoggerFacade } from '@curium.rocks/data-emitter-base'; import { IDisposable, IStatusEvent } from '@curium.rocks/data-emitter-base/build/src/dataEmitter'; export interface IScriptedEvent { delayToEventMs: number; dataEvent?: IDataEvent; statusEvent?: IStatusEvent; } export interface IScript { events: Array<IScriptedEvent>; } /** * */ export declare class ScriptedEmitter extends BaseEmitter implements IDisposable { static readonly TYPE = "SCRIPTED-EMITTER"; protected script: IScript; protected counter: number; protected timeoutHandler?: ReturnType<typeof setTimeout>; protected lastDataEvent?: IDataEvent; protected lastStatusEvent?: IStatusEvent; /** * * @param {string} id * @param {string} name * @param {string} description * @param {IScript} script * @param {LoggerFacade?} loggerFacade */ constructor(id: string, name: string, description: string, script: IScript, loggerFacade: LoggerFacade | undefined); /** * */ protected next(): void; /** * Start executing the script timeline */ start(): void; /** * Stop executing the script timeline */ stop(): void; /** * Execute the event * @param {IScriptedEvent} evt */ protected tick(evt: IScriptedEvent): void; /** * * @param {ICommand} command * @return {Promise<IExecutionResult>} */ sendCommand(command: ICommand): Promise<IExecutionResult>; /** * @return {Promise<IStatusEvent>} */ probeStatus(): Promise<IStatusEvent>; /** * @return {Promise<IDataEvent>} */ probeCurrentData(): Promise<IDataEvent>; /** * @return {unknown} */ getMetaData(): unknown; /** * * @return {unknown} */ getEmitterProperties(): unknown; /** * @return {string} */ getType(): string; /** * */ dispose(): void; }