import { DataFrame } from '../../data/DataFrame'; import { PullOptions } from '../../graph/options'; import { SourceNode, SourceNodeOptions } from '../SourceNode'; /** * @category Source node */ export class CallbackSourceNode extends SourceNode { public callback: (options?: PullOptions) => Promise | Out; constructor(callback: (options?: PullOptions) => Promise | Out = () => null, options?: SourceNodeOptions) { super(options); this.callback = callback; } public onPull(options?: PullOptions): Promise { return new Promise((resolve, reject) => { Promise.resolve(this.callback(options)) .then((output) => { resolve(output); }) .catch(reject); }); } }