import { Sink } from '../interfaces' export interface IndexedValue { index: number, value: T } export class IndexSink implements Sink { private active: boolean = true private value: T = void 0 constructor (private index: number, private sink: Sink>) {} event (time: number, value: T) { if (!this.active) return this.value = value this.sink.event(time, { index: this.index, value: this.value }) } error (time: number, err: Error) { this.sink.error(time, err) } end (time: number, value?: T) { if (!this.active) return this.active = false this.sink.end(time, { index: this.index, value }) } }