@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
TypeScript
/// <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;
}