import { Source, Sink, Scheduler } from '../interfaces' import { PropagateTask } from '../scheduler/PropagateTask' export class FromArraySource implements Source { constructor (private array: T[]) {} run (sink: Sink, scheduler: Scheduler) { const task = scheduler.asap(new PropagateTask(runArrayTask(this.array, scheduler), void 0, sink)) return { dispose: () => task.dispose() } } } function runArrayTask (array: T[], scheduler: Scheduler) { return function arrayTask (time: number, value: T, sink: Sink) { array.forEach((x: T) => sink.event(scheduler.now(), x)) sink.end(scheduler.now(), void 0) } }