import { DataFrame } from '../../data/DataFrame'; import { PushOptions } from '../../graph/options'; import { SinkNode, SinkNodeOptions } from '../SinkNode'; /** * @category Sink node */ export class CallbackSinkNode extends SinkNode { public callback: (frame: In | In[], options?: PushOptions) => Promise | void; constructor( callback: (frame: In | In[], options?: PushOptions) => Promise | void = () => null, options?: SinkNodeOptions, ) { super(options); this.callback = callback; } public onPush(frame: In, options?: PushOptions): Promise { return new Promise((resolve, reject) => { Promise.resolve(this.callback(frame, options)).then(resolve).catch(reject); }); } }