UNPKG

delta-store

Version:
45 lines (33 loc) 1.01 kB
import {ChangeListShareInfo} from './SharingAdaptor'; import {ChangeError, ChangeRecord, ChangeRecordIterator} from './ChangeModel'; import {Subject} from 'rxjs/Subject'; /** * Created by Papa on 1/1/2016. */ export interface SharedChangeList { shareInfo: ChangeListShareInfo; loadFromRecord( changeRecord: ChangeRecord ): Promise<ChangeRecordIterator>; addChanges( changeRecords: ChangeRecord[] ): Promise<void>; errorSubject(): Subject<ChangeError>; changesAddedRemotelySubject(): Subject<ChangeRecordIterator>; } export class ArrayChangeRecordIterator implements ChangeRecordIterator { length: number; constructor( private changeRecords: ChangeRecord[], private nextIndex = 0 ) { this.length = changeRecords.length; } next(): ChangeRecord { if (!this.hasNext()) { throw 'No more change records found'; } let nextValue = this.changeRecords[this.nextIndex]; this.nextIndex++; return nextValue; } hasNext(): boolean { return this.nextIndex < this.length; } }